<?php

namespace App\Admin\Controllers\Person;

use App\Admin\Exports\Person\ResumeExport;
use App\Admin\Extensions\Form\ValueForm;
use App\Http\Controllers\Controller;
use App\Models\AuditReason;
use App\Models\Company;
use App\Models\Member;
use App\Models\Pms;
use App\Models\Resume;
use App\Models\SmsRule;
use App\Models\SmsTemplate;
use App\Models\Subsite;
use App\Services\Common\EmailService;
use App\Services\Common\SmsService;
use App\Validators\Rules\MobileRule;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Show;
use Encore\Admin\Widgets\Tab;
use Encore\Admin\Widgets\Table;
use Illuminate\Http\Request;
use phpDocumentor\Reflection\Types\Context;

class ResumeController extends Controller
{
    use HasResourceActions;

    protected $smsService;
    protected $emailService;
    protected $resume;

    /**
     * AjaxController constructor.
     * @param $smsService
     */
    public function __construct(SmsService $smsService, EmailService $emailService, Resume $resume)
    {
        $this->smsService = $smsService;
        $this->emailService = $emailService;
        $this->resume = $resume;
    }
    /**
     * Index interface.
     *
     * @param Content $content
     * @return Content
     */
    public function index(Content $content)
    {
       $grid = $this->grid()->render();
        return $content
            ->header('简历列表')
            ->description('')
            ->body(view('admin.resume.resume')->with(['grid'=>$grid]));
    }

    /**
     * Show interface.
     *
     * @param mixed $id
     * @param Content $content
     * @return Content
     */
    public function show($id, Content $content)
    {
        return $content
            ->header('简历详情')
            ->description()
            ->body($this->detail($id));
    }

    /**
     * Edit interface.
     *
     * @param mixed $id
     * @param Content $content
     * @return Content
     */
    public function edit($id, Content $content)
    {
        return $content
            ->header('简历列表')
            ->description('编辑')
            ->body($this->form()->edit($id));
    }

    /**
     * Create interface.
     *
     * @param Content $content
     * @return Content
     */
    public function create(Content $content)
    {
        return $content
            ->header('简历列表')
            ->description('创建')
            ->body($this->form());
    }

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

        $grid->model()
            /*->when(get_subsite_id()>0, function ($query) {
            $query->where('subsite_id', get_subsite_id());
            $query->whereHas('subsite',function ($query){
                $query->where('effective', 1);
            });
        })*/
            ->orderByRaw("FIELD(audit, 1,2,0)")->orderBy('updated_at', 'desc');
        $grid->id('ID');
        $grid->column('memberInfos.images', '姓名')->display(function ($images) {
            $expires = '';
            $style = 'color:#3c8dbc';
            if($this->expires && $this->expires<time()){
                $expires = '[已过期]';
                $style = 'color:#CCCCCC';
            }
            if ($images) {
                return '<span class="vtip" title="<img src='.upload_asset($images).' width=120 height=120>">
                            <img class="avatar small" src="'.upload_asset($images).'" align="absmiddle" style="width: 36px;height: 36px;">
                        </span>&nbsp;&nbsp;&nbsp;'.'<span style="'.$style.'">'.htmlspecialchars($this->fullname).'&nbsp;&nbsp;'.$expires.'</span>';
            } else {
                return '<span class="vtip" ></span>&nbsp;&nbsp;&nbsp;'. '<span style="'.$style.'">'.$this->fullname.'&nbsp;&nbsp;'.$expires.'</span>';
            }
        })->width(200);
        $grid->title('简历名称')->display(function ($title) {
            return '<a href="/content/resumes/show?id='.$this->id.'&token=1" target="_blank">'.$title.'</a>';
        })->width(150);

