1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-02-06 01:44:04 +00:00

Add and use getWithPendingOption method

This commit is contained in:
lukinovec 2022-09-30 15:02:05 +02:00
parent 09bb5326c7
commit 040c42d325

View file

@ -6,6 +6,7 @@ namespace Stancl\Tenancy\Concerns;
use Illuminate\Support\LazyCollection; use Illuminate\Support\LazyCollection;
use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputOption;
use Stancl\Tenancy\Database\Concerns\PendingScope;
/** /**
* Adds 'tenants' and 'with-pending' options. * Adds 'tenants' and 'with-pending' options.
@ -16,10 +17,29 @@ trait HasTenantOptions
{ {
return array_merge([ return array_merge([
['tenants', null, InputOption::VALUE_IS_ARRAY|InputOption::VALUE_OPTIONAL, '', null], ['tenants', null, InputOption::VALUE_IS_ARRAY|InputOption::VALUE_OPTIONAL, '', null],
['with-pending', null, InputOption::VALUE_OPTIONAL, 'include pending tenants in query', config('tenancy.pending.include_in_queries')], ['with-pending', null, InputOption::VALUE_OPTIONAL, 'include pending tenants in query', false],
], parent::getOptions()); ], parent::getOptions());
} }
protected function getWithPendingOption(): bool
{
$optionPassedWithoutArgument = is_null($this->option('with-pending'));
$optionPassedWithArgument = is_string($this->option('with-pending'));
// E.g. tenants:run --with-pending
if ($optionPassedWithoutArgument) {
return true;
}
// E.g. tenants:run --with-pending=false
if ($optionPassedWithArgument) {
return filter_var($this->option('with-pending'), FILTER_VALIDATE_BOOLEAN);
}
// Option not passed, e.g. tenants:run
return config('tenancy.pending.include_in_queries');
}
protected function getTenants(): LazyCollection protected function getTenants(): LazyCollection
{ {
return tenancy() return tenancy()
@ -28,7 +48,7 @@ trait HasTenantOptions
$query->whereIn(tenancy()->model()->getTenantKeyName(), $this->option('tenants')); $query->whereIn(tenancy()->model()->getTenantKeyName(), $this->option('tenants'));
}) })
->when(tenancy()->model()::hasGlobalScope(PendingScope::class), function ($query) { ->when(tenancy()->model()::hasGlobalScope(PendingScope::class), function ($query) {
$query->withPending($this->option('with-pending')); $query->withPending($this->getWithPendingOption());
}) })
->cursor(); ->cursor();
} }