diff --git a/app/Domains/Forms/Services/FoodFormService.php b/app/Domains/Forms/Services/FoodFormService.php index 72f2b07..240ea5d 100644 --- a/app/Domains/Forms/Services/FoodFormService.php +++ b/app/Domains/Forms/Services/FoodFormService.php @@ -27,7 +27,11 @@ class FoodFormService ->keyBy('codigo'); return [ - 'event_dates' => $tenant->eventDates()->with('validityTime')->get(), + 'event_dates' => $tenant->eventDates() + ->whereNull('rescheduled_to_event_date_id') + ->whereNull('suspended_at') + ->with('validityTime') + ->get(), 'schedules' => $attributes->get('horario')?->options ?? new Collection, 'services' => $attributes->get('servicio')?->options ?? new Collection, ]; diff --git a/tests/Feature/Forms/AdminAppFoodFormControllerTest.php b/tests/Feature/Forms/AdminAppFoodFormControllerTest.php index f3e9db3..50f01e1 100644 --- a/tests/Feature/Forms/AdminAppFoodFormControllerTest.php +++ b/tests/Feature/Forms/AdminAppFoodFormControllerTest.php @@ -67,6 +67,51 @@ class AdminAppFoodFormControllerTest extends TestCase ->assertJsonPath('data.services.0.value', 'Comedor'); } + public function test_it_excludes_rescheduled_and_suspended_event_dates(): void + { + $tenant = Tenant::query()->create([ + 'codigo' => 'fiesta', + 'nombre' => 'Fiesta', + 'dominio' => 'fiesta.test', + 'website_type_code' => 'onticket', + ]); + $available = $tenant->eventDates()->create([ + 'date' => '2026-10-09', + 'time_start' => '00:00', + 'time_end' => '23:59', + ]); + $rescheduled = $tenant->eventDates()->create([ + 'date' => '2026-10-10', + 'time_start' => '00:00', + 'time_end' => '23:59', + ]); + $replacement = $tenant->eventDates()->create([ + 'date' => '2026-10-11', + 'time_start' => '00:00', + 'time_end' => '23:59', + ]); + $rescheduled->update(['rescheduled_to_event_date_id' => $replacement->id]); + $tenant->eventDates()->create([ + 'date' => '2026-10-12', + 'time_start' => '00:00', + 'time_end' => '23:59', + 'suspended_at' => now(), + ]); + + Sanctum::actingAs(User::factory()->create([ + 'rol_codigo' => RoleCode::AdminApp->value, + 'tenant_codigo' => $tenant->codigo, + ])); + + $this->getJson('/api/v1/adminapp/forms/fiesta-futbol-infantil/food') + ->assertOk() + ->assertJsonCount(2, 'data.event_dates') + ->assertJsonFragment(['id' => $available->id, 'date' => '2026-10-09']) + ->assertJsonFragment(['id' => $replacement->id, 'date' => '2026-10-11']) + ->assertJsonMissing(['date' => '2026-10-10']) + ->assertJsonMissing(['date' => '2026-10-12']); + } + /** @param array $options */ private function createAttribute(Tenant $tenant, string $code, array $options): void {