<?php

namespace App\Admin\Controllers\Content;

use App\Http\Controllers\Controller;
use App\Models\Recuperate;
use App\Models\RecuperateApply;
use App\Models\RecuperateLog;
use App\Models\RecuperateTime;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Illuminate\Http\Request;
use Encore\Admin\Facades\Admin;

class RecuperateApplyController extends Controller
{
    use HasResourceActions;

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

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

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

        $grid->recuperate_id('套餐id');
        $grid->column('套餐标题')->display(function () {
            //套餐被删除
            if (empty($this->recuperate)) {
                return '<span style="color:#A0A0A0;">已被删除</span>';
            }
            $style = "color:" . $this->recuperate->tit_color . ';';
            if ($this->recuperate->tit_b == '1') {
                $style .= 'font-weight:bold;';
            }

            return '<span style="' . $style . '">' . $this->recuperate->title . '</span>';
        })->width(200);
        $grid->small_img('缩略图')->display(function () {
            //套餐被删除
            if (empty($this->recuperate)) {
                return '';
            }

            if ($this->recuperate->small_img) {
                return '<span class="vtip" title="<img src=\'' . upload_asset($this->recuperate->small_img) . '\'  height=120>">
                            <img class="avatar small" src="' . upload_asset($this->recuperate->small_img) . '" align="absmiddle" style="width: 22px;height: 22px;">
                        </span>';
            } else {
                return '';
            }
        });

        $grid->price('套餐金额');
        $grid->user_name('姓名');
        $grid->user_idcard('身份证');
        $grid->mobile('联系电话');
        $grid->wechat('微信号');
        $grid->company_name('工作单位');
        $grid->column('人才层次')->display(function () {
            $level_arr = [
                '',
                '第一层次',
                '第二层次',
                '第三层次',
                '第四层次',
                '第五层次',
                '第六层次',
                '第七层次',
            ];
            return $level_arr[$this->level];
        });
        /*$grid->condition("适用对象类型");
        $grid->column('个税社保')->display(function () {
            $level_arr = [
                '',
                '是',
                '否',
            ];
            return $level_arr[$this->tax];
        });
        $grid->column('年薪')->display(function () {
            $level_arr = [
                '',
                '是',
                '否',
            ];
            return $level_arr[$this->salary];
        });*/
        $grid->validate_time('人才有效期');
        $grid->created_at('报名时间');
        $grid->column('审核状态')->display(function () {
            $status_arr = [
                '待审核',
                '审核通过',
                '审核不通过',
                '取消活动',
            ];
            $reason     = $this->reason ? '<a style="margin-left: 5px;" data-reason="' . $this->reason . '" class="audit_log"><i class="fa fa-eye"></i></a>' : '';
            return '<span style="color:#FF6600">' . $status_arr[$this->status] . $reason . '</span>';
        });

        //审核功能
        $grid->actions(function ($actions) {
            if ($actions->row['status'] == 0) {
                $actions->append("<button class='btn btn-primary btn-xs applyaudit' data-code=" . $actions->row['id'] . ">审核</button>");
            }

            /*取消活动*/
            if ($actions->row['status'] != 2 && $actions->row['status'] != 3) {
                $actions->append("<button class='btn btn-primary btn-xs applyaudits' data-code=" . $actions->row['id'] . ">取消</button>");
            }
        });

