where('status', TicketStatusEnum::production) ->orWhere('status', TicketStatusEnum::waitingValidation); })->whereDate('updated_at', '<=', Carbon::now()->subDays($warningDays)) ->whereDoesntHave('messages', function ($q) use ($warningDays) { $q->whereDate('updated_at', '>', Carbon::now()->subDays($warningDays)); })->get(); foreach ($tickets as $ticket) { $date = $ticket->messages->sortByDesc('updated_at')->first()->updated_at ?? $ticket->updated_at; $limitDate = $date->addDays($warningDays); if (intval(Carbon::now()->diff($limitDate)->format('%a')) >= $warningDays) { event(new NotifySubscriptions($ticket, $messageToAll, collect([$ticket->user]))); } event(new NotifyTicketCreator($ticket, sprintf( $messageToUser, intval($date->diff(Carbon::now()->subDays($warningDays))->format('%a') + 1) ))); } } }