find($this->tenantPackageId); if (! $tenantPackage || ! $tenantPackage->tenant) { Log::warning('Tenant package expired job skipped', [ 'tenant_package_id' => $this->tenantPackageId, ]); return; } $preferences = app(\App\Services\Packages\TenantNotificationPreferences::class); if (! $preferences->shouldNotify($tenantPackage->tenant, 'package_expired')) { return; } $emails = collect([ $tenantPackage->tenant->contact_email, $tenantPackage->tenant->user?->email, ])->filter(fn ($email) => is_string($email) && filter_var($email, FILTER_VALIDATE_EMAIL)) ->unique(); if ($emails->isEmpty()) { Log::info('Tenant package expired notification skipped due to missing recipients', [ 'tenant_package_id' => $tenantPackage->id, ]); return; } foreach ($emails as $email) { Notification::route('mail', $email)->notify(new TenantPackageExpiredNotification($tenantPackage)); } } }