        $grid->complete_percent('简历完整度')->display(function ($complete_percent) {
             return $complete_percent.'%';
        })->label();
        $grid->audit('审核状态')->display(function ($audit) {
            if ($audit==0) {
                return'<span style="color:#666666">审核未通过</span><a style="margin-left: 5px;" ls="'.$this->id.'" class="audit_log"><i class="fa fa-eye"></i></a>';
            } elseif ($audit==2) {
                return'<span style="color: #009900">审核通过</span><a style="margin-left: 5px;" ls="'.$this->id.'" class="audit_log"><i class="fa fa-eye"></i></a>';
            } else {
                return'<span style="color:#FF6600">等待审核</span><a style="margin-left: 5px;" ls="'.$this->id.'" class="audit_log"><i class="fa fa-eye"></i></a>';
            }
        });
        $grid->display('公开')->display(function ($display) {
            return $display ? '公开' : '保密';
        });
        $grid->entrust('委托状态')->display(function ($entrust) {
            $value = $entrust - time();
            if ($value < 0) {
                return'<span style="color:#666666">无</span>';
            } elseif ($value >= 0 && $value < 59) {
                return'<span style="color:#009900">'.$value.'秒</span>';
            } elseif ($value >= 60 && $value < 3600) {
                $min = intval($value / 60);
                return'<span style="color:#009900">'.$min.'分钟</span>';
            } elseif ($value >=3600 && $value < 86400) {
                $h = intval($value / 3600);
                return'<span style="color:#009900">'.$h.'小时</span>';
            } elseif ($value >= 86400 && $value < 86400*30) {
                $d = intval($value / 86400);
                return'<span style="color:#009900">'.intval($d).'天</span>';

            } elseif ($value >= 86400*30 && $value < 86400*30*12) {
                $mon  = intval($value / (86400*30));
                return'<span style="color:#009900">'.$mon.'月</span>';
                return $mon."月";
            } else {
                $y = intval($value / (86400*30*12));
                return'<span style="color:#009900">'.$y.'年</span>';
            }
        });
        if(get_subsite_open()){
            $grid->column('members.subsite_id', '所属分站')->display(function ($subsite_id) {
                if ($subsite_id) {
                    $Subsite = Subsite::find($subsite_id);
                    return isset($Subsite->sitename) ? $Subsite->sitename : '未知';
                }
                return '总站';
            })->width(150);
        }
        $grid->created_at('添加时间')->sortable();
        $grid->updated_at('更新时间')->sortable();
        $grid->actions(function ($actions) use ($grid) {
            $actions->disableView(false);
            if (Admin::user()->can('person_resume_audit')) {
                $actions->append("<button class='btn btn-primary btn-xs jobaudit' data-code=".$actions->row['id'].">审核</button>");
            }
            if (Admin::user()->can('perosn_business')) {
                $actions->append('<button class="btn btn-primary btn-xs business" ls="'.$actions->row['uid'].'" ld="'. htmlspecialchars($actions->row['fullname']) .'" title="业务" >业务</button>');
            }
            if (Admin::user()->can('person_resume_matching')) {
                if (!empty($actions->row['entrust']) && $actions->row['entrust']>time()) {
                    $actions->append('<button class="btn btn-primary btn-xs piPei" ls="'.$actions->row['id'].'" ld="'.$actions->row['uid'].'" title="匹配" >匹配</button>');
                }
            }
            if (Admin::user()->can('person_resume_delete')) {
                $actions->disableDelete(false);
            }
        });

        if (Admin::user()->can('person_resume_delete')) {
            $grid->tools(function ($tools) {
                $tools->batch(function ($batch) {
                    $batch->disableDelete(false);
                });
            });
            $grid->disableRowSelector(false);
        }

        $grid->tools(function ($tools) {
            if (Admin::user()->can('person_resume_audit')) {
                $but = <<<EOT
<div class="btn-group" data-toggle="buttons">
    <label class="btn btn-google btn-sm" id="audit_resume" title="审核简历">
        <i class="fa fa-audio-description"></i>
        <input type="radio" class="user-gender">审核简历
    </label>
</div>
EOT;
                $tools->append($but);
            }
        });

        if (Admin::user()->can('person_resume_export')) {
            $grid->disableExport(false); //显示导出按钮
            $grid->exporter(new ResumeExport()); //传入自己在第1步创建的导出类
        }

