prevents parent assets from being deleted

This commit is contained in:
Godfrey M 2025-02-24 10:22:52 -08:00
parent a275391557
commit fae4ad6068
3 changed files with 41 additions and 7 deletions

View file

@ -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('<br>', $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();
}

View file

@ -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.',
],

View file

@ -109,7 +109,7 @@
<button type="button" class="close" data-dismiss="alert">&times;</button>
<i class="fas fa-exclamation-triangle faa-pulse animated"></i>
<strong>{{ trans('general.error') }}: </strong>
{{ $message }}
{!! $message !!}
</div>
</div>
@endif