with(['client:id,name', 'vehicle:id,plate,make,model', 'master:id,name']) ->orderBy('opened_at') ->get() ->groupBy('status'); $columns = []; foreach ($statuses as $status) { $columns[$status] = [ 'label' => WorkOrder::STATUSES[$status] ?? $status, 'cards' => $byStatus->get($status, collect())->all(), 'count' => $byStatus->get($status, collect())->count(), ]; } return $columns; } public function moveCard(int $id, string $status): void { if (! in_array($status, array_keys(WorkOrder::STATUSES), true)) { return; } $wo = WorkOrder::find($id); if (! $wo) return; $wo->update(['status' => $status]); Notification::make() ->title("Fișa #{$wo->number} → " . (WorkOrder::STATUSES[$status] ?? $status)) ->success() ->send(); } }