<?php

namespace App\Admin\Controllers\Lottery;

use App\Http\Controllers\Controller;
use App\Models\LotteryWin;
use Encore\Admin\Facades\Admin as userAdmin;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Illuminate\Http\Request;

class WinController extends Controller
{
    use HasResourceActions;

    /**
     * Index interface.
     *
     * @param Content $content
     * @return Content
     */
    public function index(Content $content)
    {
        return $content
            ->header('中奖列表')
            ->description('')
            ->body(view('admin.lottery.win')->with(['grid' => $this->grid()]));
    }

    /**
     * Make a grid builder.
     *
     * @return Grid
     */
    protected function grid()
    {
        $status = ['', '未领奖', '已领奖'];

        $grid = new Grid(new LotteryWin);
        $grid->model()->orderBy('status', 'ASC')->orderBy('created_at','DESC');

        $grid->model();

        $grid->id('ID');
        $grid->column('member.mobile', '手机号');
        $grid->column('member.email', '邮箱号');
        $grid->column('prize_name', '奖品名称');
        $grid->created_at('中奖时间');
        $grid->out_at('核销时间');
        $grid->status('状态')->display(function () use ($status) {
            return $status[$this->status];
        });

        $grid->actions(function ($actions) {
            if ($actions->row['status'] == 1) {
                $actions->append('<button data-id="'.$actions->row['id'].'" class="btn btn-primary btn-xs write-off" title="核销" >核销</button>');
            }
        });

        $grid->filter(function ($filter) {
            $filter->where(function ($query) {
                $query->whereHas('member', function ($query) {
                    $query->where('email', 'like', "%{$this->input}%")->orWhere('mobile', 'like', "%{$this->input}%");
                });
            }, '手机/邮箱');

            $filter->equal('status', '状态')->select([
                1 => '未领奖',
                2 => '已领奖',
            ]);
        });

        return $grid;
    }

    /**
     *  return json
     */
    public function writeoff(Request $request)
    {
        $id = $request->input('id');
        $info = LotteryWin::find($id);
        $info->status = 2;
        $info->out_at = date('Y-m-d H:i:s');
        $info->save();

        return response()->json([]);
    }
}