feat(event): record date reschedules
This commit is contained in:
parent
18a0d14fa8
commit
54827fbc58
|
|
@ -52,6 +52,7 @@ class EventController extends Controller
|
|||
$request->user()->tenant()->firstOrFail(),
|
||||
$eventDate,
|
||||
$request->validated(),
|
||||
$request->user(),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue