Added maintenances crumbs

Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
snipe 2025-02-19 14:29:06 +00:00
parent 7a94b09017
commit 292819afa5
5 changed files with 78 additions and 63 deletions

View file

@ -139,19 +139,12 @@ class AssetMaintenancesController extends Controller
* @version v1.0 * @version v1.0
* @since [v1.8] * @since [v1.8]
*/ */
public function edit($assetMaintenanceId = null) : View | RedirectResponse public function edit(AssetMaintenance $maintenance) : View | RedirectResponse
{ {
$this->authorize('update', Asset::class); $this->authorize('update', Asset::class);
// Check if the asset maintenance exists if ((!$maintenance->asset) || ($maintenance->asset->deleted_at!='')) {
$this->authorize('update', Asset::class);
// Check if the asset maintenance exists
if (is_null($assetMaintenance = AssetMaintenance::find($assetMaintenanceId))) {
// Redirect to the asset maintenance management page
return redirect()->route('maintenances.index')->with('error', trans('admin/asset_maintenances/message.not_found'));
} elseif ((!$assetMaintenance->asset) || ($assetMaintenance->asset->deleted_at!='')) {
// Redirect to the asset maintenance management page
return redirect()->route('maintenances.index')->with('error', 'asset does not exist'); return redirect()->route('maintenances.index')->with('error', 'asset does not exist');
} elseif (! Company::isCurrentUserHasAccess($assetMaintenance->asset)) { } elseif (! Company::isCurrentUserHasAccess($maintenance->asset)) {
return static::getInsufficientPermissionsRedirect(); return static::getInsufficientPermissionsRedirect();
} }
@ -161,7 +154,7 @@ class AssetMaintenancesController extends Controller
return view('asset_maintenances/edit') return view('asset_maintenances/edit')
->with('selectedAsset', null) ->with('selectedAsset', null)
->with('assetMaintenanceType', $assetMaintenanceType) ->with('assetMaintenanceType', $assetMaintenanceType)
->with('item', $assetMaintenance); ->with('item', $maintenance);
} }
/** /**
@ -174,24 +167,20 @@ class AssetMaintenancesController extends Controller
* @version v1.0 * @version v1.0
* @since [v1.8] * @since [v1.8]
*/ */
public function update(Request $request, $assetMaintenanceId = null) : View | RedirectResponse public function update(Request $request, AssetMaintenance $maintenance) : View | RedirectResponse
{ {
$this->authorize('update', Asset::class); $this->authorize('update', Asset::class);
// Check if the asset maintenance exists
if (is_null($assetMaintenance = AssetMaintenance::find($assetMaintenanceId))) { if ((!$maintenance->asset) || ($maintenance->asset->deleted_at!='')) {
// Redirect to the asset maintenance management page
return redirect()->route('maintenances.index')->with('error', trans('admin/asset_maintenances/message.not_found'));
} elseif ((!$assetMaintenance->asset) || ($assetMaintenance->asset->deleted_at!='')) {
// Redirect to the asset maintenance management page
return redirect()->route('maintenances.index')->with('error', 'asset does not exist'); return redirect()->route('maintenances.index')->with('error', 'asset does not exist');
} elseif (! Company::isCurrentUserHasAccess($assetMaintenance->asset)) { } elseif (! Company::isCurrentUserHasAccess($maintenance->asset)) {
return static::getInsufficientPermissionsRedirect(); return static::getInsufficientPermissionsRedirect();
} }
$assetMaintenance->supplier_id = $request->input('supplier_id'); $maintenance->supplier_id = $request->input('supplier_id');
$assetMaintenance->is_warranty = $request->input('is_warranty'); $maintenance->is_warranty = $request->input('is_warranty');
$assetMaintenance->cost = $request->input('cost'); $maintenance->cost = $request->input('cost');
$assetMaintenance->notes = $request->input('notes'); $maintenance->notes = $request->input('notes');
$asset = Asset::find(request('asset_id')); $asset = Asset::find(request('asset_id'));
@ -200,39 +189,39 @@ class AssetMaintenancesController extends Controller
} }
// Save the asset maintenance data // Save the asset maintenance data
$assetMaintenance->asset_id = $request->input('asset_id'); $maintenance->asset_id = $request->input('asset_id');
$assetMaintenance->asset_maintenance_type = $request->input('asset_maintenance_type'); $maintenance->asset_maintenance_type = $request->input('asset_maintenance_type');
$assetMaintenance->title = $request->input('title'); $maintenance->title = $request->input('title');
$assetMaintenance->start_date = $request->input('start_date'); $maintenance->start_date = $request->input('start_date');
$assetMaintenance->completion_date = $request->input('completion_date'); $maintenance->completion_date = $request->input('completion_date');
if (($assetMaintenance->completion_date == null) if (($maintenance->completion_date == null)
) { ) {
if (($assetMaintenance->asset_maintenance_time !== 0) if (($maintenance->asset_maintenance_time !== 0)
|| (! is_null($assetMaintenance->asset_maintenance_time)) || (! is_null($maintenance->asset_maintenance_time))
) { ) {
$assetMaintenance->asset_maintenance_time = null; $maintenance->asset_maintenance_time = null;
} }
} }
if (($assetMaintenance->completion_date !== null) if (($maintenance->completion_date !== null)
&& ($assetMaintenance->start_date !== '') && ($maintenance->start_date !== '')
&& ($assetMaintenance->start_date !== '0000-00-00') && ($maintenance->start_date !== '0000-00-00')
) { ) {
$startDate = Carbon::parse($assetMaintenance->start_date); $startDate = Carbon::parse($maintenance->start_date);
$completionDate = Carbon::parse($assetMaintenance->completion_date); $completionDate = Carbon::parse($maintenance->completion_date);
$assetMaintenance->asset_maintenance_time = $completionDate->diffInDays($startDate); $maintenance->asset_maintenance_time = $completionDate->diffInDays($startDate);
} }
// Was the asset maintenance created? // Was the asset maintenance created?
if ($assetMaintenance->save()) { if ($maintenance->save()) {
// Redirect to the new asset maintenance page // Redirect to the new asset maintenance page
return redirect()->route('maintenances.index') return redirect()->route('maintenances.index')
->with('success', trans('admin/asset_maintenances/message.edit.success')); ->with('success', trans('admin/asset_maintenances/message.edit.success'));
} }
return redirect()->back()->withInput()->withErrors($assetMaintenance->getErrors()); return redirect()->back()->withInput()->withErrors($maintenance->getErrors());
} }
/** /**
@ -271,19 +260,13 @@ class AssetMaintenancesController extends Controller
* @version v1.0 * @version v1.0
* @since [v1.8] * @since [v1.8]
*/ */
public function show($assetMaintenanceId) : View | RedirectResponse public function show(AssetMaintenance $maintenance) : View | RedirectResponse
{ {
$this->authorize('view', Asset::class); $this->authorize('view', Asset::class);
if (! Company::isCurrentUserHasAccess($maintenance->asset)) {
// Check if the asset maintenance exists
if (is_null($assetMaintenance = AssetMaintenance::find($assetMaintenanceId))) {
// Redirect to the asset maintenance management page
return redirect()->route('maintenances.index')
->with('error', trans('admin/asset_maintenances/message.not_found'));
} elseif (! Company::isCurrentUserHasAccess($assetMaintenance->asset)) {
return static::getInsufficientPermissionsRedirect(); return static::getInsufficientPermissionsRedirect();
} }
return view('asset_maintenances/view')->with('assetMaintenance', $assetMaintenance); return view('asset_maintenances/view')->with('assetMaintenance', $maintenance);
} }
} }

