From bcbe5174466a322abd6100fcf92f65e58b38b85c Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 15 Nov 2022 17:18:09 +0000 Subject: [PATCH 1/3] Added ability to include deleted items in tag search endpoint Signed-off-by: snipe --- app/Http/Controllers/Api/AssetsController.php | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 04bc6d35db..4a76bb36c3 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -371,13 +371,27 @@ class AssetsController extends Controller */ public function showByTag(Request $request, $tag) { - if ($asset = Asset::with('assetstatus')->with('assignedTo')->where('asset_tag', $tag)->first()) { - $this->authorize('view', $asset); - - return (new AssetsTransformer)->transformAsset($asset, $request); + $this->authorize('index', Asset::class); + if ($assets = Asset::with('assetstatus')->with('assignedTo') + ->withTrashed()->where('asset_tag', $tag)->get()) { + return (new AssetsTransformer)->transformAssets($assets, $assets->count()); } return response()->json(Helper::formatStandardApiResponse('error', null, 'Asset not found'), 200); + $assets = Asset::with('assetstatus')->with('assignedTo'); + + if ($request->input('deleted', 'false') === 'true') { + $assets = $assets->withTrashed(); + } + + $assets = $assets->where('asset_tag', $tag)->get(); + + if ($assets) { + return (new AssetsTransformer)->transformAssets($assets, $assets->count()); + } else { + return response()->json(Helper::formatStandardApiResponse('error', null, 'Asset not found'), 200); + } + } /** @@ -401,7 +415,7 @@ class AssetsController extends Controller if ($request->input('deleted', 'false') === 'true') { $assets = $assets->withTrashed(); - } + } $assets = $assets->where('serial', $serial)->get(); if ($assets) { From 2c5a0d370ca31ff4d588a04f8e77450dedcd4a80 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 15 Nov 2022 17:33:56 +0000 Subject: [PATCH 2/3] Clean up API byserial and bytag, allow deleted param Signed-off-by: snipe --- app/Http/Controllers/Api/AssetsController.php | 41 ++++++++----------- 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 4a76bb36c3..4a944f942d 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -364,32 +364,28 @@ class AssetsController extends Controller /** * Returns JSON with information about an asset (by tag) for detail view. * - * @author [A. Gianotto] [] * @param string $tag + * @param string $deleted * @since [v4.2.1] - * @return JsonResponse + * @author [A. Gianotto] [] + * @return \Illuminate\Http\JsonResponse */ public function showByTag(Request $request, $tag) { $this->authorize('index', Asset::class); - if ($assets = Asset::with('assetstatus')->with('assignedTo') - ->withTrashed()->where('asset_tag', $tag)->get()) { - return (new AssetsTransformer)->transformAssets($assets, $assets->count()); - } - return response()->json(Helper::formatStandardApiResponse('error', null, 'Asset not found'), 200); + $assets = Asset::where('asset_tag', $tag)->with('assetstatus')->with('assignedTo'); - $assets = Asset::with('assetstatus')->with('assignedTo'); - - if ($request->input('deleted', 'false') === 'true') { + // Check if they've passed ?deleted=true + if ($request->input('deleted', 'false') == 'true') { $assets = $assets->withTrashed(); } - $assets = $assets->where('asset_tag', $tag)->get(); + $assets = $assets->get(); - if ($assets) { + if (($assets) && ($assets->count() > 0)) { return (new AssetsTransformer)->transformAssets($assets, $assets->count()); } else { - return response()->json(Helper::formatStandardApiResponse('error', null, 'Asset not found'), 200); + return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200); } } @@ -399,29 +395,26 @@ class AssetsController extends Controller * * @author [A. Gianotto] [] * @param string $serial + * @param string $deleted * @since [v4.2.1] * @return JsonResponse */ public function showBySerial(Request $request, $serial) { $this->authorize('index', Asset::class); - if ($assets = Asset::with('assetstatus')->with('assignedTo') - ->withTrashed()->where('serial', $serial)->get()) { - return (new AssetsTransformer)->transformAssets($assets, $assets->count()); - } - return response()->json(Helper::formatStandardApiResponse('error', null, 'Asset not found'), 200); + $assets = Asset::where('serial', $serial)->with('assetstatus')->with('assignedTo'); - $assets = Asset::with('assetstatus')->with('assignedTo'); - - if ($request->input('deleted', 'false') === 'true') { + // Check if they've passed ?deleted=true + if ($request->input('deleted', 'false') == 'true') { $assets = $assets->withTrashed(); } - $assets = $assets->where('serial', $serial)->get(); - if ($assets) { + $assets = $assets->get(); + + if (($assets) && ($assets->count() > 0)) { return (new AssetsTransformer)->transformAssets($assets, $assets->count()); } else { - return response()->json(Helper::formatStandardApiResponse('error', null, 'Asset not found'), 200); + return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200); } } From 7fcf6f2463b9a0a168584861d9bf8a9fe2c16a2d Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 15 Nov 2022 17:47:21 +0000 Subject: [PATCH 3/3] Removed deleted parameter Signed-off-by: snipe --- app/Http/Controllers/Api/AssetsController.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 4a944f942d..ee37c3ad04 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -365,7 +365,6 @@ class AssetsController extends Controller * Returns JSON with information about an asset (by tag) for detail view. * * @param string $tag - * @param string $deleted * @since [v4.2.1] * @author [A. Gianotto] [] * @return \Illuminate\Http\JsonResponse @@ -395,9 +394,8 @@ class AssetsController extends Controller * * @author [A. Gianotto] [] * @param string $serial - * @param string $deleted * @since [v4.2.1] - * @return JsonResponse + * @return \Illuminate\Http\JsonResponse */ public function showBySerial(Request $request, $serial) {