![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/job-board.corals.io/Corals/modules/Jobs/Classes/ |
<?php namespace Corals\Modules\Jobs\Classes; use Corals\Modules\Jobs\Models\Employer; use Corals\Modules\Jobs\Models\JobApplication; use Corals\Modules\Utility\Facades\ListOfValue\ListOfValues; use Corals\Settings\Facades\Settings; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\Request; class Employers { public $page_limit; /** * Foo constructor. */ function __construct() { $this->page_limit = Settings::get('jobs_appearance_page_limit', 10); } protected function employersBaseQuery() { return Employer::select('*'); } public function getEmployerList(Request $request) { $employers = $this->employersBaseQuery(); foreach ($request->all() as $filter => $value) { $filterMethod = $filter . 'QueryBuilderFilter'; if (method_exists($this, $filterMethod) && !empty($value)) { $employers = $this->{$filterMethod}($employers, $value); } } return $employers->select('jo_employers.*')->paginate($this->page_limit); } protected function searchQueryBuilderFilter($employers, $search_term) { $employers = $employers->where('name', $search_term); return $employers; } protected function field_codeQueryBuilderFilter($employers, $field_code) { $queryMethod = 'where'; if (is_array($field_code)) { $queryMethod = 'whereIn'; } $employers = $employers->{$queryMethod}('field_code', $field_code); return $employers; } protected function locationQueryBuilderFilter($employers, $location) { $employers = $employers->whereHas('location', function (Builder $query) use ($location) { $query->where('slug', $location); }); return $employers; } protected function sortQueryBuilderFilter($employers, $sortOption) { switch ($sortOption) { case 'a_z_order': $employers = $employers->orderBy('jo_employers.name', 'asc'); break; case 'z_a_order': $employers = $employers->orderBy('jo_employers.name', 'desc'); break; } return $employers; } protected function categoryQueryBuilderFilter($employers, $categorySlug) { $queryMethod = 'where'; if (is_array($categorySlug)) { $queryMethod = 'whereIn'; } $employers = $employers->whereHas('jobs', function (Builder $query) use ($queryMethod, $categorySlug) { $query->whereHas('activeCategories', function (Builder $query) use ($categorySlug, $queryMethod) { $query->{$queryMethod}('slug', $categorySlug); }); }); return $employers; } protected function job_typeQueryBuilderFilter($employers, $job_type) { $queryMethod = 'where'; if (is_array($job_type)) { $queryMethod = 'whereIn'; } $employers = $employers->whereHas('jobs', function (Builder $query) use ($job_type, $queryMethod) { $query->{$queryMethod}('job_type', $job_type); }); return $employers; } protected function experience_levelQueryBuilderFilter($employers, $experience_level) { $queryMethod = 'where'; if (is_array($experience_level)) { $queryMethod = 'whereIn'; } $employers = $employers->whereHas('jobs', function (Builder $query) use ($experience_level, $queryMethod) { $query->{$queryMethod}('experience_level', $experience_level); }); return $employers; } public function checkActiveKey($value, $compareWithKey) { if (request()->has($compareWithKey)) { $compareWithValue = request()->get($compareWithKey); if (is_array($compareWithValue)) { return array_search($value, $compareWithValue) !== false; } else { return $value == $compareWithValue; } } return false; } public function getLastJob($employer) { return $employer->jobs->min('created_at'); } public function getFieldCode() { return ListOfValues::get('company-fields'); } public function getFieldCodeCount($field_code) { return Employer::where('field_code', '=', $field_code) ->count(); } public function employersCount() { return Employer::all()->count(); } public function getMyEmployer() { return Employer::query() ->where('user_id', user()->id) ->firstOrFail(); } public function allEmployerJobApplications(Request $request, $empolyer) { $jobApplications = JobApplication::query()->join('jo_jobs', 'jo_job_applications.job_id', '=', 'jo_jobs.id') ->where('jo_jobs.owner_id', '=', $empolyer->id)->latest(); foreach ($request->all() as $filter => $value) { $filterMethod = $filter . 'QueryBuilderFilter'; if (method_exists($this, $filterMethod) && !empty($value)) { $jobApplications = $this->{$filterMethod}($jobApplications, $value); } } return $jobApplications->select('jo_job_applications.*')->paginate($this->page_limit); } public function latestJobApplications() { $empolyer = $this->getMyEmployer(); return JobApplication::query()->join('jo_jobs', 'jo_job_applications.job_id', '=', 'jo_jobs.id') ->where('jo_jobs.owner_id', '=', $empolyer->id) ->latest('jo_job_applications.created_at') ->take(3)->get(); } }