<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/3/21
 * Time: 15:01
 */

namespace App\Http\Controllers\Web\Hardware\Pad;

use App\Http\Controllers\Web\WebBaseController;
use App\Repositories\MemberHandselRepository;
use http\Env\Response;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Services\Auth\AuthService;
use App\Services\Common\GeetestService;
use App\Repositories\Jobfair\JobfairFloorplanStandRepository;
use App\Repositories\Jobfair\JobfairCompanyRepository;
use App\Repositories\CompanyRepository;
use App\Services\Common\SmsService;
use App\Models\Jobfair\Jobfair;
use App\Models\MembersPoint;
class PadController extends WebBaseController
{
    /**
     * @var AuthService
     */
    protected $authService;

    /**
     * @var SmsService
     */
    protected $smsService;

    /**
     * @var GeetestService
     */
    protected $geetestService;

    /**
     * @var JobfairFloorplanStandRepository
     */
    protected $jobfairFloorplanStandRepository;

    /**
     * @var JobfairCompanyRepository
     */
    protected $jobfairCompanyRepository;

    protected $companyRepository;
    protected $memberHandselRepository;


    /**
     * LoginController constructor.
     * @param AuthService $authService
     * @param SmsService $smsService
     * @param GeetestService $geetestService
     * @param GeetestService $jobfairFloorplanStandRepository
     * @param GeetestService $jobfairCompanyRepository
     * @param GeetestService $companyRepository
     * @param MemberHandselRepository $memberHandselRepository
     */
    public function __construct(
        AuthService $authService,
        SmsService $smsService,
        GeetestService $geetestService,
        JobfairFloorplanStandRepository $jobfairFloorplanStandRepository,
        JobfairCompanyRepository $jobfairCompanyRepository,
        CompanyRepository $companyRepository,
        MemberHandselRepository $memberHandselRepository
    ) {
        $this->authService = $authService;
        $this->smsService = $smsService;
        $this->geetestService = $geetestService;
        $this->jobfairFloorplanStandRepository = $jobfairFloorplanStandRepository;
        $this->jobfairCompanyRepository = $jobfairCompanyRepository;
        $this->companyRepository = $companyRepository;
        $this->memberHandselRepository = $memberHandselRepository;
    }

    public function login(Request $request)
    {
        if($request->method() == 'GET'){
            $res = $this->jobfairFloorplanStandRepository->getOpenJobfair(['equipment_id'=>$request->exid]);
            if(!$res || !$res->jobfair_company){
                return view('app.hardware.pad.login',['eid'=>$request->exid,'flag'=>false]);
            }
            $comp_info = $this->companyRepository->getCompanyColumn($res->jobfair_company->company_id,['username','companyname']);
            return response()->view('app.hardware.pad.login',['eid'=>$request->exid,'comp_info'=>$comp_info,'flag'=>true])->cookie('exid',$request->exid,1440);
        }else{
            if($request->username == '' || $request->password == ''){
                return $this->sendSuccessResponse(['status'=>0,'msg'=>"请输入账号或密码"]);
            }
            if (!$company=$this->authService->loginByCompany($request->username, $request->password)) {
                return $this->sendSuccessResponse(['status'=>0,'msg'=>"用户名或密码错误"]);
            }
            if ($company->user_status == 0) {
                Auth::guard('web-company')->logout();
                return $this->sendSuccessResponse(['status'=>0,'msg'=>"你的账号处于封禁状态, 请联系管理员"]);
            }
            $user = auth('web-company')->user();
            $eid = $request->eid;
            $res = $this->jobfairFloorplanStandRepository->getOpenJobfair(['equipment_id'=>$eid]);
            $where = [
                    'company_id'=>$user->id,
                    'jobfair_id'=>$res->jobfair_id,
                    'position_id'=>$res->id,
                    'audit'=>1,
                ];
            $res1 = $this->jobfairCompanyRepository->getOne($where);
            if(!$res1){
                return $this->sendSuccessResponse(['status'=>0,'msg'=>"该企业没有预定展位"]);
            }
            if($res1->type == 0){
                if($res1->jobfair->holddate_start >= strtotime("-30 minute")){
                    $this->jobfairCompanyRepository->updateInfo($where,['type'=>4,'signed_time'=>time()]);
                }elseif($res1->jobfair->holddate_start < strtotime("-30 minute")){
                    $this->jobfairCompanyRepository->updateInfo($where,['type'=>1,'signed_time'=>time()]);
                    $is_commonweal = Jobfair::where('id',$res->jobfair_id)->value('is_commonweal');
                    $late_point = Jobfair::where('id',$res->jobfair_id)->value('late_point');
                    if($late_point && $is_commonweal!=3){
                        $points = MembersPoint::where(['utype'=>1,'uid'=>$user->id])->value('points');
                        if($points > $late_point){
                            MembersPoint::where(['utype'=>1,'uid'=>$user->id])->decrement('points',$late_point);
                            $handsel['points'] = $late_point;
                        }else{
                            $handsel['points'] = $points;
                            MembersPoint::where(['utype'=>1,'uid'=>$user->id])->update(['points'=>0]);
                        }
                        $handsel['uid'] = $user->id;
                        $handsel['utype'] = $user->utype;
                        $handsel['htype'] = 'jobfair_late';
                        $handsel['htype_cn'] = '招聘会迟到';
                        $handsel['operate'] = 2;
                        $this->memberHandselRepository->addNew($handsel);
                    }
                }
            }
            session(['floorplan_stands'=>[
                'id'=> $res->id,
                'equipment_id' => $res->equipment_id,
                'jobfair_id' => $res->jobfair_id,
                'floorplan_id' => $res->floorplan_id,
                'exid' => $res1->id,
                'company_id'=>$user->id
            ]]);
            return $this->sendSuccessResponse(['status'=>1,'msg'=>"登陆成功"]);
        }
    }

    public function logout(){
        $this->authService->logout();
        return $this->sendSuccessResponse(['status'=>1,'msg'=>"退出成功"]);
    }

    public function index(){
        return view('app.hardware.pad.index');
    }
}