/**
  * Search for opportunities available for Student Talent and aspiring professionals
  * @param Request $request
  */
 public function searchOpportunities(Request $request)
 {
     $state = 'null';
     $institution_type = 'null';
     $gender = 'null';
     $sport_type = 'null';
     $country = 'null';
     $sport_type = Session::get(SiteSessions::USER_SPORT_TYPE);
     //If Sport Gender is "Male"
     if (array_search(Session::get(SiteSessions::USER_GENDER), UserProfileRepository::getUserGender()) == 1) {
         $gender = SportsRepository::getSportsGender()[1];
     } else {
         if (array_search(Session::get(SiteSessions::USER_GENDER), UserProfileRepository::getUserGender()) == 2) {
             $gender = SportsRepository::getSportsGender()[2];
         }
     }
     $talent_management_level = Session::get(SiteSessions::USER_MANAGEMENT_LEVEL);
     switch ($talent_management_level) {
         case SiteConstants::USER_TALENT_MANAGEMENT_LEVEL_STUDENT:
             //If Institution type is "High School"
             $institution_type = $request->institution_type;
             $state = BasicSiteRepository::getAmericanState()[$request->state];
             break;
         case SiteConstants::USER_TALENT_MANAGEMENT_LEVEL_ASPIRING_PRO:
             $country = BasicSiteRepository::getListOfCountries()[$request->country];
             break;
     }
     //dd($managers);
     return redirect('database/talent-opportunities/' . $state . '/' . $institution_type . '/' . $gender . '/' . $sport_type . '/' . $country);
 }
 /**
  * Get the validation rules that apply to the request.
  *
  * @return array
  */
 public function rules()
 {
     if (SiteConstants::isTalent(Session::get(SiteSessions::USER_TYPE))) {
         return ['dob' => 'date', 'gender' => 'in:' . implode(",", array_keys(UserProfileRepository::getUserGender())), 'height' => '', 'weight' => '', 'mobile_number' => 'numeric', 'home_number' => 'numeric', 'address_type' => 'in:' . implode(",", array_keys(UserProfileRepository::getAddressTypes())), 'zip' => 'numeric', 'country' => 'in:' . implode(",", array_keys(BasicSiteRepository::getListOfCountries())), 'graduation_year' => 'numeric', 'father_mobile_number' => 'numeric', 'father_living_with' => 'in:' . implode(",", array_keys(UserProfileRepository::getLivingWithType())), 'mother_mobile_number' => 'numeric', 'mother_living_with' => 'in:' . implode(",", array_keys(UserProfileRepository::getLivingWithType())), 'guardian_mobile_number' => 'numeric', 'guardian_living_with' => 'in:' . implode(",", array_keys(UserProfileRepository::getLivingWithType())), 'school_type' => 'in:' . implode(",", array_keys(UserProfileRepository::getInstituteType())), 'school_zip' => 'regex:/^\\d{4,5}$/', 'school_country' => 'in:' . implode(",", array_keys(BasicSiteRepository::getListOfCountries())), 'school_contact_person_phone' => 'numeric', 'grade_avg' => 'in:' . implode(",", array_keys(UserProfileRepository::getGradeAverageType())), 'sat_verbal' => 'regex:/^\\d+(\\.?\\d+)?$/', 'sat_math' => 'regex:/^\\d+(\\.?\\d+)?$/', 'sat_writing' => 'regex:/^\\d+(\\.?\\d+)?$/', 'sat_reading' => 'regex:/^\\d+(\\.?\\d+)?$/', 'sat_overall' => 'regex:/^\\d+(\\.?\\d+)?$/', 'pact' => 'regex:/^\\d+(\\.?\\d+)?$/', 'act' => 'regex:/^\\d+(\\.?\\d+)?$/', 'psat' => 'regex:/^\\d+(\\.?\\d+)?$/'];
     } else {
         if (SiteConstants::isManager(Session::get(SiteSessions::USER_TYPE))) {
             return ['dob' => 'date', 'gender' => 'in:' . implode(",", array_keys(UserProfileRepository::getUserGender())), 'mobile_number' => 'numeric', 'home_number' => 'numeric', 'address_type' => 'in:' . implode(",", array_keys(UserProfileRepository::getAddressTypes())), 'zip' => 'numeric', 'country' => 'in:' . implode(",", array_keys(BasicSiteRepository::getListOfCountries()))];
         }
     }
 }
 /**
  * Saving Manager Profile Data
  * @return mixed
  */
 public function updateProfile(Request $request)
 {
     $validator = Validator::make($request->all(), ['first_name' => 'required', 'last_name' => 'required', 'dob' => 'required|date', 'gender' => 'required | in:' . strtolower(implode(',', array_diff(UserProfileRepository::getUserGender(), [0 => "--Select Gender--"]))), 'nationality' => 'required', 'street_address' => 'required', 'city' => 'required', 'state' => 'required', 'zip' => 'required', 'country' => 'required', 'bio' => 'required']);
     if ($validator->fails()) {
         $this->updateRequestStatus(RequestStatusEnum::DATA_VALIDATION_ERROR);
         return $this->sendResponse($validator->failed());
     }
     $managerProfile = ManagerProfile::where('user_id', '=', session(SiteSessions::USER_ID))->first();
     $managerProfile->UpdateManagerProfile($request);
     return $this->sendResponse($managerProfile->toArray());
 }
 /**
  * Getting Gender
  * @param $gender
  */
 public function getgenderAttribute($gender)
 {
     if ($this->getMutatedData) {
         return array_search($gender, UserProfileRepository::getUserGender());
     }
     return $gender;
 }
 /**
  * Show the form for editing the specified resource.
  *
  * @param  int  $id
  * @return Response
  */
 public function edit()
 {
     $user = UserProfile::find(Session::get(SiteSessions::USER_ID));
     $gender = UserProfileRepository::getUserGender();
     $addressType = UserProfileRepository::getAddressTypes();
     $instituteType = UserProfileRepository::getInstituteType();
     $country = BasicSiteRepository::getListOfCountries();
     $livingWith = UserProfileRepository::getLivingWithType();
     $gradeAverage = UserProfileRepository::getGradeAverageType();
     $sports = BasicSiteRepository::getSportTypes();
     if (SiteConstants::isTalent(Session::get(SiteSessions::USER_TYPE))) {
         $userProfile = UserProfile::find($user->user_id);
         return view('profile.talent.edit', compact('userProfile', 'gender', 'addressType', 'instituteType', 'country', 'livingWith', 'gradeAverage'));
     } else {
         if (SiteConstants::isCoach(Session::get(SiteSessions::USER_TYPE))) {
             $managerProfile = ManagerProfile::find($user->user_id);
             $managerCareerInformation = $managerProfile->managerCareerInformation()->get();
             return view('profile.manager.edit', compact('managerProfile', 'gender', 'addressType', 'instituteType', 'country', 'livingWith', 'gradeAverage', 'sports'));
         } else {
             if (Session::get(SiteSessions::USER_ID) == "") {
                 return redirect('/');
             }
         }
     }
 }