/**
  * Retrieves ManagerProfile Model, and send back to the client
  * @return JSON result
  */
 public function getProfileData()
 {
     $manager = [];
     try {
         $manager = ManagerProfile::where('user_id', '=', session(SiteSessions::USER_ID))->firstOrFail();
         $manager = $manager->toArray();
         $manager_additional_info = User::find(session(SiteSessions::USER_ID));
         //Selecting Required Fields from User table
         $manager = array_merge($manager, ["user_type" => $manager_additional_info->user_type, "sport_type" => $manager_additional_info->sport_type, "management_level" => $manager_additional_info->management_level, "profile_image_path" => $manager_additional_info->profile_image_path]);
     } catch (ModelNotFoundException $e) {
         $this->error_message = "Manager not found";
         $this->updateRequestStatus(RequestStatusEnum::MODEL_NOT_FOUND);
     }
     return $this->sendResponse($manager);
 }
 /**
  * Updating Email or Password of a user as per selected choice of a user
  * @param Request $request
  */
 public function updateGeneralSettings(Request $request)
 {
     $settingType = $request->has("setting_type") ? $request->get("setting_type") : null;
     if ($settingType == null) {
         return redirect()->back()->withErrors(['Setting Type not specified by the user.']);
     }
     switch ($settingType) {
         case UserSettings::GENERAL_TYPE_EMAIL:
             $validator = Validator::make($request->all(), ['email' => 'required|email|unique:users,username']);
             if ($validator->fails()) {
                 return redirect()->back()->with(['setting_type' => UserSettings::GENERAL_TYPE_EMAIL])->withErrors($validator->errors());
             }
             $userProfile = User::find(Session::get(SiteSessions::USER_ID));
             $userProfile->username = $request->get("email");
             $userProfile->save();
             return redirect('settings/general')->with(["setting_type" => UserSettings::GENERAL_TYPE_EMAIL, "general_update_status" => "successful"]);
             break;
         case UserSettings::GENERAL_TYPE_PASSWORD:
             $validator = Validator::make($request->all(), ['password' => 'required|confirmed|min:6']);
             if ($validator->fails()) {
                 return redirect()->back()->with(['setting_type' => UserSettings::GENERAL_TYPE_PASSWORD])->withErrors($validator->errors());
             }
             $userProfile = User::find(Session::get(SiteSessions::USER_ID));
             $userProfile->password = $request->get("password");
             $userProfile->save();
             return redirect('settings/general')->with(["setting_type" => UserSettings::GENERAL_TYPE_PASSWORD, "general_update_status" => "successful"]);
             break;
     }
     return redirect('settings/general')->with(["general_update_status" => "error"]);
 }
 /**
  * Contacting Manager by Talent
  * @param Request $request
  */
 public function contactManager(Request $request)
 {
     $validator = Validator::make($request->all(), ['manager_id' => 'required', 'talent_id' => 'required', 'message' => 'required']);
     if ($validator->fails()) {
         return response()->json(['status' => 'error', 'error_type' => 'ID_MISSING']);
     }
     if (Session::get(SiteSessions::USER_ID) != $request->talent_id) {
         return response()->json(['status' => 'error', 'error_type' => 'TALENT_ID_INVALID']);
     }
     try {
         $user = User::find(Session::get(SiteSessions::USER_ID));
         $manager = ManagersDatabase::find($request->manager_id);
         Event::fire(new SendMail(SendMail::MAIL_TYPE_CONTACT_MANAGER, $manager->email, [], ["manager" => $manager, "talent" => $user, "message" => $request->message]));
         DB::table('managers_contacted')->insert(['user_id' => $request->talent_id, 'manager_id' => $request->manager_id, 'message_to_manager' => $request->message, 'contacted_on' => Carbon::now()]);
     } catch (QueryException $e) {
         return response()->json(['status' => 'error', 'error_type' => 'DATABASE_ERROR']);
     }
     return response()->json(['status' => 'successful']);
 }
 /**
  *Resending confirmation link to the User
  */
 public function resendConfirmationLink()
 {
     $user = User::find(Session::get(SiteSessions::USER_ID));
     $user->confirmation_token = bcrypt(time());
     $user->save();
     Event::fire(new SendMail(SendMail::MAIL_TYPE_USER_CONFIRMATION, $user->username, [], $user));
     Session::flash("resent_confirmation_link", 'successful');
     return redirect('account-not-confirmed');
 }