From 1c12b6e13bee0462f2ddf0c86f85473d583a124f Mon Sep 17 00:00:00 2001 From: snipe Date: Fri, 3 Nov 2017 19:00:36 -0700 Subject: [PATCH] Added artisan command to sync locations --- app/Console/Commands/SyncAssetLocations.php | 137 ++++++++++++++++++++ app/Console/Kernel.php | 3 +- 2 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 app/Console/Commands/SyncAssetLocations.php diff --git a/app/Console/Commands/SyncAssetLocations.php b/app/Console/Commands/SyncAssetLocations.php new file mode 100644 index 0000000000..bb12d9c405 --- /dev/null +++ b/app/Console/Commands/SyncAssetLocations.php @@ -0,0 +1,137 @@ +get(); + $bar = $this->output->createProgressBar(count($total_assets)); + + // Unassigned + $rtd_assets = Asset::whereNull('assigned_to')->with('defaultLoc')->get(); + $output['info'][] = 'There are '.$rtd_assets->count().' unassigned assets.'; + + foreach ($rtd_assets as $rtd_asset) { + // $output['info'][] = 'Setting Unassigned Asset ' . $rtd_asset->id . ' ('.$rtd_asset->asset_tag.') to location: ' . $rtd_asset->rtd_location_id . " because their default location is: " . $rtd_asset->rtd_location_id; + $rtd_asset->location_id=$rtd_asset->rtd_location_id; + $rtd_asset->unsetEventDispatcher(); + $rtd_asset->save(); + $bar->advance(); + } + + $assigned_user_assets = Asset::where('assigned_type','App\Models\User')->whereNotNull('assigned_to')->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; + } + $assigned_user_asset->location_id=$new_location; + $assigned_user_asset->unsetEventDispatcher(); + $assigned_user_asset->save(); + $bar->advance(); + + } + + $assigned_location_assets = Asset::where('assigned_type','App\Models\Location') + ->whereNotNull('assigned_to')->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(); + $bar->advance(); + } + + + // Assigned to assets + $assigned_asset_assets = Asset::where('assigned_type','App\Models\Asset') + ->whereNotNull('assigned_to')->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(); + $bar->advance(); + + } + + $unlocated_assets = Asset::whereNull("location_id")->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. '; + $bar->advance(); + } + + $bar->finish(); + $this->info("\n"); + + + if (($this->option('output')=='all') || ($this->option('output')=='info')) { + foreach ($output['info'] as $key => $output_text) { + $this->info($output_text); + } + } + if (($this->option('output')=='all') || ($this->option('output')=='warn')) { + foreach ($output['warn'] as $key => $output_text) { + $this->warn($output_text); + } + } + if (($this->option('output')=='all') || ($this->option('output')=='error')) { + foreach ($output['error'] as $key => $output_text) { + $this->error($output_text); + } + } + + + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 0f81098b19..cc104d8e4b 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -26,7 +26,8 @@ class Kernel extends ConsoleKernel Commands\LdapSync::class, Commands\FixDoubleEscape::class, Commands\RecryptFromMcrypt::class, - Commands\ResetDemoSettings::class + Commands\ResetDemoSettings::class, + Commands\SyncAssetLocations::class, ]; /**