company_id) ? $request->company_id : false;
        $grid=$this->grid($company_id)->render();
        return $content
            ->header('参会职位')
            ->description('')
            ->body(view('admin.jobfair.put_jobs')->with(['grid'=>$grid]));
    }
    /**
     * Show interface.
     *
     * @param mixed $id
     * @param Content $content
     * @return Content
     */
    public function show($id, Content $content)
    {
        return $content
            ->header('参会职位详情')
            ->description('')
            ->body($this->detail($id));
    }
    /**
     * Edit interface.
     *
     * @param mixed $id
     * @param Content $content
     * @return Content
     */
    public function edit($id, Content $content)
    {
        return $content
            ->header('参会职位编辑')
            ->description('')
            ->body($this->form()->edit($id));
    }
    /**
     * Create interface.
     *
     * @param Content $content
     * @return Content
     */
    public function create(Content $content)
    {
        return $content
            ->header('参会职位创建')
            ->description('description')
            ->body($this->form());
    }
    /**
     * Make a grid builder.
     *
     * @return Grid
     */
    protected function grid($company_id)
    {
        $grid = new Grid(new JobfairPutJob);
        $grid->model()->when(get_subsite_id()>0, function ($query) {
            $query->whereHas('jobfair_company',function($query){
                $query->whereHas('subsites', function ($query) {
                    $query->where('subsite_id', get_subsite_id())->where('subsites.effective', 1);
                });
            });
        })
            ->when($company_id==true,function ($query) use ($company_id){
                $query->where('company_id',$company_id);
            })->whereHas('jobs')
            ->orderBy('jobfair_id', 'desc')
            ->orderBy('updated_at', 'desc');
        $grid->jobs_name('职位名称')->display(function ($jobs_name) {
            return ''.$jobs_name.'';
        })->width(200);
        $grid->company_name('发布公司')->display(function ($company_name) {
            return ''.$company_name.'';
        })->width(200);
        $grid->column('jobfairs.title', '招聘会标题')->display(function ($title) {
            return "jobfair_id)."' target='_blank'>".$title."";
        })->width(200);
        $grid->audit('审核状态')->display(function () {
            if ($this->jobs->audit==1) {
                return'审核通过';
            } elseif ($this->jobs->audit==3) {
                return'审核未通过';
            } else {
                return'等待审核';
            }
        });
        $grid->amount('人数')->display(function ($amount){
            return $amount ? $amount : '若干';
        });
        $grid->district_cn('工作地区')->width(150);
        if(get_subsite_open()){
            $grid->column('jobfairs.subsite_id', '所属分站')->display(function ($subsite_id) {
                if ($subsite_id) {
                    $Subsite = Subsite::find($subsite_id);
                    return isset($Subsite->sitename) ? $Subsite->sitename : '未知';
                }
                return '总站';
            });
        }
        $grid->created_at('创建时间');
        $grid->actions(function ($actions) use ($grid) {
            if (Admin::user()->can('jobfair_put_jobs_delete')) {
                $actions->disableDelete(false);
            }
        });
        if (Admin::user()->can('jobfair_put_jobs_delete')) {
            $grid->tools(function ($tools) {
                $tools->batch(function ($batch) {
                    $batch->disableDelete(false);
                });
            });
            $grid->disableRowSelector(false);
        }
        if (Admin::user()->can('jobfair_put_jobs_export')) {
            $grid->disableExport(false); //显示导出按钮
            $grid->exporter(new PutJobsExport()); //传入自己在第1步创建的导出类
        }
//        $grid->tools(function ($tools) {
//            if (Admin::user()->can('jobfair_put_jobs_audit')) {
//                $but = <<
//    
//
//EOT;
//                $tools->append($but);
//            }
//        });
        $grid->filter(function ($filter) {
            // 去掉默认的id过滤器
            $filter->disableIdFilter();
            $filter->column(1/2, function ($filter) {
                $filter->like('jobs_name', '职位名称');
                $filter->equal('jobfair_id', '招聘会')->select(Jobfair::select('title', 'id')->when(get_subsite_id()>0,function ($query){
                    $query->whereHas('subsites', function ($query) {
                        $query->where('subsite_jobfairs.subsite_id', get_subsite_id())->where('subsites.effective', 1);
                    });
                })->pluck('title', 'id')->all());
                $filter->where(function ($query) {
                    switch ($this->input) {
                        case 3:
                            $query->whereRaw("updated_at>='".date('Y-m-d H:i:s', strtotime('-3 day'))."'");
                            break;
                        case 7:
                            $query->whereRaw("updated_at>='".date('Y-m-d H:i:s', strtotime('-7 day'))."'");
                            break;
                        case 30:
                            $query->whereRaw("updated_at>='".date('Y-m-d H:i:s', strtotime('-30 day'))."'");
                            break;
                    }
                }, '刷新时间', 'updated_at')->select([
                    3=>'三天内',
                    7=>'一周内',
                    30=>'一月内',
                ]);
                if(get_subsite_id() == 0 && get_subsite_open()){
                    $filter->equal('jobfairs.subsite_id', '所属分站')->select(array_column(get_all_subsite(), 'sitename', 'id'));
                }
            });
            $filter->column(1/2, function ($filter) {
                $filter->like('company_name', '公司名称');
                $filter->where(function ($query) {
                    switch ($this->input) {
                        case 1:
                            $query->whereHas('jobs',function ($query){
                                $query->where('audit',1);
                            });
                            break;
                        case 2:
                            $query->whereHas('jobs',function ($query){
                                $query->where('audit',2);
                            });
                            break;
                        case 3:
                            $query->whereHas('jobs',function ($query){
                                $query->where('audit',3);
                            });
                            break;
                    }
                }, '审核状态', 'audit')->select([
                    1=>'审核通过',
                    2=>'等待审核',
                    3=>'审核未通过',
                ]);
                $filter->where(function ($query) {
                    switch ($this->input) {
                        case 1:
                            $query->whereHas('jobs',function ($query){
                                $query->where('display','1')->where('audit',1);
                            });
                            break;
                        case 2:
                            $query->whereHas('jobs',function ($query){
                                $query->where('display','2')->orWhere('audit','<>',1);
                            });
                            break;
                    }
                }, '显示状态', 'display')->select([
                    1=>'显示',
                    2=>'关闭',
                ]);
            });
        });
        return $grid;
    }
    /**
     * Make a show builder.
     *
     * @param mixed $id
     * @return Show
     */
    protected function detail($id)
    {
        $show = new Show(JobfairPutJob::findOrFail($id));
        $show->id('ID');
        $show->jobs_name('职位名称')->as(function ($jobs_name) {
            return $jobs_name;
        });
        $show->company_name('发布公司')->as(function ($company_name) {
            return $company_name;
        });
        $show->jobfairs()->title('招聘会标题')->as(function ($jobfairs) {
            return $jobfairs->title;
        });
        $show->audit('审核状态')->as(function () {
            if ($this->jobs->audit==1) {
                return '审核通过';
            } elseif ($this->jobs->audit==3) {
                return '审核未通过';
            } else {
                return '等待审核';
            }
        });
        $show->display('显示状态')->as(function () {
            if ($this->jobs->audit==1 && $this->jobs->display==1) {
                return '显示';
            } else {
                return '关闭';
            }
        });
        $show->amount('人数')->as(function ($amount) {
            return $amount;
        });
        $show->district('工作地区')->as(function ($district_cn) {
            return $district_cn;
        });
        $show->jobfairs()->subsite('所属分站')->as(function ($jobfairs) {
            if ($jobfairs->subsite_id) {
                $Subsite = Subsite::find($jobfairs->subsite_id);
                return isset($Subsite->sitename) ? $Subsite->sitename : '未知';
            }
            return '总站';
        });
        $show->jobs_content('职位描述')->setEscape(false);
        $show->created_at('创建时间');
        $show->updated_at('更新时间');
        return $show;
    }
    /**
     * Make a form builder.
     *
     * @return Form
     */
    protected function form()
    {
        $form = new Form(new JobfairPutJob);
        $form->display('ID');
        $form->display('Created at');
        $form->display('Updated at');
        return $form;
    }
    public function auditPutJobs(Request $request)
    {
        $id = $request->id;
        $form = new \Encore\Admin\Widgets\Form();
        $form->action(route('jobfair.auditPutR'));
        $form->disableReset();
        $form->hidden('id', 'ID')->default($id);
        $form->radio('audit', '审核')->options([1=>'审核通过',3=>'审核未通过'])->default(1);
        $form->textarea('remark', '备注');
        $form->html('');
        return json_encode(['html'=>$form->render(),'detail'=>'审核职位']);
    }
    public function auditPutR(Request $request)
    {
        $id = $request->id;
        $audit = $request->audit;
        $remark = $request->remark;
        $pms_notice = $request->pms_notice;
        $arr = array_filter(explode(',', $id));
        if (empty($id)) {
            admin_toastr('数据异常', 'error');
            return back();
        }
        $job_ids = JobfairPutJob::whereIn('id', $arr)->pluck('job_id');
        $result = JobfairJob::whereIn('id', $job_ids)->update(['audit'=>$audit]);
        foreach ($arr as $k => $v){
            $job = JobfairPutJob::where('id', $v)->first();
            Cache::put($job->jobfair_id.'-'.$job->company_id, time(),72000);
        }
        $data=[];
        foreach ($arr as $k => $v) {
            $data[$k]['type'] = 12;
            $data[$k]['type_id'] = $v;
            $data[$k]['status'] = $audit;
            $data[$k]['reason'] = $remark;
            $data[$k]['audit_man'] = Admin::user()->username;
            $data[$k]['created_at'] = date('Y-m-d H:i:s', time());
            $data[$k]['updated_at'] = date('Y-m-d H:i:s', time());
        }
        AuditReason::insert($data);
        if ($pms_notice) {
            if ($audit==3) {
                $stat='审核不通过';
            } elseif ($audit==1) {
                $stat = '审核通过';
            } else {
                $stat='待审核';
            }
            $reus=JobfairPutJob::whereIn('id', $arr)->get();
            $ds = [];
            foreach ($reus as $k => $v) {
                $ds[$k]['utype'] = 1;
                $ds[$k]['msgtype'] = 1;
                $ds[$k]['msgfromuid'] = Admin::user()->id;
                $ds[$k]['msgfrom'] = Admin::user()->username;
                $ds[$k]['msgtoname'] = $v->company_name ? $v->company_name : 'admin';
                $ds[$k]['msgtouid'] = $v->company_id ? $v->company_id : 0;
                $ds[$k]['message'] =  $remark ? '参会职位(id:'.array_values($arr)[$k].')'.$stat.'<备注:'.$remark.'>' : '参会职位(id:'.array_values($arr)[$k].')'.$stat;
                $ds[$k]['created_at'] = date('Y-m-d H:i:s', time());
                $ds[$k]['updated_at'] = date('Y-m-d H:i:s', time());
            }
            Pms::insert($ds);
        }
        if ($result) {
            admin_toastr('审核成功', 'success');
        } else {
            admin_toastr('审核失败', 'error');
        }
        return back();
    }
}