where('status', TicketStatusEnum::production) ->orWhere('status', TicketStatusEnum::waitingValidation); })->whereDate('updated_at', '<=', Carbon::now()->subDays($limitDays)) ->whereDoesntHave('messages', function ($q) use ($limitDays) { $q->whereDate('updated_at', '>', Carbon::now()->subDays($limitDays)); })->get(); /** @var \App\Models\Ticket $ticket */ foreach ($tickets as $ticket) { /** @var \App\Enums\Tickets\TicketStatusEnum */ $oldStatus = $ticket->status; $ticket->status = TicketStatusEnum::archived; $ticket->saveQuietly(); event(new TicketStatusChanged($ticket, $oldStatus, null, $message)); event(new NotifySubscriptions($ticket, $message, collect([$ticket->user]))); } } }