/home/mip/mip/app/Modules/Client/Repositories/Applicants/ApplicantRepository.php
<?php

namespace QxCMS\Modules\Client\Repositories\Applicants;

use Carbon\Carbon;
use Illuminate\Http\Request;

use QxCMS\Modules\AbstractRepository;
use QxCMS\Modules\Client\Models\Applicants\Applicant;
use QxCMS\Modules\Client\Models\Settings\UserLogs\UserLogs as Log;

class ApplicantRepository extends AbstractRepository implements ApplicantRepositoryInterface
{
    protected $model;
    protected $log;

    function __construct(Applicant $model, Log $log)
    {
        $this->model = $model;
        $this->log = $log;
    }

    public function getSourceApplicant(Request $request)
    {
        $applicant = $this->model->with('latestJob', 'latestJob.job')
        ->whereHas('latestJob',function($query){
           $query->where('id', '!=', null);
        })->whereHas('latestJob.job',function($query) use ($request){
            if ($request->has('position_applied')){
                $query->where('position','LIKE',"%{$request->position_applied}%");
            }
        })->where(function($query) use ($request){
            if($request->has('min_yrs')){
                $query->whereRaw("yrs_exp >= '{$request->min_yrs}'");
            }
            if($request->has('max_yrs')){
                $query->whereRaw("yrs_exp <= '{$request->max_yrs}'");
            }
            if($request->has('recent_emp')){
                $query->where('company', 'LIKE', "%{$request->recent_emp}%");
            }
            if($request->has('col_deg')){
                $query->where('college_degree', 'LIKE', "%{$request->col_deg}%");
            }
            if($request->has('school')){
                $query->where('school', 'LIKE', "%{$request->school}%");
            }
            if($request->has('work_location')){
                $query->where('work_location', 'LIKE', "%{$request->work_location}%");
            }
        });
        return $applicant;
    }
}