QR_code_generator/database/seeders/Pages/PagesTableSeeder.php

163 lines
7.1 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 Illuminate\Database\Seeder;
use Illuminate\Support\Str;
class PagesTableSeeder extends Seeder
{
public array $pages = [
'О центре' => [
'children' => [
'Руководство' => [
],
'Документы' => [
'children' => [
'Документы об учреждении' => [],
'Закупки' => [],
'Бухгалтерская отчетность' => [],
'Государственное задание' => [],
'Нормативные правовые акты' => [],
'Антимонопольное законодательство' => [],
'Специальная оценка условий труда' => []
]
],
'Структура' => [
],
'Наблюдательный совет' => [
'children' => [
'Структура' => [],
'Документы' => [],
'Решения' => []
]
],
'Закупки' => [
],
'Противодействие коррупции' => [
'children' => [
'ФЗ, указы, постановления' => [],
'Ведомственные нормативные правовые акты' => [],
'Внутренние нормативные документы' => [],
'Антикоррупционная экспертиза' => [],
'Методические материалы' => [],
'Формы документов для заполнения' => [],
'Финансовые сведения' => [],
'Aттестационная комиссия' => [],
'Обратная связь' => [],
'Остальные документы' => []
]
]
]
],
'Деятельность' => [
'children' => [
'Нормирование и стандартизация' => [
'children' => [
'Реестр сводов правил' => [],
'Разработка сводов правил' => [],
'Прикладные исследования' => [],
'Реестр нормативно-технической документации' => [],
'Методические материалы' => [],
]
],
'Оценка пригодности' => [
'children' => [
'Реестр технических свидетельств' => [],
'Заявка на оформление' => [],
'Предварительная заявка' => [],
]
],
'Технический комитет 465 «Строительство»' => [
'children' => [
'Руководство' => [],
'Секретариат' => [],
'Структура' => [],
'Состав' => [],
'Документы' => [],
'АИС ТК 465 «Строительство»' => [],
]
],
'СТУ' => [
'children' => [
'Запись на консультацию' => [],
'Документы' => [],
'Протоколы заседания НТС' => [],
'Ответы на часто задаваемые вопросы' => [],
]
],
'КСИ' => [
'children' => [
'' => [],
]
],
'Добровольная сертификация' => [
'children' => [
'О системе' => [],
'Основополагающие документы' => [],
'Решения ЦОС' => [],
'Руководящие документы' => [],
'Реестры' => [],
'Бланки документов' => [],
]
],
'Международная деятельность' => [
'children' => [
'ISO' => [],
'МТК 465 «Строительство»' => [],
'Межправительственный совет' => [],
'Базовая организация СНГ' => [],
]
],
]
],
'Коммерческие услуги' => [
'children' => [
'Сопровождение экспертизы и утверждения СП и ГОСТ' => [],
'Сопровождение разработки и утверждения СП и ГОСТ' => [],
'Консалтинговые услуги по разработке СП и ГОСТ' => [],
'Экспертиза СТО и ТУ' => [],
'Редактирование и нормоконтроль' => [],
]
],
'Пресс-центр' => [
'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));
$page = Page::firstOrCreate(['parent_id' => $parent->id ?? 0, 'slug' => $slug]);
$page->update(['name' => $name]);
if ($v = collect($data)->except('children')->all()) $page->update($v);
$ord = 0;
collect($data['children'] ?? [])->each(function ($data, $name) use ($page, &$ord) {
$data['ord'] = $ord++;
$this->importPage($name, $data, $page);
});
}
}