diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 57f188d92f..160f4a120a 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -114,6 +114,7 @@ class AssetsController extends Controller 'byod', 'asset_eol_date', 'requestable', + 'jobtitle', ]; $filter = []; @@ -395,6 +396,9 @@ class AssetsController extends Controller case 'assigned_to': $assets->OrderAssigned($order); break; + case 'jobtitle': + $assets->OrderByJobTitle($order); + break; case 'created_by': $assets->OrderByCreatedByName($order); break; diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php index 3f1e4ac8c2..bcbd5d46e8 100644 --- a/app/Http/Transformers/AssetsTransformer.php +++ b/app/Http/Transformers/AssetsTransformer.php @@ -80,6 +80,7 @@ class AssetsTransformer 'qr' => ($setting->qr_code=='1') ? config('app.url').'/uploads/barcodes/qr-'.str_slug($asset->asset_tag).'-'.str_slug($asset->id).'.png' : null, 'alt_barcode' => ($setting->alt_barcode_enabled=='1') ? config('app.url').'/uploads/barcodes/'.str_slug($setting->alt_barcode).'-'.str_slug($asset->asset_tag).'.png' : null, 'assigned_to' => $this->transformAssignedTo($asset), + 'jobtitle' => $asset->assigned ? e($asset->assigned->jobtitle) : null, 'warranty_months' => ($asset->warranty_months > 0) ? e($asset->warranty_months.' '.trans('admin/hardware/form.months')) : null, 'warranty_expires' => ($asset->warranty_months > 0) ? Helper::getFormattedDateObject($asset->warranty_expires, 'date') : null, 'created_by' => ($asset->adminuser) ? [ diff --git a/app/Models/Asset.php b/app/Models/Asset.php index 28b3a90337..f455afccc1 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -491,7 +491,7 @@ class Asset extends Depreciable /** * Determines whether the asset is checked out to a user * - * Even though we allow allow for checkout to things beyond users + * Even though we allow for checkout to things beyond users * this method is an easy way of seeing if we are checked out to a user. * * @author [A. Gianotto] [] @@ -1130,6 +1130,7 @@ class Asset extends Depreciable $query = $query ->orWhere('assets_users.first_name', 'LIKE', '%'.$term.'%') ->orWhere('assets_users.last_name', 'LIKE', '%'.$term.'%') + ->orWhere('assets_users.jobtitle', 'LIKE', '%'.$term.'%') ->orWhere('assets_users.username', 'LIKE', '%'.$term.'%') ->orWhere('assets_users.employee_num', 'LIKE', '%'.$term.'%') ->orWhereMultipleColumns([ @@ -1586,11 +1587,13 @@ class Asset extends Depreciable })->orWhere(function ($query) use ($search) { $query->where('assets_users.first_name', 'LIKE', '%'.$search.'%') ->orWhere('assets_users.last_name', 'LIKE', '%'.$search.'%') + ->orWhere('assets_users.username', 'LIKE', '%'.$search.'%') + ->orWhere('assets_users.jobtitle', 'LIKE', '%'.$search.'%') ->orWhereMultipleColumns([ 'assets_users.first_name', 'assets_users.last_name', + 'assets_users.jobtitle', ], $search) - ->orWhere('assets_users.username', 'LIKE', '%'.$search.'%') ->orWhere('assets_locations.name', 'LIKE', '%'.$search.'%') ->orWhere('assigned_assets.name', 'LIKE', '%'.$search.'%'); })->orWhere('assets.name', 'LIKE', '%'.$search.'%') @@ -1973,6 +1976,19 @@ class Asset extends Depreciable return $query->leftJoin('suppliers as suppliers_assets', 'assets.supplier_id', '=', 'suppliers_assets.id')->orderBy('suppliers_assets.name', $order); } + /** + * Query builder scope to order on supplier name + * + * @param \Illuminate\Database\Query\Builder $query Query builder instance + * @param text $order Order + * + * @return \Illuminate\Database\Query\Builder Modified query builder + */ + public function scopeOrderByJobTitle($query, $order) + { + return $query->leftJoin('users as users_sort', 'assets.assigned_to', '=', 'users_sort.id')->select('assets.*')->orderBy('users_sort.jobtitle', $order); + } + /** * Query builder scope to search on location ID * diff --git a/app/Presenters/AssetPresenter.php b/app/Presenters/AssetPresenter.php index f4310b3a1a..31eec25f74 100644 --- a/app/Presenters/AssetPresenter.php +++ b/app/Presenters/AssetPresenter.php @@ -108,6 +108,12 @@ class AssetPresenter extends Presenter 'title' => trans('general.employee_number'), 'visible' => false, 'formatter' => 'employeeNumFormatter', + ],[ + 'field' => 'jobtitle', + 'searchable' => true, + 'sortable' => true, + 'title' => trans('admin/users/table.title'), + 'visible' => false, ], [ 'field' => 'location', 'searchable' => true,