From 1fddf71b66f996ceb2e9d6a7fc07a366ccd2a23b Mon Sep 17 00:00:00 2001 From: panabonic Date: Fri, 16 Jun 2023 15:21:20 +0300 Subject: [PATCH] registries alfa --- app/Models/Registries/Registry.php | 42 +++++++++++++++++ app/Models/Registries/RegistryEntry.php | 35 ++++++++++++++ app/Models/Registries/RegistryType.php | 11 +++++ .../Publications/PublicationTransformer.php | 3 +- .../Registries/RegistryTransformer.php | 46 +++++++++++++++++++ ...3_06_14_143616_create_registries_table.php | 36 +++++++++++++++ .../Objects/ObjectTypesTableSeeder.php | 10 ++++ database/seeders/Pages/PagesTableSeeder.php | 2 +- 8 files changed, 182 insertions(+), 3 deletions(-) create mode 100644 app/Models/Registries/Registry.php create mode 100644 app/Models/Registries/RegistryEntry.php create mode 100644 app/Models/Registries/RegistryType.php create mode 100644 app/Transformers/Registries/RegistryTransformer.php create mode 100644 database/migrations/2023_06_14_143616_create_registries_table.php diff --git a/app/Models/Registries/Registry.php b/app/Models/Registries/Registry.php new file mode 100644 index 0000000..3a3f9c4 --- /dev/null +++ b/app/Models/Registries/Registry.php @@ -0,0 +1,42 @@ +belongsTo(Page::class); + } + + + + public function getParsedTypeAttribute(): array { + return ['name' => $this->type, 'title' => RegistryType::TITLES[$this->type] ?? null]; + } + + +} diff --git a/app/Models/Registries/RegistryEntry.php b/app/Models/Registries/RegistryEntry.php new file mode 100644 index 0000000..4c41b94 --- /dev/null +++ b/app/Models/Registries/RegistryEntry.php @@ -0,0 +1,35 @@ +belongsTo(Registry::class); + } + + + +} diff --git a/app/Models/Registries/RegistryType.php b/app/Models/Registries/RegistryType.php new file mode 100644 index 0000000..213e78f --- /dev/null +++ b/app/Models/Registries/RegistryType.php @@ -0,0 +1,11 @@ + 'Реестр документов' + ]; +} \ No newline at end of file diff --git a/app/Transformers/Publications/PublicationTransformer.php b/app/Transformers/Publications/PublicationTransformer.php index a051564..a8aa04c 100644 --- a/app/Transformers/Publications/PublicationTransformer.php +++ b/app/Transformers/Publications/PublicationTransformer.php @@ -2,7 +2,6 @@ namespace App\Transformers\Publications; -use App\Models\Pages\Page; use App\Models\Publications\Publication; use App\Services\PermissionsService; use App\Transformers\Assets\AssetTransformer; @@ -23,7 +22,7 @@ class PublicationTransformer extends TransformerAbstract { 'page', 'poster', 'author', 'sections', 'sidebars', 'permissions' ]; - public function transform(Page $model): array { + public function transform(Publication $model): array { return [ 'id' => $model->uuid, 'slug' => $model->slug, diff --git a/app/Transformers/Registries/RegistryTransformer.php b/app/Transformers/Registries/RegistryTransformer.php new file mode 100644 index 0000000..da19ee4 --- /dev/null +++ b/app/Transformers/Registries/RegistryTransformer.php @@ -0,0 +1,46 @@ + $model->uuid, + 'type' => $model->parsedType, + 'name' => $model->name, + 'created_at' => $model->created_at ? $model->created_at->toIso8601String() : null, + 'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : null + ]; + } + + public function includePage(Registry $model): ?Item { + return $model->page ? $this->item($model->page, new PageTransformer()) : null; + } + + public function includeEntries(Registry $model): Collection { + return $this->collection($model->objects, new ObjectTransformer()); + } + + public function includePermissions(Registry $model): Primitive { + return $this->primitive((new PermissionsService($model))->get()); + } + + +} diff --git a/database/migrations/2023_06_14_143616_create_registries_table.php b/database/migrations/2023_06_14_143616_create_registries_table.php new file mode 100644 index 0000000..bfa864f --- /dev/null +++ b/database/migrations/2023_06_14_143616_create_registries_table.php @@ -0,0 +1,36 @@ +id(); + $table->char('uuid', 36)->index()->unique(); + $table->integer('page_id')->index()->default(0); + $table->string('type')->index()->nullable(); + $table->string('name')->index()->nullable(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('registries'); + } +} diff --git a/database/seeders/Objects/ObjectTypesTableSeeder.php b/database/seeders/Objects/ObjectTypesTableSeeder.php index 4b6e7de..3b48863 100644 --- a/database/seeders/Objects/ObjectTypesTableSeeder.php +++ b/database/seeders/Objects/ObjectTypesTableSeeder.php @@ -10,6 +10,7 @@ class ObjectTypesTableSeeder extends Seeder { 'page-sidebar' => [ 'title' => 'Сторонний блок контентной страницы' ], + 'page-section' => [ 'title' => 'Секция контентной страницы', 'children' => [ @@ -35,6 +36,15 @@ class ObjectTypesTableSeeder extends Seeder { 'title' => 'Видео' ] ] + ], + + 'registry-entry' => [ + 'title' => 'Запись в реестре', + 'children' => [ + 'registry-entry-document' => [ + 'title' => 'Документ' + ] + ] ] ]; diff --git a/database/seeders/Pages/PagesTableSeeder.php b/database/seeders/Pages/PagesTableSeeder.php index a8c30c7..a445342 100644 --- a/database/seeders/Pages/PagesTableSeeder.php +++ b/database/seeders/Pages/PagesTableSeeder.php @@ -95,7 +95,7 @@ class PagesTableSeeder extends Seeder ], 'КСИ' => [ 'children' => [ - '' => [], + ] ], 'Добровольная сертификация' => [