QR_code_generator/database/seeders/Pages/PagesTableSeeder.php

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