<?php

namespace Database\Seeders\Dictionaries;

use App\Models\Dictionaries\Dictionary;
use Illuminate\Database\Seeder;

class DictionariesTableSeeder extends Seeder {
    public array $dictionaries = [
        'list-types' => [
            'title' => 'Виды списка',
            'items' => ['marked' => 'Маркированный', 'numeric' => 'Нумерованный']
        ],
        'title-types' => [
            'title' => 'Виды заголовков',
            'items' => ['h2' => 'Заголовок 1', 'h3' => 'Заголовок 2', 'h4' => 'Заголовок 3']
        ],
        'feedback-types' => [
            'title' => 'Тема обращения',
            'items' => [
                'regulation' => 'Техническое нормирование',
                'assessment' => 'Оценка пригодности',
                'certification' => 'Добровольная сертификация',
                'questions' => 'Вопросы нормирования и стандартизации',
                'other' => 'Другие'
            ],
        ],
        'operation-types' => [
            'title' => 'Виды операций',
            'items' => ['development' => 'Разработка', 'rework' => 'Пересмотр', 'modification' => 'Изменение']
        ],
        'listings' => [
            'title' => 'Перечни ПП',
            'items' => ['pp1521' => 'ПП №1521 от 26.12.2014 г.', 'pp985' => 'ПП № 985 от 04.07.2020 г.', 'pp815' => 'ПП № 815 от 28.05.2021 г.']
        ],
        'image-type' => [
            'title' => 'Тип изображения',
            'items' => ['full-width' => 'во всю ширину', 'tiles' => 'плиткой', 'carousel' => 'карусель']
        ],
        'activities' => [
            'title' => 'Направления деятельности',
            'items' => ['products' => 'Продукция в строительстве', 'services' => 'Работы и услуги', 'management' => 'СМК']
        ],
        'research-types' => [
            'title' => 'Виды исследовательских работ',
            'items' => ['nir' => 'НИР', 'niokr' => 'НИОКР']
        ],
        'funding-sources' => [
            'title' => 'Источники финансирования',
            'items' => ['budget' => 'Федеральный бюджет', 'non-budget' => 'Внебюджетные средства']
        ],
        'normative-document-types' => [
            'title' => 'Виды нормативно-техничесих документов',
            'items' => ['sp' => 'СП', 'gost' => 'ГОСТ', 'sn' => 'СН', 'rk-eek' => 'Решение коллегии ЕЭК', 'gost-r' => 'ГОСТ Р',
                'sanpin' => 'СанПиН', 'fnip' => 'ФНиП', 'foiv' => 'Приказ ФОИВа', 'pp-rf' => 'Постановление Правительства РФ',
                'rp-rf' => 'Распоряжение Правительства РФ', 'tr-eaes' => 'Технический регламент ЕАЭС', 'fz' => 'Федеральный закон',
                'sto' => 'СТО (ПБЯ)', 'rs-eek' => 'Решение Совета ЕЭК', 'st-sev' => 'СТ СЭВ']
        ],
        'host-agencies' => [
            'title' => 'Исполнительные органы',
            'items' => ['minstroy' => 'Минстрой России', 'gov-rf' => 'Правительство РФ', 'kol-eek' => 'Коллегия ЕЭК', 'mintrans' => 'Минтранс России',
                'mchs' => 'МЧС России', 'mincult' => 'Минкультуры России', 'minprirody' => 'Минприроды России', 'rospotreb' => 'Роспотребнадзор',
                'rosstandart' => 'Росстандарт', 'rostechnadzor' => 'Ростехнадзор', 'rosatom' => 'ГК «Росатом»', 'president' => 'Президент Российской Федерации',
                'minenergo' => 'Минэнерго России', 'sovet-eek' => 'Совет ЕЭК', 'minselhoz' => 'Минсельхоз России', 'mintrud' => 'Минтруд России',
                'rosavia' => 'Росавиация']
        ],
        'moderate-permissions' => [
            'title' => 'Права',
            'items' => ['applications' => 'Рассмотрение предварительных заявок', 'manage-applications' => 'Распределение предварительных заявок']
        ]
    ];

    public function run() {
        collect($this->dictionaries)->each(function($data, $name) {
            $dictionary = Dictionary::firstOrCreate(['name' => $name]);
            $dictionary->update(collect($data)->except('items')->all());
            collect($data['items'] ?? [])->each(function($title, $name) use($dictionary) {
                $item = $dictionary->items()->firstOrCreate(['name' => $name]);
                $item->update(['title' => $title]);
            });
        });
    }
}
