find($this->eventPackageId); if (! $eventPackage) { Log::warning('Gallery warning job skipped; event package missing', [ 'event_package_id' => $this->eventPackageId, ]); return; } $tenant = $eventPackage->event?->tenant; if (! $tenant) { return; } $preferences = app(\App\Services\Packages\TenantNotificationPreferences::class); if (! $preferences->shouldNotify($tenant, 'gallery_warnings')) { return; } $emails = collect([ $tenant->contact_email, $tenant->user?->email, ])->filter(fn ($email) => is_string($email) && filter_var($email, FILTER_VALIDATE_EMAIL)) ->unique(); if ($emails->isEmpty()) { Log::info('Gallery warning skipped due to missing recipients', [ 'event_package_id' => $eventPackage->id, 'days_remaining' => $this->daysRemaining, ]); return; } foreach ($emails as $email) { Notification::route('mail', $email)->notify(new EventPackageGalleryExpiringNotification( $eventPackage, $this->daysRemaining, )); } } }