QR_code_generator/database/seeders/Objects/FieldsTableSeeder.php

395 lines
14 KiB
PHP

<?php
namespace Database\Seeders\Objects;
use App\Models\Dictionaries\DictionaryItem;
use App\Models\Objects\Field;
use App\Models\Objects\FieldType;
use App\Models\Objects\ObjectType;
use App\Models\Pages\Page;
use App\Transformers\Dictionaries\DictionaryItemTransformer;
use App\Transformers\Objects\ObjectTypeTransformer;
use App\Transformers\Pages\PageTransformer;
use Illuminate\Database\Seeder;
class FieldsTableSeeder extends Seeder {
public array $fields = [
'header' => [
'title' => 'Текст заголовка',
'type' => FieldType::TEXT
],
'header-type' => [
'title' => 'Тип заголовка',
'type' => FieldType::RELATION,
'required' => true,
'params' => [
'related' => DictionaryItem::class, 'transformer' => DictionaryItemTransformer::class,
'options' => ['show' => true, 'whereHas' => ['dictionary' => ['name' => 'title-types']]]
]
],
'header-required' => [
'title' => 'Текст заголовка',
'type' => FieldType::TEXT,
'required' => true
],
'documents' => [
'title' => 'Документы',
'type' => FieldType::DOCUMENT,
'multiple' => true
],
'documents-required' => [
'title' => 'Документы',
'type' => FieldType::DOCUMENT,
'multiple' => true,
'required' => true
],
'html' => [
'title' => 'Содержимое текстового блока',
'type' => FieldType::HTML
],
'html-required' => [
'title' => 'Содержимое текстового блока',
'type' => FieldType::HTML,
'required' => true
],
'images' => [
'title' => 'Изображения',
'type' => FieldType::IMAGE,
'multiple' => true
],
'images-required' => [
'title' => 'Изображения',
'type' => FieldType::IMAGE,
'multiple' => true,
'required' => true
],
'image-type' => [
'title' => 'Тип изображения',
'type' => FieldType::RELATION,
'required' => true,
'params' => [
'related' => DictionaryItem::class, 'transformer' => DictionaryItemTransformer::class,
'options' => ['show' => true, 'whereHas' => ['dictionary' => ['name' => 'image-type']]]
]
],
'video-url' => [
'title' => 'Ссылка на видео',
'type' => FieldType::STRING,
'required' => true
],
'button-title' => [
'title' => 'Текст',
'type' => FieldType::STRING,
'required' => true
],
'button-url' => [
'title' => 'Ссылка на кнопку',
'type' => FieldType::STRING,
'required' => true
],
'target-blank' => [
'title' => 'Открывать в новом окне',
'type' => FieldType::BOOLEAN
],
'contact-name' => [
'title' => 'Наименование',
'type' => FieldType::STRING,
],
'contact-legal-address' => [
'title' => 'Юридический адрес',
'type' => FieldType::STRING,
],
'contact-location-address' => [
'title' => 'Фактический адрес',
'type' => FieldType::STRING,
],
'contact-email' => [
'title' => 'Email',
'type' => FieldType::STRING,
],
'contact-phone' => [
'title' => 'Телефон',
'type' => FieldType::STRING,
],
'contact-description' => [
'title' => 'Информация',
'type' => FieldType::HTML,
],
'feedback-support-email' => [
'title' => 'Email кому будет отправлен ответ',
'type' => FieldType::STRING,
'required' => true,
],
'feedback-form-type' => [
'title' => 'Тип формы',
'type' => FieldType::RELATION,
'required' => true,
'params' => [
'related' => ObjectType::class, 'transformer' => ObjectTypeTransformer::class,
'options' => ['show' => true, 'whereHas' => ['parent' => ['name' => 'feedback-form']]]
]
],
'feedback-email' => [
'title' => 'Электронная почта',
'type' => FieldType::STRING,
'required' => true,
],
'feedback-name' => [
'title' => 'Ваше имя',
'type' => FieldType::STRING,
'required' => true,
],
'feedback-type' => [
'title' => 'Тема обращения',
'type' => FieldType::RELATION,
'required' => true,
'params' => [
'related' => DictionaryItem::class, 'transformer' => DictionaryItemTransformer::class,
'options' => ['show' => true, 'whereHas' => ['dictionary' => ['name' => 'feedback-types']]],
]
],
'feedback-message' => [
'title' => 'Текст сообщения',
'type' => FieldType::TEXT,
'required' => true,
],
'company-name' => [
'title' => 'Наименование организации',
'type' => FieldType::STRING,
'required' => true
],
'activities' => [
'title' => 'Объект сертификации',
'type' => FieldType::RELATION,
'multiple' => true,
'params' => [
'related' => DictionaryItem::class, 'transformer' => DictionaryItemTransformer::class,
'options' => ['show' => true, 'whereHas' => ['dictionary' => ['name' => 'activities']]],
]
],
'applicant-name' => [
'title' => 'Заявитель',
'type' => FieldType::STRING,
'required' => true
],
'applicant-address' => [
'title' => 'Адрес заявителя',
'type' => FieldType::STRING
],
'applicant-email' => [
'title' => 'Электронная почта заявителя',
'type' => FieldType::STRING
],
'applicant-phone' => [
'title' => 'Телефон заявителя',
'type' => FieldType::STRING
],
'producer-name' => [
'title' => 'Производитель',
'type' => FieldType::STRING
],
'producer-address' => [
'title' => 'Адрес производителя',
'type' => FieldType::STRING
],
'producer-email' => [
'title' => 'Электронная почта производителя',
'type' => FieldType::STRING
],
'producer-phone' => [
'title' => 'Телефон производителя',
'type' => FieldType::STRING
],
'company-address' => [
'title' => 'Адрес',
'type' => FieldType::STRING
],
'company-site' => [
'title' => 'Сайт',
'type' => FieldType::STRING
],
'company-email' => [
'title' => 'Электронная почта',
'type' => FieldType::STRING
],
'company-phone' => [
'title' => 'Телефон',
'type' => FieldType::STRING
],
'primary-developer' => [
'title'=> 'Основной исполнитель',
'type' => FieldType::STRING
],
'funding-source' => [
'title' => 'Источник финансирования',
'type' => FieldType::RELATION,
'params' => [
'appearance' => 'radio',
'related' => DictionaryItem::class, 'transformer' => DictionaryItemTransformer::class,
'options' => ['show' => true, 'whereHas' => ['dictionary' => ['name' => 'funding-sources']]]
]
],
'plan-year' => [
'title' => 'Год плана',
'type' => FieldType::INTEGER
],
'discussion-start-date' => [
'title' => 'Дата начала обсуждения',
'type' => FieldType::DATE
],
'discussion-finish-date' => [
'title' => 'Дата окончания обсуждения',
'type' => FieldType::DATE
],
'research-type' => [
'title' => 'Вид работы',
'type' => FieldType::RELATION,
'required' => true,
'params' => [
'appearance' => 'radio',
'related' => DictionaryItem::class, 'transformer' => DictionaryItemTransformer::class,
'options' => ['show' => true, 'whereHas' => ['dictionary' => ['name' => 'research-types']]]
]
],
'research-objective' => [
'title' => 'Цель исследования',
'type' => FieldType::TEXT
],
'technical-conclusion' => [
'title' => 'Техническое заключение',
'type' => FieldType::DOCUMENT,
],
'product-purpose' => [
'title' => 'Назначение продукции',
'type' => FieldType::TEXT
],
'developer-name' => [
'title' => 'Изготовитель / разработчик',
'type' => FieldType::STRING
],
'developer-address' => [
'title' => 'Адрес изготовителя / разработчика',
'type' => FieldType::STRING
],
'normative-document-type' => [
'title' => 'Тип документа',
'type' => FieldType::RELATION,
'params' => [
'related' => DictionaryItem::class, 'transformer' => DictionaryItemTransformer::class,
'options' => ['show' => true, 'whereHas' => ['dictionary' => ['name' => 'normative-document-types']]]
]
],
'host-agency' => [
'title' => 'Принявший орган',
'type' => FieldType::RELATION,
'params' => [
'related' => DictionaryItem::class, 'transformer' => DictionaryItemTransformer::class,
'options' => ['show' => true, 'whereHas' => ['dictionary' => ['name' => 'host-agencies']]]
]
],
'operation-type' => [
'title' => 'Вид работы',
'type' => FieldType::RELATION,
'required' => true,
'params' => [
'appearance' => 'radio',
'related' => DictionaryItem::class, 'transformer' => DictionaryItemTransformer::class,
'options' => ['show' => true, 'whereHas' => ['dictionary' => ['name' => 'operation-types']]]
]
],
'order-name' => [
'title' => 'Наименование приказа',
'type' => FieldType::STRING,
'required' => true
],
'order-date' => [
'title' => 'Дата приказа',
'type' => FieldType::DATE,
'required' => true
],
'order-document' => [
'title' => 'Документ приказа',
'type' => FieldType::DOCUMENT,
'required' => true
],
'listings' => [
'title' => 'Вхождение в перечень ПП',
'type' => FieldType::RELATION,
'multiple' => true,
'params' => [
'appearance' => 'checkbox',
'related' => DictionaryItem::class, 'transformer' => DictionaryItemTransformer::class,
'options' => ['show' => true, 'whereHas' => ['dictionary' => ['name' => 'listings']]]
]
],
'active-since' => [
'title' => 'Дата начала действия',
'type' => FieldType::DATE,
'required' => true
],
'active-till' => [
'title' => 'Дата окончания действия',
'type' => FieldType::DATE
],
'developer' => [
'title' => 'Разработчик',
'type' => FieldType::STRING
],
'maps-url' => [
'title' => 'Адрес карты',
'type' => FieldType::STRING,
'required' => true,
],
'moderate-pages' => [
'title' => 'Модерируемые разделы сайта',
'type' => FieldType::RELATION,
'multiple' => true,
'params' => [
'related' => Page::class, 'transformer' => PageTransformer::class,
'options' => ['show' => true]
]
],
'moderate-permissions' => [
'title' => 'Права',
'type' => FieldType::RELATION,
'multiple' => true,
'params' => [
'appearance' => 'checkbox',
'related' => DictionaryItem::class, 'transformer' => DictionaryItemTransformer::class,
'options' => ['show' => true, 'whereHas' => ['dictionary' => ['name' => 'moderate-permissions']]]
]
]
];
public function run() {
collect($this->fields)->each(function($data, $name) {
$data['required'] = $data['required'] ?? 0;
$data['multiple'] = $data['multiple'] ?? 0;
$field = Field::firstOrCreate(['name' => $name]);
$field->update($data);
});
}
}