mirror of
https://github.com/snipe/snipe-it.git
synced 2024-11-09 23:24:06 -08:00
Added showableAssets() relationship to Category model
Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
parent
00896a8615
commit
7f8bdbd252
|
@ -24,10 +24,50 @@ class CategoriesController extends Controller
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
$this->authorize('view', Category::class);
|
$this->authorize('view', Category::class);
|
||||||
$allowed_columns = ['id', 'name', 'category_type', 'category_type', 'use_default_eula', 'eula_text', 'require_acceptance', 'checkin_email', 'assets_count', 'accessories_count', 'consumables_count', 'components_count', 'licenses_count', 'image'];
|
$allowed_columns = [
|
||||||
|
'id',
|
||||||
|
'name',
|
||||||
|
'category_type',
|
||||||
|
'category_type',
|
||||||
|
'use_default_eula',
|
||||||
|
'eula_text',
|
||||||
|
'require_acceptance',
|
||||||
|
'checkin_email',
|
||||||
|
'assets_count',
|
||||||
|
'accessories_count',
|
||||||
|
'consumables_count',
|
||||||
|
'components_count',
|
||||||
|
'licenses_count',
|
||||||
|
'image',
|
||||||
|
];
|
||||||
|
|
||||||
|
$categories = Category::select([
|
||||||
|
'id',
|
||||||
|
'created_at',
|
||||||
|
'updated_at',
|
||||||
|
'name', 'category_type',
|
||||||
|
'use_default_eula',
|
||||||
|
'eula_text',
|
||||||
|
'require_acceptance',
|
||||||
|
'checkin_email',
|
||||||
|
'image'
|
||||||
|
])->withCount('showableAssets as assets_count', 'accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'licenses as licenses_count');
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This checks to see if we should override the Admin Setting to show archived assets in list.
|
||||||
|
* We don't currently use it within the Snipe-IT GUI, but will be useful for API integrations where they
|
||||||
|
* may actually need to fetch assets that are archived.
|
||||||
|
*
|
||||||
|
* @see \App\Models\Category::showableAssets()
|
||||||
|
*/
|
||||||
|
if ($request->input('archived')=='true') {
|
||||||
|
$categories = $categories->withCount('assets as assets_count');
|
||||||
|
} else {
|
||||||
|
$categories = $categories->withCount('showableAssets as assets_count');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$categories = Category::select(['id', 'created_at', 'updated_at', 'name', 'category_type', 'use_default_eula', 'eula_text', 'require_acceptance', 'checkin_email', 'image'])
|
|
||||||
->withCount('assets as assets_count', 'accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'licenses as licenses_count');
|
|
||||||
|
|
||||||
if ($request->filled('search')) {
|
if ($request->filled('search')) {
|
||||||
$categories = $categories->TextSearch($request->input('search'));
|
$categories = $categories->TextSearch($request->input('search'));
|
||||||
|
|
|
@ -194,7 +194,25 @@ class Category extends SnipeModel
|
||||||
*/
|
*/
|
||||||
public function assets()
|
public function assets()
|
||||||
{
|
{
|
||||||
return $this->hasManyThrough(\App\Models\Asset::class, \App\Models\AssetModel::class, 'category_id', 'model_id');
|
return $this->hasManyThrough(Asset::class, \App\Models\AssetModel::class, 'category_id', 'model_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Establishes the category -> assets relationship but also takes into consideration
|
||||||
|
* the setting to show archived in lists.
|
||||||
|
*
|
||||||
|
* We could have complicated the assets() method above, but keeping this separate
|
||||||
|
* should give us more flexibility if we need to return actually archived assets
|
||||||
|
* by their category.
|
||||||
|
*
|
||||||
|
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||||
|
* @since [v6.1.0]
|
||||||
|
* @see \App\Models\Asset::scopeAssetsForShow()
|
||||||
|
* @return \Illuminate\Database\Eloquent\Relations\Relation
|
||||||
|
*/
|
||||||
|
public function showableAssets()
|
||||||
|
{
|
||||||
|
return $this->hasManyThrough(Asset::class, \App\Models\AssetModel::class, 'category_id', 'model_id')->AssetsForShow();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<a href="#items" data-toggle="tab" title="{{ trans('general.items') }}"> {{ ucwords($category_type_route) }}
|
<a href="#items" data-toggle="tab" title="{{ trans('general.items') }}"> {{ ucwords($category_type_route) }}
|
||||||
@if ($category->category_type=='asset')
|
@if ($category->category_type=='asset')
|
||||||
<badge class="badge badge-secondary"> {{ $category->assets()->AssetsForShow()->count() }}</badge>
|
<badge class="badge badge-secondary"> {{ $category->showableAssets()->count() }}</badge>
|
||||||
@endif
|
@endif
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
Loading…
Reference in a new issue