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

147 lines
5.2 KiB
PHP

<?php
namespace App\Admin\Controllers;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use App\Models\GuessOption;
use App\Models\{UserGuess, Guess, User};
use Dcat\Admin\Http\Controllers\AdminController;
class GuessUserController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(UserGuess::with(['guess', 'user', 'options']), function (Grid $grid) {
$grid->model()->orderBy('id', 'desc');
$grid->disableRefreshButton();
$grid->disableRowSelector();
$grid->disableCreateButton();
$grid->disableViewButton();
$grid->disableDeleteButton();
$grid->column('id');
$grid->column('guess.name', '活动');
$grid->column('user.phone', '用户');
$grid->column('answers', '回答')->display(function () {
return $this->options->implode('option_name', ', ');
});
$grid->column('correct_state')->using(UserGuess::$correctStateMap)->dot(UserGuess::$correctIcoMap);
$grid->column('prize_state')->using(UserGuess::$prizeStateMap)->dot(UserGuess::$correctIcoMap);
$grid->column('convert_time');
$grid->column('convert_prize_time');
$grid->column('created_at');
$grid->filter(function (Grid\Filter $filter) {
$filter->panel();
$filter->equal('guess_id')->select(function ($id) {
$guess = Guess::find($id);
if ($guess) {
return [$guess->id => $guess->name];
}
})->placeholder('输入活动名称搜索')->ajax('api/guess')->width(3);
$filter->equal('user_id')->select(function ($id) {
$guess = User::find($id);
if ($guess) {
return [$guess->id => $guess->name];
}
})->placeholder('输入手机号搜索')->ajax('api/user')->width(3);
$filter->equal('correct_state')->select(UserGuess::$correctStateMap)->width(3);
$filter->equal('prize_state')->select(UserGuess::$prizeStateMap)->width(3);
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, UserGuess::with(['guess', 'user']), function (Show $show) {
// dd($show);
$show->field('id');
$show->field('guess.name', '活动');
$show->field('user.phone', '用户');
$show->field('correct_state')->using(UserGuess::$correctStateMap)->dot(UserGuess::$correctIcoMap);
$show->field('prize_state')->using(UserGuess::$prizeStateMap)->dot(UserGuess::$correctIcoMap);
$show->field('convert_time');
$show->field('convert_prize_time');
$show->field('created_at');
$show->field('updated_at');
$show->options('用户选择选项', function ($grid) {
// dd($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->column('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;
});
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(UserGuess::with(['guess', 'user', 'options']), function (Form $form) {
$form->display('id');
$form->display('guess.name', '活动');
$form->display('user.phone', '用户');
$form->display('answers', '用户选择')->with(function () {
return $this->options->implode('option_name', ', ');
});
$form->display('correct_state')->with(function ($value) {
$map =UserGuess::$correctStateMap;
return data_get($map, $value);
});
$form->display('prize_state')->with(function ($value) {
$map = UserGuess::$prizeStateMap;
return data_get($map, $value);
});
if ($form->model()->correct_state === UserGuess::CORRECT) {
$form->datetime('convert_time');
}
if ($form->model()->prize_state === UserGuess::PRIZE_YES) {
$form->datetime('convert_prize_time');
}
$form->disableViewButton();
$form->display('created_at');
});
}
}