feat(catalog): model availability as global decisions
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Domains\Catalog\Resources;
|
||||
|
||||
use App\Domains\Catalog\Enums\AvailabilitySubject;
|
||||
use App\Domains\Catalog\Enums\InventoryPolicy;
|
||||
use App\Domains\Catalog\Models\CatalogItem;
|
||||
use App\Domains\Catalog\Models\Variant;
|
||||
@@ -37,7 +36,7 @@ class CatalogSearchItemResource extends JsonResource
|
||||
: $variant->inventory?->availableStock();
|
||||
$availability = $this->availability(
|
||||
$variantStock,
|
||||
AvailabilitySubject::Variant,
|
||||
false,
|
||||
);
|
||||
|
||||
return [
|
||||
@@ -52,7 +51,7 @@ class CatalogSearchItemResource extends JsonResource
|
||||
'values' => $variant->selectorOptions($this->itemAttributes),
|
||||
];
|
||||
})
|
||||
->filter(fn (array $variant): bool => $variant['availability']['capabilities']['display'])
|
||||
->filter(fn (array $variant): bool => $variant['availability']['state'] === 'visible')
|
||||
->values(),
|
||||
];
|
||||
}
|
||||
@@ -60,12 +59,11 @@ class CatalogSearchItemResource extends JsonResource
|
||||
/** @return array<string, mixed> */
|
||||
private function availability(
|
||||
?int $stock,
|
||||
AvailabilitySubject $subject = AvailabilitySubject::Product,
|
||||
bool $includeUserQuota = true,
|
||||
): array {
|
||||
return app(CatalogItemAllowanceService::class)->availability(
|
||||
$stock,
|
||||
$this->getAttribute('remaining_user_quota'),
|
||||
$subject,
|
||||
);
|
||||
$includeUserQuota ? $this->getAttribute('remaining_user_quota') : null,
|
||||
)->toArray();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user