<?php
/**
* Created by PhpStorm.
* User: wuzhenke
* Date: 2019/1/24
* Time: 17:26
*/
namespace App\Repositories\Jobfair;
use App\Models\Jobfair\Jobfair;
use Prettus\Repository\Eloquent\BaseRepository;
class JobfairRepository extends BaseRepository
{
public function model()
{
return Jobfair::class;
}
public function firstJobfair($where)
{
return $this->model->when(get_subsite_id()>0,function($query){
$query->whereHas('subsite', function ($query) {
$query->where('subsite_id', get_subsite_id());
});
})->where($where)->where(function ($query) {
$query->where('showendtime', 0)->orWhere('showendtime', '>=', time());
})->orderBy('predetermined_status', 'asc')->orderBy('ordid', 'desc')->orderBy('predetermined_end', 'desc')->first();
}
public function findJobfair($where)
{
return $this->model->with(['floorPlan'=>function ($query) {
$query->orderBy('order_list', 'desc');
}])->where($where)->where(function ($query) use ($where) {
$query->where('showendtime', '>=', time())->orWhere('showendtime', 0);
})->first();
}
public function allJobfair($where, $page, $pageCount,$search_type,$key)
{
return $this->model->when(get_subsite_id()>0,function($query){
$query->whereHas('subsite', function ($query) {
$query->where('subsite_id', get_subsite_id());
});
})->when($search_type == 'jobs',function($query) use ($key){
$query->whereHas('putJobs',function($query) use ($key){
$query->whereHas('jobs',function($query) use ($key){
$query->where('jobs_name','like', '%'.$key.'%')->where('audit',1)->where('display',1);
})->whereHas('jobfair_company',function ($query){
$query->where('audit',1);
});
});
})->when($search_type == 'company',function($query) use ($key){
$query->whereHas('jobfairCompany',function($query) use ($key){
$query->whereHas('companys',function($query) use ($key){
$query->where('companyname','like', '%'.$key.'%');
});
});
})
->where($where)->Where(function ($query) use ($where) {
$query->where('showendtime', 0)->orWhere('showendtime', '>=', time());
})->orderBy('predetermined_status', 'asc')->orderBy('ordid', 'desc')->orderBy('predetermined_end', 'desc')->offset($page*$pageCount)->limit($pageCount)->get();
}
public function Aioalljobfair($page)
{
return $this->model->when(get_subsite_id()>0,function($query){
$query->whereHas('subsite', function ($query) {
$query->where('subsite_id', get_subsite_id());
});
})->Where(function ($query) {
$query->where('showendtime', 0)->orWhere('showendtime', '>=', time());
})->orderBy('predetermined_status', 'asc')->orderBy('ordid', 'desc')->orderBy('predetermined_end', 'desc')->paginate($page);
}
public function findOne($where)
{
return $this->model->with('jobfairCompany')->where($where)->where(function ($query) use ($where) {
$query->where('showendtime', '>=', time())->orWhere('showendtime', 0);
})->first();
}
public function getJobfairList($com_id)
{
return $this->model->with(['jobfairCompany'=>function ($query) use ($com_id){
$query->where('company_id',$com_id);
}])->where(function ($query) {
$query->where('showendtime', '>=', time())->orWhere('showendtime', 0);
})->where(['display'=>1])->orderBy('predetermined_status', 'asc')->orderBy('ordid', 'desc')
->orderBy('predetermined_end', 'desc')->paginate(10);
}
public function getBlacklistCompany()
{
return $this->model->whereHas('jobfairCom',function ($query) {
$query->where('type', 0)->where('black_status', 0)->where('audit', 1)->where('created_at', '>', date('Y-m-d H:i:s', strtotime('-30 days')));
})->where('holddate_end', '<', time())->get();
}
//允许预定的招聘会
public function getJobfairOpen()
{
return $this->model->where('predetermined_status', 1)->get();
}
//正在开启的招聘会
public function getOpenJobfair($where = [])
{
return $this->model->where($where)->get();
}
//正在开启的招聘会
public function getOneOpenJobfair($where = [])
{
return $this->model->where($where)->first();
}
//企业预定开启的招聘会
public function getCompanyOpenJobfair($where = [],$company_where)
{
return $this->model->whereHas('jobfairCompany',function ($query) use ($company_where) {
$query->where($company_where);
})->where($where)->get();
}
//正在开启的招聘会
public function getOneCompanyOpenJobfair($where = [],$company_where)
{
return $this->model->whereHas('jobfairCompany',function ($query) use ($company_where) {
$query->where($company_where);
})->where($where)->first();
}
public function getJobfairs($where = array(), $order = array(), $limit = '')
{
$rst = $this->model->when(get_subsite_id()>0,function($query){
$query->whereHas('subsite', function ($query) {
$query->where('subsite_id', get_subsite_id());
});
})->where($where)->where(function ($query) {
$query->where('showendtime', 0)->orWhere('showendtime', '>=', time());
});
if ($order) {
if (is_array($order)) {
foreach ($order as $k => $v) {
$rst->orderBy($k, $v);
}
} else {
$rst->orderbyRaw($order);
}
}
if ($limit) {
$rst->limit($limit);
}
return $rst->get();
}
public function getJobfairNum($where)
{
return $this->model->where($where)->count();
}
public function getStatisticsJobfairs($where)
{
return $this->model->withTrashed()->where($where)->get();
}
}