From a919e9366b4e4c0d059fa4afa7d93ecbc39d8dcc Mon Sep 17 00:00:00 2001 From: ncoronel Date: Fri, 14 Aug 2026 09:54:40 -0300 Subject: [PATCH] refactor(catalog): rely on inventory for variant availability --- app/Domains/Catalog/Controllers/CatalogController.php | 1 - .../Catalog/Requests/CatalogVariantOptionsRequest.php | 2 -- app/Domains/Catalog/Services/VariantSelectionService.php | 5 ----- tests/Feature/Catalog/CatalogItemDetailControllerTest.php | 5 ++--- 4 files changed, 2 insertions(+), 11 deletions(-) diff --git a/app/Domains/Catalog/Controllers/CatalogController.php b/app/Domains/Catalog/Controllers/CatalogController.php index 98a6649..94fcdac 100644 --- a/app/Domains/Catalog/Controllers/CatalogController.php +++ b/app/Domains/Catalog/Controllers/CatalogController.php @@ -138,7 +138,6 @@ class CatalogController extends Controller $variantSelectionService->options( $catalogItem, $request->validated('selected_values', []), - array_map('intval', $request->validated('excluded_variant_ids', [])), $includedVariantId, ) ); diff --git a/app/Domains/Catalog/Requests/CatalogVariantOptionsRequest.php b/app/Domains/Catalog/Requests/CatalogVariantOptionsRequest.php index de22393..4f8efc0 100644 --- a/app/Domains/Catalog/Requests/CatalogVariantOptionsRequest.php +++ b/app/Domains/Catalog/Requests/CatalogVariantOptionsRequest.php @@ -17,8 +17,6 @@ class CatalogVariantOptionsRequest extends FormRequest return [ 'selected_values' => ['sometimes', 'array'], 'selected_values.*' => ['nullable'], - 'excluded_variant_ids' => ['sometimes', 'array'], - 'excluded_variant_ids.*' => ['integer', 'min:1', 'distinct'], 'cart_item_id' => ['sometimes', 'nullable', 'integer', 'min:1'], ]; } diff --git a/app/Domains/Catalog/Services/VariantSelectionService.php b/app/Domains/Catalog/Services/VariantSelectionService.php index 88f2a5b..18a0dcd 100644 --- a/app/Domains/Catalog/Services/VariantSelectionService.php +++ b/app/Domains/Catalog/Services/VariantSelectionService.php @@ -11,13 +11,11 @@ class VariantSelectionService { /** * @param array $selectedValues - * @param list $excludedVariantIds * @return array */ public function options( CatalogItem $catalogItem, array $selectedValues, - array $excludedVariantIds = [], ?int $includedVariantId = null, ): array { $catalogItem->load([ @@ -30,10 +28,7 @@ class VariantSelectionService 'variants.definitions.itemAttribute.attribute.options', ]); - $excluded = collect($excludedVariantIds)->map(fn ($id): int => (int) $id); $variants = $catalogItem->visibleVariants($includedVariantId) - ->reject(fn (Variant $variant): bool => $variant->id !== $includedVariantId - && $excluded->contains($variant->id)) ->values(); $normalizedSelections = collect($selectedValues) ->mapWithKeys(fn ($value, string $key): array => [$key => $this->normalizeValue($value)]) diff --git a/tests/Feature/Catalog/CatalogItemDetailControllerTest.php b/tests/Feature/Catalog/CatalogItemDetailControllerTest.php index e1015c2..cb0896b 100644 --- a/tests/Feature/Catalog/CatalogItemDetailControllerTest.php +++ b/tests/Feature/Catalog/CatalogItemDetailControllerTest.php @@ -335,15 +335,14 @@ class CatalogItemDetailControllerTest extends TestCase "/api/tenants/{$tenant->codigo}/catalog-items/{$item->id}/variant-options", [ 'selected_values' => ['sector' => 'A'], - 'excluded_variant_ids' => [$second->id], ], ) ->assertOk() ->assertJsonPath('data.valid', true) ->assertJsonPath('data.resolved_variant_id', null) - ->assertJsonCount(2, 'data.variants') + ->assertJsonCount(3, 'data.variants') ->assertJsonCount(1, 'data.options.sector') - ->assertJsonCount(1, 'data.options.seat') + ->assertJsonCount(2, 'data.options.seat') ->assertJsonPath('data.options.seat.0.value', '1'); $this->postJson(