<?php
namespace App\Http\Controllers\Mobile\Active;

use App\Http\Controllers\Mobile\MobileBaseController;
use App\Services\Company\SpringCompanyService;
use App\Services\Company\SpringJobService;
use Illuminate\Http\Request;
use App\Models\Category;
use Illuminate\Support\Facades\DB;
use App\Services\Common\CategoryService;
use Illuminate\Support\Facades\Storage;
use App\Validators\PersonValidatorRequest;
use App\Services\Person\ResumeService;
use App\Services\Company\JobsService;
use App\Services\Common\SmsService;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Hash;
use App\Services\Common\MembersSetmealService;

class SpringController extends MobileBaseController
{
    protected $springJobService;
    protected $springCompanyService;
    protected $categoryService;
    protected $resumeService;
    protected $jobsService;
    protected $smsService;
    private $membersSetmealService;

    public function __construct(SpringJobService $springJobService,SpringCompanyService $springCompanyService,CategoryService $categoryService,ResumeService $resumeService,JobsService $jobsService, SmsService $smsService, MembersSetmealService $membersSetmealService)
    {
        $this->springJobService = $springJobService;
        $this->springCompanyService = $springCompanyService;
        $this->categoryService = $categoryService;
        $this->resumeService = $resumeService;
        $this->jobsService = $jobsService;
        $this->smsService = $smsService;
        $this->membersSetmealService = $membersSetmealService;
    }

    public function enterprise(Request $request)
    {
        if($request->isMethod('post'))
        {
            $data['company_name'] = $request->input('company_name');
            $data['company_type'] = $request->input('company_type');
            $data['company_trade'] = $request->input('company_trade');
            $data['company_desc'] = $request->input('company_desc');
            $data['company_address'] = $request->input('company_address');
            $data['date'] = "2020-".$request->input('time');
            $data['real_name'] = $request->input('real_name');
            $data['phone'] = $request->input('phone');
            $data['attachment'] = $request->input('attachment');
            $data['license'] = empty($request->input('license')) ? '' : $request->input('license');
            $data['scene'] = implode(",",$request->input('scene'));
            $id = $this->springCompanyService->saveCompany($data);
            $jobs_name = $request->input('job_name');
            $jobs_type = $request->input('job_type');
            $jobs_num = $request->input('job_num');
            $jobs_salary = $request->input('job_salary');
            $jobs_desc = $request->input('job_desc');
            $jobs = [];
            foreach ($jobs_name as $k => $v){
                $item = [];
                $item['company_id'] = $id->id;
                $item['job_name'] = $jobs_name[$k];
                $item['job_type'] = $jobs_type[$k];
                $item['job_num'] = $jobs_num[$k];
                $item['job_salary'] = $jobs_salary[$k];
                $item['job_desc'] = $jobs_desc[$k];
                array_push($jobs,$item);
            }
            DB::table('spring_jobs')->insert($jobs);
            return $this->sendSuccessResponse(['msg'=>'登记成功']);
        }else{
            $result = $this->categoryService->getAllJobsCategory();
            $companyType = [];
            foreach (Category::categoryType('AIX_company_type') as $k => $v){
                $item = [
                    'name'  =>  $v,
                    'value' =>  $k
                ];
                array_push($companyType,$item);
            }
            $companyTrade = [];
            foreach (Category::categoryType('AIX_trade') as $k => $v){
                $item = [
                    'name'  =>  $v,
                    'value' =>  $k
                ];
                array_push($companyTrade,$item);
            }
            return view('mobile.app.active.enterprise')->with([
                'jobs'  =>  json_encode($result),
                'companyType'   =>  $companyType,
                'companyTrade'  =>  $companyTrade
            ]);
        }

    }

    public function uploadfile(Request $request)
    {
        $file = $request->file('files');
        if($file ->isValid()) { //判断文件是否存在
            //获取文件的扩展名
            $ext = $file->getClientOriginalExtension();

            //获取文件的绝对路径
            $path = $file->getRealPath();

            $oldname= $file->getClientOriginalName();

            //定义文件名
            $filename = date('Y-m-d-h-i-s').'.'.$ext;

            //存储文件。disk里面的public。总的来说,就是调用disk模块里的public配置
            Storage::disk('public')->put($filename, file_get_contents($path));

        }

        $res['status'] = 1;
        $res['filename'] = $oldname;
        $res['path'] = "/storage/".$filename;

        return response()->json($res);
    }

    public function job(){
        $user = auth('web-member')->user();
        if(!$user){
            $is_login = 0;
        }else{
            $is_login = 1;
        }
        $district = $this->categoryService->getDefaultDistrict();
        return view('mobile.app.active.job',[
            'is_login'=>$is_login,
            'user'=>$user,
            'defaultCity'=>$district->defaultCity,
            'disCity'=>$district->disCity,
            'disHan'=>$district->disHan,
            'wap_title'=>'新春招聘会报名登记表'
        ]);
    }

    public function jobHunterRegister(PersonValidatorRequest $request){
        //添加基础信息
        $resume_res = $this->resumeService->activeResumeCreate($request->except(['add_tag','_token']), auth('web-member')->user());

        if ($resume_res['code']==1) {
            return $this->sendSuccessResponse(['id'=>'登记成功','tag'=>$request->add_tag]);
        } else {
            return $this->sendErrorResponse('更新简历失败', '', 400);
        }
    }

    public function getCompanyList(Request $request){

        $trade = Category::categoryType('AIX_trade');
        $type = Category::categoryType('AIX_company_type');
        $title = $request->input('title');
        $status = $request->input('status');
        $list = $this->springCompanyService->list($title, $status,10);
        $result = [];
        foreach ($list as $k => $v) {
            $item = [];
            $item['id'] = $v['id'];
            $item['name'] = $v['company_name'];
            $item['type'] = $type[$v['company_type']];
            $item['trade'] = $trade[$v['company_trade']];
            $item['realname'] = $v['real_name'];
            $item['phone'] = $v['phone'];
            $item['address'] = $v['company_address'];
            $item['desc'] = $v['company_desc'];
            $item['url'] = 'http://www.jucai.gov.cn'.$v['license'];
            $item['attachment'] = 'http://www.jucai.gov.cn'.$v['attachment'];
            $item['scene'] = $v['scene'];
            $item['status'] = $v['status'];
            array_push($result,$item);
        }
        $msg['status'] = 'ok';
        $msg['msg'] = '数据获取成功';
        $msg['total'] = $list->total();
        $msg['data'] = $result;
        echo json_encode($msg);
    }

    public function verifyCompany(Request $request){
        $id = $request->input('id');
        $res = $this->springCompanyService->registerCompany($id);
        $list = DB::table('spring_jobs')->where(array('company_id'=>$res['id']))->get();
        $this->membersSetmealService->addMemberSetmeal($res['company'], config('aix.companyset.setmeal_com.setmeal_com_set.reg_service'));
        foreach ($list as $k => $v){
            $this->jobsService->jobSaveBySpring($v,$res['company']->id);
        }
        $msg['status'] = 'ok';
        echo json_encode($msg);
    }

    public function verify(){
        return view('mobile.app.active.verify');
    }

    public function test(){

        $this->smsService->sendSms('18060002035','sms_custom',array('username'=>'测试','phone'=>'18060002035','content'=>'聚才网'));
    }
}