[ 'children' => [ 'Руководство' => [], 'Документы' => [ 'children' => [ 'Документы об учреждении' => [], 'Закупки' => [], 'Бухгалтерская отчетность' => [], 'Государственное задание' => [], 'Нормативные правовые акты' => [], 'Антимонопольное законодательство' => [], 'Специальная оценка условий труда' => [] ] ], 'Структура' => [], 'Наблюдательный совет' => [ 'children' => [ 'Структура' => [], 'Документы' => [], 'Решения' => [] ] ], 'Закупки' => [], 'Противодействие коррупции' => [ 'children' => [ 'ФЗ, указы, постановления' => [], 'Ведомственные нормативные правовые акты' => [], 'Внутренние нормативные документы' => [], 'Антикоррупционная экспертиза' => [], 'Методические материалы' => [], 'Формы документов для заполнения' => [], 'Финансовые сведения' => [], 'Aттестационная комиссия' => [], 'Обратная связь' => [], 'Остальные документы' => [] ] ] ] ], 'Деятельность' => [ 'children' => [ 'Нормирование и стандартизация' => [ 'children' => [ 'Реестр сводов правил' => [], 'Разработка сводов правил' => [], 'Прикладные исследования' => [], 'Реестр нормативно-технической документации' => [], 'Методические материалы' => [], ] ], 'Оценка пригодности' => [ 'children' => [ 'Реестр технических свидетельств' => [], 'Заявка на оформление' => [], 'Предварительная заявка' => [], ] ], 'Технический комитет 465 «Строительство»' => [ 'children' => [ 'Руководство' => [], 'Секретариат' => [], 'Структура' => [], 'Состав' => [], 'Документы' => [], 'АИС ТК 465 «Строительство»' => [], ] ], 'СТУ' => [ 'children' => [ 'Запись на консультацию' => [], 'Документы' => [], 'Протоколы заседания НТС' => [], 'Ответы на часто задаваемые вопросы' => [], ] ], 'КСИ' => [ 'children' => [ ] ], 'Добровольная сертификация' => [ 'children' => [ 'О системе' => [], 'Основополагающие документы' => [], 'Решения ЦОС' => [], 'Руководящие документы' => [], 'Реестры' => [], 'Бланки документов' => [], ] ], 'Международная деятельность' => [ '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)); $page = Page::firstOrCreate(['parent_id' => $parent->id ?? 0, 'slug' => $slug]); $page->update([ 'name' => $name, 'type' => $data['type'] ?? PageType::CONTENT, 'sub_type' => $data['sub_type'] ?? null ]); 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); }); } }