From f672b14468dccf0e211333e06f333187d0031ba7 Mon Sep 17 00:00:00 2001 From: snipe Date: Sat, 4 Nov 2017 16:20:31 -0700 Subject: [PATCH] Ignore deleted assets and check for valid location in artisan command --- app/Console/Commands/SyncAssetLocations.php | 43 +++++++++++++-------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/app/Console/Commands/SyncAssetLocations.php b/app/Console/Commands/SyncAssetLocations.php index a98cedcdb1..98279eca39 100644 --- a/app/Console/Commands/SyncAssetLocations.php +++ b/app/Console/Commands/SyncAssetLocations.php @@ -49,7 +49,7 @@ class SyncAssetLocations extends Command $bar = $this->output->createProgressBar(count($total_assets)); // Unassigned - $rtd_assets = Asset::whereNull('assigned_to')->with('defaultLoc')->get(); + $rtd_assets = Asset::whereNull('assigned_to')->whereNull('deleted_at')->with('defaultLoc')->get(); $output['info'][] = 'There are '.$rtd_assets->count().' unassigned assets.'; foreach ($rtd_assets as $rtd_asset) { @@ -60,15 +60,15 @@ class SyncAssetLocations extends Command $bar->advance(); } - $assigned_user_assets = Asset::where('assigned_type','App\Models\User')->whereNotNull('assigned_to')->get(); + $assigned_user_assets = Asset::where('assigned_type','App\Models\User')->whereNotNull('assigned_to')->whereNull('deleted_at')->get(); $output['info'][] = 'There are '.$assigned_user_assets->count().' assets checked out to users.'; foreach ($assigned_user_assets as $assigned_user_asset) { if (($assigned_user_asset->assignedTo) && ($assigned_user_asset->assignedTo->userLoc)) { $new_location=$assigned_user_asset->assignedTo->userloc->id; $output['info'][] ='Setting User Asset ' . $assigned_user_asset->id . ' ('.$assigned_user_asset->asset_tag.') to ' . $assigned_user_asset->assignedTo->userLoc->name . ' which is id: ' . $new_location; } else { - $output['error'][] ='Asset ' . $assigned_user_asset->id . ' ('.$assigned_user_asset->asset_tag.') still has no location! '; - $new_location=$assigned_user_asset->rtd_location_id; + $output['warn'][] ='Asset ' . $assigned_user_asset->id . ' ('.$assigned_user_asset->asset_tag.') still has no location! '; + $new_location = $assigned_user_asset->rtd_location_id; } $assigned_user_asset->location_id=$new_location; $assigned_user_asset->unsetEventDispatcher(); @@ -78,34 +78,45 @@ class SyncAssetLocations extends Command } $assigned_location_assets = Asset::where('assigned_type','App\Models\Location') - ->whereNotNull('assigned_to')->get(); + ->whereNotNull('assigned_to')->whereNull('deleted_at')->get(); $output['info'][] = 'There are '.$assigned_location_assets->count().' assets checked out to locations.'; foreach ($assigned_location_assets as $assigned_location_asset) { - $assigned_location_asset->location_id = $assigned_location_asset->assignedTo->id; - - $output['info'][] ='Setting Location Assigned asset ' . $assigned_location_asset->id . ' ('.$assigned_location_asset->asset_tag.') that is checked out to '.$assigned_location_asset->assignedTo->name.' (#'.$assigned_location_asset->assignedTo->id.') to location: ' . $assigned_location_asset->assetLoc()->id; - $assigned_location_asset->unsetEventDispatcher(); - $assigned_location_asset->save(); + if ($assigned_location_asset->assignedTo) { + $assigned_location_asset->location_id = $assigned_location_asset->assignedTo->id; + $output['info'][] ='Setting Location Assigned asset ' . $assigned_location_asset->id . ' ('.$assigned_location_asset->asset_tag.') that is checked out to '.$assigned_location_asset->assignedTo->name.' (#'.$assigned_location_asset->assignedTo->id.') to location: ' . $assigned_location_asset->assetLoc()->id; + $assigned_location_asset->unsetEventDispatcher(); + $assigned_location_asset->save(); + } else { + $output['warn'][] ='Asset ' . $assigned_location_asset->id . ' ('.$assigned_location_asset->asset_tag.') did not return a valid associated location - perhaps it was deleted?'; + } $bar->advance(); + } // Assigned to assets $assigned_asset_assets = Asset::where('assigned_type','App\Models\Asset') - ->whereNotNull('assigned_to')->get(); + ->whereNotNull('assigned_to')->whereNull('deleted_at')->get(); $output['info'][] ='Asset-assigned assets: '.$assigned_asset_assets->count(); foreach ($assigned_asset_assets as $assigned_asset_asset) { - $assigned_asset_asset->location_id = $assigned_asset_asset->assetLoc()->id; - $output['info'][] ='Setting Asset Assigned asset ' . $assigned_asset_asset->assetLoc()->id. ' ('.$assigned_asset_asset->asset_tag.') location to: ' . $assigned_asset_asset->assetLoc()->id; - $assigned_asset_asset->unsetEventDispatcher(); - $assigned_asset_asset->save(); + + // Check to make sure there aren't any invalid relationships + if ($assigned_asset_asset->assetLoc()) { + $assigned_asset_asset->location_id = $assigned_asset_asset->assetLoc()->id; + $output['info'][] ='Setting Asset Assigned asset ' . $assigned_asset_asset->assetLoc()->id. ' ('.$assigned_asset_asset->asset_tag.') location to: ' . $assigned_asset_asset->assetLoc()->id; + $assigned_asset_asset->unsetEventDispatcher(); + $assigned_asset_asset->save(); + } else { + $output['warn'][] ='Asset Assigned asset ' . $assigned_asset_asset->assetLoc()->id. ' ('.$assigned_asset_asset->asset_tag.') does not seem to have a valid location'; + } + $bar->advance(); } - $unlocated_assets = Asset::whereNull("location_id")->get(); + $unlocated_assets = Asset::whereNull("location_id")->whereNull('deleted_at')->get(); $output['info'][] ='Assets still without a location: '.$unlocated_assets->count(); foreach($unlocated_assets as $unlocated_asset) { $output['warn'][] ='Asset: '.$unlocated_asset->id.' still has no location. ';