        $grid->filter(function ($filter) {
            // 去掉默认的id过滤器
//            $filter->disableIdFilter();
            $filter->column(1/2, function ($filter) {
                $filter->equal('display', '可见状态')->select([
                    0=>'不可见',
                    1=>'可见'
                ]);
                $filter->equal('audit', '审核状态')->select([
                    0=>'审核未通过',
                    1=>'等待审核',
                    2=>'审核通过',
                ]);
                $filter->equal('photo', '简历照片')->select([
                    0=>'无',
                    1=>'有',
                ]);
                $filter->where(function ($query) {
                    switch ($this->input) {
                        case 3:
                            $query->whereRaw("entrust > ".time()." and entrust<=".strtotime('3 day'));
                            break;
                        case 7:
                            $query->whereRaw("entrust > ".time()." and entrust<=".strtotime('7 day'));
                            break;
                        case 14:
                            $query->whereRaw("entrust > ".time()." and entrust<=".strtotime('14 day'));
                            break;
                        case 30:
                            $query->whereRaw("entrust > ".time()." and entrust<=".strtotime('30 day'));
                            break;
                    }
                }, '是否委托', 'entrust')->select([
                    3=>'三天内',
                    7=>'一周内',
                    14=>'二周内',
                    30=>'一月内',
                ]);

                if(get_subsite_id()==0 && get_subsite_open()){
                    $filter->equal('subsite_id', '所属分站')->select(array_column(get_all_subsite(), 'sitename', 'id'));
                }

            });
            $filter->column(1/2, function ($filter) {
                $filter->equal('uid', '会员ID');
                $filter->like('fullname', '姓名');
                $filter->like('memberInfos.id_card', '身份证');
                $filter->like('memberInfos.phone', '手机号');
                $filter->between('created_at', '创建时间')->datetime();
                $filter->between('updated_at', '刷新时间')->datetime();
                /*$filter->where(function ($query) {
                    switch ($this->input) {
                        case 3:
                            $query->whereRaw("created_at>='".date('Y-m-d H:i:s', strtotime('-3 day'))."'");
                            break;
                        case 7:
                            $query->whereRaw("created_at>='".date('Y-m-d H:i:s', strtotime('-7 day'))."'");
                            break;
                        case 30:
                            $query->whereRaw("created_at>='".date('Y-m-d H:i:s', strtotime('-30 day'))."'");
                            break;
                    }
                }, '创建时间', 'created_at')->select([
                    3=>'三天内',
                    7=>'一周内',
                    30=>'一月内',
                ]);
                $filter->where(function ($query) {
                    switch ($this->input) {
                        case 3:
                            $query->whereRaw("updated_at>='".date('Y-m-d H:i:s', strtotime('-3 day'))."'");
                            break;
                        case 7:
                            $query->whereRaw("updated_at>='".date('Y-m-d H:i:s', strtotime('-7 day'))."'");
                            break;
                        case 30:
                            $query->whereRaw("updated_at>='".date('Y-m-d H:i:s', strtotime('-30 day'))."'");
                            break;
                    }
                }, '刷新时间', 'updated_at')->select([
                    3=>'三天内',
                    7=>'一周内',
                    30=>'一月内',
                ]);*/
            });
        });

