Beispiel #1
0
 /**
  * Soft-delete bulk users
  *
  * @author [A. Gianotto] [<*****@*****.**>]
  * @since [v1.0]
  * @return Redirect
  */
 public function postBulkSave()
 {
     if (!Input::has('edit_user') || count(Input::has('edit_user')) == 0) {
         return redirect()->back()->with('error', 'No users selected');
     } elseif (!Input::has('status_id') || count(Input::has('status_id')) == 0) {
         return redirect()->route('users')->with('error', 'No status selected');
     } else {
         $user_raw_array = Input::get('edit_user');
         $asset_array = array();
         if (($key = array_search(Auth::user()->id, $user_raw_array)) !== false) {
             unset($user_raw_array[$key]);
         }
         if (!Auth::user()->isSuperUser()) {
             return redirect()->route('users')->with('error', trans('admin/users/message.insufficient_permissions'));
         }
         if (!config('app.lock_passwords')) {
             $users = User::whereIn('id', $user_raw_array)->get();
             $assets = Asset::whereIn('assigned_to', $user_raw_array)->get();
             $accessories = DB::table('accessories_users')->whereIn('assigned_to', $user_raw_array)->get();
             $licenses = DB::table('license_seats')->whereIn('assigned_to', $user_raw_array)->get();
             $license_array = array();
             $accessory_array = array();
             foreach ($assets as $asset) {
                 $asset_array[] = $asset->id;
                 // Update the asset log
                 $logaction = new Actionlog();
                 $logaction->asset_id = $asset->id;
                 $logaction->checkedout_to = $asset->assigned_to;
                 $logaction->asset_type = 'hardware';
                 $logaction->user_id = Auth::user()->id;
                 $logaction->note = 'Bulk checkin asset and delete user';
                 $logaction->logaction('checkin from');
                 Asset::whereIn('id', $asset_array)->update(array('status_id' => e(Input::get('status_id')), 'assigned_to' => null));
             }
             foreach ($accessories as $accessory) {
                 $accessory_array[] = $accessory->accessory_id;
                 // Update the asset log
                 $logaction = new Actionlog();
                 $logaction->accessory_id = $accessory->id;
                 $logaction->checkedout_to = $accessory->assigned_to;
                 $logaction->asset_type = 'accessory';
                 $logaction->user_id = Auth::user()->id;
                 $logaction->note = 'Bulk checkin accessory and delete user';
                 $logaction->logaction('checkin from');
             }
             foreach ($licenses as $license) {
                 $license_array[] = $license->id;
                 // Update the asset log
                 $logaction = new Actionlog();
                 $logaction->asset_id = $license->id;
                 $logaction->checkedout_to = $license->assigned_to;
                 $logaction->asset_type = 'software';
                 $logaction->user_id = Auth::user()->id;
                 $logaction->note = 'Bulk checkin license and delete user';
                 $logaction->logaction('checkin from');
             }
             LicenseSeat::whereIn('id', $license_array)->update(['assigned_to' => null]);
             foreach ($users as $user) {
                 $user->accessories()->sync(array());
                 $user->delete();
             }
             return redirect()->route('users')->with('success', 'Your selected users have been deleted and their assets have been updated.');
         } else {
             return redirect()->route('users')->with('error', 'Bulk delete is not enabled in this installation');
         }
     }
 }