From 72be171917c738bceb704a1e4a0b8f14c9b5b853 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 30 Sep 2025 11:20:33 +0100 Subject: [PATCH] Added archived to model view --- .../Controllers/Api/AssetModelsController.php | 6 +++++- .../Transformers/AssetModelsTransformer.php | 5 ++++- app/Models/AssetModel.php | 12 ++++++++++- app/Presenters/AssetModelPresenter.php | 21 ++++++++++++++++++- 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Api/AssetModelsController.php b/app/Http/Controllers/Api/AssetModelsController.php index 7c29d5e4c8..601d92e861 100644 --- a/app/Http/Controllers/Api/AssetModelsController.php +++ b/app/Http/Controllers/Api/AssetModelsController.php @@ -46,6 +46,8 @@ class AssetModelsController extends Controller 'manufacturer', 'requestable', 'assets_count', + 'assets_assigned_count', + 'assets_archived_count', 'remaining', 'category', 'fieldset', @@ -75,7 +77,9 @@ class AssetModelsController extends Controller ]) ->with('category', 'depreciation', 'manufacturer', 'fieldset.fields.defaultValues', 'adminuser') ->withCount('assets as assets_count') - ->withCount('availableAssets as remaining'); + ->withCount('availableAssets as remaining') + ->withCount('assignedAssets as assets_assigned_count') + ->withCount('archivedAssets as assets_archived_count'); if ($request->input('status')=='deleted') { $assetmodels->onlyTrashed(); diff --git a/app/Http/Transformers/AssetModelsTransformer.php b/app/Http/Transformers/AssetModelsTransformer.php index 901fcbd9a3..fe83e3e42b 100644 --- a/app/Http/Transformers/AssetModelsTransformer.php +++ b/app/Http/Transformers/AssetModelsTransformer.php @@ -48,12 +48,15 @@ class AssetModelsTransformer 'image' => ($assetmodel->image != '') ? Storage::disk('public')->url('models/'.e($assetmodel->image)) : null, 'model_number' => ($assetmodel->model_number ? e($assetmodel->model_number): null), 'min_amt' => ($assetmodel->min_amt) ? (int) $assetmodel->min_amt : null, - 'remaining' => (int) $assetmodel->available_assets_count, + 'depreciation' => ($assetmodel->depreciation) ? [ 'id' => (int) $assetmodel->depreciation->id, 'name'=> e($assetmodel->depreciation->name), ] : null, 'assets_count' => (int) $assetmodel->assets_count, + 'assets_assigned_count' => (int) $assetmodel->assets_assigned_count, + 'assets_archived_count' => (int) $assetmodel->assets_archived_count, + 'remaining' => (int) ($assetmodel->assets_count - $assetmodel->assets_assigned_count), 'category' => ($assetmodel->category) ? [ 'id' => (int) $assetmodel->category->id, 'name'=> e($assetmodel->category->name), diff --git a/app/Models/AssetModel.php b/app/Models/AssetModel.php index 33e7752781..81c9850b8c 100755 --- a/app/Models/AssetModel.php +++ b/app/Models/AssetModel.php @@ -125,7 +125,17 @@ class AssetModel extends SnipeModel public function availableAssets() { - return $this->hasMany(\App\Models\Asset::class, 'model_id')->whereNull('assets.assigned_to')->RTD(); + return $this->hasMany(\App\Models\Asset::class, 'model_id')->RTD(); + } + + public function assignedAssets() + { + return $this->hasMany(\App\Models\Asset::class, 'model_id')->Deployed(); + } + + public function archivedAssets() + { + return $this->hasMany(\App\Models\Asset::class, 'model_id')->Archived(); } /** diff --git a/app/Presenters/AssetModelPresenter.php b/app/Presenters/AssetModelPresenter.php index 8992e22e55..c07a7fdf58 100644 --- a/app/Presenters/AssetModelPresenter.php +++ b/app/Presenters/AssetModelPresenter.php @@ -89,7 +89,16 @@ class AssetModelPresenter extends Presenter 'class' => 'text-right text-padding-number-cell', 'footerFormatter' => 'qtySumFormatter', ], - + [ + 'field' => 'assets_assigned_count', + 'searchable' => false, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('general.assigned'), + 'visible' => true, + 'class' => 'text-right text-padding-number-cell', + 'footerFormatter' => 'qtySumFormatter', + ], [ 'field' => 'remaining', 'searchable' => false, @@ -100,6 +109,16 @@ class AssetModelPresenter extends Presenter 'class' => 'text-right text-padding-number-cell', 'footerFormatter' => 'qtySumFormatter', ], + [ + 'field' => 'assets_archived_count', + 'searchable' => false, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('general.archived'), + 'visible' => true, + 'class' => 'text-right text-padding-number-cell', + 'footerFormatter' => 'qtySumFormatter', + ], [ 'field' => 'depreciation', 'searchable' => false,