示例#1
0
 public function getMatchRateAttribute()
 {
     $user_skills = UserSkill::with('skill')->where('user_id', '=', $this->user_id)->get()->toArray();
     if (count($user_skills) > 0) {
         $skill_percentage = 0;
         $job_traits = 0;
         $user_traits = 0;
         $job_skills = $this->job_details->job_skills->load('skill')->toArray();
         if (count($job_skills) > 0) {
             foreach ($job_skills as $job_skill) {
                 $avg_user_job_rate = 0;
                 foreach ($user_skills as $user_skill) {
                     if ($job_skill['skill_id'] == $user_skill['skill_id']) {
                         if ($user_skill['skill']['type'] == 'soft') {
                             $user_traits++;
                         }
                         if ($user_skill['skill']['type'] == 'hard') {
                             if ($user_skill['rate'] >= $job_skill['rate']) {
                                 $avg_user_job_rate = 1;
                             } else {
                                 $avg_user_job_rate = $user_skill['rate'] / $job_skill['rate'];
                             }
                             $over_all_skill_match = $avg_user_job_rate * 100 * ($job_skill['importance'] / 100);
                             $skill_percentage += $over_all_skill_match;
                         }
                     }
                 }
                 if ($job_skill['skill']['type'] == 'soft') {
                     $job_traits++;
                 }
             }
             $trait_percentage = $user_traits / $job_traits * 100 * ($this->job_details->traits_importance / 100);
             $skill_percentage = $skill_percentage * ((100 - $this->job_details->traits_importance) / 100);
             return round($trait_percentage + $skill_percentage);
         }
         return 0;
     }
     return 0;
 }
示例#2
0
 public function getMatchCountAttribute()
 {
     $skill_ids = [];
     foreach ($this->job_skills as $job_skill) {
         $skill_ids[] = $job_skill['skill_id'];
     }
     if (count($skill_ids) > 0) {
         $user_ids = UserSkill::select(DB::raw('DISTINCT(user_id)'))->whereIn('skill_id', $skill_ids)->get()->toArray();
         $lat = $this->job_locations->lat;
         $lng = $this->job_locations->lng;
         $users = User::within((int) $this->search_radius, 'kilometers', $lat, $lng)->where('lat', '!=', '')->where('lng', '!=', '')->whereIn('id', $user_ids)->get();
         return count($users);
     }
     return 0;
 }
示例#3
0
 public function getUserSkill($user_id, $skill_id)
 {
     try {
         return UserSkill::with('skill')->where('user_id', '=', $user_id)->where('skill_id', '=', $skill_id)->first()->toArray();
     } catch (Exception $e) {
         return Response::json(['error' => $e->getMessage()]);
     }
 }
示例#4
0
 public function getJobMatches($job_id)
 {
     try {
         $company_job = CompanyJob::with('job_skills', 'job_locations')->where('post_status', '=', 'published')->where('id', '=', $job_id)->where('end_date', '>=', date('Y-m-d'))->first()->toArray();
         $job_skill_ids = [];
         foreach ($company_job['job_skills'] as $skill) {
             $job_skill_ids[] = $skill['skill_id'];
         }
         $users = [];
         if (count($job_skill_ids) > 0) {
             $user_ids = UserSkill::select(DB::raw('DISTINCT(user_id)'))->whereIn('skill_id', $job_skill_ids)->get()->toArray();
             $lat = $company_job['job_locations']['lat'];
             $lng = $company_job['job_locations']['lng'];
             $users = User::within((int) $company_job['search_radius'], 'kilometers', $lat, $lng)->where('lat', '!=', '')->where('lng', '!=', '')->whereIn('id', $user_ids)->get();
         }
         return $users;
     } catch (Exception $e) {
         return Response::json(['error' => $e->getMessage()]);
     }
 }