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\ItemAttribute;
|
||||
@@ -46,7 +45,7 @@ class CatalogItemDetailResource extends JsonResource
|
||||
),
|
||||
'variants' => $this->variants
|
||||
->map(fn (Variant $variant): array => $this->variantData($variant))
|
||||
->filter(fn (array $variant): bool => $variant['availability']['capabilities']['display'])
|
||||
->filter(fn (array $variant): bool => $variant['availability']['state'] === 'visible')
|
||||
->values(),
|
||||
'selected_variant' => $this->when(
|
||||
$selectedVariant !== null,
|
||||
@@ -161,7 +160,7 @@ class CatalogItemDetailResource extends JsonResource
|
||||
$variantStock = $this->variantStock($variant);
|
||||
$availability = $this->availability(
|
||||
$variantStock,
|
||||
AvailabilitySubject::Variant,
|
||||
false,
|
||||
);
|
||||
|
||||
return [
|
||||
@@ -195,12 +194,11 @@ class CatalogItemDetailResource 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