<?php
/**
 * Created by PhpStorm.
 * User: TangKe
 * Date: 2019/6/9
 * Time: 10:17
 */

namespace App\Console\Commands\Transfer;

use App\Transfer\Category;
use App\Transfer\CategoryGroup;
use App\Transfer\CategoryDistrict;
use App\Transfer\CategoryJobs as categoryJob;
use App\Transfer\CategoryMajor;
use Illuminate\Console\Command;
use App\Models\Category as categorys;
use App\Models\CategoryGroups;
use App\Models\CategoryDistrict as categoryDistricts;
use App\Models\CategoryJobs;
Use App\Models\CategoryMajor as categoryMajors;

class CategoryTransfer extends Command
{
    protected $signature = 'aix:transfer-category';

    protected $description = 'add the transfer-category data';

    /**
     * ArticleCommand constructor.
     */
    public function __construct()
    {
        parent::__construct();
    }


    public function handle()
    {
        //强制数据
        categorys::truncate();
        CategoryGroups::truncate();
        categoryDistricts::truncate();
        CategoryJobs::truncate();
        categoryMajors::truncate();

        // 导入分类
        $this->info("开始转移 categoryGroup 数据...");
        $total = CategoryGroup::count();
        $bar = $this->output->createProgressBar($total);
        CategoryGroup::orderBy('g_id', 'asc')->chunk(10, function ($categoryGroups) use ($bar) {
            $insertData = [];
            foreach ($categoryGroups as $key => $val) {
                $insertData[$key]['id'] = $val->g_id;
                $insertData[$key]['name'] = $val->g_name;
                $insertData[$key]['alias'] = str_replace("QS_", "AIX_", $val->g_alias);
                $insertData[$key]['sys'] = $val->g_sys;
                $insertData[$key]['created_at'] = date('Y-m-d H:i:s', time());
                $insertData[$key]['updated_at'] = date('Y-m-d H:i:s', time());
            }

            if ($insertData) {
                CategoryGroups::insert($insertData);
            }

            $bar->advance(10);
        });

        $bar->finish();
        $this->line("  完成!");
        $this->info("转移 categoryGroup 数据成功.");


        $this->info("开始转移 categorys 数据...");
        $total = Category::count();
        $bar = $this->output->createProgressBar($total);
        Category::orderBy('c_id', 'asc')->chunk(10, function ($categorys) use ($bar) {
            $insertData = [];
            foreach ($categorys as $key => $val) {
                $insertData[$key]['id'] = $val->c_id;
                $insertData[$key]['alias'] = str_replace("QS_", "AIX_", $val->c_alias);
                $insertData[$key]['demand'] = $val->c_name;
                $insertData[$key]['category_name'] = CategoryGroup::where('g_alias', $val->c_alias)->value('g_name');
                $insertData[$key]['order'] = $val->c_order;
                $insertData[$key]['created_at'] = date('Y-m-d H:i:s', time());
                $insertData[$key]['updated_at'] = date('Y-m-d H:i:s', time());
            }

            if ($insertData) {
                categorys::insert($insertData);
            }

            $bar->advance(10);
        });

        $bar->finish();
        $this->line("  完成!");
        $this->info("转移 categorys 数据成功.");

        $this->info("开始转移 categoryDistrict 数据...");
        $total = CategoryDistrict::count();
        $bar = $this->output->createProgressBar($total);
        CategoryDistrict::orderBy('id', 'asc')->chunk(10, function ($categoryDistricts) use ($bar) {
            $insertData = [];
            foreach ($categoryDistricts as $key => $val) {
                $insertData[$key]['id'] = $val->id;
                $insertData[$key]['parent_id'] = $val->parentid;
                $insertData[$key]['name'] = $val->categoryname;
                $insertData[$key]['order'] = $val->category_order;
                $insertData[$key]['spell'] = $val->spell;
                $insertData[$key]['created_at'] = date('Y-m-d H:i:s', time());
                $insertData[$key]['updated_at'] = date('Y-m-d H:i:s', time());
            }

            if ($insertData) {
                categoryDistricts::insert($insertData);
            }

            $bar->advance(10);
        });

        $bar->finish();
        $this->line("  完成!");
        $this->info("转移 categoryDistrict 数据成功.");

        $this->info("开始转移 categoryJob 数据...");
        $total = categoryJob::count();
        $bar = $this->output->createProgressBar($total);
        categoryJob::orderBy('id', 'asc')->chunk(10, function ($categoryJobs) use ($bar) {
            $insertData = [];
            foreach ($categoryJobs as $key => $val) {
                $insertData[$key]['id'] = $val->id;
                $insertData[$key]['parent_id'] = $val->parentid;
                $insertData[$key]['name'] = $val->categoryname;
                $insertData[$key]['order'] = $val->category_order;
                $insertData[$key]['spell'] = $val->spell;
                $insertData[$key]['created_at'] = date('Y-m-d H:i:s', time());
                $insertData[$key]['updated_at'] = date('Y-m-d H:i:s', time());
            }

            if ($insertData) {
                CategoryJobs::insert($insertData);
            }

            $bar->advance(10);
        });

        $bar->finish();
        $this->line("  完成!");
        $this->info("转移 categoryJob 数据成功.");

        $this->info("开始转移 categoryMajor 数据...");
        $total = CategoryMajor::count();
        $bar = $this->output->createProgressBar($total);
        CategoryMajor::orderBy('id', 'asc')->chunk(10, function ($categoryMajors) use ($bar) {
            $insertData = [];
            foreach ($categoryMajors as $key => $val) {
                $insertData[$key]['id'] = $val->id;
                $insertData[$key]['parent_id'] = $val->parentid;
                $insertData[$key]['name'] = $val->categoryname;
                $insertData[$key]['order'] = $val->category_order;
                $insertData[$key]['created_at'] = date('Y-m-d H:i:s', time());
                $insertData[$key]['updated_at'] = date('Y-m-d H:i:s', time());
            }

            if ($insertData) {
                categoryMajors::insert($insertData);
            }

            $bar->advance(10);
        });

        $bar->finish();
        $this->line("  完成!");
        $this->info("转移 categoryMajor 数据成功.");
    }
}