$ticket->owner_ref, 'ticket_id' => $ticket->id, 'counter_id' => $ticket->counter_id, 'staff_ref' => $staffRef, 'started_at' => now(), ]); } public function endForTicket(Ticket $ticket): ?ServiceSession { $session = ServiceSession::query() ->where('ticket_id', $ticket->id) ->whereNull('ended_at') ->latest('started_at') ->first(); if (! $session) { return null; } $ended = now(); $session->update([ 'ended_at' => $ended, 'duration_seconds' => $session->started_at->diffInSeconds($ended), ]); return $session->fresh(); } }