From 639409fb3f0c2d470fc30f79c2671e597a38e8a4 Mon Sep 17 00:00:00 2001 From: snipe Date: Fri, 25 Mar 2022 13:00:16 +0000 Subject: [PATCH] Backporting #10829 to master Signed-off-by: snipe --- app/Http/Controllers/Api/StatuslabelsController.php | 13 +++++++++++++ app/Models/Statuslabel.php | 12 ++++++++++++ 2 files changed, 25 insertions(+) diff --git a/app/Http/Controllers/Api/StatuslabelsController.php b/app/Http/Controllers/Api/StatuslabelsController.php index debb41b5f9..5b80699d38 100644 --- a/app/Http/Controllers/Api/StatuslabelsController.php +++ b/app/Http/Controllers/Api/StatuslabelsController.php @@ -30,6 +30,19 @@ class StatuslabelsController extends Controller $statuslabels = $statuslabels->TextSearch($request->input('search')); } + // if a status_type is passed, filter by that + if ($request->filled('status_type')) { + if (strtolower($request->input('status_type')) == 'pending') { + $statuslabels = $statuslabels->Pending(); + } elseif (strtolower($request->input('status_type')) == 'archived') { + $statuslabels = $statuslabels->Archived(); + } elseif (strtolower($request->input('status_type')) == 'deployable') { + $statuslabels = $statuslabels->Deployable(); + } elseif (strtolower($request->input('status_type')) == 'undeployable') { + $statuslabels = $statuslabels->Undeployable(); + } + } + // Set the offset to the API call's offset, unless the offset is higher than the actual count of items in which // case we override with the actual count, so we should return 0 items. $offset = (($statuslabels) && ($request->get('offset') > $statuslabels->count())) ? $statuslabels->count() : $request->get('offset', 0); diff --git a/app/Models/Statuslabel.php b/app/Models/Statuslabel.php index fc252af714..fa2d7f0ff6 100755 --- a/app/Models/Statuslabel.php +++ b/app/Models/Statuslabel.php @@ -121,6 +121,18 @@ class Statuslabel extends SnipeModel ->where('deployable', '=', 1); } + /** + * Query builder scope for undeployable status types + * + * @return \Illuminate\Database\Query\Builder Modified query builder + */ + public function scopeUndeployable() + { + return $this->where('pending', '=', 0) + ->where('archived', '=', 0) + ->where('deployable', '=', 0); + } + /** * Helper function to determine type attributes *