From fae4ad606867f91f8499694e499e7096f41e11a1 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Mon, 24 Feb 2025 10:22:52 -0800 Subject: [PATCH] prevents parent assets from being deleted --- .../Assets/BulkAssetsController.php | 43 ++++++++++++++++--- .../lang/en-US/admin/hardware/message.php | 3 +- resources/views/notifications.blade.php | 2 +- 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/Assets/BulkAssetsController.php b/app/Http/Controllers/Assets/BulkAssetsController.php index 14e5463ef9..58da5ae790 100644 --- a/app/Http/Controllers/Assets/BulkAssetsController.php +++ b/app/Http/Controllers/Assets/BulkAssetsController.php @@ -535,14 +535,47 @@ class BulkAssetsController extends Controller return redirect($bulk_back_url)->with('error', trans('admin/hardware/message.delete.nothing_updated')); } - $assignedAssets = Asset::whereIn('id', $assetIds)->whereNotNull('assigned_to')->get(); - if($assignedAssets->isNotEmpty()) { + $parentAssets = Asset::whereIn('id', $assetIds) + ->whereHas('assignedAssets') + ->get(); - //if assets are checked out, return a list of asset tags that would need to be checked in first. - $assetTags = $assignedAssets->pluck('asset_tag')->implode(', '); - return redirect($bulk_back_url)->with('error', trans_choice('admin/hardware/message.delete.assigned_to_error', $assignedAssets->count(), ['asset_tag' => $assetTags] )); + $assignedAssets = Asset::whereIn('id', $assetIds) + ->whereNotNull('assigned_to') + ->get(); + + $errorMessages = []; + + if ($assignedAssets->isNotEmpty()) { + $assignedTags = $assignedAssets->pluck('asset_tag')->implode(', '); + $errorMessages[] = trans_choice( + 'admin/hardware/message.delete.assigned_to_error', + $assignedAssets->count(), + ['asset_tag' => $assignedTags] + ); } + if ($parentAssets->isNotEmpty()) { + $parentTags = $parentAssets->pluck('asset_tag')->implode(', '); + $errorMessages[] = trans_choice( + 'admin/hardware/message.delete.parent_assigned_error', + $parentAssets->count(), + ['asset_tag' => $parentTags] + ); + } + + if (!empty($errorMessages)) { + // Combine both messages + $combinedErrorMessage = implode('
', $errorMessages); + + return redirect($bulk_back_url)->with('error', $combinedErrorMessage); + } +// if($assignedAssets->isNotEmpty() && $parentAsset->isNotEmpty()) { +// +// //if assets are checked out, return a list of asset tags that would need to be checked in first. +// $assetTags = $assignedAssets->pluck('asset_tag')->implode(', '); +// return redirect($bulk_back_url)->with('error', trans_choice('admin/hardware/message.delete.assigned_to_error', $assignedAssets->count(), ['asset_tag' => $assetTags] )); +// } + foreach (Asset::wherein('id', $assetIds)->get() as $asset) { $asset->delete(); } diff --git a/resources/lang/en-US/admin/hardware/message.php b/resources/lang/en-US/admin/hardware/message.php index 605c1fe230..384a83922f 100644 --- a/resources/lang/en-US/admin/hardware/message.php +++ b/resources/lang/en-US/admin/hardware/message.php @@ -72,7 +72,8 @@ return [ 'delete' => [ 'confirm' => 'Are you sure you wish to delete this asset?', 'error' => 'There was an issue deleting the asset. Please try again.', - 'assigned_to_error' => '{1}Asset Tag: :asset_tag is currently checked out. Check in this device before deletion.|[2,*]Asset Tags: :asset_tag are currently checked out. Check in these devices before deletion.', + 'assigned_to_error' => '{1}Asset Tag: :asset_tag is currently checked out. Check in this device before deletion of this asset.|[2,*]Asset Tags: :asset_tag are currently checked out. Check in these devices before deletion of these assets.', + 'parent_assigned_error' => '{1}Asset Tag: :asset_tag currently has items checked out. Check in all items attached before deletion of this asset.|[2,*]Asset Tags: :asset_tag currently have items checked out. Check in these devices before deletion of these assets.', 'nothing_updated' => 'No assets were selected, so nothing was deleted.', 'success' => 'The asset was deleted successfully.', ], diff --git a/resources/views/notifications.blade.php b/resources/views/notifications.blade.php index 7d74e5d043..599c8dd2f5 100755 --- a/resources/views/notifications.blade.php +++ b/resources/views/notifications.blade.php @@ -109,7 +109,7 @@ {{ trans('general.error') }}: - {{ $message }} + {!! $message !!} @endif