View file

@ -22,6 +22,15 @@ class AssetMaintenancesPresenter extends Presenter
'title' => trans('general.id'), 'title' => trans('general.id'),
'visible' => false, 'visible' => false,
], [ ], [
'field' => 'title',
'searchable' => true,
'sortable' => true,
'switchable' => true,
'title' => trans('general.name'),
'visible' => true,
'formatter' => 'maintenancesLinkFormatter',
],
[
'field' => 'company', 'field' => 'company',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,

View file

@ -2,6 +2,7 @@
use App\Models\Accessory; use App\Models\Accessory;
use App\Models\Asset; use App\Models\Asset;
use App\Models\AssetMaintenance;
use App\Models\AssetModel; use App\Models\AssetModel;
use App\Models\Category; use App\Models\Category;
use App\Models\Company; use App\Models\Company;
@ -358,6 +359,29 @@ class BreadcrumbsServiceProvider extends ServiceProvider
->push(trans('general.breadcrumb_button_actions.edit_item', ['name' => $location->name]), route('home')) ->push(trans('general.breadcrumb_button_actions.edit_item', ['name' => $location->name]), route('home'))
); );
/**
* Maintenances Breadcrumbs
*/
Breadcrumbs::for('maintenances.index', fn (Trail $trail) =>
$trail->parent('hardware.index', route('hardware.index'))
->push(trans('general.maintenances'), route('maintenances.index'))
);
Breadcrumbs::for('maintenances.create', fn (Trail $trail) =>
$trail->parent('maintenances.index', route('maintenances.index'))
->push(trans('general.create'), route('maintenances.create'))
);
Breadcrumbs::for('maintenances.show', fn (Trail $trail, AssetMaintenance $maintenance) =>
$trail->parent('maintenances.index', route('locations.index'))
->push($maintenance->title, route('maintenances.show', $maintenance))
);
Breadcrumbs::for('manufacturers.edit', fn (Trail $trail, Manufacturer $manufacturer) =>
$trail->parent('manufacturers.index', route('manufacturers.index'))
->push(trans('general.breadcrumb_button_actions.edit_item', ['name' => $manufacturer->name]), route('home'))
);
/** /**
* Manufacturers Breadcrumbs * Manufacturers Breadcrumbs
@ -382,6 +406,7 @@ class BreadcrumbsServiceProvider extends ServiceProvider
->push(trans('general.breadcrumb_button_actions.edit_item', ['name' => $manufacturer->name]), route('home')) ->push(trans('general.breadcrumb_button_actions.edit_item', ['name' => $manufacturer->name]), route('home'))
); );
/** /**
* Predefined Kits Breadcrumbs * Predefined Kits Breadcrumbs
*/ */

