From 2df6ce7deb298bbc3a616147a1544206f552fa8f Mon Sep 17 00:00:00 2001
From: "a.shamavov" <a.shamavov@iqdev.digital>
Date: Tue, 23 Apr 2024 12:19:03 +0500
Subject: [PATCH] =?UTF-8?q?STA-965=20|=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?=
 =?UTF-8?q?=D0=B8=D0=BB=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B5=20=D1=81=D1=83?=
 =?UTF-8?q?=D1=89=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D0=B8=20=D0=BC=D0=B8?=
 =?UTF-8?q?=D0=B3=D1=80=D0=B0=D1=86=D0=B8=D0=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .env                                        |   2 +-
 composer.json                               |   1 +
 composer.lock                               | 155 ++++++-
 migrations/Version20240423071100.php        | 103 +++++
 migrations/Version20240423071601.php        |  40 ++
 src/Entity/Address.php                      |  51 +++
 src/Entity/Email.php                        |  51 +++
 src/Entity/Kitchen.php                      |  51 +++
 src/Entity/News.php                         | 224 ++++++++++
 src/Entity/NewsCategory.php                 |  79 ++++
 src/Entity/NewsComment.php                  | 144 ++++++
 src/Entity/NewsType.php                     |  78 ++++
 src/Entity/Phone.php                        |  51 +++
 src/Entity/Restaurant.php                   | 470 ++++++++++++++++++++
 src/Entity/RestaurantType.php               |  93 ++++
 src/Entity/Settlement.php                   | 155 +++++++
 src/Entity/Tags.php                         |  51 +++
 src/Entity/User.php                         |  95 ++++
 src/Repository/AddressRepository.php        |  48 ++
 src/Repository/EmailRepository.php          |  48 ++
 src/Repository/KitchenRepository.php        |  48 ++
 src/Repository/NewsCategoryRepository.php   |  48 ++
 src/Repository/NewsCommentRepository.php    |  48 ++
 src/Repository/NewsRepository.php           |  48 ++
 src/Repository/NewsTypeRepository.php       |  48 ++
 src/Repository/PhoneRepository.php          |  48 ++
 src/Repository/RestaurantRepository.php     |  48 ++
 src/Repository/RestaurantTypeRepository.php |  48 ++
 src/Repository/SettlementRepository.php     |  48 ++
 src/Repository/TagsRepository.php           |  48 ++
 src/Repository/UserRepository.php           |  48 ++
 symfony.lock                                |   9 +
 32 files changed, 2525 insertions(+), 2 deletions(-)
 create mode 100644 migrations/Version20240423071100.php
 create mode 100644 migrations/Version20240423071601.php
 create mode 100644 src/Entity/Address.php
 create mode 100644 src/Entity/Email.php
 create mode 100644 src/Entity/Kitchen.php
 create mode 100644 src/Entity/News.php
 create mode 100644 src/Entity/NewsCategory.php
 create mode 100644 src/Entity/NewsComment.php
 create mode 100644 src/Entity/NewsType.php
 create mode 100644 src/Entity/Phone.php
 create mode 100644 src/Entity/Restaurant.php
 create mode 100644 src/Entity/RestaurantType.php
 create mode 100644 src/Entity/Settlement.php
 create mode 100644 src/Entity/Tags.php
 create mode 100644 src/Entity/User.php
 create mode 100644 src/Repository/AddressRepository.php
 create mode 100644 src/Repository/EmailRepository.php
 create mode 100644 src/Repository/KitchenRepository.php
 create mode 100644 src/Repository/NewsCategoryRepository.php
 create mode 100644 src/Repository/NewsCommentRepository.php
 create mode 100644 src/Repository/NewsRepository.php
 create mode 100644 src/Repository/NewsTypeRepository.php
 create mode 100644 src/Repository/PhoneRepository.php
 create mode 100644 src/Repository/RestaurantRepository.php
 create mode 100644 src/Repository/RestaurantTypeRepository.php
 create mode 100644 src/Repository/SettlementRepository.php
 create mode 100644 src/Repository/TagsRepository.php
 create mode 100644 src/Repository/UserRepository.php

diff --git a/.env b/.env
index e6c9e50..0a0d6c5 100644
--- a/.env
+++ b/.env
@@ -26,7 +26,7 @@ APP_SECRET=ea3ebbf899855d483050e0d1aad6a759
 # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
 # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4"
 # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4"
-DATABASE_URL="postgresql://postgres:12345@127.0.0.1:5432/app?serverVersion=16&charset=utf8"
+DATABASE_URL="postgresql://postgres:12345@127.0.0.1:5433/postgres?serverVersion=16&charset=utf8"
 ###< doctrine/doctrine-bundle ###
 
 ###> symfony/messenger ###
diff --git a/composer.json b/composer.json
index e4fcbc1..b4e8fa8 100644
--- a/composer.json
+++ b/composer.json
@@ -38,6 +38,7 @@
         "symfony/string": "7.0.*",
         "symfony/translation": "7.0.*",
         "symfony/twig-bundle": "7.0.*",
+        "symfony/uid": "7.0.*",
         "symfony/ux-turbo": "^2.16",
         "symfony/validator": "6.4.*",
         "symfony/web-link": "7.0.*",
diff --git a/composer.lock b/composer.lock
index 8a0131f..45f3c97 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "82e62585d889ab4827bf4bf460016802",
+    "content-hash": "b1f7459f48c910e2a39af6ee5a9b80eb",
     "packages": [
         {
             "name": "composer/semver",
@@ -5241,6 +5241,85 @@
             ],
             "time": "2024-01-29T20:11:03+00:00"
         },
+        {
+            "name": "symfony/polyfill-uuid",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-uuid.git",
+                "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853",
+                "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-uuid": "*"
+            },
+            "suggest": {
+                "ext-uuid": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Uuid\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Grégoire Pineau",
+                    "email": "lyrixx@lyrixx.info"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for uuid functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "uuid"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
         {
             "name": "symfony/process",
             "version": "v7.0.4",
@@ -6729,6 +6808,80 @@
             ],
             "time": "2024-02-15T11:33:06+00:00"
         },
