From 71ebade641c2d6a118d0db4929430ff52e465e3d Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 14 Feb 2024 09:59:10 +0000 Subject: [PATCH] Added serial and status to searchable relations Signed-off-by: snipe --- app/Models/AssetMaintenance.php | 43 +++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/app/Models/AssetMaintenance.php b/app/Models/AssetMaintenance.php index 760abf1519..5f66783cbb 100644 --- a/app/Models/AssetMaintenance.php +++ b/app/Models/AssetMaintenance.php @@ -62,7 +62,15 @@ class AssetMaintenance extends Model implements ICompanyableChild * * @var array */ - protected $searchableAttributes = ['title', 'notes', 'asset_maintenance_type', 'cost', 'start_date', 'completion_date']; + protected $searchableAttributes = + [ + 'title', + 'notes', + 'asset_maintenance_type', + 'cost', + 'start_date', + 'completion_date' + ]; /** * The relations and their attributes that should be included when searching the model. @@ -70,9 +78,10 @@ class AssetMaintenance extends Model implements ICompanyableChild * @var array */ protected $searchableRelations = [ - 'asset' => ['name', 'asset_tag'], + 'asset' => ['name', 'asset_tag', 'serial'], 'asset.model' => ['name', 'model_number'], 'asset.supplier' => ['name'], + 'asset.assetstatus' => ['name'], 'supplier' => ['name'], ]; @@ -197,6 +206,7 @@ class AssetMaintenance extends Model implements ICompanyableChild ->orderBy('suppliers_maintenances.name', $order); } + /** * Query builder scope to order on admin user * @@ -239,4 +249,33 @@ class AssetMaintenance extends Model implements ICompanyableChild return $query->leftJoin('assets', 'asset_maintenances.asset_id', '=', 'assets.id') ->orderBy('assets.name', $order); } + + /** + * Query builder scope to order on serial + * + * @param \Illuminate\Database\Query\Builder $query Query builder instance + * @param string $order Order + * + * @return \Illuminate\Database\Query\Builder Modified query builder + */ + public function scopeOrderByAssetSerial($query, $order) + { + return $query->leftJoin('assets', 'asset_maintenances.asset_id', '=', 'assets.id') + ->orderBy('assets.serial', $order); + } + + /** + * Query builder scope to order on status label name + * + * @param \Illuminate\Database\Query\Builder $query Query builder instance + * @param text $order Order + * + * @return \Illuminate\Database\Query\Builder Modified query builder + */ + public function scopeOrderStatusName($query, $order) + { + return $query->join('assets as maintained_asset', 'asset_maintenances.asset_id', '=', 'maintained_asset.id') + ->leftjoin('status_labels as maintained_asset_status', 'maintained_asset_status.id', '=', 'maintained_asset.status_id') + ->orderBy('maintained_asset_status.name', $order); + } }