order-food-admin/app/Admin/Controllers/GuessController.php

170 lines
6.0 KiB
PHP

<?php
namespace App\Admin\Controllers;
use App\Models\{Guess, GuessOption, UserGuess};
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use Carbon\Carbon;
use App\Admin\Renderable\GuessOptionsTable;
use App\Admin\Actions\Grid\GuessAnswer;
class GuessController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Guess(), function (Grid $grid) {
$grid->model()->orderBy('created_at', 'desc');
$grid->disableRefreshButton();
$grid->disableRowSelector();
$grid->column('id');
$grid->column('name');
$grid->column('image', '分享图')->image('', 100);
$grid->column('guess_options', '选项统计')->display('选项列表')->modal(GuessOptionsTable::make());
// $grid->column('description');
$grid->column('start_time');
$grid->column('end_time');
$grid->column('status')->if(function ($column) {
return $this->prize_state === Guess::PRIZE_EXIST && $this->status === Guess::STATUS_DISABLE;
})->display(function () {
return '已结束';
})->else()->switch();
$grid->filter(function (Grid\Filter $filter) {
$filter->panel();
$filter->like('name')->width(3);
});
$grid->actions(function (Grid\Displayers\Actions $actions) {
// if ($actions->row->status === Guess::PRIZE_UNEXIST) {
$actions->append(new GuessAnswer());
// $actions->append(new GuessAnswer());
// }
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Guess(), function (Show $show) {
$show->field('id');
$show->field('name');
// $show->field('banner_kv', '活动背景图')->image('', 100);
$show->field('image', '分享图')->image('', 100);
$show->field('description')->unescape();
$show->field('num');
$show->field('start_time');
$show->field('end_time');
$show->field('status')->as(function ($value) {
return $value ? '打开' : '关闭';
});
$show->field('created_at');
$show->options(function ($model) {
$grid = new Grid(new GuessOption());
$grid->disableRefreshButton();
$grid->disableRowSelector();
// $grid->disableCreateButton();
// $grid->disableActions();
$grid->setResource('guess-option');
$grid->model()->where('guess_id', $model->id);
$grid->id();
$grid->column('option_name', __('guess-option.fields.option_name'));
$grid->column('image')->image('', 100);
$grid->column('correct_state', __('guess-option.fields.correct_state'))
->using(GuessOption::$correctStateMap)->dot(GuessOption::$correctIcoMap);
return $grid;
});
// $show->users(function ($model) {
// $grid = new Grid(UserGuess::with(['user', 'options']));
// $grid->disableRefreshButton();
// $grid->disableRowSelector();
// $grid->disableCreateButton();
// $grid->disableActions();
// $grid->model()->where('guess_id', $model->id);
// $grid->column('id');
// $grid->column('user.phone', '用户');
// $grid->column('answers', '答案')->display(function () {
// return $this->options->implode('option_name', ', ');
// });
// $grid->column('correct_state', '是否正确')->using([
// 0 => '不正确',
// 1 => '正确',
// 2 => '未知'
// ])->dot([
// 0 => 'danger',
// 1 => 'success',
// 2 => 'warning',
// ]);
// $grid->column('created_at', '参与时间');
// return $grid;
// });
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(Guess::with(['options']), function (Form $form) {
$form->display('id');
$form->text('name')->required();
$form->datetimeRange('start_time', 'end_time', admin_trans('guess.fields.time'))->required();
// $form->text('description');
// $form->image('banner_kv', '活动背景图')
// ->accept('jpg,png,gif,jpeg', 'image/*')
// ->move('milk-tea/guess-options/'.Carbon::now()->toDateString())
// ->saveFullUrl()
// ->removable()->required();
$form->image('image', '分享图')
->accept('jpg,png,gif,jpeg', 'image/*')
->move('milk-tea/guess-options/'.Carbon::now()->toDateString())
->saveFullUrl()
->removable();
$form->editor('description');
$form->number('num')->default(1)->min(1)->help('用户最多可选择几项');
$form->hidden('status')->default(Guess::STATUS_DISABLE);
// if ($form->isCreating()) {
// $form->hasMany('options', function (Form\NestedForm $form) {
// $form->text('option_name', __('guess-option.fields.option_name'));
// });
// }
// $form->saving(function (Form $form) {
// if (!$form->image) {
// $form->deleteInput('image');
// }
// });
});
}
}