From 825df2cf75df65d5a8877d76e217fd21dd12421b Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 10 Jan 2023 16:17:03 -0800 Subject: [PATCH] Load up the item counts with the individual API methods for accurate numbers without n+1 Signed-off-by: snipe --- app/Http/Controllers/Api/CategoriesController.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Api/CategoriesController.php b/app/Http/Controllers/Api/CategoriesController.php index 164928aaba..59e6d27430 100644 --- a/app/Http/Controllers/Api/CategoriesController.php +++ b/app/Http/Controllers/Api/CategoriesController.php @@ -10,6 +10,7 @@ use App\Models\Category; use Illuminate\Http\Request; use App\Http\Requests\ImageUploadRequest; use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Facades\Validator; class CategoriesController extends Controller { @@ -107,7 +108,7 @@ class CategoriesController extends Controller public function show($id) { $this->authorize('view', Category::class); - $category = Category::findOrFail($id); + $category = Category::withCount('assets as assets_count', 'accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'licenses as licenses_count')->findOrFail($id); return (new CategoriesTransformer)->transformCategory($category); } @@ -126,10 +127,18 @@ class CategoriesController extends Controller { $this->authorize('update', Category::class); $category = Category::findOrFail($id); + + if ($category->category_type !== $request->input('category_type')) { + return response()->json( + Helper::formatStandardApiResponse('error', null, trans('admin/categories/message.update.cannot_change_category_type')) + ); + } $category->fill($request->all()); - $category->category_type = strtolower($request->input('category_type')); + $category = $request->handleImages($category); + + if ($category->save()) { return response()->json(Helper::formatStandardApiResponse('success', $category, trans('admin/categories/message.update.success'))); } @@ -148,7 +157,7 @@ class CategoriesController extends Controller public function destroy($id) { $this->authorize('delete', Category::class); - $category = Category::findOrFail($id); + $category = Category::withCount('assets as assets_count', 'accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'licenses as licenses_count')->findOrFail($id); if (! $category->isDeletable()) { return response()->json(