user()->id) ->orderBy('created_at', 'desc') ->get(); return response()->json(['data' => $trips]); } /** * Store a newly created resource in storage. */ public function store(Request $request): JsonResponse { $validated = $request->validate([ 'name' => 'required|string|max:255', 'description' => 'nullable|string', 'start_date' => 'nullable|date', 'end_date' => 'nullable|date|after_or_equal:start_date', ]); $validated['created_by_user_id'] = $request->user()->id; $trip = Trip::create($validated); return response()->json(['data' => $trip], 201); } /** * Display the specified resource. */ public function show(Request $request, Trip $trip): JsonResponse { if (!$this->policy->view($request->user(), $trip)) { return response()->json(['message' => 'Forbidden'], 403); } return response()->json(['data' => $trip]); } /** * Update the specified resource in storage. */ public function update(Request $request, Trip $trip): JsonResponse { if (!$this->policy->update($request->user(), $trip)) { return response()->json(['message' => 'Forbidden'], 403); } $validated = $request->validate([ 'name' => 'required|string|max:255', 'description' => 'nullable|string', 'start_date' => 'nullable|date', 'end_date' => 'nullable|date|after_or_equal:start_date', ]); $trip->update($validated); return response()->json(['data' => $trip]); } /** * Remove the specified resource from storage. */ public function destroy(Request $request, Trip $trip): JsonResponse { if (!$this->policy->delete($request->user(), $trip)) { return response()->json(['message' => 'Forbidden'], 403); } $trip->delete(); return response()->json(['message' => 'Trip deleted successfully']); } }