        $grid->filter(function ($filter) {
            $filter->disableIdFilter();
            $filter->equal('recuperate_id', '套餐id');

            /*$filter->where(function($query){
                $recuperate = Recuperate::where('title','like',"%{$this->input}%")->get();
                $ids = $recuperate->pluck('id')->all();
                if (empty($ids)) {
                    $query->where('id','=',0);
                } else {
                    $query->whereIn('recuperate_id',$ids);
                }
            }, '');*/

            $date3       = date('Y-m-d', strtotime("-3 day"));
            $date7       = date('Y-m-d', strtotime("-7 day"));
            $date30      = date("Y-m-d", strtotime("-1 month"));
            $date180     = date("Y-m-d", strtotime("-6 month"));
            $date360     = date("Y-m-d", strtotime("-1 year"));
            $date_option = [
                ''       => '不限',
                $date3   => '三天内',
                $date7   => '一周内',
                $date30  => '一月内',
                $date180 => '半年内',
                $date360 => '一年内',
            ];
            $filter->where(function ($query) {
                $query->where('created_at', '>=', "{$this->input}");
            }, '添加时间', 'created_at')->radio($date_option);

            $status_option = [
                '' => '不限',
                0  => '待审核',
                1  => '审核通过',
                2  => '审核不通过',
            ];
            $filter->where(function ($query) {
                if (isset($this->input)) {
                    $query->where('status', '=', "{$this->input}");
                }
            }, '审核状态', 'status')->radio($status_option);
        });
        return $grid;
    }

    public function audit(Request $request)
    {
        $id     = $request->id;
        $status = $request->status;
        $reason = $request->reason;
        $url    = empty($request->url) ? '/ST3IXxKlOa4eGEv0eTw0CfORI9444Mgj/content/recuperate/apply' : $request->url;
        if (empty($id)) {
            admin_toastr('数据异常', 'error');
            return redirect('/ST3IXxKlOa4eGEv0eTw0CfORI9444Mgj/content/recuperate/apply');
        }
        $result = RecuperateApply::where('id', '=', $id)->update(['status' => $status, 'reason' => $reason]);
        if ($result) {
            admin_toastr('审核成功', 'success');
        } else {
            admin_toastr('该信息不存在或已审核', 'error');
        }

        return redirect($url);
    }

    public function audit_qx(Request $request)
    {
        $id = $request->id;
        //  $status = $request->status;
        //  $reason = $request->reason;
        $url = empty($request->url) ? '/ST3IXxKlOa4eGEv0eTw0CfORI9444Mgj/content/recuperate/apply' : $request->url;
        if (empty($id)) {
            admin_toastr('数据异常1', 'error');
            return redirect('/ST3IXxKlOa4eGEv0eTw0CfORI9444Mgj/content/recuperate/apply');
        }
        $result           = RecuperateApply::where('id', '=', $id)->update(['status' => 3]);
        $recuperate_apply = RecuperateApply::where('id', '=', $id)->select('uid')->first();
        $auditData        = [
            'type'     => 2,
            'admin_id' => \Encore\Admin\Facades\Admin::user()->id,
            'sid'      => $recuperate_apply->uid,
            'content'  => "取消活动",
        ];
        RecuperateLog::create($auditData);
        if ($result) {
            admin_toastr('取消成功', 'success');
        } else {
            admin_toastr('该信息不存在或已审核', 'error');
        }

        return redirect($url);
    }


    /*个人列表*/
    public function appointinfo(Content $content, Request $request)
    {

        $uid             = $request->uid;
        $recuperateApply = RecuperateApply::where('uid', $uid);
        $recuperateTime  = RecuperateTime::where('uid', $uid)->select('id', 'year')->orderBy('id', 'desc')->get();
        if (empty($recuperateApply)) {
            return back();
        }

        $search_data = $request->all();

        $search_data['uid']                = isset($search_data['uid']) ? $search_data['uid'] : $uid;
        $search_data['status']             = isset($search_data['status']) ? $search_data['status'] : 1;
        $search_data['recuperate_time_id'] = isset($search_data['recuperate_time_id']) ? $search_data['recuperate_time_id'] : $recuperateTime[0]->id;
        $where                             = [];
        if (isset($search_data['perpage'])) {
            $perpage = $search_data['perpage'];
        } else {
            $session_data = session('search_data');
            if (isset($session_data['perpage'])) {
                $perpage = $session_data['perpage'];
            } else {
                $perpage = 20;
            }

        }

        if (isset($search_data['uid']) || session('manage_search_data')['uid']) {
            if (isset($search_data['page'])) {
                if (session('search_data')) {
                    $where = session('managewhere');
                    unset($search_data['page']);
                    $search_data = session('manage_search_data');

                }
            }

            foreach ($search_data as $k => $v) {
                if ($k == 'status') {
                    $where[] = ['recuperate_apply.status', 'like', "%$v%"];
                } elseif ($k == 'recuperate_time_id') {
                    $where[] = ['recuperate_apply.recuperate_time_id', '=', $v];
                } elseif ($k == 'uid') {
                    $where[] = ['recuperate_apply.uid', '=', $v];
                } elseif ($k != '_pjax' and $k != 'page' && $k != 'perpage') {
                    $where[] = [$k, '=', $v];
                }
            }
            session(['managewhere' => $where]);
            session(['manage_search_data' => $search_data]);
            session()->save();
        }


        $list = RecuperateApply::where($where)
            ->join('recuperate', 'recuperate_apply.recuperate_id', '=', 'recuperate.id', 'left')
            ->join('recuperate_time', 'recuperate_apply.recuperate_time_id', '=', 'recuperate_time.id', 'left')
            ->select('recuperate_apply.*', 'recuperate.title', 'recuperate_time.year')
            ->orderBy('recuperate_apply.id', 'desc')
            ->paginate($perpage);
        return $content
            ->header('招考管理')
            ->description('招考人员信息列表')
            ->body(view('admin.content.recuperate_apply_personal')->with([
                'list'           => $list,
                'search_data'    => $search_data,
                'recuperateTime' => $recuperateTime,
            ]));

    }
}