json([]); } return $this->flights($user, $request); } public function flights(User $user, ?Request $request = null) { $key = "user_flights_{$user->id}"; $json = Cache::remember($key, now()->addDays(30), function () use ($user) { return UserFlight::where('user_id', $user->id) ->with([ 'departureAirport.region.country', 'departureAirport.region.continent', 'arrivalAirport.region.country', 'arrivalAirport.region.continent', 'airline.country', 'airline.alliance', 'aircraft', 'seatType', 'flightReason', 'flightClass', 'crewType' ]) ->orderBy('departure_date', 'desc') ->get() ->values() ->toJson(); }); if ($request?->boolean('departed_only')) { $filtered = collect(json_decode($json)) ->filter(fn($f) => $f->departure_date <= now('UTC')->toDateString()) ->values() ->toJson(); return response($filtered, 200)->header('Content-Type', 'application/json'); } return response($json, 200)->header('Content-Type', 'application/json'); } }