src/Realty/Entity/Layout.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Realty\Entity;
  3. use App\Base\Annotation\Orm\Help;
  4. use App\Base\Annotation\Orm\Label;
  5. use App\Base\Annotation\Orm\NonEditable;
  6. use App\Base\Annotation\Orm\UploadableColumn;
  7. use App\Base\Entity\UploadableTrait;
  8. use Doctrine\Common\Collections\ArrayCollection;
  9. use Doctrine\Common\Collections\Collection;
  10. use Gedmo\Mapping\Annotation as Gedmo;
  11. use Doctrine\ORM\Mapping as ORM;
  12. use App\Realty\Repository\LayoutRepository;
  13. use Symfony\Component\HttpFoundation\File\File;
  14. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  15. #[ORM\Entity(repositoryClassLayoutRepository::class)]
  16. #[Vich\Uploadable]
  17. class Layout
  18. {
  19.     use UploadableTrait;
  20.     #[ORM\Id]
  21.     #[ORM\GeneratedValue]
  22.     #[ORM\Column(type'integer')]
  23.     protected int|null $id;
  24.     #[ORM\Column(type'string'length255)]
  25.     #[Label('Ключ для синхронизации')]
  26.     private string $outerKey '';
  27.     #[ORM\Column(type'string'length255)]
  28.     #[Label('Краткое наименование')]
  29.     private string $name '';
  30.     // + площадь кухни + еще что-нибудь
  31.     #[ORM\Column(type'string'length255)]
  32.     #[Label('Полное наименование')]
  33.     private string $fullName '';
  34.     #[ORM\Column(type'string'length255)]
  35.     #[Label('Краткое наименование')]
  36.     private string $type '';
  37.     #[ORM\Column(type'integer')]
  38.     #[Label('Кол-во комнат')]
  39.     private int $rooms 0;
  40.     #[ORM\Column(type'boolean')]
  41.     #[Label('Студия')]
  42.     private bool $isStudio false;
  43.     #[ORM\Column(type'float')]
  44.     #[Label('Общая площадь')]
  45.     private float $areaTotal 0;
  46.     #[ORM\Column(type'float'nullabletrue)]
  47.     #[Label('Жилая площадь')]
  48.     private float|null $areaLiving null;
  49.     #[ORM\Column(type'float'nullabletrue)]
  50.     #[Label('Кухни площадь')]
  51.     private float|null $areaKitchen null;
  52.     #[ORM\ManyToOne(targetEntityBuilding::class, inversedBy'layouts')]
  53.     #[ORM\JoinColumn(nullabletrue)]
  54.     #[Label('Здание')]
  55.     private ?Building $building null;
  56.     #[ORM\Column(type'string'length255nullabletrue)]
  57.     #[NonEditable]
  58.     #[Label('Доступна на этажах')]
  59.     private ?string $floorsVerbose null;
  60.     #[ORM\Column(type'string'length255nullabletrue)]
  61.     #[NonEditable]
  62.     #[Label('Доступные отделки')]
  63.     private ?string $renovationsVerbose null;
  64.     #[ORM\Column(type'integer'nullabletrue)]
  65.     #[NonEditable]
  66.     #[Label('Цена')]
  67.     #[Help('Значение цены "от"')]
  68.     private int|null $price null;
  69.     #[ORM\Column(type'string'length255nullabletrue)]
  70.     #[NonEditable]
  71.     #[Label('Артикул')]
  72.     private ?string $article null;
  73.     #[ORM\Column(type'datetime'nullabletrue)]
  74.     #[Label('Дата последней синхронизации')]
  75.     protected \DateTime|null $lastSyncAt null;
  76.     #[Vich\UploadableField(mapping'uploads'fileNameProperty'imageName')]
  77.     protected File|null $imageFile null;
  78.     #[ORM\Column(type'string'length255nullabletrue)]
  79.     #[UploadableColumn]
  80.     protected string|null $imageName null;
  81.     #[ORM\Column(type'string'length255nullabletrue)]
  82.     protected string|null $imageHash null;
  83.     #[ORM\Column(type'string'length255uniquetruenullabletrue)]
  84.     #[Gedmo\Slug(fields: ['fullName'], updatablefalseuniquetrue)]
  85.     #[Help('URL')]
  86.     private ?string $slug null;
  87.     #[ORM\OneToMany(mappedBy'layout'targetEntityApartment::class, orphanRemovaltrue)]
  88.     private $apartments;
  89.     #[ORM\Column(type'string'length255nullabletrue)]
  90.     #[NonEditable]
  91.     #[Label('Секция')]
  92.     private ?string $section null;
  93.     #[ORM\ManyToMany(targetEntityFloorGroupPlace::class, inversedBy'layouts')]
  94.     #[Label('Группа этажей')]
  95.     private Collection $floorGroopPlaces;
  96.     #[Vich\UploadableField(mapping'uploads'fileNameProperty'imagePlanName')]
  97.     #[Label('Изображение плана этажа')]
  98.     protected File|null $imagePlanFile null;
  99.     #[ORM\Column(type'string'length255nullabletrue)]
  100.     #[UploadableColumn]
  101.     protected string|null $imagePlanName null;
  102.     // Не забудь в классе
  103.     // use UploadableTrait;
  104.     #[Vich\UploadableField(mapping'uploads'fileNameProperty'imageFurnitureName')]
  105.     #[Label('Изображение планировки с мебелью')]
  106.     protected File|null $imageFurnitureFile null;
  107.     #[ORM\Column(type'string'length255nullabletrue)]
  108.     #[UploadableColumn]
  109.     protected string|null $imageFurnitureName null;
  110.     #[ORM\Column(length255nullabletrue)]
  111.     #[Label('Название акции')]
  112.     private ?string $actionName 'Акция';
  113.     #[ORM\Column(length255nullabletrue)]
  114.     #[Label('Ссылка на акцию на карточке квартиры')]
  115.     #[Help('Необходимо использовать полную ссылку')]
  116.     private ?string $url '';
  117.     #[ORM\Column(length255nullabletrue)]
  118.     #[Label('Текст внутри подсказки')]
  119.     private ?string $actionHintText '';
  120.     #[ORM\Column(type'string'length255nullabletrue)]
  121.     #[Label('Цвет фона иконки')]
  122.     protected string|null $iconBg '#8095D3';
  123.     #[Vich\UploadableField(mapping'uploads'fileNameProperty'imageIconName')]
  124.     #[Label('Файл .svg')]
  125.     #[Help('Размер 18x18 px')]
  126.     protected File|null $imageIconFile null;
  127.     #[ORM\Column(type'string'length255)]
  128.     #[UploadableColumn]
  129.     protected string|null $imageIconName '';
  130.     #[ORM\Column(type'boolean')]
  131.     #[Label('Показывать акцию')]
  132.     protected bool $active false;
  133.     public function __construct()
  134.     {
  135.         $this->apartments = new ArrayCollection();
  136.         $this->floorGroopPlaces = new ArrayCollection();
  137.     }
  138.     public function getBuilding(): ?Building
  139.     {
  140.         return $this->building;
  141.     }
  142.     public function setBuilding(?Building $building): self
  143.     {
  144.         $this->building $building;
  145.         return $this;
  146.     }
  147.     /**
  148.      * @return int|null
  149.      */
  150.     public function getId(): ?int
  151.     {
  152.         return $this->id;
  153.     }
  154.     /**
  155.      * @param int|null $id
  156.      * @return Layout
  157.      */
  158.     public function setId(?int $id): Layout
  159.     {
  160.         $this->id $id;
  161.         return $this;
  162.     }
  163.     /**
  164.      * @return string
  165.      */
  166.     public function getOuterKey(): string
  167.     {
  168.         return $this->outerKey;
  169.     }
  170.     /**
  171.      * @param string $outerKey
  172.      * @return Layout
  173.      */
  174.     public function setOuterKey(string $outerKey): Layout
  175.     {
  176.         $this->outerKey $outerKey;
  177.         return $this;
  178.     }
  179.     /**
  180.      * @return string
  181.      */
  182.     public function getName(): string
  183.     {
  184.         return $this->name;
  185.     }
  186.     /**
  187.      * @param string $name
  188.      * @return Layout
  189.      */
  190.     public function setName(string $name): Layout
  191.     {
  192.         $this->name $name;
  193.         return $this;
  194.     }
  195.     /**
  196.      * @return string
  197.      */
  198.     public function getFullName(): string
  199.     {
  200.         return $this->fullName;
  201.     }
  202.     /**
  203.      * @param string $fullName
  204.      * @return Layout
  205.      */
  206.     public function setFullName(string $fullName): Layout
  207.     {
  208.         $this->fullName $fullName;
  209.         return $this;
  210.     }
  211.     /**
  212.      * @return int
  213.      */
  214.     public function getRooms(): int
  215.     {
  216.         return $this->rooms;
  217.     }
  218.     /**
  219.      * @param int $rooms
  220.      * @return Layout
  221.      */
  222.     public function setRooms(int $rooms): Layout
  223.     {
  224.         $this->rooms $rooms;
  225.         return $this;
  226.     }
  227.     /**
  228.      * @return bool
  229.      */
  230.     public function isStudio(): bool
  231.     {
  232.         return $this->isStudio;
  233.     }
  234.     /**
  235.      * @param bool $isStudio
  236.      * @return Layout
  237.      */
  238.     public function setIsStudio(bool $isStudio): Layout
  239.     {
  240.         $this->isStudio $isStudio;
  241.         return $this;
  242.     }
  243.     /**
  244.      * @return float|int
  245.      */
  246.     public function getAreaTotal(): float|int
  247.     {
  248.         return $this->areaTotal;
  249.     }
  250.     /**
  251.      * @param float|int $areaTotal
  252.      * @return Layout
  253.      */
  254.     public function setAreaTotal(float|int $areaTotal): Layout
  255.     {
  256.         $this->areaTotal $areaTotal;
  257.         return $this;
  258.     }
  259.     /**
  260.      * @return float|null
  261.      */
  262.     public function getAreaLiving(): ?float
  263.     {
  264.         return $this->areaLiving;
  265.     }
  266.     /**
  267.      * @param float|null $areaLiving
  268.      * @return Layout
  269.      */
  270.     public function setAreaLiving(?float $areaLiving): Layout
  271.     {
  272.         $this->areaLiving $areaLiving;
  273.         return $this;
  274.     }
  275.     /**
  276.      * @return float|null
  277.      */
  278.     public function getAreaKitchen(): ?float
  279.     {
  280.         return $this->areaKitchen;
  281.     }
  282.     /**
  283.      * @param float|null $areaKitchen
  284.      * @return Layout
  285.      */
  286.     public function setAreaKitchen(?float $areaKitchen): Layout
  287.     {
  288.         $this->areaKitchen $areaKitchen;
  289.         return $this;
  290.     }
  291.     /**
  292.      * @return \DateTime|null
  293.      */
  294.     public function getLastSyncAt(): ?\DateTime
  295.     {
  296.         return $this->lastSyncAt;
  297.     }
  298.     /**
  299.      * @param \DateTime|null $lastSyncAt
  300.      * @return Layout
  301.      */
  302.     public function setLastSyncAt(?\DateTime $lastSyncAt): Layout
  303.     {
  304.         $this->lastSyncAt $lastSyncAt;
  305.         return $this;
  306.     }
  307.     public function __toString(): string
  308.     {
  309.         $name = [];
  310.         if ($this->getBuilding()) {
  311.             $name[] = (string) $this->getBuilding();
  312.         }
  313.         $name[] = $this->getName();
  314.         if ($this->getFloorsVerbose()) {
  315.             $name[] = "({$this->getFloorsVerbose()} этаж.)";
  316.         }
  317.         if ($this->getOuterKey()) {
  318.             $name[] = "id: {$this->getOuterKey()}";
  319.         }
  320.         return implode(' - '$name);
  321.     }
  322.     public function getImageHash(): ?string
  323.     {
  324.         return $this->imageHash;
  325.     }
  326.     public function setImageHash(?string $imageHash): void
  327.     {
  328.         $this->imageHash $imageHash;
  329.     }
  330.     public function getSlug(): ?string
  331.     {
  332.         return $this->slug;
  333.     }
  334.     public function setSlug(?string $slug): void
  335.     {
  336.         $this->slug $slug;
  337.     }
  338.     /**
  339.      * @return Collection<int, Apartment>
  340.      */
  341.     public function getApartments(): Collection
  342.     {
  343.         return $this->apartments;
  344.     }
  345.     public function addApartment(Apartment $apartment): self
  346.     {
  347.         if (!$this->apartments->contains($apartment)) {
  348.             $this->apartments[] = $apartment;
  349.             $apartment->setLayout($this);
  350.         }
  351.         return $this;
  352.     }
  353.     public function removeApartment(Apartment $apartment): self
  354.     {
  355.         if ($this->apartments->removeElement($apartment)) {
  356.             // set the owning side to null (unless already changed)
  357.             if ($apartment->getLayout() === $this) {
  358.                 $apartment->setLayout(null);
  359.             }
  360.         }
  361.         return $this;
  362.     }
  363.     public function getType(): string
  364.     {
  365.         return $this->type;
  366.     }
  367.     public function setType(string $type): void
  368.     {
  369.         $this->type $type;
  370.     }
  371.     public function getFloorsVerbose(): ?string
  372.     {
  373.         return $this->floorsVerbose;
  374.     }
  375.     public function setFloorsVerbose(?string $floorsVerbose): void
  376.     {
  377.         $this->floorsVerbose $floorsVerbose;
  378.     }
  379.     public function getPrice(): ?int
  380.     {
  381.         return $this->price;
  382.     }
  383.     public function setPrice(?int $price): void
  384.     {
  385.         $this->price $price;
  386.     }
  387.     public function getRenovationsVerbose(): ?string
  388.     {
  389.         return $this->renovationsVerbose;
  390.     }
  391.     public function setRenovationsVerbose(?string $renovationsVerbose): void
  392.     {
  393.         $this->renovationsVerbose $renovationsVerbose;
  394.     }
  395.     /**
  396.      * @return Collection<int, FloorGroupPlace>
  397.      */
  398.     public function getFloorGroopPlaces(): Collection
  399.     {
  400.         return $this->floorGroopPlaces;
  401.     }
  402.     public function addFloorGroopPlace(FloorGroupPlace $floorGroopPlace): self
  403.     {
  404.         if (!$this->floorGroopPlaces->contains($floorGroopPlace)) {
  405.             $this->floorGroopPlaces->add($floorGroopPlace);
  406.         }
  407.         return $this;
  408.     }
  409.     public function removeFloorGroopPlace(FloorGroupPlace $floorGroopPlace): self
  410.     {
  411.         $this->floorGroopPlaces->removeElement($floorGroopPlace);
  412.         return $this;
  413.     }
  414.     public function getSection(): ?string
  415.     {
  416.         return $this->section;
  417.     }
  418.     public function setSection(?string $section): void
  419.     {
  420.         $this->section $section;
  421.     }
  422.     public function getArticle(): ?string
  423.     {
  424.         return $this->article;
  425.     }
  426.     public function setArticle(?string $article): void
  427.     {
  428.         $this->article $article;
  429.     }
  430.     public function getActionName(): ?string
  431.     {
  432.         return $this->actionName;
  433.     }
  434.     public function setActionName(?string $actionName): void
  435.     {
  436.         $this->actionName $actionName;
  437.     }
  438.     public function getUrl(): ?string
  439.     {
  440.         return $this->url;
  441.     }
  442.     public function setUrl(?string $url): void
  443.     {
  444.         $this->url $url;
  445.     }
  446.     public function getActionHintText(): ?string
  447.     {
  448.         return $this->actionHintText;
  449.     }
  450.     public function setActionHintText(?string $actionHintText): void
  451.     {
  452.         $this->actionHintText $actionHintText;
  453.     }
  454.     public function getIconBg(): ?string
  455.     {
  456.         return $this->iconBg;
  457.     }
  458.     public function setIconBg(?string $iconBg): void
  459.     {
  460.         $this->iconBg $iconBg;
  461.     }
  462.     public function isActive(): bool
  463.     {
  464.         return $this->active;
  465.     }
  466.     public function setActive(bool $active): void
  467.     {
  468.         $this->active $active;
  469.     }
  470. }