when($request->user(), fn ($q) => $q->where('user_id', $request->user()->id)) ->latest() ->paginate(10); return response()->json([ 'data' => HelpTicketResource::collection($tickets), 'meta' => [ 'current_page' => $tickets->currentPage(), 'last_page' => $tickets->lastPage(), 'total' => $tickets->total(), ], ]); } public function show(string $id): JsonResponse { $ticket = WebsiteHelpCenterTicket::with(['user:id,username,look', 'replies.user:id,username,look']) ->where('id', $id) ->firstOrFail(); return response()->json(['data' => new HelpTicketResource($ticket)]); } public function create(HelpTicketRequest $request): JsonResponse { $validated = $request->validated(); $ticket = WebsiteHelpCenterTicket::create([ 'user_id' => $request->user()->id, 'subject' => $validated['subject'], 'category' => $validated['category'], 'status' => 'open', ]); $ticket->replies()->create([ 'user_id' => $request->user()->id, 'message' => $validated['message'], ]); return response()->json(['data' => new HelpTicketResource($ticket)], 201); } public function reply(HelpTicketReplyRequest $request, string $id): JsonResponse { $ticket = WebsiteHelpCenterTicket::where('id', $id) ->where('user_id', $request->user()->id) ->firstOrFail(); $validated = $request->validated(); $reply = $ticket->replies()->create([ 'user_id' => $request->user()->id, 'message' => $validated['message'], ]); return response()->json(['data' => $reply->load('user:id,username,look')], 201); } }