1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 16:14:02 +00:00
tenancy/src/TenancyBootstrappers/QueueTenancyBootstrapper.php
2019-09-11 21:11:40 +02:00

56 lines
1.3 KiB
PHP

<?php
declare(strict_types=1);
namespace Stancl\Tenancy\TenancyBoostrappers;
use Stancl\Tenancy\Contracts\TenancyBootstrapper;
use Stancl\Tenancy\Tenant;
class QueueTenancyBootstrapper implements TenancyBootstrapper
{
/** @var bool Has tenancy been started. */
protected $started = false; // todo var name?
/** @var Application */
protected $app;
public function __construct(Application $app)
{
$this->app = $app;
$this->app['queue']->createPayloadUsing([$this, 'createPayload']);
$this->app['events']->listen(\Illuminate\Queue\Events\JobProcessing::class, function ($event) {
if (\array_key_exists('tenant_id', $event->job->payload())) {
tenancy()->initById($event->job->payload()['tenant_id']);
}
});
}
public function start(Tenant $tenant)
{
$this->started = true;
}
public function end()
{
$this->started = false;
}
public function createPayload()
{
if (! $this->started) {
return [];
}
[$uuid, $domain] = tenant()->get(['uuid', 'domain']);
return [
'tenant_id' => $uuid,
'tags' => [
"tenant:$uuid",
"domain:$domain",
],
];
}
}