<?php

namespace App\Console\Commands\Transfer;

use App\Models\Jobfair\JobfairFloorplan;
use App\Transfer\Fuwai;
use App\Transfer\FuwaiExhibitors;
use App\Transfer\FuwaiInfo;
use App\Transfer\FuwaiFeedback;
use App\Transfer\FuwaiReserve;
use App\Transfer\FuwaiReserveList;
use App\Transfer\FuwaiJobs;
use App\Transfer\FuwaiJobsContact;
use App\Transfer\FuwaiPutJobs;
use App\Transfer\FuwaiPersonalJobsApply;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class TransJobfairout extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'aix:transfer-jobfairout';

    /**
     * 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("清除招聘会数据表:jobfairout");
        DB::table('jobfairout')->truncate();
        $this->info("清除招聘会反馈表:jobfairout_feedback");
        DB::table('jobfairout_feedback')->truncate();
        $this->info("清除招聘会企业数据表:jobfairout_info");
        DB::table('jobfairout_info')->truncate();
        $this->info("清除招聘会参加人员数据表:jobfairout_reserve");
        DB::table('jobfairout_reserve')->truncate();
        $this->info("清除招聘会参加人员库数据表:jobfairout_reserve_list");
        DB::table('jobfairout_reserve_list')->truncate();
        $this->info("清除招聘会企业预订数据表:jobfairout_companys");
        DB::table('jobfairout_companys')->truncate();
        $this->info("清除招聘会职位库表:jobfair_jobs");
        DB::table('jobfair_jobs')->where('type',2)->delete();
        $this->info("清除招聘会职位库联系人表:jobfair_jobs_contacts");
        DB::table('jobfair_jobs_contacts')->where('pid','>=','200000')->delete();
        $this->info("清除招聘会参展职位数据表:jobfairout_put_jobs");
        DB::table('jobfairout_put_jobs')->truncate();
        $this->info("清除招聘会参展职位数据表:jobfairout_personal_jobs_applys");
        DB::table('jobfairout_personal_jobs_applys')->truncate();

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

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

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

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

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

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

        $this->info("开始转移数据...");
        $total = FuwaiJobsContact::count();
        $bar=$this->output->createProgressBar($total);
        FuwaiJobsContact::orderBy('id', 'asc')->chunk(100, 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(100);
        });
        $bar->finish();
        $this->line("  完成!");
        $this->info("转移JobfairJobsContact数据数据成功.");


        $this->info("开始转移数据...");
        $total = FuwaiPutJobs::count();
        $bar=$this->output->createProgressBar($total);
        FuwaiPutJobs::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\Jobfairout\JobfairoutPutJob::insert($jobfair_put_job);
            $bar->advance(1000);
        });
        $bar->finish();
        $this->line("  完成!");
        $this->info("转移JobfairPutJob数据数据成功.");

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

    public function handleJobfair($jobfair, &$jobfair_array)
    {
        $jobfairArr=[];
        $jobfairArr['id'] = $jobfair->id;
        $jobfairArr['title'] = $jobfair->title;
        $jobfairArr['url'] = $jobfair->url;
        $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['address'] = $jobfair->address;
        $jobfairArr['contact'] = $jobfair->contact;
        $jobfairArr['phone'] = $jobfair->phone;
        $jobfairArr['predetermined_point'] = $jobfair->predetermined_point;
        $jobfairArr['display'] = $jobfair->display;
        $jobfairArr['is_commonweal'] = $jobfair->is_commonweal;
        $jobfairArr['ordid'] = $jobfair->ordid;
        $jobfairArr['jobfair_introduction'] = htmlspecialchars_decode($jobfair->introduction);
        $jobfairArr['map_x'] = $jobfair->map_x;
        $jobfairArr['map_y'] = $jobfair->map_y;
        $jobfairArr['map_zoom'] = $jobfair->map_zoom;
        $jobfairArr['subsite_id'] = $jobfair->subsite_id;
        $jobfairArr['number'] = $jobfair->number;
        $jobfairArr['type'] = $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 handleJobfairInfo($val,&$jobfair_info)
    {
        $array = [];
        $array['id'] = $val->id;
        $array['company_id'] = $val->uid;
        $array['jobfair_id'] = $val->fuwai_id;
        $array['intro'] = $val->intro;
        $array['exid'] = $val->exid;
        $array['contact'] = $val->contacts;
        $array['landline_tel'] = $val->office_phone;
        $array['phone'] = $val->phone;
        $array['fax'] = $val->fax;
        $array['email'] = $val->email;
        $array['qq'] = $val->qq;
        $array['address'] = $val->address;
        $array['url'] = $val->url;
        $array['is_speech'] = $val->is_xj;
        $array['status'] = $val->status;
        $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_info[] = $array;
    }

    public function handleJobfaiReserve($val,&$jobfair_reserve)
    {
        $array = [];
        $array['id'] = $val->id;
        $array['jobfair_id'] = $val->fuwai_id;
        $array['company_id'] = $val->uid;
        $array['exid'] = $val->exid;
        $array['name1'] = $val->name1;
        $array['name2'] = $val->name2;
        $array['id1'] = $val->id1;
        $array['id2'] = $val->id2;
        $array['sex1'] = $val->sex1;
        $array['sex2'] = $val->sex2;
        $array['phone1'] = $val->phone1;
        $array['phone2'] = $val->phone2;
        $array['departmental_position1'] = $val->departmental_position1;
        $array['departmental_position2'] = $val->departmental_position2;
        $array['gentuan'] = $val->gentuan;
        $array['intro'] = $val->intro;
        $array['status'] = $val->status;
        $array['created_at'] = date('Y-m-d H:i:s',$val->time);
        $array['updated_at'] = date('Y-m-d H:i:s',$val->time);
        $jobfair_reserve[] = $array;
    }

    public function handleJobfaiReserveList($val,&$jobfair_reserve_list)
    {
        $array = [];
        $array['id'] = $val->id;
        $array['name'] = $val->name;
        $array['sex'] = $val->sex;
        $array['telephone'] = $val->mobilephone;
        $array['post'] = $val->zhiwu;
        $array['idcard'] = $val->idcard;
        $array['company_id'] = $val->uid;
        $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_reserve_list[] = $array;
    }

    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['note'] = $val->note;
        $array['pay_type'] = $val->pay_type;
        $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 handleJobfairJob($val, &$jobfair_job)
    {
        $array = [];
        if($val->companyprofile){
            $array['id'] = $val->id+200000;
            $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['type'] = 2;
            $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+200000;
        $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 = [];
        $array['id'] = $val->id;
        $array['exid'] = $val->exid;
        $array['jobfair_id'] = $val->jobfair_id;
        $array['job_id'] = $val->fairjob_id+200000;
        $array['jobs_name'] = $val->jobs_name;
        $array['company_id'] = $val->uid;
        $array['company_name'] = $val->companyname;
        $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.'/月';
        if($val->negotiable == 1){
            $array['wage'] = -1;
        }else{
            $array['wage'] = 0;
        }
        $array['jobs_content'] = $val->contents;
        $array['audit'] = $val->audit == 1 ? 1 : 2;
        $array['department'] = $val->department;
        $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_put_job[] = $array;

    }

    public function handleJobfairYuyue($val, &$jobfair_personal_jobs_apply)
    {
        $array = [];
        $array['id'] = $val->id;
        $array['resume_id'] = $val->resume_id;
        $array['personal_uid'] = $val->uid;
        $array['jobs_id'] = $val->jobs_id;
        $array['company_id'] = $val->company_uid;
        $array['personal_look'] = $val->personal_look;
        $array['notes'] = $val->notes;
        $array['jobfair_id'] = $val->jobfair_id;
        $array['is_reply'] = $val->is_reply;
        $array['is_apply'] = $val->is_apply;
        $array['created_at'] = date('Y-m-d H:i:s',$val->apply_addtime);
        $array['updated_at'] = date('Y-m-d H:i:s',$val->apply_addtime);
        $jobfair_personal_jobs_apply[] = $array;
    }
}