+        {
+            "name": "symfony/uid",
+            "version": "v7.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/uid.git",
+                "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/uid/zipball/87cedaf3fabd7b733859d4d77aa4ca598259054b",
+                "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.2",
+                "symfony/polyfill-uuid": "^1.15"
+            },
+            "require-dev": {
+                "symfony/console": "^6.4|^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Uid\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Grégoire Pineau",
+                    "email": "lyrixx@lyrixx.info"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides an object-oriented API to generate and represent UIDs",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "UID",
+                "ulid",
+                "uuid"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/uid/tree/v7.0.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T15:02:46+00:00"
+        },
         {
             "name": "symfony/ux-turbo",
             "version": "v2.16.0",
diff --git a/migrations/Version20240423071100.php b/migrations/Version20240423071100.php
new file mode 100644
index 0000000..f16e9f8
--- /dev/null
+++ b/migrations/Version20240423071100.php
@@ -0,0 +1,103 @@
+<?php
+
+declare(strict_types=1);
+
+namespace DoctrineMigrations;
+
+use Doctrine\DBAL\Schema\Schema;
+use Doctrine\Migrations\AbstractMigration;
+
+/**
+ * Auto-generated Migration: Please modify to your needs!
+ */
+final class Version20240423071100 extends AbstractMigration
+{
+    public function getDescription(): string
+    {
+        return '';
+    }
+
+    public function up(Schema $schema): void
+    {
+        // this up() migration is auto-generated, please modify it to your needs
+        $this->addSql('CREATE SEQUENCE address_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
+        $this->addSql('CREATE SEQUENCE email_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
+        $this->addSql('CREATE SEQUENCE news_comment_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
+        $this->addSql('CREATE SEQUENCE news_type_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
+        $this->addSql('CREATE SEQUENCE phone_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
+        $this->addSql('CREATE SEQUENCE restaurant_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
+        $this->addSql('CREATE SEQUENCE tags_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
+        $this->addSql('CREATE TABLE address (id INT NOT NULL, restaurant_id INT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
+        $this->addSql('CREATE INDEX IDX_D4E6F81B1E7706E ON address (restaurant_id)');
+        $this->addSql('CREATE TABLE email (id INT NOT NULL, restaurant_id INT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
+        $this->addSql('CREATE INDEX IDX_E7927C74B1E7706E ON email (restaurant_id)');
+        $this->addSql('CREATE TABLE news (id UUID NOT NULL, type_id INT NOT NULL, code VARCHAR(255) NOT NULL, active BOOLEAN NOT NULL, create_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, update_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, sort INT NOT NULL, preview_image VARCHAR(255) NOT NULL, detail_image VARCHAR(255) NOT NULL, preview_text TEXT NOT NULL, detail_text TEXT NOT NULL, main_page_render BOOLEAN NOT NULL, PRIMARY KEY(id))');
+        $this->addSql('CREATE INDEX IDX_1DD39950C54C8C93 ON news (type_id)');
+        $this->addSql('COMMENT ON COLUMN news.id IS \'(DC2Type:uuid)\'');
+        $this->addSql('CREATE TABLE news_comment (id INT NOT NULL, news_id_id UUID NOT NULL, moderator_id_id INT NOT NULL, user_id_id INT NOT NULL, moderated BOOLEAN NOT NULL, user_name VARCHAR(255) NOT NULL, text VARCHAR(255) NOT NULL, create_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, update_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))');
+        $this->addSql('CREATE UNIQUE INDEX UNIQ_C3904E8A5FB1909 ON news_comment (news_id_id)');
+        $this->addSql('CREATE INDEX IDX_C3904E8ACEB712DF ON news_comment (moderator_id_id)');
+        $this->addSql('CREATE INDEX IDX_C3904E8A9D86650F ON news_comment (user_id_id)');
+        $this->addSql('COMMENT ON COLUMN news_comment.news_id_id IS \'(DC2Type:uuid)\'');
+        $this->addSql('CREATE TABLE news_type (id INT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
+        $this->addSql('CREATE TABLE phone (id INT NOT NULL, restaurant_id INT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
+        $this->addSql('CREATE INDEX IDX_444F97DDB1E7706E ON phone (restaurant_id)');
+        $this->addSql('CREATE TABLE restaurant (id INT NOT NULL, type_id_id INT NOT NULL, settlement_id_id INT NOT NULL, uuid UUID NOT NULL, name VARCHAR(255) NOT NULL, code VARCHAR(255) NOT NULL, active BOOLEAN NOT NULL, sort INT NOT NULL, create_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, update_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, coordinates TEXT NOT NULL, description TEXT NOT NULL, check_price VARCHAR(255) NOT NULL, check_info TEXT NOT NULL, site VARCHAR(255) NOT NULL, preview_image VARCHAR(255) NOT NULL, detail_image VARCHAR(255) NOT NULL, how_to_find TEXT NOT NULL, PRIMARY KEY(id))');
+        $this->addSql('CREATE UNIQUE INDEX UNIQ_EB95123FD17F50A6 ON restaurant (uuid)');
+        $this->addSql('CREATE INDEX IDX_EB95123F714819A0 ON restaurant (type_id_id)');
+        $this->addSql('CREATE INDEX IDX_EB95123F45EC589B ON restaurant (settlement_id_id)');
+        $this->addSql('COMMENT ON COLUMN restaurant.uuid IS \'(DC2Type:uuid)\'');
+        $this->addSql('COMMENT ON COLUMN restaurant.coordinates IS \'(DC2Type:array)\'');
+        $this->addSql('CREATE TABLE tags (id INT NOT NULL, restaurant_id INT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
+        $this->addSql('CREATE INDEX IDX_6FBC9426B1E7706E ON tags (restaurant_id)');
+        $this->addSql('ALTER TABLE address ADD CONSTRAINT FK_D4E6F81B1E7706E FOREIGN KEY (restaurant_id) REFERENCES restaurant (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+        $this->addSql('ALTER TABLE email ADD CONSTRAINT FK_E7927C74B1E7706E FOREIGN KEY (restaurant_id) REFERENCES restaurant (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+        $this->addSql('ALTER TABLE news ADD CONSTRAINT FK_1DD39950C54C8C93 FOREIGN KEY (type_id) REFERENCES news_type (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+        $this->addSql('ALTER TABLE news_comment ADD CONSTRAINT FK_C3904E8A5FB1909 FOREIGN KEY (news_id_id) REFERENCES news (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+        $this->addSql('ALTER TABLE news_comment ADD CONSTRAINT FK_C3904E8ACEB712DF FOREIGN KEY (moderator_id_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+        $this->addSql('ALTER TABLE news_comment ADD CONSTRAINT FK_C3904E8A9D86650F FOREIGN KEY (user_id_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+        $this->addSql('ALTER TABLE phone ADD CONSTRAINT FK_444F97DDB1E7706E FOREIGN KEY (restaurant_id) REFERENCES restaurant (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+        $this->addSql('ALTER TABLE restaurant ADD CONSTRAINT FK_EB95123F714819A0 FOREIGN KEY (type_id_id) REFERENCES restaurant_type (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+        $this->addSql('ALTER TABLE restaurant ADD CONSTRAINT FK_EB95123F45EC589B FOREIGN KEY (settlement_id_id) REFERENCES settlement (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+        $this->addSql('ALTER TABLE tags ADD CONSTRAINT FK_6FBC9426B1E7706E FOREIGN KEY (restaurant_id) REFERENCES restaurant (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+        $this->addSql('ALTER TABLE kitchen ADD restaurant_id INT NOT NULL');
+        $this->addSql('ALTER TABLE kitchen ADD CONSTRAINT FK_EAA3CE34B1E7706E FOREIGN KEY (restaurant_id) REFERENCES restaurant (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
+        $this->addSql('CREATE INDEX IDX_EAA3CE34B1E7706E ON kitchen (restaurant_id)');
+        $this->addSql('CREATE UNIQUE INDEX UNIQ_8D93D649D17F50A6 ON "user" (uuid)');
+    }
+
+    public function down(Schema $schema): void
+    {
+        // this down() migration is auto-generated, please modify it to your needs
+        $this->addSql('CREATE SCHEMA public');
+        $this->addSql('ALTER TABLE kitchen DROP CONSTRAINT FK_EAA3CE34B1E7706E');
+        $this->addSql('DROP SEQUENCE address_id_seq CASCADE');
+        $this->addSql('DROP SEQUENCE email_id_seq CASCADE');
+        $this->addSql('DROP SEQUENCE news_comment_id_seq CASCADE');
+        $this->addSql('DROP SEQUENCE news_type_id_seq CASCADE');
+        $this->addSql('DROP SEQUENCE phone_id_seq CASCADE');
+        $this->addSql('DROP SEQUENCE restaurant_id_seq CASCADE');
+        $this->addSql('DROP SEQUENCE tags_id_seq CASCADE');
+        $this->addSql('ALTER TABLE address DROP CONSTRAINT FK_D4E6F81B1E7706E');
+        $this->addSql('ALTER TABLE email DROP CONSTRAINT FK_E7927C74B1E7706E');
+        $this->addSql('ALTER TABLE news DROP CONSTRAINT FK_1DD39950C54C8C93');
+        $this->addSql('ALTER TABLE news_comment DROP CONSTRAINT FK_C3904E8A5FB1909');
+        $this->addSql('ALTER TABLE news_comment DROP CONSTRAINT FK_C3904E8ACEB712DF');
+        $this->addSql('ALTER TABLE news_comment DROP CONSTRAINT FK_C3904E8A9D86650F');
+        $this->addSql('ALTER TABLE phone DROP CONSTRAINT FK_444F97DDB1E7706E');
+        $this->addSql('ALTER TABLE restaurant DROP CONSTRAINT FK_EB95123F714819A0');
+        $this->addSql('ALTER TABLE restaurant DROP CONSTRAINT FK_EB95123F45EC589B');
+        $this->addSql('ALTER TABLE tags DROP CONSTRAINT FK_6FBC9426B1E7706E');
+        $this->addSql('DROP TABLE address');
+        $this->addSql('DROP TABLE email');
+        $this->addSql('DROP TABLE news');
+        $this->addSql('DROP TABLE news_comment');
+        $this->addSql('DROP TABLE news_type');
+        $this->addSql('DROP TABLE phone');
+        $this->addSql('DROP TABLE restaurant');
+        $this->addSql('DROP TABLE tags');
+        $this->addSql('DROP INDEX UNIQ_8D93D649D17F50A6');
+        $this->addSql('DROP INDEX IDX_EAA3CE34B1E7706E');
+        $this->addSql('ALTER TABLE kitchen DROP restaurant_id');
+    }
+}
diff --git a/migrations/Version20240423071601.php b/migrations/Version20240423071601.php
new file mode 100644
index 0000000..c8b2ca7
--- /dev/null
+++ b/migrations/Version20240423071601.php
@@ -0,0 +1,40 @@
+<?php
+
+declare(strict_types=1);
+
+namespace DoctrineMigrations;
+
+use Doctrine\DBAL\Schema\Schema;
+use Doctrine\Migrations\AbstractMigration;
+
+/**
+ * Auto-generated Migration: Please modify to your needs!
+ */
+final class Version20240423071601 extends AbstractMigration
+{
+    public function getDescription(): string
+    {
+        return '';
+    }
+
+    public function up(Schema $schema): void
+    {
+        // this up() migration is auto-generated, please modify it to your needs
+        $this->addSql('CREATE TABLE news_news_category (news_id UUID NOT NULL, news_category_id UUID NOT NULL, PRIMARY KEY(news_id, news_category_id))');
+        $this->addSql('CREATE INDEX IDX_1A91D6D6B5A459A0 ON news_news_category (news_id)');
+        $this->addSql('CREATE INDEX IDX_1A91D6D63B732BAD ON news_news_category (news_category_id)');
+        $this->addSql('COMMENT ON COLUMN news_news_category.news_id IS \'(DC2Type:uuid)\'');
+        $this->addSql('COMMENT ON COLUMN news_news_category.news_category_id IS \'(DC2Type:uuid)\'');
+        $this->addSql('ALTER TABLE news_news_category ADD CONSTRAINT FK_1A91D6D6B5A459A0 FOREIGN KEY (news_id) REFERENCES news (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
+        $this->addSql('ALTER TABLE news_news_category ADD CONSTRAINT FK_1A91D6D63B732BAD FOREIGN KEY (news_category_id) REFERENCES news_category (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
+    }
+
+    public function down(Schema $schema): void
+    {
+        // this down() migration is auto-generated, please modify it to your needs
+        $this->addSql('CREATE SCHEMA public');
+        $this->addSql('ALTER TABLE news_news_category DROP CONSTRAINT FK_1A91D6D6B5A459A0');
+        $this->addSql('ALTER TABLE news_news_category DROP CONSTRAINT FK_1A91D6D63B732BAD');
+        $this->addSql('DROP TABLE news_news_category');
+    }
+}
diff --git a/src/Entity/Address.php b/src/Entity/Address.php
new file mode 100644
index 0000000..6fa2e40
--- /dev/null
+++ b/src/Entity/Address.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\AddressRepository;
+use Doctrine\ORM\Mapping as ORM;
+
+#[ORM\Entity(repositoryClass: AddressRepository::class)]
+class Address
+{
+    #[ORM\Id]
+    #[ORM\GeneratedValue]
+    #[ORM\Column]
+    private ?int $id = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $name = null;
+
+    #[ORM\ManyToOne(inversedBy: 'address')]
+    #[ORM\JoinColumn(nullable: false)]
+    private ?Restaurant $restaurant = null;
+
+    public function getId(): ?int
+    {
+        return $this->id;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getRestaurant(): ?Restaurant
+    {
+        return $this->restaurant;
+    }
+
+    public function setRestaurant(?Restaurant $restaurant): static
+    {
+        $this->restaurant = $restaurant;
+
+        return $this;
+    }
+}
diff --git a/src/Entity/Email.php b/src/Entity/Email.php
new file mode 100644
index 0000000..ba955db
--- /dev/null
+++ b/src/Entity/Email.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\EmailRepository;
+use Doctrine\ORM\Mapping as ORM;
+
+#[ORM\Entity(repositoryClass: EmailRepository::class)]
+class Email
+{
+    #[ORM\Id]
+    #[ORM\GeneratedValue]
+    #[ORM\Column]
+    private ?int $id = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $name = null;
+
+    #[ORM\ManyToOne(inversedBy: 'email')]
+    #[ORM\JoinColumn(nullable: false)]
+    private ?Restaurant $restaurant = null;
+
+    public function getId(): ?int
+    {
+        return $this->id;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getRestaurant(): ?Restaurant
+    {
+        return $this->restaurant;
+    }
+
+    public function setRestaurant(?Restaurant $restaurant): static
+    {
+        $this->restaurant = $restaurant;
+
+        return $this;
+    }
+}
diff --git a/src/Entity/Kitchen.php b/src/Entity/Kitchen.php
new file mode 100644
index 0000000..2d08475
--- /dev/null
+++ b/src/Entity/Kitchen.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\KitchenRepository;
+use Doctrine\ORM\Mapping as ORM;
+
+#[ORM\Entity(repositoryClass: KitchenRepository::class)]
+class Kitchen
+{
+    #[ORM\Id]
+    #[ORM\GeneratedValue]
+    #[ORM\Column]
+    private ?int $id = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $name = null;
+
+    #[ORM\ManyToOne(inversedBy: 'kitchen')]
+    #[ORM\JoinColumn(nullable: false)]
+    private ?Restaurant $restaurant = null;
+
+    public function getId(): ?int
+    {
+        return $this->id;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getRestaurant(): ?Restaurant
+    {
+        return $this->restaurant;
+    }
+
+    public function setRestaurant(?Restaurant $restaurant): static
+    {
+        $this->restaurant = $restaurant;
+
+        return $this;
+    }
+}
diff --git a/src/Entity/News.php b/src/Entity/News.php
new file mode 100644
index 0000000..a4de9af
--- /dev/null
+++ b/src/Entity/News.php
@@ -0,0 +1,224 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\NewsRepository;
+use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Collections\Collection;
+use Doctrine\DBAL\Types\Types;
+use Doctrine\ORM\Mapping as ORM;
+use Symfony\Component\Uid\Uuid;
+
+#[ORM\Entity(repositoryClass: NewsRepository::class)]
+class News
+{
+    #[ORM\Id]
+    #[ORM\Column(type: 'uuid', unique: true)]
+    private ?Uuid $id = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $code = null;
+
+    #[ORM\Column]
+    private ?bool $active = null;
+
+    #[ORM\Column(type: Types::DATETIME_MUTABLE)]
+    private ?\DateTimeInterface $createAt = null;
+
+    #[ORM\Column(type: Types::DATETIME_MUTABLE)]
+    private ?\DateTimeInterface $updateAt = null;
+
+    #[ORM\Column]
+    private ?int $sort = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $previewImage = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $detailImage = null;
+
+    #[ORM\Column(type: Types::TEXT)]
+    private ?string $previewText = null;
+
+    #[ORM\Column(type: Types::TEXT)]
+    private ?string $detailText = null;
+
+    #[ORM\ManyToOne(inversedBy: 'news')]
+    #[ORM\JoinColumn(nullable: false)]
+    private ?NewsType $type = null;
+
+    #[ORM\Column]
+    private ?bool $mainPageRender = null;
+
+    /**
+     * @var Collection<int, NewsCategory>
+     */
+    #[ORM\ManyToMany(targetEntity: NewsCategory::class)]
+    private Collection $newsCategories;
+
+    public function __construct()
+    {
+        $this->newsCategories = new ArrayCollection();
+    }
+
+    public function getId(): ?Uuid
+    {
+        return $this->id;
+    }
+
+    public function getCode(): ?string
+    {
+        return $this->code;
+    }
+
+    public function setCode(string $code): static
+    {
+        $this->code = $code;
+
+        return $this;
+    }
+
+    public function isActive(): ?bool
+    {
+        return $this->active;
+    }
+
+    public function setActive(bool $active): static
+    {
+        $this->active = $active;
+
+        return $this;
+    }
+
+    public function getCreateAt(): ?\DateTimeInterface
+    {
+        return $this->createAt;
+    }
+
+    public function setCreateAt(\DateTimeInterface $createAt): static
+    {
+        $this->createAt = $createAt;
+
+        return $this;
+    }
+
+    public function getUpdateAt(): ?\DateTimeInterface
+    {
+        return $this->updateAt;
+    }
+
+    public function setUpdateAt(\DateTimeInterface $updateAt): static
+    {
+        $this->updateAt = $updateAt;
+
+        return $this;
+    }
+
+    public function getSort(): ?int
+    {
+        return $this->sort;
+    }
+
+    public function setSort(int $sort): static
+    {
+        $this->sort = $sort;
+
+        return $this;
+    }
+
+    public function getPreviewImage(): ?string
+    {
+        return $this->previewImage;
+    }
+
+    public function setPreviewImage(string $previewImage): static
+    {
+        $this->previewImage = $previewImage;
+
+        return $this;
+    }
+
+    public function getDetailImage(): ?string
+    {
+        return $this->detailImage;
+    }
+
+    public function setDetailImage(string $detailImage): static
+    {
+        $this->detailImage = $detailImage;
+
+        return $this;
+    }
+
+    public function getPreviewText(): ?string
+    {
+        return $this->previewText;
+    }
+
+    public function setPreviewText(string $previewText): static
+    {
+        $this->previewText = $previewText;
+
+        return $this;
+    }
+
+    public function getDetailText(): ?string
+    {
+        return $this->detailText;
+    }
+
+    public function setDetailText(string $detailText): static
+    {
+        $this->detailText = $detailText;
+
+        return $this;
+    }
+
+    public function getType(): ?NewsType
+    {
+        return $this->type;
+    }
+
+    public function setType(?NewsType $type): static
+    {
+        $this->type = $type;
+
+        return $this;
+    }
+
+    public function isMainPageRender(): ?bool
+    {
+        return $this->mainPageRender;
+    }
+
+    public function setMainPageRender(bool $mainPageRender): static
+    {
+        $this->mainPageRender = $mainPageRender;
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, NewsCategory>
+     */
+    public function getNewsCategories(): Collection
+    {
+        return $this->newsCategories;
+    }
+
+    public function addNewsCategory(NewsCategory $newsCategory): static
+    {
+        if (!$this->newsCategories->contains($newsCategory)) {
+            $this->newsCategories->add($newsCategory);
+        }
+
+        return $this;
+    }
+
+    public function removeNewsCategory(NewsCategory $newsCategory): static
+    {
+        $this->newsCategories->removeElement($newsCategory);
+
+        return $this;
+    }
+}
diff --git a/src/Entity/NewsCategory.php b/src/Entity/NewsCategory.php
new file mode 100644
index 0000000..974a99c
--- /dev/null
+++ b/src/Entity/NewsCategory.php
@@ -0,0 +1,79 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\NewsCategoryRepository;
+use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Collections\Collection;
+use Doctrine\ORM\Mapping as ORM;
+use Symfony\Component\Uid\Uuid;
+
+#[ORM\Entity(repositoryClass: NewsCategoryRepository::class)]
+class NewsCategory
+{
+    #[ORM\Id]
+    #[ORM\Column(type: 'uuid', unique: true)]
+    private ?Uuid $id = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $name = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $code = null;
+
+    public function getId(): ?Uuid
+    {
+        return $this->id;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getCode(): ?string
+    {
+        return $this->code;
+    }
+
+    public function setCode(string $code): static
+    {
+        $this->code = $code;
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, News>
+     */
+    public function getNews(): Collection
+    {
+        return $this->news;
+    }
+
+    public function addNews(News $news): static
+    {
+        if (!$this->news->contains($news)) {
+            $this->news->add($news);
+            $news->addNewsCategory($this);
+        }
+
+        return $this;
+    }
+
+    public function removeNews(News $news): static
+    {
+        if ($this->news->removeElement($news)) {
+            $news->removeNewsCategory($this);
+        }
+
+        return $this;
+    }
+}
diff --git a/src/Entity/NewsComment.php b/src/Entity/NewsComment.php
new file mode 100644
index 0000000..44f0e48
--- /dev/null
+++ b/src/Entity/NewsComment.php
@@ -0,0 +1,144 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\NewsCommentRepository;
+use Doctrine\DBAL\Types\Types;
+use Doctrine\ORM\Mapping as ORM;
+
+#[ORM\Entity(repositoryClass: NewsCommentRepository::class)]
+class NewsComment
+{
+    #[ORM\Id]
+    #[ORM\GeneratedValue]
+    #[ORM\Column]
+    private ?int $id = null;
+
+    #[ORM\OneToOne(cascade: ['persist', 'remove'])]
+    #[ORM\JoinColumn(nullable: false)]
+    private ?News $newsId = null;
+
+    #[ORM\Column]
+    private ?bool $moderated = null;
+
+    #[ORM\ManyToOne]
+    #[ORM\JoinColumn(nullable: false)]
+    private ?User $moderatorId = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $userName = null;
+
+    #[ORM\ManyToOne(inversedBy: 'newsComments')]
+    #[ORM\JoinColumn(nullable: false)]
+    private ?User $userId = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $text = null;
+
+    #[ORM\Column(type: Types::DATETIME_MUTABLE)]
+    private ?\DateTimeInterface $createAt = null;
+
+    #[ORM\Column(type: Types::DATETIME_MUTABLE)]
+    private ?\DateTimeImmutable $updateAt = null;
+
+    public function getId(): ?int
+    {
+        return $this->id;
+    }
+
+    public function getNewsId(): ?News
+    {
+        return $this->newsId;
+    }
+
+    public function setNewsId(News $newsId): static
+    {
+        $this->newsId = $newsId;
+
+        return $this;
+    }
+
+    public function isModerated(): ?bool
+    {
+        return $this->moderated;
+    }
+
+    public function setModerated(bool $moderated): static
+    {
+        $this->moderated = $moderated;
+
+        return $this;
+    }
+
+    public function getModeratorId(): ?User
+    {
+        return $this->moderatorId;
+    }
+
+    public function setModeratorId(?User $moderatorId): static
+    {
+        $this->moderatorId = $moderatorId;
+
+        return $this;
+    }
+
+    public function getUserName(): ?string
+    {
+        return $this->userName;
+    }
+
+    public function setUserName(string $userName): static
+    {
+        $this->userName = $userName;
+
+        return $this;
+    }
+
+    public function getUserId(): ?User
+    {
+        return $this->userId;
+    }
+
+    public function setUserId(?User $userId): static
+    {
+        $this->userId = $userId;
+
+        return $this;
+    }
+
+    public function getText(): ?string
+    {
+        return $this->text;
+    }
+
+    public function setText(string $text): static
+    {
+        $this->text = $text;
+
+        return $this;
+    }
+
+    public function getCreateAt(): ?\DateTimeInterface
+    {
+        return $this->createAt;
+    }
+
+    public function setCreateAt(\DateTimeInterface $createAt): static
+    {
+        $this->createAt = $createAt;
+
+        return $this;
+    }
+
+    public function getUpdateAt(): ?\DateTimeImmutable
+    {
+        return $this->updateAt;
+    }
+
+    public function setUpdateAt(\DateTimeImmutable $updateAt): static
+    {
+        $this->updateAt = $updateAt;
+
+        return $this;
+    }
+}
diff --git a/src/Entity/NewsType.php b/src/Entity/NewsType.php
new file mode 100644
index 0000000..409ac09
--- /dev/null
+++ b/src/Entity/NewsType.php
@@ -0,0 +1,78 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\NewsTypeRepository;
+use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Collections\Collection;
+use Doctrine\ORM\Mapping as ORM;
+
+#[ORM\Entity(repositoryClass: NewsTypeRepository::class)]
+class NewsType
+{
+    #[ORM\Id]
+    #[ORM\GeneratedValue]
+    #[ORM\Column]
+    private ?int $id = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $name = null;
+
+    /**
+     * @var Collection<int, News>
+     */
+    #[ORM\OneToMany(targetEntity: News::class, mappedBy: 'type')]
+    private Collection $news;
+
+    public function __construct()
+    {
+        $this->news = new ArrayCollection();
+    }
+
+    public function getId(): ?int
+    {
+        return $this->id;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, News>
+     */
+    public function getNews(): Collection
+    {
+        return $this->news;
+    }
+
+    public function addNews(News $news): static
+    {
+        if (!$this->news->contains($news)) {
+            $this->news->add($news);
+            $news->setType($this);
+        }
+
+        return $this;
+    }
+
+    public function removeNews(News $news): static
+    {
+        if ($this->news->removeElement($news)) {
+            // set the owning side to null (unless already changed)
+            if ($news->getType() === $this) {
+                $news->setType(null);
+            }
+        }
+
+        return $this;
+    }
+}
diff --git a/src/Entity/Phone.php b/src/Entity/Phone.php
new file mode 100644
index 0000000..00c028f
--- /dev/null
+++ b/src/Entity/Phone.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\PhoneRepository;
+use Doctrine\ORM\Mapping as ORM;
+
+#[ORM\Entity(repositoryClass: PhoneRepository::class)]
+class Phone
+{
+    #[ORM\Id]
+    #[ORM\GeneratedValue]
+    #[ORM\Column]
+    private ?int $id = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $name = null;
+
+    #[ORM\ManyToOne(inversedBy: 'phone')]
+    #[ORM\JoinColumn(nullable: false)]
+    private ?Restaurant $restaurant = null;
+
+    public function getId(): ?int
+    {
+        return $this->id;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getRestaurant(): ?Restaurant
+    {
+        return $this->restaurant;
+    }
+
+    public function setRestaurant(?Restaurant $restaurant): static
+    {
+        $this->restaurant = $restaurant;
+
+        return $this;
+    }
+}
diff --git a/src/Entity/Restaurant.php b/src/Entity/Restaurant.php
new file mode 100644
index 0000000..02fd3b1
--- /dev/null
+++ b/src/Entity/Restaurant.php
@@ -0,0 +1,470 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\RestaurantRepository;
+use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Collections\Collection;
+use Doctrine\DBAL\Types\Types;
+use Doctrine\ORM\Mapping as ORM;
+use Symfony\Component\Uid\Uuid;
+
+#[ORM\Entity(repositoryClass: RestaurantRepository::class)]
+class Restaurant
+{
+    #[ORM\Id]
+    #[ORM\GeneratedValue]
+    #[ORM\Column]
+    private ?int $id = null;
+
+    #[ORM\Column(type: 'uuid', unique: true)]
+    private ?Uuid $uuid = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $name = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $code = null;
+
+    #[ORM\Column]
+    private ?bool $active = null;
+
+    #[ORM\Column]
+    private ?int $sort = null;
+
+    #[ORM\Column(type: Types::DATETIME_MUTABLE)]
+    private ?\DateTimeInterface $createAt = null;
+
+    #[ORM\Column(type: Types::DATETIME_MUTABLE)]
+    private ?\DateTimeInterface $updateAt = null;
+
+    #[ORM\Column(type: Types::ARRAY)]
+    private array $coordinates = [];
+
+    #[ORM\ManyToOne(inversedBy: 'restaurants')]
+    #[ORM\JoinColumn(nullable: false)]
+    private ?RestaurantType $typeId = null;
+
+    #[ORM\ManyToOne(inversedBy: 'restaurants')]
+    #[ORM\JoinColumn(nullable: false)]
+    private ?Settlement $settlementId = null;
+
+    #[ORM\Column(type: Types::TEXT)]
+    private ?string $description = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $checkPrice = null;
+
+    #[ORM\Column(type: Types::TEXT)]
+    private ?string $checkInfo = null;
+
+    /**
+     * @var Collection<int, Kitchen>
+     */
+    #[ORM\OneToMany(targetEntity: Kitchen::class, mappedBy: 'restaurant')]
+    private Collection $kitchen;
+
+    /**
+     * @var Collection<int, Phone>
+     */
+    #[ORM\OneToMany(targetEntity: Phone::class, mappedBy: 'restaurant')]
+    private Collection $phone;
+
+    /**
+     * @var Collection<int, Email>
+     */
+    #[ORM\OneToMany(targetEntity: Email::class, mappedBy: 'restaurant')]
+    private Collection $email;
+
+    /**
+     * @var Collection<int, Address>
+     */
+    #[ORM\OneToMany(targetEntity: Address::class, mappedBy: 'restaurant')]
+    private Collection $address;
+
+    /**
+     * @var Collection<int, Tags>
+     */
+    #[ORM\OneToMany(targetEntity: Tags::class, mappedBy: 'restaurant')]
+    private Collection $tags;
+
+    #[ORM\Column(length: 255)]
+    private ?string $site = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $previewImage = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $detailImage = null;
+
+    #[ORM\Column(type: Types::TEXT)]
+    private ?string $howToFind = null;
+
+    public function __construct()
+    {
+        $this->kitchen = new ArrayCollection();
+        $this->phone = new ArrayCollection();
+        $this->email = new ArrayCollection();
+        $this->address = new ArrayCollection();
+        $this->tags = new ArrayCollection();
+    }
+
+    public function getId(): ?int
+    {
+        return $this->id;
+    }
+
+    public function getUuid(): ?Uuid
+    {
+        return $this->uuid;
+    }
+
+    public function setUuid(Uuid $uuid): static
+    {
+        $this->uuid = $uuid;
+
+        return $this;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getCode(): ?string
+    {
+        return $this->code;
+    }
+
+    public function setCode(string $code): static
+    {
+        $this->code = $code;
+
+        return $this;
+    }
+
+    public function isActive(): ?bool
+    {
+        return $this->active;
+    }
+
+    public function setActive(bool $active): static
+    {
+        $this->active = $active;
+
+        return $this;
+    }
+
+    public function getSort(): ?int
+    {
+        return $this->sort;
+    }
+
+    public function setSort(int $sort): static
+    {
+        $this->sort = $sort;
+
+        return $this;
+    }
+
+    public function getCreateAt(): ?\DateTimeInterface
+    {
+        return $this->createAt;
+    }
+
+    public function setCreateAt(\DateTimeInterface $createAt): static
+    {
+        $this->createAt = $createAt;
+
+        return $this;
+    }
+
+    public function getUpdateAt(): ?\DateTimeInterface
+    {
+        return $this->updateAt;
+    }
+
+    public function setUpdateAt(\DateTimeInterface $updateAt): static
+    {
+        $this->updateAt = $updateAt;
+
+        return $this;
+    }
+
+    public function getCoordinates(): array
+    {
+        return $this->coordinates;
+    }
+
+    public function setCoordinates(array $coordinates): static
+    {
+        $this->coordinates = $coordinates;
+
+        return $this;
+    }
+
+    public function getTypeId(): ?RestaurantType
+    {
+        return $this->typeId;
+    }
+
+    public function setTypeId(?RestaurantType $typeId): static
+    {
+        $this->typeId = $typeId;
+
+        return $this;
+    }
+
+    public function getSettlementId(): ?Settlement
+    {
+        return $this->settlementId;
+    }
+
+    public function setSettlementId(?Settlement $settlementId): static
+    {
+        $this->settlementId = $settlementId;
+
+        return $this;
+    }
+
+    public function getDescription(): ?string
+    {
+        return $this->description;
+    }
+
+    public function setDescription(string $description): static
+    {
+        $this->description = $description;
+
+        return $this;
+    }
+
+    public function getCheckPrice(): ?string
+    {
+        return $this->checkPrice;
+    }
+
+    public function setCheckPrice(string $checkPrice): static
+    {
+        $this->checkPrice = $checkPrice;
+
+        return $this;
+    }
+
+    public function getCheckInfo(): ?string
+    {
+        return $this->checkInfo;
+    }
+
+    public function setCheckInfo(string $checkInfo): static
+    {
+        $this->checkInfo = $checkInfo;
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, Kitchen>
+     */
+    public function getKitchen(): Collection
+    {
+        return $this->kitchen;
+    }
+
+    public function addKitchen(Kitchen $kitchen): static
+    {
+        if (!$this->kitchen->contains($kitchen)) {
+            $this->kitchen->add($kitchen);
+            $kitchen->setRestaurant($this);
+        }
+
+        return $this;
+    }
+
+    public function removeKitchen(Kitchen $kitchen): static
+    {
+        if ($this->kitchen->removeElement($kitchen)) {
+            // set the owning side to null (unless already changed)
+            if ($kitchen->getRestaurant() === $this) {
+                $kitchen->setRestaurant(null);
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, Phone>
+     */
+    public function getPhone(): Collection
+    {
+        return $this->phone;
+    }
+
+    public function addPhone(Phone $phone): static
+    {
+        if (!$this->phone->contains($phone)) {
+            $this->phone->add($phone);
+            $phone->setRestaurant($this);
+        }
+
+        return $this;
+    }
+
+    public function removePhone(Phone $phone): static
+    {
+        if ($this->phone->removeElement($phone)) {
+            // set the owning side to null (unless already changed)
+            if ($phone->getRestaurant() === $this) {
+                $phone->setRestaurant(null);
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, Email>
+     */
+    public function getEmail(): Collection
+    {
+        return $this->email;
+    }
+
+    public function addEmail(Email $email): static
+    {
+        if (!$this->email->contains($email)) {
+            $this->email->add($email);
+            $email->setRestaurant($this);
+        }
+
+        return $this;
+    }
+
+    public function removeEmail(Email $email): static
+    {
+        if ($this->email->removeElement($email)) {
+            // set the owning side to null (unless already changed)
+            if ($email->getRestaurant() === $this) {
+                $email->setRestaurant(null);
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, Address>
+     */
+    public function getAddress(): Collection
+    {
+        return $this->address;
+    }
+
+    public function addAddress(Address $address): static
+    {
+        if (!$this->address->contains($address)) {
+            $this->address->add($address);
+            $address->setRestaurant($this);
+        }
+
+        return $this;
+    }
+
+    public function removeAddress(Address $address): static
+    {
+        if ($this->address->removeElement($address)) {
+            // set the owning side to null (unless already changed)
+            if ($address->getRestaurant() === $this) {
+                $address->setRestaurant(null);
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, Tags>
+     */
+    public function getTags(): Collection
+    {
+        return $this->tags;
+    }
+
+    public function addTag(Tags $tag): static
+    {
+        if (!$this->tags->contains($tag)) {
+            $this->tags->add($tag);
+            $tag->setRestaurant($this);
+        }
+
+        return $this;
+    }
+
+    public function removeTag(Tags $tag): static
+    {
+        if ($this->tags->removeElement($tag)) {
+            // set the owning side to null (unless already changed)
+            if ($tag->getRestaurant() === $this) {
+                $tag->setRestaurant(null);
+            }
+        }
+
+        return $this;
+    }
+
+    public function getSite(): ?string
+    {
+        return $this->site;
+    }
+
+    public function setSite(string $site): static
+    {
+        $this->site = $site;
+
+        return $this;
+    }
+
+    public function getPreviewImage(): ?string
+    {
+        return $this->previewImage;
+    }
+
+    public function setPreviewImage(string $previewImage): static
+    {
+        $this->previewImage = $previewImage;
+
+        return $this;
+    }
+
+    public function getDetailImage(): ?string
+    {
+        return $this->detailImage;
+    }
+
+    public function setDetailImage(string $detailImage): static
+    {
+        $this->detailImage = $detailImage;
+
+        return $this;
+    }
+
+    public function getHowToFind(): ?string
+    {
+        return $this->howToFind;
+    }
+
+    public function setHowToFind(string $howToFind): static
+    {
+        $this->howToFind = $howToFind;
+
+        return $this;
+    }
+}
diff --git a/src/Entity/RestaurantType.php b/src/Entity/RestaurantType.php
new file mode 100644
index 0000000..2698a85
--- /dev/null
+++ b/src/Entity/RestaurantType.php
@@ -0,0 +1,93 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\RestaurantTypeRepository;
+use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Collections\Collection;
+use Doctrine\ORM\Mapping as ORM;
+
+#[ORM\Entity(repositoryClass: RestaurantTypeRepository::class)]
+class RestaurantType
+{
+    #[ORM\Id]
+    #[ORM\GeneratedValue]
+    #[ORM\Column]
+    private ?int $id = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $name = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $code = null;
+
+    /**
+     * @var Collection<int, Restaurant>
+     */
+    #[ORM\OneToMany(targetEntity: Restaurant::class, mappedBy: 'typeId')]
+    private Collection $restaurants;
+
+    public function __construct()
+    {
+        $this->restaurants = new ArrayCollection();
+    }
+
+    public function getId(): ?int
+    {
+        return $this->id;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getCode(): ?string
+    {
+        return $this->code;
+    }
+
+    public function setCode(string $code): static
+    {
+        $this->code = $code;
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, Restaurant>
+     */
+    public function getRestaurants(): Collection
+    {
+        return $this->restaurants;
+    }
+
+    public function addRestaurant(Restaurant $restaurant): static
+    {
+        if (!$this->restaurants->contains($restaurant)) {
+            $this->restaurants->add($restaurant);
+            $restaurant->setTypeId($this);
+        }
+
+        return $this;
+    }
+
+    public function removeRestaurant(Restaurant $restaurant): static
+    {
+        if ($this->restaurants->removeElement($restaurant)) {
+            // set the owning side to null (unless already changed)
+            if ($restaurant->getTypeId() === $this) {
+                $restaurant->setTypeId(null);
+            }
+        }
+
+        return $this;
+    }
+}
diff --git a/src/Entity/Settlement.php b/src/Entity/Settlement.php
new file mode 100644
index 0000000..9f983df
--- /dev/null
+++ b/src/Entity/Settlement.php
@@ -0,0 +1,155 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\SettlementRepository;
+use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Collections\Collection;
+use Doctrine\DBAL\Types\Types;
+use Doctrine\ORM\Mapping as ORM;
+use Symfony\Component\Uid\Uuid;
+
+#[ORM\Entity(repositoryClass: SettlementRepository::class)]
+class Settlement
+{
+    #[ORM\Id]
+    #[ORM\GeneratedValue]
+    #[ORM\Column]
+    private ?int $id = null;
+
+    #[ORM\Column(type: 'uuid', unique: true)]
+    private ?Uuid $uuid = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $name = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $code = null;
+
+    #[ORM\Column(type: Types::ARRAY)]
+    private array $coordinates = [];
+
+    #[ORM\Column(type: Types::DATETIME_MUTABLE)]
+    private ?\DateTimeInterface $createAt = null;
+
+    #[ORM\Column(type: Types::DATETIME_MUTABLE)]
+    private ?\DateTimeInterface $updateAt = null;
+
+    /**
+     * @var Collection<int, Restaurant>
+     */
+    #[ORM\OneToMany(targetEntity: Restaurant::class, mappedBy: 'settlementId')]
+    private Collection $restaurants;
+
+    public function __construct()
+    {
+        $this->restaurants = new ArrayCollection();
+    }
+
+    public function getId(): ?int
+    {
+        return $this->id;
+    }
+
+    public function getUuid(): ?Uuid
+    {
+        return $this->uuid;
+    }
+
+    public function setUuid(Uuid $uuid): static
+    {
+        $this->uuid = $uuid;
+
+        return $this;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getCode(): ?string
+    {
+        return $this->code;
+    }
+
+    public function setCode(string $code): static
+    {
+        $this->code = $code;
+
+        return $this;
+    }
+
+    public function getCoordinates(): array
+    {
+        return $this->coordinates;
+    }
+
+    public function setCoordinates(array $coordinates): static
+    {
+        $this->coordinates = $coordinates;
+
+        return $this;
+    }
+
+    public function getCreateAt(): ?\DateTimeInterface
+    {
+        return $this->createAt;
+    }
+
+    public function setCreateAt(\DateTimeInterface $createAt): static
+    {
+        $this->createAt = $createAt;
+
+        return $this;
+    }
+
+    public function getUpdateAt(): ?\DateTimeInterface
+    {
+        return $this->updateAt;
+    }
+
+    public function setUpdateAt(\DateTimeInterface $updateAt): static
+    {
+        $this->updateAt = $updateAt;
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, Restaurant>
+     */
+    public function getRestaurants(): Collection
+    {
+        return $this->restaurants;
+    }
+
+    public function addRestaurant(Restaurant $restaurant): static
+    {
+        if (!$this->restaurants->contains($restaurant)) {
+            $this->restaurants->add($restaurant);
+            $restaurant->setSettlementId($this);
+        }
+
+        return $this;
+    }
+
+    public function removeRestaurant(Restaurant $restaurant): static
+    {
+        if ($this->restaurants->removeElement($restaurant)) {
+            // set the owning side to null (unless already changed)
+            if ($restaurant->getSettlementId() === $this) {
+                $restaurant->setSettlementId(null);
+            }
+        }
+
+        return $this;
+    }
+}
diff --git a/src/Entity/Tags.php b/src/Entity/Tags.php
new file mode 100644
index 0000000..34514ad
--- /dev/null
+++ b/src/Entity/Tags.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\TagsRepository;
+use Doctrine\ORM\Mapping as ORM;
+
+#[ORM\Entity(repositoryClass: TagsRepository::class)]
+class Tags
+{
+    #[ORM\Id]
+    #[ORM\GeneratedValue]
+    #[ORM\Column]
+    private ?int $id = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $name = null;
+
+    #[ORM\ManyToOne(inversedBy: 'tags')]
+    #[ORM\JoinColumn(nullable: false)]
+    private ?Restaurant $restaurant = null;
+
+    public function getId(): ?int
+    {
+        return $this->id;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getRestaurant(): ?Restaurant
+    {
+        return $this->restaurant;
+    }
+
+    public function setRestaurant(?Restaurant $restaurant): static
+    {
+        $this->restaurant = $restaurant;
+
+        return $this;
+    }
+}
diff --git a/src/Entity/User.php b/src/Entity/User.php
new file mode 100644
index 0000000..7f1d85e
--- /dev/null
+++ b/src/Entity/User.php
@@ -0,0 +1,95 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\UserRepository;
+use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Collections\Collection;
+use Doctrine\ORM\Mapping as ORM;
+use Symfony\Component\Uid\Uuid;
+
+#[ORM\Entity(repositoryClass: UserRepository::class)]
+#[ORM\Table(name: '`user`')]
+class User
+{
+    #[ORM\Id]
+    #[ORM\GeneratedValue]
+    #[ORM\Column]
+    private ?int $id = null;
+
+    #[ORM\Column(type: 'uuid', unique: true)]
+    private ?Uuid $uuid = null;
+
+    #[ORM\Column(length: 255)]
+    private ?string $name = null;
+
+    /**
+     * @var Collection<int, NewsComment>
+     */
+    #[ORM\OneToMany(targetEntity: NewsComment::class, mappedBy: 'userId')]
+    private Collection $newsComments;
+
+    public function __construct()
+    {
+        $this->newsComments = new ArrayCollection();
+    }
+
+    public function getId(): ?int
+    {
+        return $this->id;
+    }
+
+    public function getUuid(): ?Uuid
+    {
+        return $this->uuid;
+    }
+
+    public function setUuid(Uuid $uuid): static
+    {
+        $this->uuid = $uuid;
+
+        return $this;
+    }
+
+    public function getName(): ?string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): static
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    /**
+     * @return Collection<int, NewsComment>
+     */
+    public function getNewsComments(): Collection
+    {
+        return $this->newsComments;
+    }
+
+    public function addNewsComment(NewsComment $newsComment): static
+    {
+        if (!$this->newsComments->contains($newsComment)) {
+            $this->newsComments->add($newsComment);
+            $newsComment->setUserId($this);
+        }
+
+        return $this;
+    }
+
+    public function removeNewsComment(NewsComment $newsComment): static
+    {
+        if ($this->newsComments->removeElement($newsComment)) {
+            // set the owning side to null (unless already changed)
+            if ($newsComment->getUserId() === $this) {
+                $newsComment->setUserId(null);
+            }
+        }
+
+        return $this;
+    }
+}
diff --git a/src/Repository/AddressRepository.php b/src/Repository/AddressRepository.php
new file mode 100644
index 0000000..e87117f
--- /dev/null
+++ b/src/Repository/AddressRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\Address;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<Address>
+ *
+ * @method Address|null find($id, $lockMode = null, $lockVersion = null)
+ * @method Address|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Address[]    findAll()
+ * @method Address[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class AddressRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Address::class);
+    }
+
+//    /**
+//     * @return Address[] Returns an array of Address objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('a')
+//            ->andWhere('a.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('a.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?Address
+//    {
+//        return $this->createQueryBuilder('a')
+//            ->andWhere('a.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/src/Repository/EmailRepository.php b/src/Repository/EmailRepository.php
new file mode 100644
index 0000000..f22b0ee
--- /dev/null
+++ b/src/Repository/EmailRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\Email;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<Email>
+ *
+ * @method Email|null find($id, $lockMode = null, $lockVersion = null)
+ * @method Email|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Email[]    findAll()
+ * @method Email[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class EmailRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Email::class);
+    }
+
+//    /**
+//     * @return Email[] Returns an array of Email objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('e')
+//            ->andWhere('e.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('e.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?Email
+//    {
+//        return $this->createQueryBuilder('e')
+//            ->andWhere('e.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/src/Repository/KitchenRepository.php b/src/Repository/KitchenRepository.php
new file mode 100644
index 0000000..745766d
--- /dev/null
+++ b/src/Repository/KitchenRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\Kitchen;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<Kitchen>
+ *
+ * @method Kitchen|null find($id, $lockMode = null, $lockVersion = null)
+ * @method Kitchen|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Kitchen[]    findAll()
+ * @method Kitchen[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class KitchenRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Kitchen::class);
+    }
+
+//    /**
+//     * @return Kitchen[] Returns an array of Kitchen objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('k')
+//            ->andWhere('k.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('k.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?Kitchen
+//    {
+//        return $this->createQueryBuilder('k')
+//            ->andWhere('k.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/src/Repository/NewsCategoryRepository.php b/src/Repository/NewsCategoryRepository.php
new file mode 100644
index 0000000..3a5eeeb
--- /dev/null
+++ b/src/Repository/NewsCategoryRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\NewsCategory;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<NewsCategory>
+ *
+ * @method NewsCategory|null find($id, $lockMode = null, $lockVersion = null)
+ * @method NewsCategory|null findOneBy(array $criteria, array $orderBy = null)
+ * @method NewsCategory[]    findAll()
+ * @method NewsCategory[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class NewsCategoryRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, NewsCategory::class);
+    }
+
+//    /**
+//     * @return NewsCategory[] Returns an array of NewsCategory objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('n')
+//            ->andWhere('n.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('n.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?NewsCategory
+//    {
+//        return $this->createQueryBuilder('n')
+//            ->andWhere('n.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/src/Repository/NewsCommentRepository.php b/src/Repository/NewsCommentRepository.php
new file mode 100644
index 0000000..1784010
--- /dev/null
+++ b/src/Repository/NewsCommentRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\NewsComment;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<NewsComment>
+ *
+ * @method NewsComment|null find($id, $lockMode = null, $lockVersion = null)
+ * @method NewsComment|null findOneBy(array $criteria, array $orderBy = null)
+ * @method NewsComment[]    findAll()
+ * @method NewsComment[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class NewsCommentRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, NewsComment::class);
+    }
+
+//    /**
+//     * @return NewsComment[] Returns an array of NewsComment objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('n')
+//            ->andWhere('n.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('n.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?NewsComment
+//    {
+//        return $this->createQueryBuilder('n')
+//            ->andWhere('n.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/src/Repository/NewsRepository.php b/src/Repository/NewsRepository.php
new file mode 100644
index 0000000..3b5d864
--- /dev/null
+++ b/src/Repository/NewsRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\News;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<News>
+ *
+ * @method News|null find($id, $lockMode = null, $lockVersion = null)
+ * @method News|null findOneBy(array $criteria, array $orderBy = null)
+ * @method News[]    findAll()
+ * @method News[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class NewsRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, News::class);
+    }
+
+//    /**
+//     * @return News[] Returns an array of News objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('n')
+//            ->andWhere('n.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('n.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?News
+//    {
+//        return $this->createQueryBuilder('n')
+//            ->andWhere('n.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/src/Repository/NewsTypeRepository.php b/src/Repository/NewsTypeRepository.php
new file mode 100644
index 0000000..385998b
--- /dev/null
+++ b/src/Repository/NewsTypeRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\NewsType;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<NewsType>
+ *
+ * @method NewsType|null find($id, $lockMode = null, $lockVersion = null)
+ * @method NewsType|null findOneBy(array $criteria, array $orderBy = null)
+ * @method NewsType[]    findAll()
+ * @method NewsType[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class NewsTypeRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, NewsType::class);
+    }
+
+//    /**
+//     * @return NewsType[] Returns an array of NewsType objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('n')
+//            ->andWhere('n.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('n.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?NewsType
+//    {
+//        return $this->createQueryBuilder('n')
+//            ->andWhere('n.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/src/Repository/PhoneRepository.php b/src/Repository/PhoneRepository.php
new file mode 100644
index 0000000..de389d6
--- /dev/null
+++ b/src/Repository/PhoneRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\Phone;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<Phone>
+ *
+ * @method Phone|null find($id, $lockMode = null, $lockVersion = null)
+ * @method Phone|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Phone[]    findAll()
+ * @method Phone[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class PhoneRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Phone::class);
+    }
+
+//    /**
+//     * @return Phone[] Returns an array of Phone objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('p')
+//            ->andWhere('p.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('p.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?Phone
+//    {
+//        return $this->createQueryBuilder('p')
+//            ->andWhere('p.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/src/Repository/RestaurantRepository.php b/src/Repository/RestaurantRepository.php
new file mode 100644
index 0000000..8b5b18d
--- /dev/null
+++ b/src/Repository/RestaurantRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\Restaurant;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<Restaurant>
+ *
+ * @method Restaurant|null find($id, $lockMode = null, $lockVersion = null)
+ * @method Restaurant|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Restaurant[]    findAll()
+ * @method Restaurant[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class RestaurantRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Restaurant::class);
+    }
+
+//    /**
+//     * @return Restaurant[] Returns an array of Restaurant objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('r')
+//            ->andWhere('r.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('r.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?Restaurant
+//    {
+//        return $this->createQueryBuilder('r')
+//            ->andWhere('r.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/src/Repository/RestaurantTypeRepository.php b/src/Repository/RestaurantTypeRepository.php
new file mode 100644
index 0000000..30e6a42
--- /dev/null
+++ b/src/Repository/RestaurantTypeRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\RestaurantType;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<RestaurantType>
+ *
+ * @method RestaurantType|null find($id, $lockMode = null, $lockVersion = null)
+ * @method RestaurantType|null findOneBy(array $criteria, array $orderBy = null)
+ * @method RestaurantType[]    findAll()
+ * @method RestaurantType[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class RestaurantTypeRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, RestaurantType::class);
+    }
+
+//    /**
+//     * @return RestaurantType[] Returns an array of RestaurantType objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('r')
+//            ->andWhere('r.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('r.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?RestaurantType
+//    {
+//        return $this->createQueryBuilder('r')
+//            ->andWhere('r.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/src/Repository/SettlementRepository.php b/src/Repository/SettlementRepository.php
new file mode 100644
index 0000000..1b5e100
--- /dev/null
+++ b/src/Repository/SettlementRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\Settlement;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<Settlement>
+ *
+ * @method Settlement|null find($id, $lockMode = null, $lockVersion = null)
+ * @method Settlement|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Settlement[]    findAll()
+ * @method Settlement[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class SettlementRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Settlement::class);
+    }
+
+//    /**
+//     * @return Settlement[] Returns an array of Settlement objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('s')
+//            ->andWhere('s.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('s.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?Settlement
+//    {
+//        return $this->createQueryBuilder('s')
+//            ->andWhere('s.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/src/Repository/TagsRepository.php b/src/Repository/TagsRepository.php
new file mode 100644
index 0000000..4f01463
--- /dev/null
+++ b/src/Repository/TagsRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\Tags;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<Tags>
+ *
+ * @method Tags|null find($id, $lockMode = null, $lockVersion = null)
+ * @method Tags|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Tags[]    findAll()
+ * @method Tags[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class TagsRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, Tags::class);
+    }
+
+//    /**
+//     * @return Tags[] Returns an array of Tags objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('t')
+//            ->andWhere('t.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('t.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?Tags
+//    {
+//        return $this->createQueryBuilder('t')
+//            ->andWhere('t.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php
new file mode 100644
index 0000000..3767526
--- /dev/null
+++ b/src/Repository/UserRepository.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\User;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @extends ServiceEntityRepository<User>
+ *
+ * @method User|null find($id, $lockMode = null, $lockVersion = null)
+ * @method User|null findOneBy(array $criteria, array $orderBy = null)
+ * @method User[]    findAll()
+ * @method User[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class UserRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, User::class);
+    }
+
+//    /**
+//     * @return User[] Returns an array of User objects
+//     */
+//    public function findByExampleField($value): array
+//    {
+//        return $this->createQueryBuilder('u')
+//            ->andWhere('u.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->orderBy('u.id', 'ASC')
+//            ->setMaxResults(10)
+//            ->getQuery()
+//            ->getResult()
+//        ;
+//    }
+
+//    public function findOneBySomeField($value): ?User
+//    {
+//        return $this->createQueryBuilder('u')
+//            ->andWhere('u.exampleField = :val')
+//            ->setParameter('val', $value)
+//            ->getQuery()
+//            ->getOneOrNullResult()
+//        ;
+//    }
+}
diff --git a/symfony.lock b/symfony.lock
index aaf3e50..f28d08f 100644
--- a/symfony.lock
+++ b/symfony.lock
@@ -248,6 +248,15 @@
             "./templates/base.html.twig"
         ]
     },
+    "symfony/uid": {
+        "version": "7.0",
+        "recipe": {
+            "repo": "github.com/symfony/recipes",
+            "branch": "main",
+            "version": "7.0",
+            "ref": "0df5844274d871b37fc3816c57a768ffc60a43a5"
+        }
+    },
     "symfony/ux-turbo": {
         "version": "v2.16.0"
     },
-- 
GitLab