[ 'children' => [ 'Руководство' => [], 'Документы' => [ 'children' => [ 'Документы об учреждении' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE], 'Закупки' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE], 'Бухгалтерская отчетность' => [], 'Государственное задание' => [], 'Нормативные правовые акты' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE], 'Антимонопольное законодательство' => [], 'Специальная оценка условий труда' => [] ] ], 'Структура' => [], 'Наблюдательный совет' => [ 'children' => [ 'Структура' => [], 'Документы' => [], 'Решения' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE] ] ], 'Закупки' => [], 'Противодействие коррупции' => [ 'children' => [ 'ФЗ, указы, постановления' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE], 'Ведомственные нормативные правовые акты' => [], 'Внутренние нормативные документы' => [], 'Антикоррупционная экспертиза' => [], 'Методические материалы' => [], 'Формы документов для заполнения' => [], 'Финансовые сведения' => [], 'Aттестационная комиссия' => [], 'Обратная связь' => [], 'Остальные документы' => [] ] ] ] ], 'Деятельность' => [ 'children' => [ 'Нормирование и стандартизация' => [ 'children' => [ 'Реестр сводов правил' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::RULESET], 'Разработка сводов правил' => [], 'Прикладные исследования' => [], 'Реестр нормативно-технической документации' => [], 'Методические материалы' => [], ] ], 'Оценка пригодности' => [ 'children' => [ 'Реестр технических свидетельств' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE], 'Заявка на оформление' => [], 'Предварительная заявка' => [], ] ], 'Технический комитет 465 «Строительство»' => [ 'children' => [ 'Руководство' => [], 'Секретариат' => [], 'Структура' => [], 'Состав' => [], 'Документы' => ['type' => PageType::REGISTRY, 'registry_type' => RegistryType::SIMPLE], 'АИС ТК 465 «Строительство»' => [], ] ], 'СТУ' => [ 'children' => [ 'Запись на консультацию' => [], 'Документы' => [], 'Протоколы заседания НТС' => [], 'Ответы на часто задаваемые вопросы' => [], ] ], 'КСИ' => [ 'children' => [ ] ], 'Добровольная сертификация' => [ 'children' => [ 'О системе' => [], 'Основополагающие документы' => [], 'Решения ЦОС' => [], 'Руководящие документы' => [], 'Реестр органов по сертификации' => ['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], 'Бланки документов' => [], ] ], 'Международная деятельность' => [ 'children' => [ 'ISO' => [], 'МТК 465 «Строительство»' => [], 'Межправительственный совет' => [], 'Базовая организация СНГ' => [], ] ], ] ], 'Коммерческие услуги' => [ 'children' => [ 'Сопровождение экспертизы и утверждения СП и ГОСТ' => [], 'Сопровождение разработки и утверждения СП и ГОСТ' => [], 'Консалтинговые услуги по разработке СП и ГОСТ' => [], 'Экспертиза СТО и ТУ' => [], 'Редактирование и нормоконтроль' => [], ] ], 'Пресс-центр' => [ 'children' => [ 'Новости' => [ 'type' => PageType::PUBLICATIONS, 'sub_type' => PageSubType::PUBLICATION_NEWS ], 'СМИ о нас' => [ 'type' => PageType::PUBLICATIONS, 'sub_type' => PageSubType::PUBLICATION_SMI ], 'Фотогалерея' => [ 'type' => PageType::PUBLICATIONS, 'sub_type' => PageSubType::PUBLICATION_PHOTOS ], 'Видеоархив' => [ 'type' => PageType::PUBLICATIONS, 'sub_type' => PageSubType::PUBLICATION_VIDEO ], 'Контакты для СМИ' => [], ] ], 'Контакты' => [ '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); }); } }