View file

@ -290,9 +290,6 @@
var dest = 'admin/groups'; var dest = 'admin/groups';
} }
if (dest =='maintenances') {
var dest = 'hardware/maintenances';
}
if(element_name != '') { if(element_name != '') {
dest = dest + '/' + row.owner_id + '/' + element_name; dest = dest + '/' + row.owner_id + '/' + element_name;

View file

@ -33,19 +33,13 @@ Route::group(
$trail->parent('home')->push(trans('general.assets'), route('hardware.index')) $trail->parent('home')->push(trans('general.assets'), route('hardware.index'))
); );
Route::get('quickscancheckin', Route::get('quickscancheckin', [AssetsController::class, 'quickScanCheckin'])
[AssetsController::class, 'quickScanCheckin'] ->name('hardware/quickscancheckin')
)->name('hardware/quickscancheckin')
->breadcrumbs(fn (Trail $trail) => ->breadcrumbs(fn (Trail $trail) =>
$trail->parent('hardware.index')->push('Quickscan Checkin', route('hardware/quickscancheckin')) $trail->parent('hardware.index')
->push('Quickscan Checkin', route('hardware/quickscancheckin'))
); );
// Asset Maintenances
Route::resource('maintenances',
AssetMaintenancesController::class, [
'parameters' => ['maintenance' => 'maintenance_id', 'asset' => 'asset_id'],
]);
Route::get('requested', [ Route::get('requested', [
AssetsController::class, 'getRequestedIndex'] AssetsController::class, 'getRequestedIndex']
)->name('assets.requested'); )->name('assets.requested');
@ -176,6 +170,13 @@ Route::resource('hardware',
['middleware' => ['auth'] ['middleware' => ['auth']
])->parameters(['hardware' => 'asset']); ])->parameters(['hardware' => 'asset']);
// Asset Maintenances
Route::resource('maintenances',
AssetMaintenancesController::class, [
'parameters' => ['maintenance' => 'maintenance', 'asset' => 'asset_id'],
]);
Route::get('ht/{any?}', Route::get('ht/{any?}',
[AssetsController::class, 'getAssetByTag'] [AssetsController::class, 'getAssetByTag']
)->where('any', '.*')->name('ht/assetTag'); )->where('any', '.*')->name('ht/assetTag');