<?php

namespace App\Console\Commands\Transfer;

use App\Models\Jobfair\JobfairFloorplan;
use App\Transfer\Jobfair;
use App\Transfer\JobfairJob;
use App\Transfer\JobfairJobContact;
use App\Transfer\JobfairBlackList;
use App\Transfer\JobfairYuyue;
use App\Transfer\JobfairExhibitors;
use App\Transfer\JobfairPutJob;
use App\Transfer\Category;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

class TransJobfair extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'aix:transfer-jobfair';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '甘肃旧系统招聘会数据';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $this->info("清除招聘会数据表:jobfairs");
        DB::table('jobfairs')->truncate();
        $this->info("清除招聘会数据表:jobfair_floorplans");
        DB::table('jobfair_floorplans')->truncate();
        $this->info("清除招聘会数据表:jobfair_floorplan_stands");
        DB::table('jobfair_floorplan_stands')->truncate();
        $this->info("清除招聘会数据表:jobfair_floorplan_templates");
        DB::table('jobfair_floorplan_templates')->truncate();
        $this->info("清除招聘会黑名单数据表:jobfair_blacklists");
        DB::table('jobfair_blacklists')->truncate();
        $this->info("清除招聘会企业预订数据表:jobfair_companys");
        DB::table('jobfair_companys')->truncate();
        $this->info("清除招聘会职位库数据表:jobfair_jobs");
        DB::table('jobfair_jobs')->truncate();
        $this->info("清除招聘会职位库联系人数据表:jobfair_jobs_contacts");
        DB::table('jobfair_jobs_contacts')->truncate();
        $this->info("清除招聘会参展职位数据表:jobfair_put_jobs");
        DB::table('jobfair_put_jobs')->truncate();
        $this->info("清除招聘会参展职位数据表:jobfair_personal_jobs_applys");
        DB::table('jobfair_personal_jobs_applys')->truncate();
        $this->info("清除招聘会分类表:jobfair_managements");
        DB::table('jobfair_managements')->truncate();

        $this->info("开始转移数据...");
        $total = Jobfair::count();
        $bar=$this->output->createProgressBar($total);
        Jobfair::orderBy('id', 'asc')->chunk(10, function ($jobfairs) use ($bar) {
            $jobfair_array = [];
            $jobfair_floorplan = [];
            $jobfair_floorplan_stands = [];
            foreach ($jobfairs as $key=>$jobfair) {
                $areaid = $this->handleJobfairFloorplan($jobfair, $jobfair_floorplan);
                $this->handleJobfairFloorplanStand($jobfair, $jobfair_floorplan_stands);
                $this->handleJobfair($jobfair, $jobfair_array,$areaid);
            }
            \App\Models\Jobfair\Jobfair::insert($jobfair_array);
            \App\Models\Jobfair\JobfairFloorplanStand::insert($jobfair_floorplan_stands);
            $bar->advance(10);
        });
        $bar->finish();
        $this->line("  完成!");
        $this->info("转移jobfairs数据数据成功.");

        $this->info("开始转移数据...");
        $total = JobfairExhibitors::count();
        $bar=$this->output->createProgressBar($total);
        JobfairExhibitors::orderBy('id', 'asc')->chunk(100, function ($jobfairCompany) use ($bar) {
            $jobfair_company = [];
            foreach ($jobfairCompany as $val) {
                $this->handleJobfairCompany($val, $jobfair_company);
            }
            \App\Models\Jobfair\JobfairCompany::insert($jobfair_company);
            $bar->advance(100);
        });
        $bar->finish();
        $this->line("  完成!");
        $this->info("转移JobfairCompany数据数据成功.");

        $this->info("开始转移数据...");
        $total = JobfairBlackList::count();
        $bar=$this->output->createProgressBar($total);
        JobfairBlackList::orderBy('id', 'asc')->chunk(1000, function ($jobfairBlack) use ($bar) {
            $jobfair_black = [];
            foreach ($jobfairBlack as $val) {
                $this->handleJobfairBlack($val, $jobfair_black);
            }
            \App\Models\Jobfair\JobfairBlacklist::insert($jobfair_black);
            $bar->advance(1000);
        });
        $bar->finish();
        $this->line("  完成!");
        $this->info("转移JobfairBlacklist数据数据成功.");

        $this->info("开始转移数据...");
        $total = JobfairJob::count();
        $bar=$this->output->createProgressBar($total);
        JobfairJob::orderBy('id', 'asc')->chunk(1000, function ($jobfairJob) use ($bar) {
            $jobfair_job = [];
            foreach ($jobfairJob as $val) {
                $this->handleJobfairJob($val, $jobfair_job);
            }
            \App\Models\Jobfair\JobfairJob::insert($jobfair_job);
            $bar->advance(1000);
        });
        $bar->finish();
        $this->line("  完成!");
        $this->info("转移JobfairJob数据数据成功.");

        $this->info("开始转移数据...");
        $total = JobfairJobContact::count();
        $bar=$this->output->createProgressBar($total);
        JobfairJobContact::orderBy('id', 'asc')->chunk(1000, function ($jobfairJobContact) use ($bar) {
            $jobfair_job_contact = [];
            foreach ($jobfairJobContact as $val) {
                $this->handleJobfairJobContact($val, $jobfair_job_contact);
            }
            \App\Models\Jobfair\JobfairJobsContact::insert($jobfair_job_contact);
            $bar->advance(1000);
        });
        $bar->finish();
        $this->line("  完成!");
        $this->info("转移JobfairJobsContact数据数据成功.");


        $this->info("开始转移数据...");
        $total = JobfairPutJob::count();
        $bar=$this->output->createProgressBar($total);
        JobfairPutJob::with('jobs')->orderBy('id', 'asc')->chunk(1000, function ($jobfairPutJob) use ($bar) {
            $jobfair_put_job = [];
            foreach ($jobfairPutJob as $val) {
                $this->handleJobfairPutJob($val, $jobfair_put_job);
            }
            \App\Models\Jobfair\JobfairPutJob::insert($jobfair_put_job);
            $bar->advance(1000);
        });
        $bar->finish();
        $this->line("  完成!");
        $this->info("转移JobfairPutJob数据数据成功.");

        $this->info("开始转移数据...");
        $total = JobfairYuyue::count();
        $bar=$this->output->createProgressBar($total);
        JobfairYuyue::orderBy('id', 'asc')->chunk(100, function ($jobfairYuyue) use ($bar) {
            $jobfair_yuyue = [];
            foreach ($jobfairYuyue as $val) {
                $this->handleJobfairYuyue($val, $jobfair_yuyue);
            }
            \App\Models\Jobfair\JobfairPersonalJobsApply::insert($jobfair_yuyue);
            $bar->advance(100);
        });
        $bar->finish();
        $this->line("  完成!");
        $this->info("转移JobfairPersonalJobsApply数据数据成功.");

        $this->info("开始转移数据...");
        $total = Category::where('c_alias','aix_jobfair_type')->count();
        $bar=$this->output->createProgressBar($total);
        Category::where('c_alias','aix_jobfair_type')->orderBy('c_id', 'asc')->chunk(100, function ($jobfairCategory) use ($bar) {
            $jobfair_category = [];
            foreach ($jobfairCategory as $val) {
                $this->handleJobfairCategory($val, $jobfair_category);
            }
            \App\Models\Jobfair\JobfairManagement::insert($jobfair_category);
            $bar->advance(100);
        });
        $bar->finish();
        $this->line("  完成!");
        $this->info("转移JobfairManagements数据数据成功.");
    }

    public function handleJobfair($jobfair, &$jobfair_array,$areaid)
    {
        $jobfairArr=[];
        $jobfairArr['id'] = $jobfair->id;
        $jobfairArr['title'] = $jobfair->title;
        $jobfairArr['industry'] = $jobfair->industry;
        $jobfairArr['holddate_start'] = $jobfair->holddate_start;
        $jobfairArr['holddate_end'] = $jobfair->holddate_end;
        $jobfairArr['predetermined_start'] = $jobfair->predetermined_start;
        $jobfairArr['predetermined_end'] = $jobfair->predetermined_end;
        $jobfairArr['predetermined_start'] = $jobfair->predetermined_start;
        $jobfairArr['bus'] = $jobfair->bus;
        $jobfairArr['address'] = $jobfair->address;
        $jobfairArr['contact'] = $jobfair->contact;
        $jobfairArr['phone'] = $jobfair->phone;
        $jobfairArr['areaid'] = $jobfair->areaid;
        $jobfairArr['predetermined_point'] = $jobfair->predetermined_point;
        $jobfairArr['nosign_point'] = $jobfair->nosign_point;
        $jobfairArr['late_point'] = $jobfair->late_point;
        $jobfairArr['display'] = $jobfair->display;
        $jobfairArr['is_commonweal'] = $jobfair->is_commonweal;
        $jobfairArr['jobsfair_num'] = $jobfair->jobsfair_num;
        $jobfairArr['ordid'] = $jobfair->ordid;
        $jobfairArr['jobfair_introduction'] = htmlspecialchars_decode($jobfair->introduction);
        $jobfairArr['map_x'] = $jobfair->map_x;
        $jobfairArr['map_y'] = $jobfair->map_y;
        $jobfairArr['subsite_id'] = $jobfair->subsite_id;
        $jobfairArr['areaid'] = $areaid;
        $jobfairArr['jobfair_type'] = $jobfair->aix_jobfair_type;
        $jobfairArr['created_at'] = date('Y-m-d H:i:s',$jobfair->addtime);
        $jobfairArr['updated_at'] = date('Y-m-d H:i:s',$jobfair->addtime);
        $jobfair_array[] = $jobfairArr;
    }

    public function handleJobfairFloorplan($jobfair, &$jobfair_floorplan)
    {
        $jobfairArr=[];
        $jobfairArr['name'] = '批量导入';
        $jobfairArr['jobfair_id'] = $jobfair->id;
        $jobfairArr['bg_images'] = '无';
        $jobfairArr['created_at'] = date('Y-m-d H:i:s', time());
        $jobfairArr['updated_at'] = date('Y-m-d H:i:s', time());
        $jobfairArr;
        $areaid = JobfairFloorplan::insertGetId($jobfairArr);
        return $areaid;
    }

    public function handleJobfairCompany($val,&$jobfair_company)
    {
        $array = [];
        $array['id'] = $val->id;
        $array['audit'] = $val->audit;
        $array['etype'] = $val->etype;
        $array['company_id'] = $val->uid;
        $array['jobfair_id'] = $val->jobfair_id;
        $array['position'] = $val->position_id;
        $array['position_id'] = \App\Models\Jobfair\JobfairFloorplanStand::where('jobfair_id',$val->jobfair_id)->where('name',$val->position_id)->value('id');
        $array['note'] = $val->note;
        $array['recommend'] = $val->recommend;
        $array['pay_type'] = $val->pay_type;
        $array['read_card_num'] = $val->read_card_num;
        $array['created_at'] = date('Y-m-d H:i:s',$val->eaddtime);
        $array['updated_at'] = date('Y-m-d H:i:s',$val->eaddtime);
        $jobfair_company[] = $array;
    }

    public function handleJobfairFloorplanStand($jobfair, &$jobfair_floorplan_stands)
    {
        $exhibitors = JobfairExhibitors::where('jobfair_id',$jobfair->id)->get();
        if($exhibitors->isNotEmpty()){
            foreach ($exhibitors as $val)
            {
                $jobfairArr=[];
                static $left = 0;
                static $top = 20;
                if($left > 960){
                    $left = 0;
                    $top += 50;
                }
                $jobfairArr['name'] = $val->position_id;
                $jobfairArr['jobfair_id'] = $val->jobfair_id;
                $jobfairArr['floorplan_id'] = \App\Models\jobfair\JobfairFloorplan::where('jobfair_id',$val->jobfair_id)->value('id');
                $jobfairArr['equipment_id'] = 0;
                $jobfairArr['sortindex'] = 0;
                $jobfairArr['left'] = $left+=50;
                $jobfairArr['left'] =  $jobfairArr['left'].'px';
                $jobfairArr['top'] = $top.'px';
                $jobfairArr['created_at'] = date('Y-m-d H:i:s', time());
                $jobfairArr['updated_at'] = date('Y-m-d H:i:s', time());
                $jobfair_floorplan_stands[] = $jobfairArr;
            }
        }
    }

    public function handleJobfairBlack($val, &$jobfair_black)
    {
        $array = [];
        $array['id'] = $val->id;
        $array['company_id'] = $val->uid;
        $array['type'] = $val->type;
        $array['details'] = $val->details;
        $array['add_time'] = $val->add_time;
        $array['remove_time'] = $val->remove_time;
        $array['operator'] = $val->operation;
        $array['created_at'] = date('Y-m-d H:i:s', $val->add_time);
        $array['updated_at'] = date('Y-m-d H:i:s', $val->add_time);
        $jobfair_black[] = $array;
    }

    public function handleJobfairJob($val, &$jobfair_job)
    {
        $array = [];
        $array['id'] = $val->id;
        $array['jobs_name'] = $val->jobs_name;
        $array['company_id'] = $val->uid;
        $array['company_name'] = $val->companyname;
        $array['company_audit'] = $val->companyprofile->audit;
        $array['company_addtime'] = $val->addtime;
        $array['nature'] = $val->nature;
        $array['nature_cn'] = $val->nature_cn;
        $array['sex'] = $val->sex;
        $array['sex_cn'] = $val->sex_cn;
        $array['age'] = $val->age;
        $array['amount'] = $val->amount;
        $array['topclass'] = $val->topclass;
        $array['category'] = $val->category;
        $array['subclass'] = $val->subclass;
        $array['category_cn'] = $val->category_cn;
        $array['trade'] = $val->trade;
        $array['trade_cn'] = $val->trade_cn;
        $array['district'] = $val->district.'.'.$val->sdistrict.'.'.$val->tdistrict;
        $array['district_cn'] = $val->district_cn;
        $array['tag'] = $val->tag;
        $array['tag_cn'] = $val->tag_cn;
        $array['education'] = $val->education;
        $array['education_cn'] = $val->education_cn;
        $array['wage_min'] = $val->minwage;
        $array['wage_max'] = $val->maxwage;
        $array['wage_cn'] = $val->minwage.'~'.$val->maxwage.'/月';
        $array['negotiable'] = $val->negotiable;
        if($val->negotiable == 1){
            $array['wage'] = -1;
        }else{
            $array['wage'] = 0;
        }
        $array['jobs_content'] = $val->contents;
        $array['audit'] = $val->audit;
        $array['department'] = $val->department;
        $array['ygxs'] = $val->zs_ygxs;
        $array['ygxs_cn'] = $val->zs_ygxs_cn;
        $array['syq'] = $val->zs_syq;
        $array['syq_cn'] = $val->zs_syq_cn;
        $array['syqxz_min'] = $val->zs_syqxz_min;
        $array['syqxz_max'] = $val->zs_syqxz_max;
        $array['techlevel'] = $val->techlevel;
        $array['scale'] = $val->companyprofile->scale;
        $array['scale_cn'] = $val->companyprofile->scale_cn;
        $array['experience'] = $val->experience;
        $array['experience_cn'] = $val->experience_cn;
        $array['created_at'] = date('Y-m-d H:i:s',$val->addtime);
        $array['updated_at'] = date('Y-m-d H:i:s',$val->addtime);
        $jobfair_job[] = $array;
    }

    public function handleJobfairJobContact($val, &$jobfair_job_contact)
    {
        $array = [];
        $array['id'] = $val->id;
        $array['pid'] = $val->pid;
        $array['contact'] = $val->contact;
        $array['qq'] = $val->details;
        $array['mobile'] = $val->telephone;
        $array['landline_tel'] = $val->landline_tel;
        $array['email'] = $val->email;
        $array['address'] = $val->address;
        $array['notify'] = $val->notify;
        $array['notify_mobile'] = $val->notify_mobile;
        $array['contact_show'] = $val->contact_show;
        $array['telephone_show'] = $val->telephone_show;
        $array['email_show'] = $val->email_show;
        $array['landline_tel_show'] = $val->landline_tel_show;
        $array['created_at'] = date('Y-m-d H:i:s', time());
        $array['updated_at'] = date('Y-m-d H:i:s', time());
        $jobfair_job_contact[] = $array;
    }

    public function handleJobfairPutJob($val, &$jobfair_put_job)
    {
        $array = [];
        if($val->jobs)
        {
            $array['id'] = $val->id;
            $array['exid'] = $val->exid;
            $array['jobfair_id'] = $val->jobfair_id;
            $array['job_id'] = $val->fairjob_id;
            $array['position_id'] = $val->position_id;
            $array['jobs_name'] = $val->jobs->jobs_name;
            $array['company_id'] = $val->jobs->uid;
            $array['company_name'] = $val->jobs->companyname;
            $array['company_audit'] = $val->jobs->companyprofile->audit;
            $array['nature'] = $val->jobs->nature;
            $array['nature_cn'] = $val->jobs->nature_cn;
            $array['sex'] = $val->jobs->sex;
            $array['sex_cn'] = $val->jobs->sex_cn;
            $array['age'] = $val->jobs->age;
            $array['amount'] = $val->jobs->amount;
            $array['topclass'] = $val->jobs->topclass;
            $array['category'] = $val->jobs->category;
            $array['subclass'] = $val->jobs->subclass;
            $array['category_cn'] = $val->jobs->category_cn;
            $array['trade'] = $val->jobs->trade;
            $array['trade_cn'] = $val->jobs->trade_cn;
            $array['district'] = $val->jobs->district.'.'.$val->jobs->sdistrict.'.'.$val->jobs->tdistrict;
            $array['district_cn'] = $val->jobs->district_cn;
            $array['tag'] = $val->jobs->tag;
            $array['tag_cn'] = $val->jobs->tag_cn;
            $array['education'] = $val->jobs->education;
            $array['education_cn'] = $val->jobs->education_cn;
            $array['wage'] = $val->jobs->wage;
            $array['wage_min'] = $val->jobs->minwage;
            $array['wage_max'] = $val->jobs->maxwage;
            $array['wage_cn'] = $val->jobs->minwage.'~'.$val->jobs->maxwage.'/月';
            $array['negotiable'] = $val->jobs->negotiable;
            if($val->jobs->negotiable == 1){
                $array['wage'] = -1;
            }
            $array['jobs_content'] = $val->jobs->contents;
            $array['audit'] = $val->jobs->audit;
            $array['department'] = $val->jobs->department;
            $array['ygxs'] = $val->jobs->zs_ygxs;
            $array['ygxs_cn'] = $val->jobs->zs_ygxs_cn;
            $array['syq'] = $val->jobs->zs_syq;
            $array['syq_cn'] = $val->jobs->zs_syq_cn;
            $array['syqxz_min'] = $val->jobs->zs_syqxz_min;
            $array['syqxz_max'] = $val->jobs->zs_syqxz_max;
            $array['scale'] = $val->jobs->scale;
            $array['scale_cn'] = $val->jobs->scale_cn;
            $array['experience'] = $val->jobs->experience;
            $array['experience_cn'] = $val->jobs->experience_cn;
            $array['created_at'] = date('Y-m-d H:i:s',$val->jobs->addtime);
            $array['updated_at'] = date('Y-m-d H:i:s',$val->jobs->addtime);
            $jobfair_put_job[] = $array;
        }
    }

    public function handleJobfairYuyue($val, &$jobfair_personal_jobs_apply)
    {
        $array = [];
        $array['id'] = $val->id;
        $array['resume_id'] = 0;
        $array['personal_uid'] = $val->uid;
        $array['notes'] = 'wu';
        $array['jobs_id'] = $val->jobsfair_job_id;
        $array['company_id'] = $val->company_uid;
        $array['jobfair_id'] = $val->jobfairid;
        $array['position_id'] = $val->position_id;
        $array['created_at'] = date('Y-m-d H:i:s',$val->addtime);
        $array['updated_at'] = date('Y-m-d H:i:s',$val->addtime);
        $jobfair_personal_jobs_apply[] = $array;
    }

    public function handleJobfairCategory($val, &$jobfair_category)
    {
        $array = [];
        $array['id'] = $val->c_id;
        $array['name'] = $val->c_name;
        $array['order_list'] = $val->c_order;
        $array['created_at'] = date('Y-m-d H:i:s',time());
        $array['updated_at'] = date('Y-m-d H:i:s',time());
        $jobfair_category[] = $array;
    }
}