user()->id; $household = \Illuminate\Support\Facades\Cache::remember("user:{$userId}:household", now()->addMinutes(10), function () use ($userId) { return Household::with('assignedDropOffPoint') ->where('head_user_id', $userId) ->first(); }); if (! $household || ! $household->assigned_drop_off_point_id) { return $this->ok([ 'trucks' => [], 'as_of' => now()->toIso8601String(), 'household_assigned' => false, ]); } $relevantTripUuids = Trip::query() ->whereIn('status', [Trip::STATUS_IN_PROGRESS, Trip::STATUS_AT_DUMPSITE]) ->whereHas('stops', fn ($q) => $q->where('drop_off_point_id', $household->assigned_drop_off_point_id)) ->pluck('uuid') ->all(); $positions = collect($this->tracker->activeTruckPositions()) ->filter(fn ($p) => $p['active_trip_id'] && in_array($p['active_trip_id'], $relevantTripUuids, true)) ->values() ->all(); return $this->ok([ 'trucks' => $positions, 'as_of' => now()->toIso8601String(), 'household_assigned' => true, 'drop_off_point' => [ 'id' => $household->assignedDropOffPoint?->uuid, 'name' => $household->assignedDropOffPoint?->name, 'lat' => $household->assignedDropOffPoint?->coordinates?->latitude, 'lng' => $household->assignedDropOffPoint?->coordinates?->longitude, ], ]); } }