feat(event): omit rescheduled and suspended dates from tenant resource

This commit is contained in:
ncoronel 2026-09-11 16:21:37 -03:00
parent 1880fc8147
commit b4da6e3747
2 changed files with 31 additions and 8 deletions

View File

@ -5,6 +5,7 @@ namespace App\Domains\Tenant\Resources;
use App\Domains\Attachable\Models\Attachment;
use App\Domains\Attachable\Models\AttachmentCrop;
use App\Domains\Catalog\Models\Category;
use App\Domains\Event\Models\EventDate;
use App\Domains\Menu\Models\Menu;
use App\Domains\Tenant\Models\Tenant;
use Illuminate\Http\Request;
@ -50,12 +51,16 @@ class TenantResource extends JsonResource
: [
'title' => $this->event_title,
'location' => $this->event_location,
'dates' => $this->eventDates->map(fn ($eventDate): array => [
'id' => $eventDate->id,
'date' => $eventDate->date->format('Y-m-d'),
'time_start' => $eventDate->time_start,
'time_end' => $eventDate->time_end,
])->values(),
'dates' => $this->eventDates
->filter(fn (EventDate $eventDate): bool => $eventDate->rescheduled_to_event_date_id === null
&& $eventDate->suspended_at === null
)
->map(fn (EventDate $eventDate): array => [
'id' => $eventDate->id,
'date' => $eventDate->date->format('Y-m-d'),
'time_start' => $eventDate->time_start,
'time_end' => $eventDate->time_end,
])->values(),
]),
'extras' => $this->whenLoaded(
'websiteExtras',

View File

@ -172,7 +172,7 @@ class AdminAppEventControllerTest extends TestCase
public function test_rescheduling_reuses_an_existing_date_and_tickets_resolve_its_validity(): void
{
$tenant = $this->createTenant('acme');
$tenant = $this->createActiveEvent($this->createTenant('acme'), 'Festival Acme');
$admin = $this->createAdminAppUser($tenant);
$original = $tenant->eventDates()->create([
'date' => '2027-10-09',
@ -196,6 +196,12 @@ class AdminAppEventControllerTest extends TestCase
->assertJsonPath('data.rescheduled_to_event_date_id', $destination->id);
$this->assertDatabaseCount('event_dates', 2);
$this->assertSame('20 de Octubre 2027', $tenant->fresh()->event_date_text);
$this->getJson('/api/tenants/bootstrap?dominio=acme.test&path=%2F')
->assertOk()
->assertJsonCount(1, 'data.event.dates')
->assertJsonPath('data.event.dates.0.id', $destination->id)
->assertJsonPath('data.event_date_text', '20 de Octubre 2027');
$this->assertSame(
'2027-10-20 11:00:00',
$ticket->resolvedValidity()->effectiveStartsAt()?->format('Y-m-d H:i:s'),
@ -210,6 +216,12 @@ class AdminAppEventControllerTest extends TestCase
])->assertOk()->assertJsonPath('data.status', 'rescheduled');
$this->assertDatabaseCount('event_dates', 3);
$this->assertSame('25 de Octubre 2027', $tenant->fresh()->event_date_text);
$this->getJson('/api/tenants/bootstrap?dominio=acme.test&path=%2F')
->assertOk()
->assertJsonCount(1, 'data.event.dates')
->assertJsonPath('data.event.dates.0.date', '2027-10-25')
->assertJsonPath('data.event_date_text', '25 de Octubre 2027');
$this->assertSame(
'2027-10-25 11:00:00',
$ticket->fresh()->resolvedValidity()->effectiveStartsAt()?->format('Y-m-d H:i:s'),
@ -218,7 +230,7 @@ class AdminAppEventControllerTest extends TestCase
public function test_suspending_disables_only_tickets_without_another_usable_date(): void
{
$tenant = $this->createTenant('acme');
$tenant = $this->createActiveEvent($this->createTenant('acme'), 'Festival Acme');
$admin = $this->createAdminAppUser($tenant);
$suspendedDate = $tenant->eventDates()->create([
'date' => '2027-10-09',
@ -244,6 +256,12 @@ class AdminAppEventControllerTest extends TestCase
$this->assertNotNull($singleDateTicket->fresh()->disabled_at);
$this->assertNull($multipleDateTicket->fresh()->disabled_at);
$this->assertSame('10 de Octubre 2027', $tenant->fresh()->event_date_text);
$this->getJson('/api/tenants/bootstrap?dominio=acme.test&path=%2F')
->assertOk()
->assertJsonCount(1, 'data.event.dates')
->assertJsonPath('data.event.dates.0.id', $otherDate->id)
->assertJsonPath('data.event_date_text', '10 de Octubre 2027');
$this->assertSame(
'2027-10-10 09:00:00',
$multipleDateTicket->fresh()->resolvedValidity()->effectiveStartsAt()?->format('Y-m-d H:i:s'),