mirror of
https://github.com/snipe/snipe-it.git
synced 2025-03-05 20:52:15 -08:00
Fixes for ordering on asset listing
This commit is contained in:
parent
1bd798c4d2
commit
0c8308f5a4
|
@ -84,7 +84,7 @@ class AssetsController extends Controller
|
||||||
|
|
||||||
$assets = Company::scopeCompanyables(Asset::select('assets.*'))->with(
|
$assets = Company::scopeCompanyables(Asset::select('assets.*'))->with(
|
||||||
'assetLoc', 'assetstatus', 'defaultLoc', 'assetlog', 'company',
|
'assetLoc', 'assetstatus', 'defaultLoc', 'assetlog', 'company',
|
||||||
'model.category', 'model.manufacturer', 'model.fieldset', 'assigneduser');
|
'model.category', 'model.manufacturer', 'model.fieldset', 'assigneduser','supplier');
|
||||||
|
|
||||||
// If we should search on everything
|
// If we should search on everything
|
||||||
if (($request->has('search')) && (count($filter) == 0)) {
|
if (($request->has('search')) && (count($filter) == 0)) {
|
||||||
|
@ -96,6 +96,8 @@ class AssetsController extends Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// These are used by the API to query against specific ID numbers
|
||||||
if ($request->has('status_id')) {
|
if ($request->has('status_id')) {
|
||||||
$assets->where('status_id', '=', $request->input('status_id'));
|
$assets->where('status_id', '=', $request->input('status_id'));
|
||||||
}
|
}
|
||||||
|
@ -112,6 +114,10 @@ class AssetsController extends Controller
|
||||||
$assets->ByLocationId($request->input('location_id'));
|
$assets->ByLocationId($request->input('location_id'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($request->has('supplier_id')) {
|
||||||
|
$assets->where('assets.supplier_id', '=', $request->input('supplier_id'));
|
||||||
|
}
|
||||||
|
|
||||||
if ($request->has('company_id')) {
|
if ($request->has('company_id')) {
|
||||||
$assets->where('assets.company_id', '=', $request->input('company_id'));
|
$assets->where('assets.company_id', '=', $request->input('company_id'));
|
||||||
}
|
}
|
||||||
|
@ -125,9 +131,9 @@ class AssetsController extends Controller
|
||||||
$offset = request('offset', 0);
|
$offset = request('offset', 0);
|
||||||
$limit = $request->input('limit', 50);
|
$limit = $request->input('limit', 50);
|
||||||
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
|
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
|
||||||
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'assets.created_at';
|
|
||||||
$assets->orderBy($sort, $order);
|
|
||||||
|
|
||||||
|
|
||||||
|
// This is used by the sidenav, mostly
|
||||||
switch ($request->input('status')) {
|
switch ($request->input('status')) {
|
||||||
case 'Deleted':
|
case 'Deleted':
|
||||||
$assets->withTrashed()->Deleted();
|
$assets->withTrashed()->Deleted();
|
||||||
|
@ -154,7 +160,10 @@ class AssetsController extends Controller
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
switch ($sort) {
|
// This handles all of the pivot sorting (versus the assets.* fields in the allowed_columns array)
|
||||||
|
$column_sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'assets.created_at';
|
||||||
|
|
||||||
|
switch ($request->input('sort')) {
|
||||||
case 'model':
|
case 'model':
|
||||||
$assets->OrderModels($order);
|
$assets->OrderModels($order);
|
||||||
break;
|
break;
|
||||||
|
@ -176,15 +185,17 @@ class AssetsController extends Controller
|
||||||
case 'status_label':
|
case 'status_label':
|
||||||
$assets->OrderStatus($order);
|
$assets->OrderStatus($order);
|
||||||
break;
|
break;
|
||||||
|
case 'supplier':
|
||||||
|
$assets->OrderSupplier($order);
|
||||||
|
break;
|
||||||
case 'assigned_to':
|
case 'assigned_to':
|
||||||
$assets->OrderAssigned($order);
|
$assets->OrderAssigned($order);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$assets->orderBy($sort, $order);
|
$assets->orderBy($column_sort, $order);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$total = $assets->count();
|
$total = $assets->count();
|
||||||
$assets = $assets->skip($offset)->take($limit)->get();
|
$assets = $assets->skip($offset)->take($limit)->get();
|
||||||
return (new AssetsTransformer)->transformAssets($assets, $total);
|
return (new AssetsTransformer)->transformAssets($assets, $total);
|
||||||
|
|
|
@ -727,10 +727,15 @@ class Asset extends Depreciable
|
||||||
$query->where('manufacturers.name', 'LIKE', '%'.$search.'%');
|
$query->where('manufacturers.name', 'LIKE', '%'.$search.'%');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
})->orWhere(function ($query) use ($search) {
|
})->orWhere(function ($query) use ($search) {
|
||||||
$query->whereHas('assetstatus', function ($query) use ($search) {
|
$query->whereHas('assetstatus', function ($query) use ($search) {
|
||||||
$query->where('status_labels.name', 'LIKE', '%'.$search.'%');
|
$query->where('status_labels.name', 'LIKE', '%'.$search.'%');
|
||||||
});
|
});
|
||||||
|
})->orWhere(function ($query) use ($search) {
|
||||||
|
$query->whereHas('supplier', function ($query) use ($search) {
|
||||||
|
$query->where('suppliers.name', 'LIKE', '%'.$search.'%');
|
||||||
|
});
|
||||||
})->orWhere(function ($query) use ($search) {
|
})->orWhere(function ($query) use ($search) {
|
||||||
$query->whereHas('company', function ($query) use ($search) {
|
$query->whereHas('company', function ($query) use ($search) {
|
||||||
$query->where('companies.name', 'LIKE', '%'.$search.'%');
|
$query->where('companies.name', 'LIKE', '%'.$search.'%');
|
||||||
|
@ -1025,6 +1030,20 @@ class Asset extends Depreciable
|
||||||
return $query->join('locations', 'locations.id', '=', 'assets.rtd_location_id')->orderBy('locations.name', $order);
|
return $query->join('locations', 'locations.id', '=', 'assets.rtd_location_id')->orderBy('locations.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 scopeOrderSupplier($query, $order)
|
||||||
|
{
|
||||||
|
return $query->leftJoin('suppliers', 'assets.supplier_id', '=', 'suppliers.id')->orderBy('suppliers.name', $order);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Query builder scope to search on location ID
|
* Query builder scope to search on location ID
|
||||||
*
|
*
|
||||||
|
@ -1047,4 +1066,6 @@ class Asset extends Depreciable
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue