<?php

namespace App\Admin\Controllers\Content;

use App\Admin\Exports\Content\HouseBlacklistExport;
use App\Http\Controllers\Controller;
use App\Models\TalentHousePeople;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Illuminate\Http\Request;

class BuyHouseBlacklistController extends Controller
{
    use HasResourceActions;

    private $status = ['未知', '正常', '拉黑'];

    /**
     * Index interface.
     *
     * @param Content $content
     * @return Content
     */
    public function index(Content $content)
    {
        return $content
            ->header('黑名单')
            ->description(' ')
            ->body(view('admin.content.buy_house_blacklist')->with(['grid' => $this->grid()]));
    }

    /**
     * Make a grid builder.
     *
     * @return Grid
     */
    protected function grid()
    {
        $grid = new Grid(new TalentHousePeople());

        $grid->model()->orderBy('status', 'DESC');

        $status_text = $this->status;
        $grid->id('ID');
        $grid->realname('姓名');
        $grid->mobile('联系电话');
        $grid->email('邮箱');
        $grid->id_card('证件号');
        $grid->end_time('拉黑截止时间');
        $grid->comment('备注')->style('max-width:400px');
        $grid->status('状态')->display(function () use ($status_text) {
            return $status_text[$this->status];
        });

        $grid->actions(function ($actions) {
            if ($actions->row['status'] == 1) {
                $actions->append("<a href='javascript:set_black({$actions->row['id']})' class='btn btn-danger btn-xs status'>拉黑</a>");
            } else {
                $actions->append("<a href='" . admin_base_path('content/buy_house_blacklist/status') . "?id={$actions->row['id']}&status=1' class='btn btn-primary btn-xs status'>取消拉黑</a>");
            }
            $actions->append("<a href='javascript:set_comment({$actions->row['id']})' class='btn btn-primary btn-xs comment'>修改备注</a>");
        });

        $grid->filter(function ($filter) {
            $filter->disableIdFilter();
            $filter->like('realname', '姓名');
            $filter->like('mobile', '手机号');
            $filter->like('email', '邮箱');
            $filter->like('id_card', '证件号');
            $status_option = ['全部', '正常', '拉黑'];
            $filter->where(function ($query) {
                if ($this->input > 0) {
                    $query->where('status', '=', $this->input);
                }
            }, '状态', 'status')->radio($status_option);
            $filter->between('end_time', '拉黑截至时间')->datetime();
        });

        $grid->disableExport(false); //显示导出按钮
        $grid->exporter(new HouseBlacklistExport()); //传入自己在第1步创建的导出类

        return $grid;
    }

    /**
     * 审核
     */
    public function status(Request $request)
    {
        //接收参数
        $id      = $request->id;
        $status  = $request->status;
        $comment = $request->comment;
        $url     = empty($request->url) ? admin_base_path('content/buy_house_blacklist') : $request->url;
        if (empty($id) || empty($status)) {
            admin_toastr('数据异常', 'error');
            return redirect(admin_base_path('content/buy_house_blacklist'));
        }

        //更新数据
        $update = ['status' => $status, 'comment' => $comment];
        if ($status == 2) {
            $end_time           = $request->end_time;
            $update['end_time'] = $end_time;
        } else {
            $update['end_time'] = null;
            $update['comment']  = '';
        }
        $result = TalentHousePeople::where('id', '=', $id)
            ->update($update);

        if ($result) {
            admin_toastr('审核成功', 'success');
        } else {
            admin_toastr('该信息不存在或已操作', 'error');
        }

        return redirect($url);
    }

    /**
     * 修改备注
     */
    public function comment(Request $request)
    {
        $id      = $request->id;
        $comment = $request->comment;
        $url     = empty($request->url) ? admin_base_path('content/buy_house_blacklist') : $request->url;

        $result = TalentHousePeople::where('id', '=', $id)
            ->update(['comment'=>$comment]);

        if ($result) {
            admin_toastr('审核成功', 'success');
        } else {
            admin_toastr('该信息不存在或已操作', 'error');
        }

        return redirect($url);
    }
}