vendor/croisiland/common-bundle/src/Entity/Cabin/CabinType.php line 26

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Croisiland\CommonBundle\Entity\Cabin;
  4. use Crea\MediaBundle\Entity\MediaTagOwnerInterface;
  5. use Crea\ToolsBundle\Entity\LifecycleUserIdentifierTrait;
  6. use Crea\ToolsBundle\Traits\KeyValueTrait;
  7. use Croisiland\CommonBundle\Annotation\Cabin\CabinTypeFormValidator;
  8. use Croisiland\CommonBundle\Entity\Partner\PartnerCompanyDiscount;
  9. use Croisiland\CommonBundle\Entity\Traits\IsActiveTrait;
  10. use Croisiland\CommonBundle\Entity\Traits\ListOrderTrait;
  11. use Croisiland\CommonBundle\Repository\Cabin\CabinTypeRepository;
  12. use Doctrine\Common\Collections\ArrayCollection;
  13. use Doctrine\Common\Collections\Collection;
  14. use Doctrine\Common\Util\ClassUtils;
  15. use Doctrine\ORM\Mapping as ORM;
  16. use Gedmo\Mapping\Annotation as Gedmo;
  17. /**
  18. * @ORM\Entity(repositoryClass=CabinTypeRepository::class)
  19. *
  20. * @CabinTypeFormValidator(groups={"cabin_type_form_validator"})
  21. */
  22. class CabinType implements \Stringable, MediaTagOwnerInterface
  23. {
  24. use IsActiveTrait;
  25. use ListOrderTrait;
  26. use LifecycleUserIdentifierTrait;
  27. use KeyValueTrait;
  28. /**
  29. * @ORM\Id
  30. *
  31. * @ORM\GeneratedValue
  32. *
  33. * @ORM\Column(type="integer")
  34. */
  35. private ?int $id = null;
  36. /**
  37. * @ORM\Column(type="string", length=255)
  38. */
  39. private ?string $name = null;
  40. /**
  41. * @ORM\Column(type="string", length=255, nullable=true)
  42. */
  43. private ?string $shortName = null;
  44. /**
  45. * @ORM\Column(type="string", length=100, unique=true)
  46. *
  47. * @Gedmo\Slug(fields={"name"}, updatable=false, unique=true)
  48. */
  49. private ?string $slug = null;
  50. /**
  51. * @var Collection<int, CabinSubType>
  52. *
  53. * @ORM\OneToMany(targetEntity=CabinSubType::class, mappedBy="cabinType", orphanRemoval=true)
  54. */
  55. private Collection $cabinSubTypes;
  56. /**
  57. * @var Collection<int, PartnerCompanyDiscount>
  58. *
  59. * @ORM\OneToMany(targetEntity=PartnerCompanyDiscount::class, mappedBy="cabinType")
  60. */
  61. private $partnerCompanyDiscounts;
  62. public function __construct()
  63. {
  64. $this->cabinSubTypes = new ArrayCollection();
  65. $this->partnerCompanyDiscounts = new ArrayCollection();
  66. }
  67. public function getId(): ?int
  68. {
  69. return $this->id;
  70. }
  71. public function getName(): ?string
  72. {
  73. return $this->name;
  74. }
  75. public function setName(?string $name): self
  76. {
  77. $this->name = $name;
  78. return $this;
  79. }
  80. public function getShortName(): ?string
  81. {
  82. return $this->shortName;
  83. }
  84. public function setShortName(?string $shortName): self
  85. {
  86. $this->shortName = $shortName;
  87. return $this;
  88. }
  89. public function getSlug(): ?string
  90. {
  91. return $this->slug;
  92. }
  93. public function setSlug(?string $slug): self
  94. {
  95. $this->slug = $slug;
  96. return $this;
  97. }
  98. /**
  99. * @return Collection<int, CabinSubType>
  100. */
  101. public function getCabinSubTypes(): Collection
  102. {
  103. return $this->cabinSubTypes;
  104. }
  105. public function addCabinSubType(CabinSubType $cabinSubType): self
  106. {
  107. if (!$this->cabinSubTypes->contains($cabinSubType)) {
  108. $this->cabinSubTypes[] = $cabinSubType;
  109. $cabinSubType->setCabinType($this);
  110. }
  111. return $this;
  112. }
  113. public function removeCabinSubType(CabinSubType $cabinSubType): self
  114. {
  115. if ($this->cabinSubTypes->removeElement($cabinSubType)) {
  116. // set the owning side to null (unless already changed)
  117. if ($cabinSubType->getCabinType() === $this) {
  118. $cabinSubType->setCabinType(null);
  119. }
  120. }
  121. return $this;
  122. }
  123. /**
  124. * @return Collection<int, PartnerCompanyDiscount>
  125. */
  126. public function getPartnerCompanyDiscounts(): Collection
  127. {
  128. return $this->partnerCompanyDiscounts;
  129. }
  130. public function addPartnerCompanyDiscount(PartnerCompanyDiscount $partnerCompanyDiscount): self
  131. {
  132. if (!$this->partnerCompanyDiscounts->contains($partnerCompanyDiscount)) {
  133. $this->partnerCompanyDiscounts[] = $partnerCompanyDiscount;
  134. $partnerCompanyDiscount->setCabinType($this);
  135. }
  136. return $this;
  137. }
  138. public function removePartnerCompanyDiscount(PartnerCompanyDiscount $partnerCompanyDiscount): self
  139. {
  140. if ($this->partnerCompanyDiscounts->removeElement($partnerCompanyDiscount)) {
  141. // set the owning side to null (unless already changed)
  142. if ($partnerCompanyDiscount->getCabinType() === $this) {
  143. $partnerCompanyDiscount->setCabinType(null);
  144. }
  145. }
  146. return $this;
  147. }
  148. public function __toString(): string
  149. {
  150. return (string) $this->name;
  151. }
  152. /**
  153. * Method liée au Média Bundle
  154. */
  155. public function getMediaTagOwnerLabel(): ?string
  156. {
  157. return $this->getName();
  158. }
  159. /**
  160. * Method liée au Média Bundle
  161. * @return class-string
  162. */
  163. public function getFqcn(): string
  164. {
  165. return ClassUtils::getClass($this);
  166. }
  167. }