= 1 visit. $cutoff = now()->subMonths(6); return Client::with(['workOrders' => fn ($q) => $q->latest('opened_at')->limit(1)]) ->whereHas('workOrders', fn ($q) => $q->where('opened_at', '<', $cutoff)) ->whereDoesntHave('workOrders', fn ($q) => $q->where('opened_at', '>=', $cutoff)) ->where('status', '!=', 'lost') ->limit(30) ->get(); } public function highMileageVehicles(): \Illuminate\Support\Collection { return Vehicle::with('client') ->where('mileage', '>', 100000) ->orderByDesc('mileage') ->limit(20) ->get(); } public function unpaidWO(): \Illuminate\Support\Collection { return WorkOrder::with(['client', 'vehicle']) ->where('pay_status', '!=', 'paid') ->whereNotIn('status', ['cancelled']) ->where('total', '>', 0) ->orderByDesc('opened_at') ->limit(30) ->get(); } public function vipNeedingTouchup(): \Illuminate\Support\Collection { // VIP clients with no contact in 30+ days. return Client::where('status', 'vip') ->where(fn ($q) => $q->whereNull('last_contact_at')->orWhere('last_contact_at', '<', now()->subDays(30))) ->limit(20) ->get(); } }