147 lines
5.2 KiB
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');
|
|
});
|
|
}
|
|
}
|