Skip to content
Snippets Groups Projects
Restaurant.php 8.7 KiB
Newer Older
<?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\Bridge\Doctrine\Types\UuidType;
use Symfony\Component\Uid\Uuid;

#[ORM\Entity(repositoryClass: RestaurantRepository::class)]
class Restaurant
{
    #[ORM\Id]
    #[ORM\Column(type: UuidType::NAME, unique: true)]
    #[ORM\GeneratedValue(strategy: 'CUSTOM')]
    #[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]
    private ?Uuid $id = 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_IMMUTABLE)]
    private ?\DateTimeInterface $createAt = null;

    #[ORM\Column(type: Types::DATETIME_IMMUTABLE)]
    private ?\DateTimeInterface $updateAt = null;

    #[ORM\Column(type: 'simple_array')]
    #[ORM\ManyToOne(fetch: 'EAGER', inversedBy: 'restaurants')]
    #[ORM\JoinColumn(nullable: false)]
    private ?RestaurantType $typeId = null;

    #[ORM\ManyToOne(fetch: 'EAGER', 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<Uuid, Kitchen>
    #[ORM\OneToMany(targetEntity: Kitchen::class, mappedBy: 'restaurant', fetch: 'EAGER')]
    #[ORM\Column]
    private array $phone = [];
    #[ORM\Column]
    private array $email = [];
    #[ORM\Column]
    private array $address = [];
     * @var Collection<Uuid, Tags>
    #[ORM\OneToMany(targetEntity: Tags::class, mappedBy: 'restaurant', fetch: 'EAGER')]
    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;

    #[ORM\ManyToOne(fetch: 'EAGER')]
    #[ORM\JoinColumn(nullable: false)]
    private ?Seo $seo = null;

    #[ORM\JoinColumn(nullable: false)]
    private ?File $file = null;

    public function __construct()
    {
        $this->kitchen = new ArrayCollection();
        $this->tags = new ArrayCollection();
    }

    public function getId(): ?Uuid
    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<Uuid, 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<Uuid, 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;
    }

    public function getSeo(): ?Seo
    {
        return $this->seo;
    }

    public function setSeo(?Seo $seo): static
    {
        $this->seo = $seo;

        return $this;
    }

    public function setPhone(array $phone): static
    {
        $this->phone = $phone;

        return $this;
    }

    public function setEmail(array $email): static
    {
        $this->email = $email;

        return $this;
    }

    public function setAddress(array $address): static
    {
        $this->address = $address;

        return $this;
    }

    public function getFile(): ?File
    {
        return $this->file;
    }

    public function setFile(File $file): static
    {
        $this->file = $file;

        return $this;
    }

    public function getPhone(): array
    {
        return $this->phone;
    }

    public function getEmail(): array
    {
        return $this->email;
    }

    public function getAddress(): array
    {
        return $this->address;
    }