Small refactor to ALWAYS return deleted assets in a collection transformer

Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
snipe 2023-01-09 20:23:05 -08:00
parent bf849128fc
commit ae76d46f87

View file

@ -379,19 +379,21 @@ class AssetsController extends Controller
$assets = $assets->withTrashed(); $assets = $assets->withTrashed();
} }
$assets = $assets->get(); if (($assets = $assets->get()) && ($assets->count()) > 0) {
// If there is only one result, we should pull the first (and only) asset from the returned collection, since // If there is only one result, we should pull the first (and only) asset from the returned collection, since
// transformAsset() expects an Asset object, NOT a collection // transformAsset() expects an Asset object, NOT a collection
if (($assets) && ($assets->count() == 1)) { if ($assets->count() == 1) {
return (new AssetsTransformer)->transformAsset($assets->first()); return (new AssetsTransformer)->transformAsset($assets->first());
// If there is more than one result - which would probably never show up in the UI, since it would only happen if // If there is more than one result OR if the endpoint is requesting deleted items (even if there is only one
// there are multiple deleted assets with the same tag, pass the collection normally // match, return the normal collection transformed.
} elseif (($assets) && ($assets->count() > 1)) { } elseif (($assets->count() > 1) || ($request->input('deleted') == 'true')) {
return (new AssetsTransformer)->transformAssets($assets, $assets->count()); return (new AssetsTransformer)->transformAssets($assets, $assets->count());
} }
}
// If there are 0 results, return the "no such asset" response // If there are 0 results, return the "no such asset" response
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200); return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200);
@ -418,17 +420,21 @@ class AssetsController extends Controller
$assets = $assets->get(); $assets = $assets->get();
// If there is only one result, we should pull the first (and only) asset from the returned collection, since if (($assets = $assets->get()) && ($assets->count()) > 0) {
// If there is exactly one result, we should pull the first (and only) asset from the returned collection, since
// transformAsset() expects an Asset object, NOT a collection // transformAsset() expects an Asset object, NOT a collection
if (($assets) && ($assets->count() == 1)) { if ($assets->count() == 1) {
return (new AssetsTransformer)->transformAsset($assets->first()); return (new AssetsTransformer)->transformAsset($assets->first());
// If there is more than one result - which would probably never show up in the UI, since it would only happen if // If there is more than one result OR if the endpoint is requesting deleted items (even if there is only one
// there are multiple deleted assets with the same tag, pass the collection normally // match, return the normal collection transformed.
} elseif (($assets) && ($assets->count() > 1)) { } elseif (($assets->count() > 1) || ($request->input('deleted') == 'true')) {
return (new AssetsTransformer)->transformAssets($assets, $assets->count()); return (new AssetsTransformer)->transformAssets($assets, $assets->count());
} }
}
// If there are 0 results, return the "no such asset" response // If there are 0 results, return the "no such asset" response
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200); return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200);