        return $grid;
    }

    /**
     * Make a show builder.
     *
     * @param mixed $id
     * @return Show
     */
    protected function detail($id)
    {
        $result = Resume::find($id)->getResumeAllInfo();

        if(isset($result->memberInfos->display_images)){
            if($result->memberInfos->display_images==1){
                $display_images = '公开';
            } elseif ($result->memberInfos->display_images==2){
                $display_images = '不公开';
            }else{
                $display_images = '未上传照片';
            }
        }else{
            $display_images = '未上传照片';
        }

        if(isset($result->memberInfos->images)){
            if($result->memberInfos->images){
                $imk = upload_asset($result->memberInfos->images);
                $images =  '<img border="0" src="'.$imk.'">';
            } else{
                $images = '';
            }
        }else{
            $images = '';
        }

        if($result->audit==2){
            $audit = '已通过审核';
        }elseif ($result->audit==0){
            $audit = '审核未通过请修改';
        }else{
            $audit = '正在审核中';
        }
        $resume = [$result->title,$result->display?'公开':'不公开',$display_images,
            $result->complete_percent.'%',$audit,$result->talent?'高级':'普通',$result->created_at,$result->updated_at];
        $member_info = [];
        if($result->memberInfos){
            $data = $result->memberInfos;
            $member_info = [$data->realname,$data->sex_cn,date('Y')-($data->birthday),
                $data->height,$data->education_cn,$data->marriage_cn,$data->experience_cn,$data->householdaddress_cn,$data->phone,$data->email,$images];
        }
        $job_intention = [$result->nature_cn,$result->district_cn,
            $result->wage_cn,$result->intention_jobs,$result->trade_cn];
        $profile =[$result->specialty];
        $education = [];
        if(!$result->resumeEducation->isEmpty()){
            foreach ($result->resumeEducation as $resumeEducation){
                if($resumeEducation->todate){
                    $time =$resumeEducation->startyear.'年'.$resumeEducation->startmonth.'月-'.'至今';
                }else{
                    $time =$resumeEducation->startyear.'年'.$resumeEducation->startmonth.'月-'.$resumeEducation->endyear.'年'.$resumeEducation->endmonth.'月';
                }
                $education[]= [$time,$resumeEducation->school,$resumeEducation->speciality,$resumeEducation->education_cn];
            }
        }
        $work = [];
        if(!$result->resumeWork->isEmpty()){
            foreach ($result->resumeWork as $resumeWork){
                if($resumeWork->todate){
                    $time =$resumeWork->startyear.'年'.$resumeWork->startmonth.'月-'.'至今';
                }else{
                    $time =$resumeWork->startyear.'年'.$resumeWork->startmonth.'月-'.$resumeWork->endyear.'年'.$resumeWork->endmonth.'月';
                }
                $work[]= [$time,$resumeWork->companyname,$resumeWork->jobs];
            }
        }
        $train=[];
        if(!$result->resumeTrain->isEmpty()){
            foreach ($result->resumeTrain as $resumeTrain){
                if($resumeTrain->todate){
                    $time =$resumeTrain->startyear.'年'.$resumeTrain->startmonth.'月-'.'至今';
                }else{
                    $time =$resumeTrain->startyear.'年'.$resumeTrain->startmonth.'月-'.$resumeTrain->endyear.'年'.$resumeTrain->endmonth.'月';
                }
                $train[]= [$time,$resumeTrain->agency,$resumeTrain->course];
            }
        }
        $credent = [];
        if(!$result->resumeCredent->isEmpty()){
            foreach ($result->resumeCredent as $resumeCredent){
                $time =$resumeCredent->year.'年'.$resumeCredent->month.'月';
                $credent[]= [$time,$resumeCredent->name];
            }
        }
        $language = [];
        if(!$result->resumeLanguage->isEmpty()){
            foreach ($result->resumeLanguage as $resumeLanguage){
                $language[]= [$resumeLanguage->language_cn,$resumeLanguage->level_cn];
            }
        }
        $tag_cn = [$result->tag_cn];
        $title = [
            '基本设置',
            '基本信息',
            '求职意向',
            '个人简介',
            '教育经历',
            '工作经历',
            '培训经历',
            '获得证书',
            '语言能力',
            '特长标签',
        ];
        $tab_content=[];
        foreach ($title as $key => $val) {
            if ($key==0) {
                $headers = ['简历名称', '公开设置', '照片公开设置', '简历完整度','简历审核','简历等级','创建时间','刷新时间'];
                $rows = [
                    $resume
                ];
                $table = new Table($headers, $rows);
            } elseif($key==1) {
                $headers = ['姓名', '性别', '年龄', '身高','学历','婚姻状况','工作经验','户籍','联系电话','联系邮箱','头像'];
                $rows = [
                    $member_info
                ];
                $table = new Table($headers, $rows,['base_info']);
            } elseif($key==2) {
                $headers = ['期望岗位性质', '期望工作地', '期望月薪', '期望从事的岗位','期望从事的行业'];
                $rows = [
                    $job_intention
                ];
                $table = new Table($headers, $rows);
            } elseif($key==3) {
                $headers = [];
                $rows = [
                    $profile
                ];
                $table = new Table($headers, $rows);
            } elseif($key==4) {
                $headers = ['起止年月', '学校名称', '专业名称', '学历'];
                $rows = $education;
                $table = new Table($headers, $rows);
            } elseif($key==5) {
                $headers = ['起止年月', '公司名称', '职位名称'];
                $rows =  $work;
                $table = new Table($headers, $rows);
            } elseif($key==6) {
                $headers = ['起止年月', '机构名称', '培训课程'];
                $rows = $train;
                $table = new Table($headers, $rows);
            }elseif($key==7) {
                $headers = ['起止年月', '证书名称'];
                $rows = $credent;
                $table = new Table($headers, $rows);
            }elseif($key==8) {
                $headers = ['语言类型', '语言等级'];
                $rows = $language;
                $table = new Table($headers, $rows);
            }elseif($key==9) {
                $headers = [];
                $rows = [$tag_cn];
                $table = new Table($headers, $rows);
            }
            $tab_content[$key]['type'] = $val;
            $tab_content[$key]['form'] = $table;
        }
        return view('admin.resume.detail')->with(['contents'=>$tab_content,'result'=>$result])->render();

    }

    /**
     * Make a form builder.
     *
     * @return Form
     */
    protected function form()
    {
        $form = new Form(new Resume);

        $form->display('ID');
        $form->display('Created at');
        $form->display('Updated at');

        return $form;
    }

    /**
     * @审核日志
     * @param Request $request
     * @return array
     */
    public function audit(Request $request)
    {
        $id = $request->id;
        $type = $request->type;
        $headers = ['status'=>'审核状态', 'tim'=>'审核时间', 'sec'=>'描述'];

        $res = AuditReason::where(['type_id'=>$id,'type'=>$type])->get();
        $data = [];
        foreach ($res as $k => $v) {
            if ($v['status']==0) {
                $data[$k]['status'] = '审核未通过';
            } elseif ($v['status']==2) {
                $data[$k]['status'] = '审核通过';
            } else {
                $data[$k]['status'] = '等待审核';
            }
            $data[$k]['tim'] = $v['created_at'];
            $data[$k]['sec'] = $v['audit_man'].'--'.$v['reason'];
        }
        $rows = $data;
        $table = new Table($headers, $rows);
        return ['html'=>$table->render(),'detail'=>'审核日志'];
    }

    public function manager(Request $request)
    {
        $uid = $request->uid;
        $fullname = $request->fullname;
        $members = Member::where(['id'=>$uid])->select(['id','username','email','mobile','utype'])->first();
        $header2 = ['会员管理'];
        $rows2 = '';
        /*$rows2 = [
            [
                '<div class="manitem"><a target="_blank" href="/admin/personal/managerRes/'.$members['id'].'">简历管理</a></div>',
                '<div class="manitem"><a target="_blank" href="/admin/personal/points?uid='.$members['id'].'&utype='.$members['utype'].'">积分管理</a></div>',
                '<div class="manitem"><a target="_blank" href="'.admin_base_path("/firm/order/personal")."?uid=".$members['id'].'">充值/订单</a></div>',
                '<div class="manitem"><a target="_blank" href="">简历推广</a></div>',
                '<div class="manitem"><a target="_blank" href="/admin/personal/applyJobs?personal_uid='.$members['id'].'">申请的职位</a></div>',
                '<div class="manitem"><a target="_blank" href="/admin/personal/members?id='.$members['id'].'">个人资料</a></div>',
            ]
         ];*/
        $header3 = ['分析统计'];
        $rows3= [
            [
                '<div class="manitem"><a target="_blank" href="">行为分析</a></div>',
                '<div class="manitem" ><a target="_blank" href="">会员日志</a></div>',
            ]
        ];
        $header4 = ['联系会员  (手机:'.$members['mobile'].',邮箱:'.$members['email'].')'];
        $sendSms = '';
        $sendEmail = '';
        $sendSys = '';
        if (Admin::user()->can('person_business_sms')) {
            $sendSms = '<div class="manitem"><a style="cursor:pointer"  id="fa_sms" ls="'.$members['mobile'].'">发送短信</a></div>';
        }

        if (Admin::user()->can('person_business_email')) {
            $sendEmail = '<div class="manitem" ><a style="cursor:pointer" id="fa_email" ls="'.$members['email'].'">发送邮件</a></div>';
        }

        if (Admin::user()->can('person_business_sys')) {
            $sendSys =  '<div class="manitem" ><a style="cursor:pointer" id="fa_sys" ls="'.$members['id'].'">发送站内信</a></div>';
        }

        $rows4= [
            [
                $sendSms,
                $sendEmail,
                $sendSys,
            ]
        ];
        $table2 = new Table($header2, $rows2);
        $table3 = new Table($header3, $rows3);
        $table3->style('width:180px');
        $table4 = new Table($header4, $rows4);
        $had = '';
        if (Admin::user()->can('person_business_login')) {
            $had = '<div style="height:30px;">对 <strong style="color:#FF6600">'. htmlspecialchars($fullname) .'</strong> 进行以下操作<span style="color: #999999;padding-left: 8px;">用户名:'.htmlspecialchars($members['username']).',uid:'.$uid.'</span>&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="'.admin_base_path().'/personal/manager/into/'.$members['id'].'">进入会员中心&gt;&gt;</a></div>';
        }
        return json_encode(['html'=>[$table2->render(),$table3->render(),$table4->render()],'detail'=>'管理','had'=>$had]);
    }

    /**
     * 发送短信
     * return json
     */
    public function sms(Request $request)
    {
        $mobile = $request->mobile;
        $form = new \Encore\Admin\Widgets\Form();
        $form->action(route('admin.personal.uidSms'));
        $form->disableReset();
        $form->html('
            <strong style="color:#FF6600">
                <span>您当前配置的短信接口是【阿里大鱼】。</span>
            </strong>
        ');
        $form->mobile('mobile', '接受手机')->default($mobile);
        $form->textarea('message','消息');
        $form->hidden('sms_id')->default('sms_custom');
        return json_encode(['html'=>$form->render(),'detail'=>'发送短信']);
    }

    public function uidSms(Request $request)
    {
        $moile = $request->mobile;
        $sms_id = $request->sms_id;
        $message = $request->message;
        if (!$moile || !$sms_id || !$message) {
            admin_toastr('请把资料信息填写完整!', 'error');
            return back();
        }
        $SmsRule = SmsRule::where('alias', $sms_id)->first();
        if (isset($SmsRule->status) && !empty($SmsRule->status)) {
            $this->smsService->sendSms($moile, $sms_id, ['content'=>$message]);
            admin_toastr('短信发送成功', 'success');
        } else {
            admin_toastr('请先开启短信-短信规则配置!', 'error');
        }
        return back();
    }

    /**
     * 发送邮件.
     * return json
     */
    public function email(Request $request)
    {
        $email = $request->email;
        $form = new \Encore\Admin\Widgets\Form();
        $form->action(route('admin.personal.uidEmail'));
        $form->disableReset();
        $form->email('email', '收件地址')->default($email);
        $form->text('title', '邮件标题');
        $form->textarea('body', '邮件内容');
        return json_encode(['html'=>$form->render(),'detail'=>'发送邮件']);
    }

    public function uidEmail(Request $request)
    {
        $email = $request->email;
        $title = $request->title;
        $body = $request->body;
        if (!$email || !$title || !$body) {
            admin_toastr('请把资料信息填写完整!', 'error');
            return back();
        }
        $this->emailService->sendMail($email, EmailService::TEMPLATE_SEND_CONTENT, ['title'=>$title], ['content'=>$body]);
        admin_toastr('邮件发送成功', 'success');
        return back();
    }

    /**
     * 发送站内信
     * return json
     */
    public function sys(Request $request)
    {
        $uid = $request->uid;
        $form = new \Encore\Admin\Widgets\Form();
        $form->action(route('admin.personal.uidSend'));
        $form->disableReset();
        $form->hidden('uid')->default($uid);
        $form->textarea('body', '发送内容');
        return json_encode(['html'=>$form->render(),'detail'=>'发送站内信']);
    }

    public function uidSend(Request $request)
    {
        if (!$request->uid) {
            admin_toastr('数据异常', 'error');
            return back();
        }
        if (!$request->body) {
            admin_toastr('发送内容不能为空!', 'error');
            return back();
        }
        $data = [];
        $url = $request->route()->uri;
        $use_type = explode('/', $url)[1];
        if ($use_type=='personal') {
            $userManager = Member::findOrfail($request->uid);
        } else {
            $userManager = Company::findOrfail($request->uid);
        }
        if (!$userManager) {
            admin_toastr('该用户不存在!', 'error');
            return back();
        }
        $data['utype'] = $userManager->utype;
        $data['msgtype'] = 1;
        $data['msgfromuid'] = Admin::user()->id;
        $data['msgfrom'] = Admin::user()->username;
        $data['msgtoname'] = $userManager->username;
        $data['msgtouid'] = $userManager->id;
        $data['message'] =  $request->body;
        if (Pms::create($data)) {
            admin_toastr('发送成功!', 'success');
        } else {
            admin_toastr('发送失败!', 'error');
        }
        return back();
    }

    /**
     *  return json
     */
    public function auditResume(Request $request)
    {
        $id = $request->id;
        $form = new \Encore\Admin\Widgets\Form();
        $form->action(route('admin.personal.auditR'));
        $form->disableReset();
        $form->hidden('id', 'ID')->default($id);
        $form->radio('audit', '审核')->options([2=>'审核通过',0=>'审核未通过'])->default(2);
        $form->textarea('remark', '备注');
        $form->html('<label style="color: rgb(0, 153, 0)"><input type="checkbox" name="pms_notice" value="1" checked="checked">站内信通知</label>');
        return json_encode(['html'=>$form->render(),'detail'=>'审核简历']);
    }

    public function auditR(Request $request)
    {
        $id = $request->id;
        $audit = $request->audit;
        $remark = $request->remark;
        $pms_notice = $request->pms_notice;
        $arr = array_filter(explode(',', $id));
        if (empty($arr)) {
            admin_toastr('数据异常', 'error');
            return back();
        }
        $reus=Resume::with(['members:id,username,mobile'])->whereIn('id', $arr)->get();
        $mobile = [];
        foreach ($reus as $res) {
            if (isset($res->members->mobile)) {
                if (validator_check($res->members->mobile, new MobileRule())) {
                    $mobile[] = $res->members->mobile;
                }
            }
        }
        $mobile = array_unique($mobile);
        $sms_id = $audit ? 'sms_resumeallow' : 'sms_resumenotallow';
        $result = Resume::whereIn('id', $arr)->update(['audit'=>$audit]);
        $data=[];
        foreach ($arr as $k => $v) {
            $data[$k]['type'] = 1;
            $data[$k]['type_id'] = $v;
            $data[$k]['status'] = $audit;
            $data[$k]['reason'] = $remark;
            $data[$k]['audit_man'] = Admin::user()->username;
            $data[$k]['created_at'] = date('Y-m-d H:i:s', time());
            $data[$k]['updated_at'] = date('Y-m-d H:i:s', time());
        }
        $this->auditReason($data);
        if ($pms_notice) {
            if ($audit==0) {
                $stat='审核未通过';
            } elseif ($audit==2) {
                $stat = '审核通过';
            } else {
                $stat='等待审核';
            }
            $da = [];
            foreach ($reus as $k => $v) {
                $da[$k]['uid'] = $v['members']['id'];
                $da[$k]['username'] = $v['members']['username'];
                $da[$k]['resume_title'] = $v->title;
            }
            foreach ($da as $k => $v) {
                $ds[$k]['msgtype'] = 1;
                $ds[$k]['msgfromuid'] = Admin::user()->id;
                $ds[$k]['msgfrom'] = Admin::user()->username;
                $ds[$k]['msgtoname'] = $v['username'] ? $v['username'] : 'admin';
                $ds[$k]['msgtouid'] = $v['uid'] ? $v['uid'] : 0;
                if ($v['resume_title']) {
                    $resume_title = '('.$v['resume_title'].')';
                } else {
                    $resume_title = '';
                }
                $ds[$k]['message'] =  $remark ? '简历'.$resume_title.$stat.'<备注:'.$remark.'>' : '简历'.$resume_title.$stat;
                $ds[$k]['created_at'] = date('Y-m-d H:i:s', time());
                $ds[$k]['updated_at'] = date('Y-m-d H:i:s', time());
            }
            Pms::insert($ds);
        }
        if ($result) {
            event_search_update(Resume::class, (string)implode(',', $arr), 'update');
            $this->resumeSms($sms_id, $mobile);
            admin_toastr('审核成功', 'success');
        } else {
            admin_toastr('审核失败', 'error');
        }
        return back();
    }

    /**
     * CREAT 审核日志.
     * @param $type
     * @param $status
     * @param $reason
     * @param $audit_man
     * return arr
     */
    public function auditReason($data)
    {
        AuditReason::insert($data);
    }

    public function resumeSms($sms_id, $mobile)
    {
        $SmsRule = SmsRule::where('alias', $sms_id)->first();
        if (isset($SmsRule->status) && !empty($SmsRule->status)) {
            if ($mobile) {
                foreach ($mobile as $mobiles) {
                    $this->smsService->sendSms($mobiles, $sms_id, ['sitename'=>config('aix.system.site.site.site_name'),'sitedomain'=>config('aix.system.site.site.site_domain')]);
                }
            }
        }
    }

}