feat(event): omit rescheduled and suspended dates from tenant resource
This commit is contained in:
parent
1880fc8147
commit
b4da6e3747
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
|
|
|
|||
Loading…
Reference in New Issue