170 lines
9.4 KiB
PHP
170 lines
9.4 KiB
PHP
<?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::CATEGORIZED],
|
||
'Государственное задание' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CATEGORIZED],
|
||
'Закупки' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CATEGORIZED],
|
||
'Бухгалтерская отчетность' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CATEGORIZED],
|
||
'Антимонопольное законодательство' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CATEGORIZED],
|
||
'Приказы Минстроя России' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CATEGORIZED],
|
||
'Результаты специальной оценки труда' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE]
|
||
]
|
||
],
|
||
'Противодействие коррупции' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CATEGORIZED],
|
||
'Защита персональных данных' => [],
|
||
'Охрана труда' => []
|
||
]
|
||
],
|
||
'Деятельность' => [
|
||
'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::NTD],
|
||
'Разработка сводов правил' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::DEVELOPMENTS],
|
||
'Прикладные исследования' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::RESEARCHES],
|
||
'Методические материалы' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE]
|
||
]
|
||
],
|
||
'Международная деятельность' => [
|
||
'children' => [
|
||
'ISO' => [],
|
||
'МТК 465 «Строительство»' => [],
|
||
'Межправительственный совет' => [],
|
||
'Базовая организация СНГ' => [],
|
||
'Разработка ТР ЕАЭС' => [],
|
||
]
|
||
],
|
||
'СТУ' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::CATEGORIZED],
|
||
'КСИ' => [],
|
||
'Добровольная сертификация' => [
|
||
'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);
|
||
});
|
||
}
|
||
|
||
}
|