/**
  * This method update and save all the changes into the profile's user
  * and return to the user's profile page
  * @param Request $request
  * @return $this|\Illuminate\Http\RedirectResponse
  */
 public function postUpdateProfile(Request $request)
 {
     $validator = Validator::make($request->only(['name']), ['name' => 'required']);
     if ($validator->fails()) {
         return back()->withInput()->withErrors($validator);
     }
     //Find the user if exist before update
     $user = User::findOrFail(Auth::user()->id);
     $user->categories()->detach();
     if ($request->input('categories') && is_array($request->input('categories'))) {
         $user->categories()->attach($request->input('categories'));
     }
     //dd($request->all());
     try {
         //If has file
         if ($request->hasFile('profilePicture') && $request->file('profilePicture')->isValid()) {
             //validate if the uploaded file is an image
             $validator = Validator::make($request->only(['profilePicture']), ['profilePicture' => 'image']);
             if ($validator->fails()) {
                 return back()->withInput()->withErrors($validator);
             }
             //save temp file
             $filename = Storage::putFile('public/profiles', Input::file('profilePicture'));
             //resize to 200px
             $image = Image::make(storage_path() . '/app/' . $filename)->orientate();
             $image = $image->fit(200);
             //delete the temp file
             ImageController::delete($filename);
             //save the new user file
             $filename = str_random(10) . '.jpg';
             ImageController::save('/profiles/' . $filename, $image->stream('jpg', 70));
             //Delete the old image
             if ($user->profileImage && ImageController::exist('profiles/' . $user->profileImage)) {
                 ImageController::delete('profiles/' . $user->profileImage);
             }
         }
     } catch (\Exception $error) {
         Log::error($error->getMessage());
         return back()->withInput()->withErrors(array('message' => trans('app.Error505')));
     }
     //Save the user data
     $user->name = $request->input('name', $user->name);
     $user->aboutMe = $request->input('aboutMe', $user->aboutMe);
     $user->country = $request->input('country', $user->country);
     $user->state = $request->input('state', $user->state);
     $user->city = $request->input('city', $user->city);
     $user->city2 = $request->input('city2', $user->city);
     $user->birthday = empty($request->input('birthday')) ? null : $request->input('birthday');
     $user->profileImage = isset($filename) ? $filename : $user->profileImage;
     $user->save();
     $request->session()->flash('flash-success', trans('app.ProfileSaveSuccess'));
     return redirect()->route('getUserProfile', ['name' => str_slug($user->name), 'id' => $user->id]);
 }
 /**
  * This method save the profile image from facebook
  * @param $url
  * @return string
  */
 private function saveImageFromUrl($url)
 {
     $name = str_random(10) . '.jpg';
     //resize to 200px
     $image = Image::make(str_replace('normal', 'large', $url))->fit(200);
     $image->save(public_path($name));
     ImageController::save('/profiles/', $name, public_path($name));
     unlink(public_path($name));
     return $name;
 }