91 lines
3.3 KiB
PHP
91 lines
3.3 KiB
PHP
<?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ттестационная комиссия' => [],
|
||
'Обратная связь' => [],
|
||
'Остальные документы' => []
|
||
]
|
||
]
|
||
]
|
||
],
|
||
'Деятельность' => [
|
||
|
||
],
|
||
'Коммерческие услуги' => [
|
||
|
||
],
|
||
'Пресс-центр' => [
|
||
|
||
],
|
||
'Контакты' => [
|
||
|
||
]
|
||
];
|
||
|
||
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);
|
||
});
|
||
}
|
||
|
||
}
|