<?php namespace App\Admin\Controllers\System; use App\Http\Controllers\Controller; use App\Models\EmailQueue; use Encore\Admin\Controllers\HasResourceActions; use Encore\Admin\Facades\Admin; use Encore\Admin\Form; use Encore\Admin\Grid; use Encore\Admin\Layout\Content; use Encore\Admin\Show; class EmailQueueController extends Controller { use HasResourceActions; /** * Index interface. * * @param Content $content * @return Content */ public function index(Content $content) { return $content ->header('邮件记录') ->description('发送记录') ->body($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($this->form()); } /** * Make a grid builder. * * @return Grid */ protected function grid() { $grid = new Grid(new EmailQueue); $grid->model()->orderBy('id', 'desc'); $grid->id('ID'); $grid->column('emailBatchs.name', '批次')->width(150); $grid->m_address('邮箱')->width(150); $grid->m_subject('邮件标题')->width(200); $grid->m_body('邮件内容')->width(200); $grid->m_status('状态')->display(function ($m_status) { switch ($m_status) { case 1: $m_status = '<span class="label label-success">成功</span>'; break; case 2: $m_status = '<span class="label label-warning">等待</span>'; break; case 3: $m_status = '<span class="label label-default">失败</span>'; break; default: $m_status = '<span class="label label-warning">等待</span>'; break; } return $m_status; }); $grid->error_message('错误信息')->width(200); $grid->m_sendtime('发送时间'); $grid->created_at('添加时间'); $grid->actions(function ($actions) use ($grid) { if (Admin::user()->can('system_email_queue_delete')) { $actions->disableDelete(false); } }); if (Admin::user()->can('system_email_queue_delete')) { $grid->tools(function ($tools) { $tools->batch(function ($batch) { $batch->disableDelete(false); }); }); $grid->disableRowSelector(false); } $grid->filter(function ($filter) { $filter->equal('m_status', '状态')->select([ 1 => '发送成功', 2 => '等待发送', 3 => '发送失败', ]); }); $grid->tools(function ($tools) { //$tools->append('<a class="btn btn-sm btn-primary" href="/admin/sys/sms/queue/bath" title="短信推送"><i class="fa fa-save"></i><span class="hidden-xs"> 短信推送</span></a>'); }); return $grid; } /** * Make a show builder. * * @param mixed $id * @return Show */ protected function detail($id) { $show = new Show(EmailQueue::findOrFail($id)); $show->id("ID"); // $show->batch('批次', function ($batch) { // $batch->name(); // }); $show->m_address('邮箱'); $show->m_subject('邮件标题'); $show->m_body('邮件内容'); $show->m_status('状态')->unescape()->as(function ($m_status) { switch ($m_status) { case 1: $m_status = '<span class="label label-success">成功</span>'; break; case 2: $m_status = '<span class="label label-warning">等待</span>'; break; case 3: $m_status = '<span class="label label-error">失败</span>'; break; default: $m_status = '<span class="label label-warning">等待</span>'; break; } return $m_status; }); $show->error_message('错误信息'); $show->m_sendtime('发送时间'); $show->created_at('添加时间'); return $show; } /** * Make a form builder. * * @return Form */ protected function form() { $form = new Form(new EmailQueue); $form->display('ID'); $form->display('发送时间'); $form->display('添加时间'); return $form; } }