<?php
/**
 * Created by PhpStorm.
 * User: wuzhenke
 * Date: 2019/1/25
 * Time: 17:54
 */

namespace App\Repositories\Jobfair;


use App\Models\Jobfair\JobfairPersonalJobsApply;
use Prettus\Repository\Eloquent\BaseRepository;

class JobfairPersonalJobsApplyRepository extends BaseRepository
{

    public function model()
    {
        return JobfairPersonalJobsApply::class;
    }

    public function getResume($com_id,$where=[])
    {
        return $this->model
            ->whereHas('jobfairs')
            ->whereHas('resumes')
            ->whereHas('putJobs')
            ->where(['company_id'=>$com_id])
            ->where($where)
            ->orderBy("updated_at", 'desc')
            ->paginate(10);
    }
    public function downResumeDel($ids)
    {
        return $this->model->whereIn('id', $ids)->delete();
    }

    public function personJobfair($data)
    {
        return $this->model->whereHas('resumes')->whereHas('putJobs')->whereHas('jobfairs')->where($data)->orderBy('id', 'desc')->paginate(10);
    }

    public function applyJobs($where,$limit = '')
    {
        if($limit){
            return $this->model->with(['jobfairs','resumes','putJobs'])->whereHas('resumes')->has('putJobs')->where($where)->paginate($limit);
        }else{
            return $this->model->with(['jobfairs','resumes','putJobs'])->whereHas('resumes')->has('putJobs')->where($where)->get();
        }
    }

    public function padApplyJobs($where,$page = '')
    {
        if($page) {
            return $this->model->has('resumes')->has('putJobs')
                ->where($where)->where(function ($query) {
                    $query->where(['is_apply'=>1,'is_interview'=>1])
                        ->orWhere(['is_apply'=>2]);
                })->paginate($page);
        }else {
            return $this->model->has('resumes')->has('putJobs')
                ->where($where)->where(function ($query) {
                    $query->where(['is_apply'=>1,'is_interview'=>1])
                        ->orWhere(['is_apply'=>2]);
                })->get();
        }
    }

    public function interviewAdd($data)
    {
        return $this->model->create($data);
    }

    public function interviewEdit($id)
    {
        $interview=$this->model->find($id);
        $interview->is_interview=1;
        return $interview->save();
    }

    /*
     * 判断是否已投递
     */
    public function applyFind($where){
        return $res = $this->model->where($where)->first();
    }

    /*
     * 判断是否已邀请
     */
    public function interviewFind($where){
        $res = $this->model->where($where)
            ->where(function ($query) {
                $query->where(['is_apply'=>1,'is_interview'=>1])
                    ->orWhere(['is_apply'=>2])->first();
            })->first();
        return $res ? true : false;
    }
    //删除
    public function delete($where){
        return $this->model->where($where)->delete();
    }

    //获取个人所投简历
    public function getPersonApply($where,$limit,$page){
        return $this->model->with(['putJobs'=>function($query){
            $query->with('jobs');
        }])->where($where)->paginate($limit,['*'],'page',$page);
    }

    public function applyJobsPage($where,$limit,$page)
    {
        return $this->model
            ->with(['jobfairs','resumes','putJobs'])
            ->where($where)->where(function ($query) {
                $query->where(['is_apply'=>1,'is_interview'=>1])
                    ->orWhere(['is_apply'=>2]);
            })->paginate($limit,['*'],'page',$page);
    }

    public function getJobsApply($where)
    {
        return $this->model->where($where)->orderBy('id', 'desc')->get();
    }

    public function getResumeJobs($com_id,$where,$where1){
        return $this->model
            ->whereHas('jobfairs')
            ->whereHas('resumes')
            ->whereHas('putJobs',function($query) use ($where1){
                $query->whereHas('jobs',function($query) use ($where1){
                    $query->where($where1);
                });
            })
            ->where(['company_id'=>$com_id])
            ->where($where)
            ->orderBy("updated_at", 'desc')
            ->paginate(10);
    }

    public function getApplys($where, $whereIn = [])
    {
        $rst = $this->model->where($where);
        if ($whereIn) {
            foreach ($whereIn as $k => $v) {
                $rst->whereIn($k, $v);
            }
        }
        return $rst->get();
    }

    public function getPluck($where,$colunm)
    {
        return $this->model->where($where)->pluck($colunm);
    }
}