artist()->withoutGlobalScope(OrganisationScope::class)->first(); $event = $engagement->event()->withoutGlobalScope(OrganisationScope::class)->first(); if ($artist === null || $event === null) { return; } if ($engagement->organisation_id === null) { $engagement->organisation_id = $artist->organisation_id; } if ($artist->organisation_id !== $event->organisation_id) { $engagement->setRelation('artist', $artist); $engagement->setRelation('event', $event); throw CrossTenantEngagementException::forEngagement($engagement); } } /** * Reserved for Session 2 state-machine validation when * `booking_status` transitions land. No-op for now. */ public function saving(ArtistEngagement $engagement): void { // intentionally empty — see class docblock } public function deleted(ArtistEngagement $engagement): void { if (! $engagement->isForceDeleting() && $engagement->trashed()) { $engagement->performances()->delete(); $engagement->advanceSections()->delete(); } } }