src/Entity/Product.php line 16

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\ReseauSociaux\Publication;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use App\Repository\ProductRepository;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\Common\Collections\ArrayCollection;
  8. use Symfony\Component\Serializer\Annotation\Groups;
  9. use Symfony\Component\Validator\Constraints as Assert;
  10. /**
  11.  * @ORM\Entity(repositoryClass=ProductRepository::class)
  12.  */
  13. class Product
  14. {
  15.     /**
  16.      * @ORM\Id()
  17.      * @ORM\GeneratedValue()
  18.      * @ORM\Column(type="integer")
  19.      * @Groups({"product:read", "publication:read", "post:read"})
  20.      */
  21.     private $id;
  22.     /**
  23.      * @ORM\Column(type="string", length=255)
  24.      * @Groups("post:read","product:read","publication:read")
  25.      */
  26.     private $name;
  27.     /**
  28.      * @ORM\Column(type="text")
  29.      */
  30.     private $text;
  31.     /**
  32.      * @ORM\Column(type="float", nullable=true)
  33.      * @Groups({"product:read"})
  34.      */
  35.     private $price;
  36.     /**
  37.      * @ORM\Column(type="integer", nullable=true)
  38.      */
  39.     private $quantity;
  40.     /**
  41.      * @ORM\OneToMany(targetEntity=Photos::class, mappedBy="product", cascade={"persist", "remove"})
  42.      * @Assert\NotBlank(message="Veuillez ajouter au moins une photo au produit")
  43.      * @Groups("post:read","product:read")
  44.      */
  45.     private $photos;
  46.     /**
  47.      * @ORM\ManyToOne(targetEntity=Company::class, inversedBy="products")
  48.      */
  49.     private $company;
  50.     /**
  51.      * @ORM\Column(type="string", length=255)
  52.      * @Groups("publication:read","post:read")
  53.      */
  54.     private $productSlug;
  55.     /**
  56.      * @ORM\Column(type="integer", nullable=true, options={"default" : 50})
  57.      */
  58.     private $percentDeposit;
  59.     /**
  60.      * @ORM\Column(type="integer", nullable=true, options={"default" : 0})
  61.      */
  62.     private $deadline;
  63.     /**
  64.      * @ORM\ManyToMany(targetEntity=Department::class, inversedBy="products")
  65.      */
  66.     private $departments;
  67.     /**
  68.      * @ORM\Column(type="array", nullable=true)
  69.      */
  70.     private $sizes = [];
  71.     /**
  72.      * @ORM\Column(type="array", nullable=true)
  73.      */
  74.     private $colors = [];
  75.     /**
  76.      * @ORM\Column(type="array", nullable=true)
  77.      */
  78.     private $sizeRing = [];
  79.     /**
  80.      * @ORM\OneToMany(targetEntity=CommandProduct::class, mappedBy="product")
  81.      */
  82.     private $commandProducts;
  83.     /**
  84.      * @ORM\OneToMany(targetEntity=Avis::class, mappedBy="product")
  85.      */
  86.     private $avis;
  87.     /**
  88.      * @ORM\ManyToOne(targetEntity=Pack::class, inversedBy="products")
  89.      */
  90.     private $pack;
  91.     /**
  92.      * @ORM\Column(type="integer", nullable=true)
  93.      */
  94.     private $nbGuest;
  95.     /**
  96.      * @ORM\Column(type="text", nullable=true)
  97.      */
  98.     private $youtubeVideo;
  99.     /**
  100.      * @ORM\Column(type="boolean")
  101.      */
  102.     private $isActivated;
  103.     /**
  104.      * @ORM\Column(type="boolean")
  105.      */
  106.     private $isDesactivatedByAdmin;
  107.     /**
  108.      * @ORM\Column(type="array", nullable=true)
  109.      */
  110.     private $modeLivraison;
  111.     /**
  112.      * @ORM\Column(type="float", nullable=true)
  113.      */
  114.     private $fraisLivraison;
  115.     /**
  116.      * @ORM\OneToMany(targetEntity=ProductPercent::class, mappedBy="product")
  117.      */
  118.     private $productPercents;
  119.     /**
  120.      * @ORM\OneToMany(targetEntity=ContactProduct::class, mappedBy="product")
  121.      */
  122.     private $contactProducts;
  123.     /**
  124.      * @ORM\OneToMany(targetEntity=ProductOption::class, mappedBy="product", orphanRemoval=true, cascade={"persist", "remove"})
  125.      */
  126.     private $productOptions;
  127.     /**
  128.      * @ORM\ManyToMany(targetEntity=SubCategory::class, inversedBy="products")
  129.      * @Groups("publication:read", "post:read")
  130.      */
  131.     private $subCategories;
  132.     /**
  133.      * @ORM\Column(type="string", length=255, nullable=true)
  134.      */
  135.     private $weight;
  136.     /**
  137.      * @ORM\Column(type="array", nullable=true)
  138.      */
  139.     private $transporteurs = [];
  140.     /**
  141.      * @ORM\Column(type="string", length=20, nullable=true)
  142.      */
  143.     private $codePromo;
  144.     /**
  145.      * @ORM\Column(type="float", nullable=true)
  146.      */
  147.     private $codePromoEuro;
  148.     /**
  149.      * @ORM\OneToOne(targetEntity=ProductDescription::class, mappedBy="product", cascade={"persist", "remove"})
  150.      */
  151.     private $productDescription;
  152.     /**
  153.      * @ORM\Column(type="integer", nullable=true)
  154.      */
  155.     private $template;
  156.     /**
  157.      * @ORM\OneToMany(targetEntity=AnnonceCompany::class, mappedBy="products")
  158.      */
  159.     private $annonceCompanies;
  160.     /**
  161.      * @ORM\ManyToOne(targetEntity=TypeLocation::class, inversedBy="products")
  162.      */
  163.     private $typeLocation;
  164.     /**
  165.      * @ORM\ManyToOne(targetEntity=TypePrestation::class, inversedBy="products")
  166.      */
  167.     private $typePrestation;
  168.     /**
  169.      * @ORM\OneToMany(targetEntity=Location::class, mappedBy="product", orphanRemoval=true)
  170.      */
  171.     private $locations;
  172.     /**
  173.      * @ORM\OneToMany(targetEntity=Reservation::class, mappedBy="product", orphanRemoval=true)
  174.      */
  175.     private $reservations;
  176.     /**
  177.      * @ORM\ManyToOne(targetEntity=Tva::class, inversedBy="products")
  178.      */
  179.     private $tva;
  180.     /**
  181.      * @ORM\OneToMany(targetEntity=Caution::class, mappedBy="product")
  182.      */
  183.     private $cautions;
  184.     /**
  185.      * @ORM\OneToMany(targetEntity=Participant::class, mappedBy="produit")
  186.      */
  187.     private $participants;
  188.     /** 
  189.      * @ORM\ManyToOne(targetEntity=TypeHebergement::class, cascade={"persist"})
  190.      */
  191.     private $typeHebergements;
  192.     /**
  193.      * @ORM\OneToMany(targetEntity=Chambre::class, mappedBy="product", orphanRemoval=true, cascade={"persist"})
  194.      */
  195.     private $chambres;
  196.     /**
  197.      * @ORM\ManyToMany(targetEntity=Caracteristic::class, mappedBy="product")
  198.      */
  199.     private $caracteristics;
  200.     /**
  201.      * @ORM\ManyToMany(targetEntity=Equipment::class, mappedBy="product")
  202.      */
  203.     private $equipment;
  204.     /**
  205.      * @ORM\ManyToMany(targetEntity=LangueHote::class, mappedBy="product")
  206.      */
  207.     private $langueHotes;
  208.     /**
  209.      * @ORM\ManyToMany(targetEntity=TypeLocalisation::class, mappedBy="product")
  210.      */
  211.     private $typeLocalisations;
  212.     /**
  213.      * @ORM\ManyToMany(targetEntity=Security::class, mappedBy="product")
  214.      */
  215.     private $securities;
  216.     /**
  217.      * @ORM\Column(type="float", nullable=true)
  218.      */
  219.     private $taxeSejour;
  220.     /**
  221.      * @ORM\Column(type="float", nullable=true)
  222.      */
  223.     private $prixCaution;
  224.     /**
  225.      * @ORM\Column(type="float", nullable=true)
  226.      */
  227.     private $longitude;
  228.     /**
  229.      * @ORM\Column(type="float", nullable=true)
  230.      */
  231.     private $latitude;
  232.     /**
  233.      * @ORM\ManyToOne(targetEntity=ActivityType::class)
  234.      */
  235.     private $typeActivity;
  236.     /**
  237.      * @ORM\OneToMany(targetEntity=ProductReduction::class, mappedBy="Product", orphanRemoval=true, cascade={"persist", "remove"})
  238.      */
  239.     private $productReductions;
  240.     /**
  241.      * @ORM\Column(type="float", nullable=true)
  242.      */
  243.     private $springPrice;
  244.     /**
  245.      * @ORM\Column(type="float", nullable=true)
  246.      */
  247.     private $summerPrice;
  248.     /**
  249.      * @ORM\Column(type="float", nullable=true)
  250.      */
  251.     private $autumnPrice;
  252.     /**
  253.      * @ORM\Column(type="float", nullable=true)
  254.      */
  255.     private $winterPrice;
  256.     /**
  257.      * @ORM\Column(type="float", nullable=true)
  258.      */
  259.     private $weekEndPrice;
  260.     /**
  261.      * @ORM\OneToMany(targetEntity=ProgrammingDayPrice::class, mappedBy="product", orphanRemoval=true, cascade={"persist"})
  262.      */
  263.     private $dayPrice;
  264.     /**
  265.      * @ORM\OneToMany(targetEntity=ProductAgenda::class, mappedBy="product", orphanRemoval=true, cascade={"persist"})
  266.      */
  267.     private $productAgendas;
  268.     /**
  269.      * @ORM\OneToMany(targetEntity=ProductAutoReduction::class, mappedBy="Product", orphanRemoval=true, cascade={"persist"})
  270.      */
  271.     private $productAutoReduction;
  272.     /**
  273.      * @ORM\OneToMany(targetEntity=Publication::class, mappedBy="product_company")
  274.      */
  275.     private $publications;
  276.     /**
  277.      * @ORM\OneToMany(targetEntity=PendingLocation::class, mappedBy="product")
  278.      */
  279.     private $pendingLocations;
  280.     /**
  281.      * @ORM\OneToMany(targetEntity=PendingReservation::class, mappedBy="product")
  282.      */
  283.     private $pendingReservations;
  284.     /**
  285.      * @ORM\OneToMany(targetEntity=ProductPeriodPrice::class, mappedBy="product", orphanRemoval=true, cascade={"persist"})
  286.      */
  287.     private $periodPrice;
  288.     /**
  289.      * @ORM\Column(type="string", length=255, nullable=true)
  290.      */
  291.     private $cityLocalisation;
  292.     /**
  293.      * @ORM\Column(type="integer", nullable=true)
  294.      */
  295.     private ?int $nbChambre null;
  296.     /**
  297.      * @ORM\Column(type="integer", nullable=true)
  298.      */
  299.     private $nightMin;
  300.     /**
  301.      * @ORM\OneToMany(targetEntity=TarifDegressif::class, mappedBy="Product", orphanRemoval=true, cascade={"persist", "remove"})
  302.      */
  303.     private $tarifDegressifs;
  304.     /**
  305.      * @ORM\ManyToMany(targetEntity=EquipementsCuisine::class, mappedBy="product")
  306.      */
  307.     private $equipementsCuisines;
  308.     /**
  309.      * @ORM\ManyToMany(targetEntity=SalleDeBain::class, mappedBy="product")
  310.      */
  311.     private $salleDeBains;
  312.     /**
  313.      * @ORM\ManyToMany(targetEntity=AccessoiresDeChambre::class, mappedBy="product")
  314.      */
  315.     private $accessoiresDeChambres;
  316.     /**
  317.      * @ORM\ManyToMany(targetEntity=MobilierExterieur::class, mappedBy="product")
  318.      */
  319.     private $mobilierExterieurs;
  320.     /**
  321.      * @ORM\ManyToOne(targetEntity=CaracteristiqueVehicule::class, inversedBy="products", cascade={"persist"})
  322.      */
  323.     private $caracteristiqueVehicule;
  324.     /**
  325.      * @ORM\OneToMany(targetEntity=Notification::class, mappedBy="product")
  326.      */
  327.     private $notificationReservation;
  328.     /**
  329.      * @ORM\ManyToOne(targetEntity=Commune::class, inversedBy="products")
  330.      */
  331.     private $commune;
  332.     public function __construct()
  333.     {
  334.         $this->photos = new ArrayCollection();
  335.         $this->departments = new ArrayCollection();
  336.         $this->commandProducts = new ArrayCollection();
  337.         $this->avis = new ArrayCollection();
  338.         $this->isActivated true;
  339.         $this->isDesactivatedByAdmin false;
  340.         $this->productPercents = new ArrayCollection();
  341.         $this->contactProducts = new ArrayCollection();
  342.         $this->productOptions = new ArrayCollection();
  343.         $this->subCategories = new ArrayCollection();
  344.         $this->annonceCompanies = new ArrayCollection();
  345.         $this->locations = new ArrayCollection();
  346.         $this->reservations = new ArrayCollection();
  347.         $this->cautions = new ArrayCollection();
  348.         $this->participants = new ArrayCollection();
  349.         $this->chambres = new ArrayCollection();
  350.         $this->caracteristics = new ArrayCollection();
  351.         $this->equipment = new ArrayCollection();
  352.         $this->langueHotes = new ArrayCollection();
  353.         $this->typeLocalisations = new ArrayCollection();
  354.         $this->securities = new ArrayCollection();
  355.         $this->productReductions = new ArrayCollection();
  356.         $this->dayPrice = new ArrayCollection();
  357.         $this->productAgendas = new ArrayCollection();
  358.         $this->productAutoReduction = new ArrayCollection();
  359.         $this->publications = new ArrayCollection();
  360.         $this->pendingLocations = new ArrayCollection();
  361.         $this->pendingReservations = new ArrayCollection();
  362.         $this->periodPrice = new ArrayCollection();
  363.         $this->tarifDegressifs = new ArrayCollection();
  364.         $this->equipementsCuisines = new ArrayCollection();
  365.         $this->salleDeBains = new ArrayCollection();
  366.         $this->accessoiresDeChambres = new ArrayCollection();
  367.         $this->mobilierExterieurs = new ArrayCollection();
  368.         $this->notificationReservation = new ArrayCollection();
  369.     }
  370.     public function getId(): ?int
  371.     {
  372.         return $this->id;
  373.     }
  374.     public function getPercentDeposit(): ?int
  375.     {
  376.         return $this->percentDeposit;
  377.     }
  378.     public function setPercentDeposit(?int $percentDeposit): self
  379.     {
  380.         $this->percentDeposit $percentDeposit;
  381.         return $this;
  382.     }
  383.     public function getDeadline(): ?int
  384.     {
  385.         return $this->deadline;
  386.     }
  387.     public function setDeadline(?int $deadline): self
  388.     {
  389.         $this->deadline $deadline;
  390.         return $this;
  391.     }
  392.     public function getName(): ?string
  393.     {
  394.         return $this->name;
  395.     }
  396.     public function setName(?string $name): self
  397.     {
  398.         $this->name $name;
  399.         return $this;
  400.     }
  401.     public function getText(): ?string
  402.     {
  403.         return $this->text;
  404.     }
  405.     public function setText(?string $text): self
  406.     {
  407.         $this->text $text;
  408.         return $this;
  409.     }
  410.     public function getPrice(): ?float
  411.     {
  412.         return $this->price;
  413.     }
  414.     public function setPrice(float $price): self
  415.     {
  416.         $this->price $price;
  417.         return $this;
  418.     }
  419.     public function getQuantity(): ?int
  420.     {
  421.         return $this->quantity;
  422.     }
  423.     public function setQuantity(?int $quantity): self
  424.     {
  425.         $this->quantity $quantity;
  426.         return $this;
  427.     }
  428.     /**
  429.      * @return Collection|Photos[]
  430.      */
  431.     public function getPhotos(): Collection
  432.     {
  433.         return $this->photos;
  434.     }
  435.     public function addPhoto(Photos $photo): self
  436.     {
  437.         if (!$this->photos->contains($photo)) {
  438.             $this->photos[] = $photo;
  439.             $photo->setProduct($this);
  440.         }
  441.         return $this;
  442.     }
  443.     public function removePhoto(Photos $photo): self
  444.     {
  445.         if ($this->photos->contains($photo)) {
  446.             $this->photos->removeElement($photo);
  447.             // set the owning side to null (unless already changed)
  448.             if ($photo->getProduct() === $this) {
  449.                 $photo->setProduct(null);
  450.             }
  451.         }
  452.         return $this;
  453.     }
  454.     public function getCompany(): ?Company
  455.     {
  456.         return $this->company;
  457.     }
  458.     public function setCompany(?Company $company): self
  459.     {
  460.         $this->company $company;
  461.         return $this;
  462.     }
  463.     /**
  464.      * @return mixed
  465.      */
  466.     public function getProductSlug()
  467.     {
  468.         return $this->productSlug;
  469.     }
  470.     /**
  471.      * @param mixed $productSlug
  472.      */
  473.     public function setProductSlug($productSlug): void
  474.     {
  475.         $this->productSlug $productSlug;
  476.     }
  477.     /**
  478.      * @return Collection|Department[]
  479.      */
  480.     public function getDepartments(): Collection
  481.     {
  482.         return $this->departments;
  483.     }
  484.     public function addDepartment(Department $department): self
  485.     {
  486.         if (!$this->departments->contains($department)) {
  487.             $this->departments[] = $department;
  488.         }
  489.         return $this;
  490.     }
  491.     public function removeDepartment(Department $department): self
  492.     {
  493.         if ($this->departments->contains($department)) {
  494.             $this->departments->removeElement($department);
  495.         }
  496.         return $this;
  497.     }
  498.     public function getSizes(): ?array
  499.     {
  500.         return $this->sizes;
  501.     }
  502.     public function setSizes(?array $sizes): self
  503.     {
  504.         $this->sizes $sizes;
  505.         return $this;
  506.     }
  507.     /**
  508.      * @return Collection|CommandProduct[]
  509.      */
  510.     public function getCommandProducts(): Collection
  511.     {
  512.         return $this->commandProducts;
  513.     }
  514.     public function addCommandProduct(CommandProduct $commandProduct): self
  515.     {
  516.         if (!$this->commandProducts->contains($commandProduct)) {
  517.             $this->commandProducts[] = $commandProduct;
  518.             $commandProduct->setProduct($this);
  519.         }
  520.         return $this;
  521.     }
  522.     public function removeCommandProduct(CommandProduct $commandProduct): self
  523.     {
  524.         if ($this->commandProducts->contains($commandProduct)) {
  525.             $this->commandProducts->removeElement($commandProduct);
  526.             // set the owning side to null (unless already changed)
  527.             if ($commandProduct->getProduct() === $this) {
  528.                 $commandProduct->setProduct(null);
  529.             }
  530.         }
  531.         return $this;
  532.     }
  533.     /**
  534.      * @return Collection|Avis[]
  535.      */
  536.     public function getAvis(): Collection
  537.     {
  538.         return $this->avis;
  539.     }
  540.     public function addAvi(Avis $avi): self
  541.     {
  542.         if (!$this->avis->contains($avi)) {
  543.             $this->avis[] = $avi;
  544.             $avi->setProduct($this);
  545.         }
  546.         return $this;
  547.     }
  548.     public function removeAvi(Avis $avi): self
  549.     {
  550.         if ($this->avis->contains($avi)) {
  551.             $this->avis->removeElement($avi);
  552.             // set the owning side to null (unless already changed)
  553.             if ($avi->getProduct() === $this) {
  554.                 $avi->setProduct(null);
  555.             }
  556.         }
  557.         return $this;
  558.     }
  559.     public function getPack(): ?Pack
  560.     {
  561.         return $this->pack;
  562.     }
  563.     public function setPack(?Pack $pack): self
  564.     {
  565.         $this->pack $pack;
  566.         return $this;
  567.     }
  568.     public function getNbGuest(): ?int
  569.     {
  570.         return $this->nbGuest;
  571.     }
  572.     public function setNbGuest(?int $nbGuest): self
  573.     {
  574.         $this->nbGuest $nbGuest;
  575.         return $this;
  576.     }
  577.     public function getYoutubeVideo(): ?string
  578.     {
  579.         return $this->youtubeVideo;
  580.     }
  581.     public function setYoutubeVideo(?string $youtubeVideo): self
  582.     {
  583.         $this->youtubeVideo $youtubeVideo;
  584.         return $this;
  585.     }
  586.     public function getIsActivated(): ?bool
  587.     {
  588.         return $this->isActivated;
  589.     }
  590.     public function setIsActivated(bool $isActivated): self
  591.     {
  592.         $this->isActivated $isActivated;
  593.         return $this;
  594.     }
  595.     /**
  596.      * @return false
  597.      */
  598.     public function getIsDesactivatedByAdmin(): bool
  599.     {
  600.         return $this->isDesactivatedByAdmin;
  601.     }
  602.     /**
  603.      * @param false $isDesactivatedByAdmin
  604.      * @return Product
  605.      */
  606.     public function setIsDesactivatedByAdmin(bool $isDesactivatedByAdmin): Product
  607.     {
  608.         $this->isDesactivatedByAdmin $isDesactivatedByAdmin;
  609.         return $this;
  610.     }
  611.     public function getModeLivraison(): ?array
  612.     {
  613.         return $this->modeLivraison;
  614.     }
  615.     public function setModeLivraison(?array $modeLivraison): self
  616.     {
  617.         $this->modeLivraison $modeLivraison;
  618.         return $this;
  619.     }
  620.     public function getFraisLivraison(): ?float
  621.     {
  622.         return $this->fraisLivraison;
  623.     }
  624.     public function setFraisLivraison(?float $fraisLivraison): self
  625.     {
  626.         $this->fraisLivraison $fraisLivraison;
  627.         return $this;
  628.     }
  629.     public function getColors(): ?array
  630.     {
  631.         return $this->colors;
  632.     }
  633.     public function setColors(?array $colors): self
  634.     {
  635.         $this->colors $colors;
  636.         return $this;
  637.     }
  638.     /**
  639.      * @return Collection|ProductPercent[]
  640.      */
  641.     public function getProductPercents(): Collection
  642.     {
  643.         return $this->productPercents;
  644.     }
  645.     public function addProductPercent(ProductPercent $productPercent): self
  646.     {
  647.         if (!$this->productPercents->contains($productPercent)) {
  648.             $this->productPercents[] = $productPercent;
  649.             $productPercent->setProduct($this);
  650.         }
  651.         return $this;
  652.     }
  653.     public function removeProductPercent(ProductPercent $productPercent): self
  654.     {
  655.         if ($this->productPercents->contains($productPercent)) {
  656.             $this->productPercents->removeElement($productPercent);
  657.             // set the owning side to null (unless already changed)
  658.             if ($productPercent->getProduct() === $this) {
  659.                 $productPercent->setProduct(null);
  660.             }
  661.         }
  662.         return $this;
  663.     }
  664.     public function getProductNamePrice()
  665.     {
  666.         return $this->name ' - ' $this->price '€ - ' $this->getCompany()->getCompanyName();
  667.     }
  668.     public function getSizeRing(): ?array
  669.     {
  670.         return $this->sizeRing;
  671.     }
  672.     public function setSizeRing(?array $sizeRing): self
  673.     {
  674.         $this->sizeRing $sizeRing;
  675.         return $this;
  676.     }
  677.     /**
  678.      * @return Collection|ContactProduct[]
  679.      */
  680.     public function getContactProducts(): Collection
  681.     {
  682.         return $this->contactProducts;
  683.     }
  684.     public function addContactProduct(ContactProduct $contactProduct): self
  685.     {
  686.         if (!$this->contactProducts->contains($contactProduct)) {
  687.             $this->contactProducts[] = $contactProduct;
  688.             $contactProduct->setProduct($this);
  689.         }
  690.         return $this;
  691.     }
  692.     public function removeContactProduct(ContactProduct $contactProduct): self
  693.     {
  694.         if ($this->contactProducts->contains($contactProduct)) {
  695.             $this->contactProducts->removeElement($contactProduct);
  696.             // set the owning side to null (unless already changed)
  697.             if ($contactProduct->getProduct() === $this) {
  698.                 $contactProduct->setProduct(null);
  699.             }
  700.         }
  701.         return $this;
  702.     }
  703.     /**
  704.      * @return Collection|ProductOption[]
  705.      */
  706.     public function getProductOptions(): Collection
  707.     {
  708.         return $this->productOptions;
  709.     }
  710.     public function addProductOption(ProductOption $productOption): self
  711.     {
  712.         if (!$this->productOptions->contains($productOption)) {
  713.             $this->productOptions[] = $productOption;
  714.             $productOption->setProduct($this);
  715.         }
  716.         return $this;
  717.     }
  718.     public function removeProductOption(ProductOption $productOption): self
  719.     {
  720.         if ($this->productOptions->removeElement($productOption)) {
  721.             // set the owning side to null (unless already changed)
  722.             if ($productOption->getProduct() === $this) {
  723.                 $productOption->setProduct(null);
  724.             }
  725.         }
  726.         return $this;
  727.     }
  728.     /**
  729.      * @return Collection|SubCategory[]
  730.      */
  731.     public function getSubCategories(): Collection
  732.     {
  733.         return $this->subCategories;
  734.     }
  735.     public function addSubCategory(SubCategory $subCategory): self
  736.     {
  737.         if (!$this->subCategories->contains($subCategory)) {
  738.             $this->subCategories[] = $subCategory;
  739.         }
  740.         return $this;
  741.     }
  742.     public function removeSubCategory(SubCategory $subCategory): self
  743.     {
  744.         $this->subCategories->removeElement($subCategory);
  745.         return $this;
  746.     }
  747.     public function getWeight(): ?string
  748.     {
  749.         return $this->weight;
  750.     }
  751.     public function setWeight(?string $weight): self
  752.     {
  753.         $this->weight $weight;
  754.         return $this;
  755.     }
  756.     public function getTransporteurs(): ?array
  757.     {
  758.         return $this->transporteurs;
  759.     }
  760.     public function setTransporteurs(?array $transporteurs): self
  761.     {
  762.         $this->transporteurs $transporteurs;
  763.         return $this;
  764.     }
  765.     public function getCodePromo(): ?string
  766.     {
  767.         return $this->codePromo;
  768.     }
  769.     public function setCodePromo(?string $codePromo): self
  770.     {
  771.         $this->codePromo $codePromo;
  772.         return $this;
  773.     }
  774.     public function getCodePromoEuro(): ?float
  775.     {
  776.         return $this->codePromoEuro;
  777.     }
  778.     public function setCodePromoEuro(?float $codePromoEuro): self
  779.     {
  780.         $this->codePromoEuro $codePromoEuro;
  781.         return $this;
  782.     }
  783.     public function getProductDescription(): ?ProductDescription
  784.     {
  785.         return $this->productDescription;
  786.     }
  787.     public function setProductDescription(?ProductDescription $productDescription): self
  788.     {
  789.         // unset the owning side of the relation if necessary
  790.         if ($productDescription === null && $this->productDescription !== null) {
  791.             $this->productDescription->setProduct(null);
  792.         }
  793.         // set the owning side of the relation if necessary
  794.         if ($productDescription !== null && $productDescription->getProduct() !== $this) {
  795.             $productDescription->setProduct($this);
  796.         }
  797.         $this->productDescription $productDescription;
  798.         return $this;
  799.     }
  800.     public function getTemplate(): ?int
  801.     {
  802.         return $this->template;
  803.     }
  804.     public function setTemplate(?int $template): self
  805.     {
  806.         $this->template $template;
  807.         return $this;
  808.     }
  809.     /**
  810.      * @return Collection|AnnonceCompany[]
  811.      */
  812.     public function getAnnonceCompanies(): Collection
  813.     {
  814.         return $this->annonceCompanies;
  815.     }
  816.     public function addAnnonceCompany(AnnonceCompany $annonceCompany): self
  817.     {
  818.         if (!$this->annonceCompanies->contains($annonceCompany)) {
  819.             $this->annonceCompanies[] = $annonceCompany;
  820.             $annonceCompany->setProducts($this);
  821.         }
  822.         return $this;
  823.     }
  824.     public function removeAnnonceCompany(AnnonceCompany $annonceCompany): self
  825.     {
  826.         if ($this->annonceCompanies->removeElement($annonceCompany)) {
  827.             // set the owning side to null (unless already changed)
  828.             if ($annonceCompany->getProducts() === $this) {
  829.                 $annonceCompany->setProducts(null);
  830.             }
  831.         }
  832.         return $this;
  833.     }
  834.     public function getTypeLocation(): ?TypeLocation
  835.     {
  836.         return $this->typeLocation;
  837.     }
  838.     public function setTypeLocation(?TypeLocation $typeLocation): self
  839.     {
  840.         $this->typeLocation $typeLocation;
  841.         return $this;
  842.     }
  843.     public function getTypePrestation(): ?TypePrestation
  844.     {
  845.         return $this->typePrestation;
  846.     }
  847.     public function setTypePrestation(?TypePrestation $typePrestation): self
  848.     {
  849.         $this->typePrestation $typePrestation;
  850.         return $this;
  851.     }
  852.     /**
  853.      * @return Collection|Location[]
  854.      */
  855.     public function getLocations(): Collection
  856.     {
  857.         return $this->locations;
  858.     }
  859.     public function addLocation(Location $location): self
  860.     {
  861.         if (!$this->locations->contains($location)) {
  862.             $this->locations[] = $location;
  863.             $location->setProduct($this);
  864.         }
  865.         return $this;
  866.     }
  867.     public function removeLocation(Location $location): self
  868.     {
  869.         if ($this->locations->removeElement($location)) {
  870.             // set the owning side to null (unless already changed)
  871.             if ($location->getProduct() === $this) {
  872.                 $location->setProduct(null);
  873.             }
  874.         }
  875.         return $this;
  876.     }
  877.     /**
  878.      * @return Collection|Reservation[]
  879.      */
  880.     public function getReservations(): Collection
  881.     {
  882.         return $this->reservations;
  883.     }
  884.     public function addReservation(Reservation $reservation): self
  885.     {
  886.         if (!$this->reservations->contains($reservation)) {
  887.             $this->reservations[] = $reservation;
  888.             $reservation->setProduct($this);
  889.         }
  890.         return $this;
  891.     }
  892.     public function removeReservation(Reservation $reservation): self
  893.     {
  894.         if ($this->reservations->removeElement($reservation)) {
  895.             // set the owning side to null (unless already changed)
  896.             if ($reservation->getProduct() === $this) {
  897.                 $reservation->setProduct(null);
  898.             }
  899.         }
  900.         return $this;
  901.     }
  902.     public function getTva(): ?Tva
  903.     {
  904.         return $this->tva;
  905.     }
  906.     public function setTva(?Tva $tva): self
  907.     {
  908.         $this->tva $tva;
  909.         return $this;
  910.     }
  911.     /**
  912.      * @return Collection|Caution[]
  913.      */
  914.     public function getCautions(): Collection
  915.     {
  916.         return $this->cautions;
  917.     }
  918.     public function addCaution(Caution $caution): self
  919.     {
  920.         if (!$this->cautions->contains($caution)) {
  921.             $this->cautions[] = $caution;
  922.             $caution->setProduct($this);
  923.         }
  924.         return $this;
  925.     }
  926.     public function removeCaution(Caution $caution): self
  927.     {
  928.         if ($this->cautions->removeElement($caution)) {
  929.             // set the owning side to null (unless already changed)
  930.             if ($caution->getProduct() === $this) {
  931.                 $caution->setProduct(null);
  932.             }
  933.         }
  934.         return $this;
  935.     }
  936.     /**
  937.      * @return Collection|Participant[]
  938.      */
  939.     public function getParticipants(): Collection
  940.     {
  941.         return $this->participants;
  942.     }
  943.     public function addParticipant(Participant $participant): self
  944.     {
  945.         if (!$this->participants->contains($participant)) {
  946.             $this->participants[] = $participant;
  947.             $participant->setProduit($this);
  948.         }
  949.         return $this;
  950.     }
  951.     public function removeParticipant(Participant $participant): self
  952.     {
  953.         if ($this->participants->removeElement($participant)) {
  954.             // set the owning side to null (unless already changed)
  955.             if ($participant->getProduit() === $this) {
  956.                 $participant->setProduit(null);
  957.             }
  958.         }
  959.         return $this;
  960.     }
  961.     public function getTypeHebergements(): ?TypeHebergement
  962.     {
  963.         return $this->typeHebergements;
  964.     }
  965.     public function setTypeHebergements(?TypeHebergement $typeHebergements): self
  966.     {
  967.         $this->typeHebergements $typeHebergements;
  968.         return $this;
  969.     }
  970.     /**
  971.      * @return Collection|Chambre[]
  972.      */
  973.     public function getChambres(): Collection
  974.     {
  975.         return $this->chambres;
  976.     }
  977.     public function addChambre(Chambre $chambre): self
  978.     {
  979.         if (!$this->chambres->contains($chambre)) {
  980.             $this->chambres[] = $chambre;
  981.             $chambre->setProduct($this);
  982.         }
  983.         return $this;
  984.     }
  985.     public function removeChambre(Chambre $chambre): self
  986.     {
  987.         $this->chambres->removeElement($chambre);
  988.         return $this;
  989.     }
  990.     /**
  991.      * @return Collection|Caracteristic[]
  992.      */
  993.     public function getCaracteristics(): Collection
  994.     {
  995.         return $this->caracteristics;
  996.     }
  997.     public function addCaracteristic(Caracteristic $caracteristic): self
  998.     {
  999.         if (!$this->caracteristics->contains($caracteristic)) {
  1000.             $this->caracteristics[] = $caracteristic;
  1001.             $caracteristic->addProduct($this);
  1002.         }
  1003.         return $this;
  1004.     }
  1005.     public function removeCaracteristic(Caracteristic $caracteristic): self
  1006.     {
  1007.         if ($this->caracteristics->removeElement($caracteristic)) {
  1008.             $caracteristic->removeProduct($this);
  1009.         }
  1010.         return $this;
  1011.     }
  1012.     /**
  1013.      * @return Collection|Equipment[]
  1014.      */
  1015.     public function getEquipment(): Collection
  1016.     {
  1017.         return $this->equipment;
  1018.     }
  1019.     public function addEquipment(Equipment $equipment): self
  1020.     {
  1021.         if (!$this->equipment->contains($equipment)) {
  1022.             $this->equipment[] = $equipment;
  1023.             $equipment->addProduct($this);
  1024.         }
  1025.         return $this;
  1026.     }
  1027.     public function removeEquipment(Equipment $equipment): self
  1028.     {
  1029.         if ($this->equipment->removeElement($equipment)) {
  1030.             $equipment->removeProduct($this);
  1031.         }
  1032.         return $this;
  1033.     }
  1034.     /**
  1035.      * @return Collection|LangueHote[]
  1036.      */
  1037.     public function getLangueHotes(): Collection
  1038.     {
  1039.         return $this->langueHotes;
  1040.     }
  1041.     public function addLangueHote(LangueHote $langueHote): self
  1042.     {
  1043.         if (!$this->langueHotes->contains($langueHote)) {
  1044.             $this->langueHotes[] = $langueHote;
  1045.             $langueHote->addProduct($this);
  1046.         }
  1047.         return $this;
  1048.     }
  1049.     public function removeLangueHote(LangueHote $langueHote): self
  1050.     {
  1051.         if ($this->langueHotes->removeElement($langueHote)) {
  1052.             $langueHote->removeProduct($this);
  1053.         }
  1054.         return $this;
  1055.     }
  1056.     /**
  1057.      * @return Collection|TypeLocalisation[]
  1058.      */
  1059.     public function getTypeLocalisations(): Collection
  1060.     {
  1061.         return $this->typeLocalisations;
  1062.     }
  1063.     public function addTypeLocalisation(TypeLocalisation $typeLocalisation): self
  1064.     {
  1065.         if (!$this->typeLocalisations->contains($typeLocalisation)) {
  1066.             $this->typeLocalisations[] = $typeLocalisation;
  1067.             $typeLocalisation->addProduct($this);
  1068.         }
  1069.         return $this;
  1070.     }
  1071.     public function removeTypeLocalisation(TypeLocalisation $typeLocalisation): self
  1072.     {
  1073.         if ($this->typeLocalisations->removeElement($typeLocalisation)) {
  1074.             $typeLocalisation->removeProduct($this);
  1075.         }
  1076.         return $this;
  1077.     }
  1078.     /**
  1079.      * @return Collection|Security[]
  1080.      */
  1081.     public function getSecurities(): Collection
  1082.     {
  1083.         return $this->securities;
  1084.     }
  1085.     public function addSecurity(Security $security): self
  1086.     {
  1087.         if (!$this->securities->contains($security)) {
  1088.             $this->securities[] = $security;
  1089.             $security->addProduct($this);
  1090.         }
  1091.         return $this;
  1092.     }
  1093.     public function removeSecurity(Security $security): self
  1094.     {
  1095.         if ($this->securities->removeElement($security)) {
  1096.             $security->removeProduct($this);
  1097.         }
  1098.         return $this;
  1099.     }
  1100.     public function getTaxeSejour(): ?float
  1101.     {
  1102.         return $this->taxeSejour;
  1103.     }
  1104.     public function setTaxeSejour(?float $taxeSejour): self
  1105.     {
  1106.         $this->taxeSejour $taxeSejour;
  1107.         return $this;
  1108.     }
  1109.     public function getPrixCaution(): ?float
  1110.     {
  1111.         return $this->prixCaution;
  1112.     }
  1113.     public function setPrixCaution(?float $prixCaution): self
  1114.     {
  1115.         $this->prixCaution $prixCaution;
  1116.         return $this;
  1117.     }
  1118.     public function getLongitude(): ?float
  1119.     {
  1120.         return $this->longitude;
  1121.     }
  1122.     public function setLongitude(?float $longitude): self
  1123.     {
  1124.         $this->longitude $longitude;
  1125.         return $this;
  1126.     }
  1127.     public function getLatitude(): ?float
  1128.     {
  1129.         return $this->latitude;
  1130.     }
  1131.     public function setLatitude(?float $latitude): self
  1132.     {
  1133.         $this->latitude $latitude;
  1134.         return $this;
  1135.     }
  1136.     public function getTypeActivity(): ?ActivityType
  1137.     {
  1138.         return $this->typeActivity;
  1139.     }
  1140.     public function setTypeActivity(?ActivityType $typeActivity): self
  1141.     {
  1142.         $this->typeActivity $typeActivity;
  1143.         return $this;
  1144.     }
  1145.     /**
  1146.      * @return Collection<int, ProductReduction>
  1147.      */
  1148.     public function getProductReductions(): Collection
  1149.     {
  1150.         return $this->productReductions;
  1151.     }
  1152.     public function addProductReduction(ProductReduction $productReduction): self
  1153.     {
  1154.         if (!$this->productReductions->contains($productReduction)) {
  1155.             $this->productReductions[] = $productReduction;
  1156.             $productReduction->setProduct($this);
  1157.         }
  1158.         return $this;
  1159.     }
  1160.     public function removeProductReduction(ProductReduction $productReduction): self
  1161.     {
  1162.         if ($this->productReductions->removeElement($productReduction)) {
  1163.             // set the owning side to null (unless already changed)
  1164.             if ($productReduction->getProduct() === $this) {
  1165.                 $productReduction->setProduct(null);
  1166.             }
  1167.         }
  1168.         return $this;
  1169.     }
  1170.     public function getSpringPrice(): ?float
  1171.     {
  1172.         return $this->springPrice;
  1173.     }
  1174.     public function setSpringPrice(?float $springPrice): self
  1175.     {
  1176.         $this->springPrice $springPrice;
  1177.         return $this;
  1178.     }
  1179.     public function getSummerPrice(): ?float
  1180.     {
  1181.         return $this->summerPrice;
  1182.     }
  1183.     public function setSummerPrice(?float $summerPrice): self
  1184.     {
  1185.         $this->summerPrice $summerPrice;
  1186.         return $this;
  1187.     }
  1188.     public function getAutumnPrice(): ?float
  1189.     {
  1190.         return $this->autumnPrice;
  1191.     }
  1192.     public function setAutumnPrice(?float $autumnPrice): self
  1193.     {
  1194.         $this->autumnPrice $autumnPrice;
  1195.         return $this;
  1196.     }
  1197.     public function getWinterPrice(): ?float
  1198.     {
  1199.         return $this->winterPrice;
  1200.     }
  1201.     public function setWinterPrice(?float $winterPrice): self
  1202.     {
  1203.         $this->winterPrice $winterPrice;
  1204.         return $this;
  1205.     }
  1206.     public function getWeekEndPrice(): ?float
  1207.     {
  1208.         return $this->weekEndPrice;
  1209.     }
  1210.     public function setWeekEndPrice(?float $weekEndPrice): self
  1211.     {
  1212.         $this->weekEndPrice $weekEndPrice;
  1213.         return $this;
  1214.     }
  1215.     /**
  1216.      * @return Collection<int, ProgrammingDayPrice>
  1217.      */
  1218.     public function getDayPrice(): Collection
  1219.     {
  1220.         return $this->dayPrice;
  1221.     }
  1222.     public function addDayPrice(ProgrammingDayPrice $dayPrice): self
  1223.     {
  1224.         if (!$this->dayPrice->contains($dayPrice)) {
  1225.             $this->dayPrice[] = $dayPrice;
  1226.             $dayPrice->setProduct($this);
  1227.         }
  1228.         return $this;
  1229.     }
  1230.     public function removeDayPrice(ProgrammingDayPrice $dayPrice): self
  1231.     {
  1232.         if ($this->dayPrice->removeElement($dayPrice)) {
  1233.             // set the owning side to null (unless already changed)
  1234.             if ($dayPrice->getProduct() === $this) {
  1235.                 $dayPrice->setProduct(null);
  1236.             }
  1237.         }
  1238.         return $this;
  1239.     }
  1240.     /**
  1241.      * @return Collection<int, ProductAgenda>
  1242.      */
  1243.     public function getProductAgendas(): Collection
  1244.     {
  1245.         return $this->productAgendas;
  1246.     }
  1247.     public function addProductAgenda(ProductAgenda $productAgenda): self
  1248.     {
  1249.         if (!$this->productAgendas->contains($productAgenda)) {
  1250.             $this->productAgendas[] = $productAgenda;
  1251.             $productAgenda->setProduct($this);
  1252.         }
  1253.     }
  1254.     public function removeProductAgenda(ProductAgenda $productAgenda): self
  1255.     {
  1256.         if ($this->productAgendas->removeElement($productAgenda)) {
  1257.             // set the owning side to null (unless already changed)
  1258.             if ($productAgenda->getProduct() === $this) {
  1259.                 $productAgenda->setProduct(null);
  1260.             }
  1261.         }
  1262.     }
  1263.     /**
  1264.      * @return Collection<int, ProductAutoReduction>
  1265.      */
  1266.     public function getProductAutoReduction(): Collection
  1267.     {
  1268.         return $this->productAutoReduction;
  1269.     }
  1270.     public function addProductAutoReduction(ProductAutoReduction $productAutoReduction): self
  1271.     {
  1272.         if (!$this->productAutoReduction->contains($productAutoReduction)) {
  1273.             $this->productAutoReduction[] = $productAutoReduction;
  1274.             $productAutoReduction->setProduct($this);
  1275.         }
  1276.         return $this;
  1277.     }
  1278.     public function removeProductAutoReduction(ProductAutoReduction $productAutoReduction): self
  1279.     {
  1280.         if ($this->productAutoReduction->removeElement($productAutoReduction)) {
  1281.             // set the owning side to null (unless already changed)
  1282.             if ($productAutoReduction->getProduct() === $this) {
  1283.                 $productAutoReduction->setProduct(null);
  1284.             }
  1285.         }
  1286.         return $this;
  1287.     }
  1288.     /**
  1289.      * @return Collection<int, Publication>
  1290.      */
  1291.     public function getPublications(): Collection
  1292.     {
  1293.         return $this->publications;
  1294.     }
  1295.     public function addPublication(Publication $publication): self
  1296.     {
  1297.         if (!$this->publications->contains($publication)) {
  1298.             $this->publications[] = $publication;
  1299.             $publication->setProductCompany($this);
  1300.         }
  1301.         return $this;
  1302.     }
  1303.     public function removePublication(Publication $publication): self
  1304.     {
  1305.         if ($this->publications->removeElement($publication)) {
  1306.             // set the owning side to null (unless already changed)
  1307.             if ($publication->getProductCompany() === $this) {
  1308.                 $publication->setProductCompany(null);
  1309.             }
  1310.         }
  1311.         return $this;
  1312.     }
  1313.     /**
  1314.      * @return Collection<int, PendingLocation>
  1315.      */
  1316.     public function getPendingLocations(): Collection
  1317.     {
  1318.         return $this->pendingLocations;
  1319.     }
  1320.     public function addPendingLocation(PendingLocation $pendingLocation): self
  1321.     {
  1322.         if (!$this->pendingLocations->contains($pendingLocation)) {
  1323.             $this->pendingLocations[] = $pendingLocation;
  1324.             $pendingLocation->setProduct($this);
  1325.         }
  1326.         return $this;
  1327.     }
  1328.     public function removePendingLocation(PendingLocation $pendingLocation): self
  1329.     {
  1330.         if ($this->pendingLocations->removeElement($pendingLocation)) {
  1331.             // set the owning side to null (unless already changed)
  1332.             if ($pendingLocation->getProduct() === $this) {
  1333.                 $pendingLocation->setProduct(null);
  1334.             }
  1335.         }
  1336.         return $this;
  1337.     }
  1338.     /**
  1339.      * @return Collection<int, PendingReservation>
  1340.      */
  1341.     public function getPendingReservations(): Collection
  1342.     {
  1343.         return $this->pendingReservations;
  1344.     }
  1345.     public function addPendingReservation(PendingReservation $pendingReservation): self
  1346.     {
  1347.         if (!$this->pendingReservations->contains($pendingReservation)) {
  1348.             $this->pendingReservations[] = $pendingReservation;
  1349.             $pendingReservation->setProduct($this);
  1350.         }
  1351.         return $this;
  1352.     }
  1353.     public function removePendingReservation(PendingReservation $pendingReservation): self
  1354.     {
  1355.         if ($this->pendingReservations->removeElement($pendingReservation)) {
  1356.             // set the owning side to null (unless already changed)
  1357.             if ($pendingReservation->getProduct() === $this) {
  1358.                 $pendingReservation->setProduct(null);
  1359.             }
  1360.         }
  1361.         return $this;
  1362.     }
  1363.     /**
  1364.      * @return Collection<int, ProductPeriodPrice>
  1365.      */
  1366.     public function getPeriodPrice(): Collection
  1367.     {
  1368.         return $this->periodPrice;
  1369.     }
  1370.     public function addPeriodPrice(ProductPeriodPrice $periodPrice): self
  1371.     {
  1372.         if (!$this->periodPrice->contains($periodPrice)) {
  1373.             $this->periodPrice[] = $periodPrice;
  1374.             $periodPrice->setProduct($this);
  1375.         }
  1376.         return $this;
  1377.     }
  1378.     public function removePeriodPrice(ProductPeriodPrice $periodPrice): self
  1379.     {
  1380.         if ($this->periodPrice->removeElement($periodPrice)) {
  1381.             // set the owning side to null (unless already changed)
  1382.             if ($periodPrice->getProduct() === $this) {
  1383.                 $periodPrice->setProduct(null);
  1384.             }
  1385.         }
  1386.         return $this;
  1387.     }
  1388.     public function getCityLocalisation(): ?string
  1389.     {
  1390.         return $this->cityLocalisation;
  1391.     }
  1392.     public function setCityLocalisation(?string $cityLocalisation): self
  1393.     {
  1394.         $this->cityLocalisation $cityLocalisation;
  1395.         return $this;
  1396.     }
  1397.     public function getNbChambre(): ?int
  1398.     {
  1399.         return $this->nbChambre;
  1400.     }
  1401.     public function setNbChambre(?int $nbChambre): self
  1402.     {
  1403.         $this->nbChambre $nbChambre;
  1404.         return $this;
  1405.     }
  1406.     public function getNightMin(): ?int
  1407.     {
  1408.         return $this->nightMin;
  1409.     }
  1410.     public function setNightMin(?int $nightMin): self
  1411.     {
  1412.         $this->nightMin $nightMin;
  1413.         return $this;
  1414.     }
  1415.     /**
  1416.      * @return Collection<int, TarifDegressif>
  1417.      */
  1418.     public function getTarifDegressifs(): Collection
  1419.     {
  1420.         return $this->tarifDegressifs;
  1421.     }
  1422.     public function addTarifDegressif(TarifDegressif $tarifDegressif): self
  1423.     {
  1424.         if (!$this->tarifDegressifs->contains($tarifDegressif)) {
  1425.             $this->tarifDegressifs[] = $tarifDegressif;
  1426.             $tarifDegressif->setProduct($this);
  1427.         }
  1428.         return $this;
  1429.     }
  1430.     public function removeTarifDegressif(TarifDegressif $tarifDegressif): self
  1431.     {
  1432.         if ($this->tarifDegressifs->removeElement($tarifDegressif)) {
  1433.             // set the owning side to null (unless already changed)
  1434.             if ($tarifDegressif->getProduct() === $this) {
  1435.                 $tarifDegressif->setProduct(null);
  1436.             }
  1437.         }
  1438.         return $this;
  1439.     }
  1440.     /**
  1441.      * @return Collection<int, EquipementsCuisine>
  1442.      */
  1443.     public function getEquipementsCuisines(): Collection
  1444.     {
  1445.         return $this->equipementsCuisines;
  1446.     }
  1447.     public function addEquipementsCuisine(EquipementsCuisine $equipementsCuisine): self
  1448.     {
  1449.         if (!$this->equipementsCuisines->contains($equipementsCuisine)) {
  1450.             $this->equipementsCuisines[] = $equipementsCuisine;
  1451.             $equipementsCuisine->addProduct($this);
  1452.         }
  1453.         return $this;
  1454.     }
  1455.     public function removeEquipementsCuisine(EquipementsCuisine $equipementsCuisine): self
  1456.     {
  1457.         if ($this->equipementsCuisines->removeElement($equipementsCuisine)) {
  1458.             $equipementsCuisine->removeProduct($this);
  1459.         }
  1460.         return $this;
  1461.     }
  1462.     /**
  1463.      * @return Collection<int, SalleDeBain>
  1464.      */
  1465.     public function getSalleDeBains(): Collection
  1466.     {
  1467.         return $this->salleDeBains;
  1468.     }
  1469.     public function addSalleDeBain(SalleDeBain $salleDeBain): self
  1470.     {
  1471.         if (!$this->salleDeBains->contains($salleDeBain)) {
  1472.             $this->salleDeBains[] = $salleDeBain;
  1473.             $salleDeBain->addProduct($this);
  1474.         }
  1475.         return $this;
  1476.     }
  1477.     public function removeSalleDeBain(SalleDeBain $salleDeBain): self
  1478.     {
  1479.         if ($this->salleDeBains->removeElement($salleDeBain)) {
  1480.             $salleDeBain->removeProduct($this);
  1481.         }
  1482.         return $this;
  1483.     }
  1484.     /**
  1485.      * @return Collection<int, AccessoiresDeChambre>
  1486.      */
  1487.     public function getAccessoiresDeChambres(): Collection
  1488.     {
  1489.         return $this->accessoiresDeChambres;
  1490.     }
  1491.     public function addAccessoiresDeChambre(AccessoiresDeChambre $accessoiresDeChambre): self
  1492.     {
  1493.         if (!$this->accessoiresDeChambres->contains($accessoiresDeChambre)) {
  1494.             $this->accessoiresDeChambres[] = $accessoiresDeChambre;
  1495.             $accessoiresDeChambre->addProduct($this);
  1496.         }
  1497.         return $this;
  1498.     }
  1499.     public function removeAccessoiresDeChambre(AccessoiresDeChambre $accessoiresDeChambre): self
  1500.     {
  1501.         if ($this->accessoiresDeChambres->removeElement($accessoiresDeChambre)) {
  1502.             $accessoiresDeChambre->removeProduct($this);
  1503.         }
  1504.         return $this;
  1505.     }
  1506.     /**
  1507.      * @return Collection<int, MobilierExterieur>
  1508.      */
  1509.     public function getMobilierExterieurs(): Collection
  1510.     {
  1511.         return $this->mobilierExterieurs;
  1512.     }
  1513.     public function addMobilierExterieur(MobilierExterieur $mobilierExterieur): self
  1514.     {
  1515.         if (!$this->mobilierExterieurs->contains($mobilierExterieur)) {
  1516.             $this->mobilierExterieurs[] = $mobilierExterieur;
  1517.             $mobilierExterieur->addProduct($this);
  1518.         }
  1519.         return $this;
  1520.     }
  1521.     public function removeMobilierExterieur(MobilierExterieur $mobilierExterieur): self
  1522.     {
  1523.         if ($this->mobilierExterieurs->removeElement($mobilierExterieur)) {
  1524.             $mobilierExterieur->removeProduct($this);
  1525.         }
  1526.         return $this;
  1527.     }
  1528.     public function getCaracteristiqueVehicule(): ?CaracteristiqueVehicule
  1529.     {
  1530.         return $this->caracteristiqueVehicule;
  1531.     }
  1532.     public function setCaracteristiqueVehicule(?CaracteristiqueVehicule $caracteristiqueVehicule): self
  1533.     {
  1534.         $this->caracteristiqueVehicule $caracteristiqueVehicule;
  1535.         return $this;
  1536.     }
  1537.     /**
  1538.      * @return Collection<int, Notification>
  1539.      */
  1540.     public function getNotificationReservation(): Collection
  1541.     {
  1542.         return $this->notificationReservation;
  1543.     }
  1544.     public function addNotificationReservation(Notification $notificationReservation): self
  1545.     {
  1546.         if (!$this->notificationReservation->contains($notificationReservation)) {
  1547.             $this->notificationReservation[] = $notificationReservation;
  1548.             $notificationReservation->setProduct($this);
  1549.         }
  1550.         return $this;
  1551.     }
  1552.     public function removeNotificationReservation(Notification $notificationReservation): self
  1553.     {
  1554.         if ($this->notificationReservation->removeElement($notificationReservation)) {
  1555.             // set the owning side to null (unless already changed)
  1556.             if ($notificationReservation->getProduct() === $this) {
  1557.                 $notificationReservation->setProduct(null);
  1558.             }
  1559.         }
  1560.         return $this;
  1561.     }
  1562.     public function getCommune(): ?Commune
  1563.     {
  1564.         return $this->commune;
  1565.     }
  1566.     public function setCommune(?Commune $commune): self
  1567.     {
  1568.         $this->commune $commune;
  1569.         return $this;
  1570.     }
  1571. }