<?php
namespace App\Jobs;
use Log;
use App\Jobs\Job;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\DispatchesJobs;
use App\Provider;
use Mpociot\Blacksmith\Blacksmith;
class AddWeb2Server extends Job implements ShouldQueue
{
use InteractsWithQueue, SerializesModels, DispatchesJobs;
protected $provider;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(Provider $provider)
{
$this->provider = $provider;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Log::info('Job AddWeb2Server startet');
$provider = $this->provider;
if ($this->attempts() <= 1 && $provider->status == 2)
{
$sitename = parse_url($provider->domain, PHP_URL_HOST);
$blacksmith = new Blacksmith(env('FORGE_EMAIL'), env('FORGE_PASSWORD'));
$server = $blacksmith->getActiveServers()->first();
$addSite = $server->addSite($sitename, $project_type = 'php', $directory = '/public', $wildcards = false);
$provider->server_site_id = $addSite->id;
$provider->status = 3;
$provider->save();
Log::info('Job AddWeb2Server done');
#session(['provider_status' => $provider->status]);
// wait 30 seconds for execution of next job
$job = (new AddApp2Server($provider))->delay(30);
$this->dispatch($job);
Log::info('Job AddApp2Server dispatched');
}
}
/**
* Handle a job failure.
*
* @return void
*/
public function failed()
{
Log::error('Job AddWeb2Server failed!');
}
}