subscriber = $subscriber; } /** * Handle the event. * * @param \CachetHQ\Cachet\Bus\Events\Incident\IncidentWasReportedEvent $event * * @return void */ public function handle(IncidentWasReportedEvent $event) { $incident = $event->incident; if (!$event->notify) { return false; } // Only send emails for public incidents. if (!$incident->visible) { return; } // First notify all global subscribers. $globalSubscribers = $this->subscriber->isVerified()->isGlobal()->get(); $globalSubscribers->each(function ($subscriber) use ($incident) { $subscriber->notify(new NewIncidentNotification($incident)); }); if (!$incident->component) { return; } $notified = $globalSubscribers->pluck('id')->all(); // Notify the remaining component specific subscribers. $componentSubscribers = $this->subscriber ->isVerified() ->forComponent($incident->component->id) ->get() ->reject(function ($subscriber) use ($notified) { return in_array($subscriber->id, $notified); })->each(function ($subscriber) use ($incident) { $subscriber->notify(new NewIncidentNotification($incident)); }); } }