boolean('include_inactive'); $categories = FaqCategory::query() ->with(['faqs' => function ($q) use ($includeInactive) { if (!$includeInactive) { $q->where('is_active', true); } $q->orderBy('order'); }]) ->when(!$includeInactive, fn ($q) => $q->where('is_active', true)) ->orderBy('order') ->get(); return response()->json($categories); } public function show($id) { return response()->json(Faq::with('category')->findOrFail($id)); } public function store(Request $request) { $data = $request->validate([ 'faq_category_id' => 'required|exists:faq_categories,id', 'question' => 'required|string|max:500', 'answer' => 'required|string', 'order' => 'nullable|integer', 'is_active' => 'nullable|boolean', ]); $faq = Faq::create($data); return response()->json(['message' => 'FAQ created', 'faq' => $faq->load('category')], 201); } public function update(Request $request, $id) { $faq = Faq::findOrFail($id); $data = $request->validate([ 'faq_category_id' => 'sometimes|exists:faq_categories,id', 'question' => 'sometimes|string|max:500', 'answer' => 'sometimes|string', 'order' => 'nullable|integer', 'is_active' => 'nullable|boolean', ]); $faq->update($data); return response()->json(['message' => 'FAQ updated', 'faq' => $faq->load('category')]); } public function destroy($id) { Faq::findOrFail($id)->delete(); return response()->json(['message' => 'FAQ deleted']); } }