diff --git a/app/Domains/Event/Controllers/AdminApp/EventController.php b/app/Domains/Event/Controllers/AdminApp/EventController.php index 24acf49..624320d 100644 --- a/app/Domains/Event/Controllers/AdminApp/EventController.php +++ b/app/Domains/Event/Controllers/AdminApp/EventController.php @@ -52,6 +52,7 @@ class EventController extends Controller $request->user()->tenant()->firstOrFail(), $eventDate, $request->validated(), + $request->user(), ) ); } diff --git a/app/Domains/Event/Services/EventService.php b/app/Domains/Event/Services/EventService.php index 0119e15..39d5607 100644 --- a/app/Domains/Event/Services/EventService.php +++ b/app/Domains/Event/Services/EventService.php @@ -2,11 +2,13 @@ namespace App\Domains\Event\Services; +use App\Domains\Auth\Models\User; use App\Domains\Catalog\Models\Variant; use App\Domains\Catalog\Services\VariantReplacementService; use App\Domains\Event\Events\EventDateRescheduled; use App\Domains\Event\Events\EventDateSuspended; use App\Domains\Event\Models\EventDate; +use App\Domains\Event\Models\EventDateReschedule; use App\Domains\Tenant\Models\Tenant; use App\Domains\Ticket\Models\Ticket; use Illuminate\Support\Collection; @@ -75,9 +77,13 @@ class EventService } /** @param array{date: string} $data */ - public function rescheduleDateForTenant(Tenant $tenant, EventDate $eventDate, array $data): EventDate - { - return DB::transaction(function () use ($tenant, $eventDate, $data): EventDate { + public function rescheduleDateForTenant( + Tenant $tenant, + EventDate $eventDate, + array $data, + ?User $createdBy = null, + ): EventDate { + return DB::transaction(function () use ($tenant, $eventDate, $data, $createdBy): EventDate { $source = $this->lockedDateForTenant($tenant, $eventDate); if ($source->suspended_at !== null) { @@ -125,6 +131,15 @@ class EventService $source->update(['rescheduled_to_event_date_id' => $destination->getKey()]); $this->variantReplacementService->replaceEventDate($source, $effectiveDestination); + EventDateReschedule::query()->create([ + 'tenant_code' => $tenant->codigo, + 'source_event_date_id' => $source->getKey(), + 'destination_event_date_id' => $destination->getKey(), + 'created_by_user_id' => $createdBy?->getKey(), + 'previous_date' => $source->date->format('Y-m-d'), + 'new_date' => $destination->date->format('Y-m-d'), + ]); + EventDateRescheduled::dispatch( $tenant->codigo, $source->getKey(), diff --git a/tests/Feature/Event/AdminAppEventControllerTest.php b/tests/Feature/Event/AdminAppEventControllerTest.php index 2ce68c7..a849ea9 100644 --- a/tests/Feature/Event/AdminAppEventControllerTest.php +++ b/tests/Feature/Event/AdminAppEventControllerTest.php @@ -270,6 +270,14 @@ class AdminAppEventControllerTest extends TestCase }); $this->assertDatabaseCount('event_dates', 2); + $this->assertDatabaseHas('event_date_reschedules', [ + 'tenant_code' => $tenant->codigo, + 'source_event_date_id' => $original->id, + 'destination_event_date_id' => $destination->id, + 'created_by_user_id' => $admin->id, + 'previous_date' => '2027-10-09', + 'new_date' => '2027-10-20', + ]); $variant->refresh(); $replacement = $variant->replacement()->firstOrFail(); $this->assertSame($original->id, $variant->event_date_id); @@ -315,6 +323,14 @@ class AdminAppEventControllerTest extends TestCase ])->assertOk()->assertJsonPath('data.status', 'rescheduled'); $this->assertDatabaseCount('event_dates', 3); + $this->assertDatabaseCount('event_date_reschedules', 2); + $this->assertDatabaseHas('event_date_reschedules', [ + 'tenant_code' => $tenant->codigo, + 'source_event_date_id' => $destination->id, + 'created_by_user_id' => $admin->id, + 'previous_date' => '2027-10-20', + 'new_date' => '2027-10-25', + ]); $replacement->refresh(); $latestReplacement = $replacement->replacement()->firstOrFail(); $this->assertSame($replacement->inventory_id, $latestReplacement->inventory_id);