QR_code_generator/database/seeders/Pages/PagesTableSeeder.php

174 lines
8.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace Database\Seeders\Pages;
use App\Models\Pages\Page;
use App\Models\Pages\PageSubType;
use App\Models\Pages\PageType;
use App\Models\Registries\RegistryType;
use Illuminate\Database\Seeder;
use Illuminate\Support\Str;
class PagesTableSeeder extends Seeder
{
public array $pages = [
'О центре' => [
'children' => [
'История' => [],
'Руководство' => [],
'Документы' => [
'children' => [
'Документы об учреждении' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE],
'Нормативные правовые акты' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE],
'Наблюдательный совет' => [],
'Государственное задание' => [],
'Закупки' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE],
'Бухгалтерская отчетность' => [],
'Антимонопольное законодательство' => [],
]
],
]
],
'Деятельность' => [
'children' => [
'Оценка пригодности' => [
'children' => [
'Реестр технических свидетельств' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::TECHNICAL_CERTIFICATES],
'Заявка на оформление' => [],
'Консультационные услуги' => [],
]
],
'ТК 465 «Строительство»' => [
'children' => [
'Руководство' => [],
'Структура' => ['type' => PageType::TK_STRUCTURE],
'Состав' => [],
'Документы' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CATEGORIZED],
'АИС ТК 465 «Строительство»' => []
]
],
'Реестр требований ФЗ-63' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CATEGORIZED],
'Нормирование и стандартизация' => [
'children' => [
'Реестр сводов правил' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::RULESET],
'Реестр нормативно-технической документации' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CATEGORIZED],
'Разработка сводов правил' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::DEVELOPMENTS],
'Прикладные исследования' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::RESEARCHES],
'Методические материалы' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE]
]
],
'Международная деятельность' => [
'children' => [
'ISO' => [],
'МТК 465 «Строительство»' => [],
'Межправительственный совет' => [],
'Базовая организация СНГ' => [],
'Разработка ТР ЕАЭС' => [],
]
],
'СТУ' => [
/*
'children' => [
'Запись на консультацию' => [],
'Документы' => [],
'Протоколы заседания НТС' => [],
'Ответы на часто задаваемые вопросы' => [],
]
*/
],
'КСИ' => [],
'Добровольная сертификация' => [
'children' => [
'О системе' => [],
'Основополагающие документы' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CATEGORIZED],
'Решения ЦОС' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE],
'Руководящие документы' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE],
'Реестр органов по сертификации' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CERTIFIERS],
'Реестр испытательных лабораторий' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::LABORATORIES],
'Реестр экспертов' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::EXPERTS],
'Реестр сертификатов соответствия' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CERTIFICATES],
'Бланки документов' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE],
]
],
]
],
'Услуги' => [
'children' => [
'Технические свидетельства' => [
'children' => [
'Консалтинговые услуги ТС' => [],
]
],
'Консалтинг' => [
'children' => [
'Экспертиза тех регулирования' => [],
'Разработка нормативных документов' => [],
'Нормативный консалтинг' => [],
]
],
'Портфолио проектов' => [
'type' => PageType::PUBLICATIONS,
'sub_type' => PageSubType::PUBLICATION_PORTFOLIO
],
]
],
'Пресс-центр' => [
'children' => [
'Новости' => [
'type' => PageType::PUBLICATIONS,
'sub_type' => PageSubType::PUBLICATION_NEWS
],
'Медиа' => [
'children' => [
'Фотогалерея' => [
'type' => PageType::PUBLICATIONS,
'sub_type' => PageSubType::PUBLICATION_PHOTOS
],
'Видеоархив' => [
'type' => PageType::PUBLICATIONS,
'sub_type' => PageSubType::PUBLICATION_VIDEO
],
]
],
// 'СМИ о нас' => [
// 'type' => PageType::PUBLICATIONS,
// 'sub_type' => PageSubType::PUBLICATION_SMI
// ],
'Контакты для СМИ' => [],
]
],
'Контакты' => [
// 'children' => [
// 'Контактные данные' => [],
// 'Как добраться' => [],
// 'Консультации' => [],
// 'Обратная связь' => [],
// ]
]
];
public function run()
{
$ord = 0;
collect($this->pages)->each(function ($data, $name) use (&$ord) {
$data['ord'] = $ord++;
$this->importPage($name, $data);
});
}
public function importPage($name, $data, ?Page $parent = null)
{
$slug = Str::slug(Str::transliterate($name));
$data += ['type' => $data['type'] ?? PageType::CONTENT, 'name' => $name];
$page = Page::firstOrCreate(['parent_id' => $parent->id ?? 0, 'slug' => $slug]);
if ($v = collect($data)->except('children', 'registry_type')->all()) $page->update($v);
if ($page->type === PageType::REGISTRY) $page->registry->update(['type' => $data['registry_type'] ?? RegistryType::SIMPLE]);
$ord = 0;
collect($data['children'] ?? [])->each(function ($data, $name) use ($page, &$ord) {
$data['ord'] = $ord++;
$this->importPage($name, $data, $page);
});
}
}