<?php

namespace App\Console\Commands;

use App\Models\DictInfo;
use App\Tools\Tools;
use Illuminate\Console\Command;

class InitSystemDict extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     *             php artisan init:system.dict
     */
    protected $signature = 'init:system.dict';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'create system dict. like sys_regular  ect.';

    /**
     * name 不要修改。因为在程序其他地方，用name 查询词典id
     */
    protected $dictionary = [
        [
            'name' => 'robot_compound',
            'shortname' => 'compound',
            'description' => 'split compound by AI',
            'src_lang' => 'pa',
            'dest_lang' => 'cm',
        ],
        [
            'name' => 'system_regular',
            'shortname' => 'regular',
            'description' => 'system regular',
            'src_lang' => 'pa',
            'dest_lang' => 'cm',
        ],
        [
            'name' => 'community',
            'shortname' => '社区',
            'description' => '由用户贡献词条的社区字典',
            'src_lang' => 'pa',
            'dest_lang' => 'cm',
        ],
        [
            'name' => 'community_extract',
            'shortname' => '社区汇总',
            'description' => '由用户贡献词条的社区字典汇总统计',
            'src_lang' => 'pa',
            'dest_lang' => 'cm',
        ],
        [
            'name' => 'system_preference',
            'shortname' => '系统单词首选项',
            'description' => '通过系统筛选出的首选项，只包含语法信息',
            'src_lang' => 'pa',
            'dest_lang' => 'cm',
        ],
    ];

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

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        if (Tools::isStop()) {
            return 0;
        }
        $this->info('init:system.dict start');
        foreach ($this->dictionary as $key => $value) {
            // code...
            $channel = DictInfo::firstOrNew([
                'name' => $value['name'],
                'owner_id' => config('mint.admin.root_uuid'),
            ]);
            $channel->shortname = $value['shortname'];
            $channel->description = $value['description'];
            $channel->src_lang = $value['src_lang'];
            $channel->dest_lang = $value['dest_lang'];
            $channel->meta = json_encode($value, JSON_UNESCAPED_UNICODE);
            $channel->save();
            $this->line("updated {$value['name']}");
        }
        $this->info('init:system.dict successful');

        return 0;
    }
}
