header('黑名单列表')
->description('')
->body(view('admin.jobfair.jobfair_blacklist')->with(['content'=>$this->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('')
->body(view('admin.jobfair.jobfair_blacklist_add')->with(['content'=>$this->createForm()]));
}
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$grid = new Grid(new JobfairBlacklist);
$grid->model()->whereHas('companys');
$grid->column('companys.companyname', '公司名称')->width(200);
$grid->status('状态')->display(function ($status) {
if ($status==1) {
return '等待解除';
} else {
return '已解除';
}
});
$grid->type('类型')->display(function ($type) {
if ($type==1) {
return '系统拉黑';
} else {
return '手动拉黑';
}
});
$grid->details('备注');
$grid->add_time('拉黑时间')->display(function ($add_time) {
return $add_time ? date('Y-m-d H:i:s', $add_time) : '';
});
$grid->remove_time('解除时间')->display(function ($remove_time) {
return $remove_time ? date('Y-m-d H:i:s', $remove_time) : '';
});
$grid->operator('操作人');
$grid->disableExport();
$grid->actions(function ($actions) {
if (Admin::user()->can('jobfair_blacklist_unsealing')) {
if ($actions->row['status']==1) {
$name = '解封';
$status = 2;
$actions->append('');
}
}
});
$grid->tools(function ($tools) use ($grid) {
if (Admin::user()->can('jobfair_blacklist_unsealing')) {
$but = <<
EOT;
$tools->append($but);
}
});
if (Admin::user()->can('jobfair_blacklist_unsealing')) {
$grid->disableRowSelector(false);
}
$grid->filter(function ($filter) {
$filter->like('companys.companyname', '公司名称');
$filter->equal('status', '状态')->select([
1 => '等待解除',
2 => '已解除',
]);
$filter->equal('type', '类型')->select([
1 => '系统拉黑',
2 => '手动拉黑',
]);
});
if (Admin::user()->can('jobfair_blacklist_create')) {
$grid->disableCreateButton(false);
}
return $grid;
}
/**
* Make a show builder.
*
* @param mixed $id
* @return Show
*/
protected function detail($id)
{
$show = new Show(JobfairBlacklist::findOrFail($id));
$show->id('ID');
$show->companys()->companyname('公司名称')->as(function ($companys){
return $companys->companyname;
});
$show->status('状态')->as(function ($status) {
if ($status==1) {
return '等待解除';
} else {
return '已解除';
}
});
$show->type('类型')->as(function ($type) {
if ($type==1) {
return '系统拉黑';
} else {
return '手动拉黑';
}
});
$show->details('备注');
$show->add_time('拉黑时间')->as(function ($add_time) {
return $add_time ? date('Y-m-d H:i:s', $add_time) : '';
});
$show->remove_time('解除时间')->as(function ($remove_time) {
return $remove_time ? date('Y-m-d H:i:s', $remove_time) : '';
});
$show->operator('操作人');
$show->created_at('Created at');
$show->updated_at('Updated at');
return $show;
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new JobfairBlacklist);
$form->display('ID');
$form->display('Created at');
$form->display('Updated at');
return $form;
}
protected function createForm()
{
$form = new \Encore\Admin\Widgets\Form();//表单使用admin提供的表单
$form->action(route('blacklist.add'));
$JobfairCompany = JobfairCompany::select('company_id')->groupBy('company_id')->get()->toArray();
$companyArr = array_column($JobfairCompany, 'company_id');
$Company = Company::whereIn('id', $companyArr)->select('id', 'companyname')->get()->toArray();
$needAyy = array_column($Company, 'companyname', 'id');
$form->select('company_id', '企业名称')->options($needAyy)->rules([
'required',
])->setMustMark();;
$form->textarea('details', '备注')->rules([
'required',
])->setMustMark();;
$form->disableReset();
return $form->render();
}
public function blacklistAdd(Request $request)
{
$request->validate([
'company_id' => 'required',
'details' => 'required',
]);
$company_id = $request->company_id;
$details = $request->details;
$JobfairBlacklist = JobfairBlacklist::where(['company_id'=>$company_id])->first();
if ($JobfairBlacklist) {
$blackCompany = JobfairBlacklist::where(['company_id'=>$company_id,'remove_time'=>0,'status'=>1])->first();
if ($blackCompany) {
admin_toastr('该参会企业已在黑名单之列!', 'error');
return back();
}
$result = JobfairBlacklist::where(['company_id'=>$company_id])->update(
['remove_time'=>0,'status'=>1,'operator'=>admin::user()->username,'details'=>$details]
);
} else {
$result = JobfairBlacklist::create(
['company_id'=>$company_id,'type'=>2,'details'=>$details,'add_time'=>time(),'operator'=>admin::user()->username]
);
}
if ($result) {
admin_toastr('操作成功!!', 'success');
return redirect(route('blacklist.index'));
} else {
admin_toastr('操作失败!', 'error');
return back();
}
}
public function blacklistDelete(Request $request)
{
$id = $request->id;
$form = new \Encore\Admin\Widgets\Form();
$form->action(route('blacklist.deleted'));
$form->disableReset();
$form->hidden('id', 'ID')->default($id);
$form->textarea('details', '备注');
return json_encode(['html'=>$form->render(),'detail'=>'参会企业解封']);
}
public function blacklistD(Request $request)
{
$blackArr = [];
$company_id = [];
$id = $request->id;
$details = $request->details;
$arr = array_filter(explode(',', $id));
if (empty($id)) {
admin_toastr('数据异常!', 'error');
return back();
}
if (empty($details)) {
admin_toastr('请填写备注!', 'error');
return back();
}
$JobfairBlacklist = JobfairBlacklist::whereIn('id', $arr)->get();
if ($JobfairBlacklist->isEmpty()) {
admin_toastr('数据异常!', 'error');
return back();
} else {
foreach ($JobfairBlacklist as $key => $val) {
if ($val->remove_time==0&&$val->status==1) {
$blackArr[] = $val->id;
$company_id[]=$val->company_id;
}
}
}
\DB::beginTransaction();
try {
JobfairBlacklist::whereIn('id', $blackArr)
->update(['details'=>$details, 'remove_time'=>time(), 'operator'=>admin::user()->username, 'status'=>2]);
if ($company_id) {
JobfairCompany::whereIn('company_id', $company_id)
->where('created_at', '<', date('Y-m-d H:i:s', time()))->update(['black_status'=>1]);
}
\DB::commit();
admin_toastr('操作成功!!', 'success');
return redirect(route('blacklist.index'));
} catch (\Exception $e) {
\DB::rollback();
admin_toastr('操作失败!', 'error');
return back();
}
}
}