*/ public function backoff(): array { return [60, 300, 900]; } public function handle(): void { if (! config('portal.notifications_enabled')) { return; } $notice = DB::table('portal_editorial_notifications')->where('id', $this->noticeId)->first(); $user = $notice ? User::query()->whereKey($notice->user_id)->first() : null; $record = $notice ? Opportunity::query()->whereKey($notice->opportunity_id)->first() : null; if (! $notice || ! $user || ! $record?->isPrivateOfferPreparation() || ! in_array($user->email, config('portal.notification_recipients', []), true) || ! app(PortalEditorialWorkflow::class)->visibleNotice($user, $notice)) { return; } $body = 'Existe uma actualização na revisão privada da oferta '.$record->reference.'. Consulte a decisão e a versão na área protegida: '.url('/minhas-oportunidades/ofertas/'.$record->id); Mail::raw($body, fn ($message) => $message->to($user->email)->subject('Actualização da oferta — '.$record->reference)); } }