public function store(Request $request)
 {
     if (Auth::user()->role != "supadmin" && $request->input('type') == "supadmin") {
         abort(401);
     }
     $rules = ['email' => 'required|email|unique:users', 'type' => 'required', 'names' => 'required', 'coordinates' => 'required', 'address' => 'required', 'mobile' => 'required', 'birth_date' => 'regex:/[0-9]{2}\\/[0-9]{2}\\/[0-9]{4}/', 'avatar' => 'image|mimes:jpg,jpeg,bmp,png,gif,tiff', 'cv' => 'mimes:doc,docx,ppt,pps,pptx,ppsx,xls,xlsx'];
     if (Auth::user()->role == "supadmin") {
         $rules['company'] = 'required';
     }
     $this->validate($request, $rules);
     $avatar_file_name = null;
     $cv_file_name = null;
     if ($request->file('avatar')) {
         $avatar_file_name = Common::randString(6) . "." . $request->file('avatar')->getClientOriginalExtension();
         Storage::put('avatars/' . $avatar_file_name, file_get_contents($request->file('avatar')->getRealPath()));
         ImageResize::load(storage_path("app") . '/avatars/' . $avatar_file_name);
         ImageResize::resizeToWidth(300);
         ImageResize::save();
     }
     if ($request->file('cv')) {
         $cv_file_name = Common::randString(6) . "." . $request->file('cv')->getClientOriginalExtension();
         Storage::put('cv/' . $cv_file_name, file_get_contents($request->file('cv')->getRealPath()));
     }
     $password = Common::generateStrongPassword();
     if (Auth::user()->role == "supadmin") {
         $company_id = $request->input('company');
     } else {
         $company_id = $this->company_id[0];
     }
     $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
     $user = new User();
     $user->role = $request->input('type');
     $user->password = Hash::make($password);
     $user->email = $request->input('email');
     $user->events_color = '#' . $rand[rand(0, 15)] . $rand[rand(0, 15)] . $rand[rand(0, 15)] . $rand[rand(0, 15)] . $rand[rand(0, 15)] . $rand[rand(0, 15)];
     $user->save();
     $info = new PersonalInfo();
     $info->names = $request->input('names');
     $info->address = $request->input('address');
     $info->coordinates = $request->input('coordinates');
     $info->mobile = $request->input('mobile');
     $info->gender = $request->input('gender');
     $info->birth_date = $request->input('birth_date');
     $info->home_phone = $request->input('home_phone');
     $info->work_phone = $request->input('work_phone');
     $info->fax = $request->input('fax');
     $info->other = $request->input('other');
     $info->avatar = $avatar_file_name;
     $info->cv = $cv_file_name;
     $user->info()->save($info);
     Company::find($company_id)->users()->attach($user->id);
     Notification::add($user->id, 'USER_ADD_BY_ADMIN', ['admin_id' => Auth::user()->id]);
     Mail::send('emails.newUserPassword', ['user' => $user, 'info' => $info, 'password' => $password, 'company' => Company::find($company_id)->pluck('name')], function ($m) use($user) {
         $m->from('*****@*****.**', 'TIMELINE');
         $m->to($user->email, $user->names)->subject('You have been added to TIMELINE');
     });
     return redirect('/users')->with(['message' => "User added successfully. Generated password with further login information is sent to his/her email ({$request->input('email')})."]);
 }