has('active')) { $query->where('active', (int) $request->active); } if ($request->filled('search')) { $query->where('name', 'like', '%' . $request->search . '%'); } $categories = $query ->orderBy('id', 'asc') ->get(); return response()->json($categories); } public function store(Request $request) { $name = trim((string) $request->input('name')); if ($name === '') { throw new UnprocessableEntityHttpException('نام دسته‌بندی الزامی است'); } if (Category::where('name', $name)->exists()) { throw new UnprocessableEntityHttpException('این دسته‌بندی قبلا ثبت شده است'); } $category = Category::create([ 'name' => $name, 'active' => $request->has('active') ? (int) $request->active : 1, ]); return response()->json($category); } public function clientIndex(Request $request) { $query = Category::query() ->where('active', 1); if ($request->filled('search')) { $query->where('name', 'like', '%' . $request->search . '%'); } $categories = $query ->orderBy('id', 'asc') ->get(); return response()->json($categories); } public function changeActive($id, $active) { $active = (int) $active; if (! in_array($active, [0, 1], true)) { throw new UnprocessableEntityHttpException('وضعیت active نامعتبر است'); } $category = Category::findOrFail($id); $category->active = $active; $category->save(); return response()->json([ 'message' => $active ? 'دسته‌بندی فعال شد' : 'دسته‌بندی غیرفعال شد', 'data' => $category, ]); } }