<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/10/17
 * Time: 15:07
 */

namespace App\Admin\Controllers\Company;

use App\Http\Controllers\Controller;
use App\Models\Company;
use App\Models\Jobs;
use App\Models\Member;
use App\Models\Pms;
use App\Models\Resume;
use App\Models\SmsRule;
use App\Repositories\SmsTemplateRepository;
use App\Services\Common\EmailService;
use App\Services\Common\SmsService;
use Encore\Admin\Facades\Admin;
use Illuminate\Http\Request;

class AjaxController extends Controller
{
    protected $smsService;
    protected $smsTemplateRepository;
    protected $emailService;

    /**
     * AjaxController constructor.
     * @param $smsService
     * @param $smsTemplateRepository
     */
    public function __construct(SmsService $smsService, SmsTemplateRepository $smsTemplateRepository, EmailService $emailService)
    {
        $this->smsService = $smsService;
        $this->smsTemplateRepository = $smsTemplateRepository;
        $this->emailService = $emailService;
    }

    public function getInfo(Request $request)
    {
        if ($request->utype == 1) {
            $data['info'] = Company::findOrFail($request->id);
            $data['utype'] =1;
        } else {
            $data['info'] = Member::findOrFail($request->id);
            $data['utype'] = 2;
        }
        return view('admin.ajax.getInfo')->with('info', $data);
    }

    public function getPromotion(Request $request)
    {
        $where = [];
        if ($request->id) {
            $where[] =['id', '=', $request->id];
        }
        if ($request->jobs_name) {
            $where[] =['jobs_name', 'like', "%$request->jobs_name%"];
        }
        if ($request->company_id) {
            $where[] =['company_id', '=', $request->company_id];
        }
        if ($request->company_name) {
            $where[] =['company_name', 'like', "%$request->company_name%"];
        }
        if ($where) {
            $where['valid'] = 1;
            $where['audit'] = 1;
            $where['display'] = 1;
            $where['subsite_id'] = get_subsite_id();
            $data = Jobs::select('id', 'company_id', 'jobs_name', 'company_name', 'deadline', 'created_at', 'refresh_time')->where($where)->get();
            if (!$data->isEmpty()) {
                return  json_encode(['data'=>$data, 'code'=>1]);
            }
        }

        return  json_encode(['msg'=>'<tr><td colspan="5">暂无数据</td></tr>', 'code'=>0]);
    }
    public function getResume(Request $request)
    {
        $where = [];
        if ($request->id) {
            $where[] =['id', '=', $request->id];
        }
        if ($request->fullname) {
            $where[] =['fullname', 'like', "%$request->fullname%"];
        }
        if ($request->uid) {
            $where[] =['uid', '=', $request->uid];
        }
        if ($where) {
            $where[] = ['audit','=',2];
            $where[] = ['subsite_id', '=',get_subsite_id()];
            $data = Resume::select('id', 'uid', 'fullname', 'created_at', 'updated_at')->where($where)->get()->toArray();
        }
        if (!empty($data)) {
            return json_encode(['data'=>$data, 'code'=>1]);
        }
        return json_encode(['msg'=>'<tr><td colspan="5">暂无数据</td></tr>', 'code'=>0]);
    }

    /**发送站内信
     * @param Request $request
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function sendSys(Request $request)
    {
        $psm = new Pms();
        $data = $request->except(['_token']);

        $company = Company::where('id', $data['uid'])->first();
        $psm->utype = 1;
        $psm->msgtype = 1;
        $psm->msgfromuid = Admin::user()->id;
        $psm->msgfrom = Admin::user()->username;
        $psm->msgtoname = $company->username;
        $psm->msgtouid = $company->id;
        $psm->message = $data['body'];
        if ($psm->save()) {
             admin_toastr('站内信发送成功', 'success');
             return redirect(route("company.index"));
        }
        admin_toastr('站内信发送失败', 'error');
        return back();
    }

    public function sendEmail(Request $request)
    {
        $email = $request->email;
        $title = $request->title;
        $body = $request->body;
        $this->emailService->sendMail($email, EmailService::TEMPLATE_SEND_CONTENT, ['title'=>$title], ['content'=>$body]);
            admin_toastr('邮件发送成功', 'success');
            return back();
    }

    public function sendSms(Request $request)
    {
        $mobile = $request->mobile;
        $body = $request->body;
        $sms_id = $request->sms_id;
//        $sms_alias = $this->smsTemplateRepository->findWhere(['id'=>$sms_id], ['alias']);

        $SmsRule = SmsRule::where('alias', $sms_id)->first();
        if (isset($SmsRule->status) && !empty($SmsRule->status)) {
            $this->smsService->sendSms($mobile, $sms_id, ['content'=>$body]);
            admin_toastr('短信发送成功', 'success');
        } else {
            admin_toastr('请先开启短信-短信规则配置!', 'error');
        }
        return back();
    }

}