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.     /**
  333.      * @ORM\ManyToMany(targetEntity=LocalisatioHebergs::class, mappedBy="produit")
  334.      */
  335.     private $localisatioHebergs;
  336.     public function __construct()
  337.     {
  338.         $this->photos = new ArrayCollection();
  339.         $this->departments = new ArrayCollection();
  340.         $this->commandProducts = new ArrayCollection();
  341.         $this->avis = new ArrayCollection();
  342.         $this->isActivated true;
  343.         $this->isDesactivatedByAdmin false;
  344.         $this->productPercents = new ArrayCollection();
  345.         $this->contactProducts = new ArrayCollection();
  346.         $this->productOptions = new ArrayCollection();
  347.         $this->subCategories = new ArrayCollection();
  348.         $this->annonceCompanies = new ArrayCollection();
  349.         $this->locations = new ArrayCollection();
  350.         $this->reservations = new ArrayCollection();
  351.         $this->cautions = new ArrayCollection();
  352.         $this->participants = new ArrayCollection();
  353.         $this->chambres = new ArrayCollection();
  354.         $this->caracteristics = new ArrayCollection();
  355.         $this->equipment = new ArrayCollection();
  356.         $this->langueHotes = new ArrayCollection();
  357.         $this->typeLocalisations = new ArrayCollection();
  358.         $this->securities = new ArrayCollection();
  359.         $this->productReductions = new ArrayCollection();
  360.         $this->dayPrice = new ArrayCollection();
  361.         $this->productAgendas = new ArrayCollection();
  362.         $this->productAutoReduction = new ArrayCollection();
  363.         $this->publications = new ArrayCollection();
  364.         $this->pendingLocations = new ArrayCollection();
  365.         $this->pendingReservations = new ArrayCollection();
  366.         $this->periodPrice = new ArrayCollection();
  367.         $this->tarifDegressifs = new ArrayCollection();
  368.         $this->equipementsCuisines = new ArrayCollection();
  369.         $this->salleDeBains = new ArrayCollection();
  370.         $this->accessoiresDeChambres = new ArrayCollection();
  371.         $this->mobilierExterieurs = new ArrayCollection();
  372.         $this->notificationReservation = new ArrayCollection();
  373.         $this->localisatioHebergs = new ArrayCollection();
  374.     }
  375.     public function getId(): ?int
  376.     {
  377.         return $this->id;
  378.     }
  379.     public function getPercentDeposit(): ?int
  380.     {
  381.         return $this->percentDeposit;
  382.     }
  383.     public function setPercentDeposit(?int $percentDeposit): self
  384.     {
  385.         $this->percentDeposit $percentDeposit;
  386.         return $this;
  387.     }
  388.     public function getDeadline(): ?int
  389.     {
  390.         return $this->deadline;
  391.     }
  392.     public function setDeadline(?int $deadline): self
  393.     {
  394.         $this->deadline $deadline;
  395.         return $this;
  396.     }
  397.     public function getName(): ?string
  398.     {
  399.         return $this->name;
  400.     }
  401.     public function setName(?string $name): self
  402.     {
  403.         $this->name $name;
  404.         return $this;
  405.     }
  406.     public function getText(): ?string
  407.     {
  408.         return $this->text;
  409.     }
  410.     public function setText(?string $text): self
  411.     {
  412.         $this->text $text;
  413.         return $this;
  414.     }
  415.     public function getPrice(): ?float
  416.     {
  417.         return $this->price;
  418.     }
  419.     public function setPrice(float $price): self
  420.     {
  421.         $this->price $price;
  422.         return $this;
  423.     }
  424.     public function getQuantity(): ?int
  425.     {
  426.         return $this->quantity;
  427.     }
  428.     public function setQuantity(?int $quantity): self
  429.     {
  430.         $this->quantity $quantity;
  431.         return $this;
  432.     }
  433.     /**
  434.      * @return Collection|Photos[]
  435.      */
  436.     public function getPhotos(): Collection
  437.     {
  438.         return $this->photos;
  439.     }
  440.     public function addPhoto(Photos $photo): self
  441.     {
  442.         if (!$this->photos->contains($photo)) {
  443.             $this->photos[] = $photo;
  444.             $photo->setProduct($this);
  445.         }
  446.         return $this;
  447.     }
  448.     public function removePhoto(Photos $photo): self
  449.     {
  450.         if ($this->photos->contains($photo)) {
  451.             $this->photos->removeElement($photo);
  452.             // set the owning side to null (unless already changed)
  453.             if ($photo->getProduct() === $this) {
  454.                 $photo->setProduct(null);
  455.             }
  456.         }
  457.         return $this;
  458.     }
  459.     public function getCompany(): ?Company
  460.     {
  461.         return $this->company;
  462.     }
  463.     public function setCompany(?Company $company): self
  464.     {
  465.         $this->company $company;
  466.         return $this;
  467.     }
  468.     /**
  469.      * @return mixed
  470.      */
  471.     public function getProductSlug()
  472.     {
  473.         return $this->productSlug;
  474.     }
  475.     /**
  476.      * @param mixed $productSlug
  477.      */
  478.     public function setProductSlug($productSlug): void
  479.     {
  480.         $this->productSlug $productSlug;
  481.     }
  482.     /**
  483.      * @return Collection|Department[]
  484.      */
  485.     public function getDepartments(): Collection
  486.     {
  487.         return $this->departments;
  488.     }
  489.     public function addDepartment(Department $department): self
  490.     {
  491.         if (!$this->departments->contains($department)) {
  492.             $this->departments[] = $department;
  493.         }
  494.         return $this;
  495.     }
  496.     public function removeDepartment(Department $department): self
  497.     {
  498.         if ($this->departments->contains($department)) {
  499.             $this->departments->removeElement($department);
  500.         }
  501.         return $this;
  502.     }
  503.     public function getSizes(): ?array
  504.     {
  505.         return $this->sizes;
  506.     }
  507.     public function setSizes(?array $sizes): self
  508.     {
  509.         $this->sizes $sizes;
  510.         return $this;
  511.     }
  512.     /**
  513.      * @return Collection|CommandProduct[]
  514.      */
  515.     public function getCommandProducts(): Collection
  516.     {
  517.         return $this->commandProducts;
  518.     }
  519.     public function addCommandProduct(CommandProduct $commandProduct): self
  520.     {
  521.         if (!$this->commandProducts->contains($commandProduct)) {
  522.             $this->commandProducts[] = $commandProduct;
  523.             $commandProduct->setProduct($this);
  524.         }
  525.         return $this;
  526.     }
  527.     public function removeCommandProduct(CommandProduct $commandProduct): self
  528.     {
  529.         if ($this->commandProducts->contains($commandProduct)) {
  530.             $this->commandProducts->removeElement($commandProduct);
  531.             // set the owning side to null (unless already changed)
  532.             if ($commandProduct->getProduct() === $this) {
  533.                 $commandProduct->setProduct(null);
  534.             }
  535.         }
  536.         return $this;
  537.     }
  538.     /**
  539.      * @return Collection|Avis[]
  540.      */
  541.     public function getAvis(): Collection
  542.     {
  543.         return $this->avis;
  544.     }
  545.     public function addAvi(Avis $avi): self
  546.     {
  547.         if (!$this->avis->contains($avi)) {
  548.             $this->avis[] = $avi;
  549.             $avi->setProduct($this);
  550.         }
  551.         return $this;
  552.     }
  553.     public function removeAvi(Avis $avi): self
  554.     {
  555.         if ($this->avis->contains($avi)) {
  556.             $this->avis->removeElement($avi);
  557.             // set the owning side to null (unless already changed)
  558.             if ($avi->getProduct() === $this) {
  559.                 $avi->setProduct(null);
  560.             }
  561.         }
  562.         return $this;
  563.     }
  564.     public function getPack(): ?Pack
  565.     {
  566.         return $this->pack;
  567.     }
  568.     public function setPack(?Pack $pack): self
  569.     {
  570.         $this->pack $pack;
  571.         return $this;
  572.     }
  573.     public function getNbGuest(): ?int
  574.     {
  575.         return $this->nbGuest;
  576.     }
  577.     public function setNbGuest(?int $nbGuest): self
  578.     {
  579.         $this->nbGuest $nbGuest;
  580.         return $this;
  581.     }
  582.     public function getYoutubeVideo(): ?string
  583.     {
  584.         return $this->youtubeVideo;
  585.     }
  586.     public function setYoutubeVideo(?string $youtubeVideo): self
  587.     {
  588.         $this->youtubeVideo $youtubeVideo;
  589.         return $this;
  590.     }
  591.     public function getIsActivated(): ?bool
  592.     {
  593.         return $this->isActivated;
  594.     }
  595.     public function setIsActivated(bool $isActivated): self
  596.     {
  597.         $this->isActivated $isActivated;
  598.         return $this;
  599.     }
  600.     /**
  601.      * @return false
  602.      */
  603.     public function getIsDesactivatedByAdmin(): bool
  604.     {
  605.         return $this->isDesactivatedByAdmin;
  606.     }
  607.     /**
  608.      * @param false $isDesactivatedByAdmin
  609.      * @return Product
  610.      */
  611.     public function setIsDesactivatedByAdmin(bool $isDesactivatedByAdmin): Product
  612.     {
  613.         $this->isDesactivatedByAdmin $isDesactivatedByAdmin;
  614.         return $this;
  615.     }
  616.     public function getModeLivraison(): ?array
  617.     {
  618.         return $this->modeLivraison;
  619.     }
  620.     public function setModeLivraison(?array $modeLivraison): self
  621.     {
  622.         $this->modeLivraison $modeLivraison;
  623.         return $this;
  624.     }
  625.     public function getFraisLivraison(): ?float
  626.     {
  627.         return $this->fraisLivraison;
  628.     }
  629.     public function setFraisLivraison(?float $fraisLivraison): self
  630.     {
  631.         $this->fraisLivraison $fraisLivraison;
  632.         return $this;
  633.     }
  634.     public function getColors(): ?array
  635.     {
  636.         return $this->colors;
  637.     }
  638.     public function setColors(?array $colors): self
  639.     {
  640.         $this->colors $colors;
  641.         return $this;
  642.     }
  643.     /**
  644.      * @return Collection|ProductPercent[]
  645.      */
  646.     public function getProductPercents(): Collection
  647.     {
  648.         return $this->productPercents;
  649.     }
  650.     public function addProductPercent(ProductPercent $productPercent): self
  651.     {
  652.         if (!$this->productPercents->contains($productPercent)) {
  653.             $this->productPercents[] = $productPercent;
  654.             $productPercent->setProduct($this);
  655.         }
  656.         return $this;
  657.     }
  658.     public function removeProductPercent(ProductPercent $productPercent): self
  659.     {
  660.         if ($this->productPercents->contains($productPercent)) {
  661.             $this->productPercents->removeElement($productPercent);
  662.             // set the owning side to null (unless already changed)
  663.             if ($productPercent->getProduct() === $this) {
  664.                 $productPercent->setProduct(null);
  665.             }
  666.         }
  667.         return $this;
  668.     }
  669.     public function getProductNamePrice()
  670.     {
  671.         return $this->name ' - ' $this->price '€ - ' $this->getCompany()->getCompanyName();
  672.     }
  673.     public function getSizeRing(): ?array
  674.     {
  675.         return $this->sizeRing;
  676.     }
  677.     public function setSizeRing(?array $sizeRing): self
  678.     {
  679.         $this->sizeRing $sizeRing;
  680.         return $this;
  681.     }
  682.     /**
  683.      * @return Collection|ContactProduct[]
  684.      */
  685.     public function getContactProducts(): Collection
  686.     {
  687.         return $this->contactProducts;
  688.     }
  689.     public function addContactProduct(ContactProduct $contactProduct): self
  690.     {
  691.         if (!$this->contactProducts->contains($contactProduct)) {
  692.             $this->contactProducts[] = $contactProduct;
  693.             $contactProduct->setProduct($this);
  694.         }
  695.         return $this;
  696.     }
  697.     public function removeContactProduct(ContactProduct $contactProduct): self
  698.     {
  699.         if ($this->contactProducts->contains($contactProduct)) {
  700.             $this->contactProducts->removeElement($contactProduct);
  701.             // set the owning side to null (unless already changed)
  702.             if ($contactProduct->getProduct() === $this) {
  703.                 $contactProduct->setProduct(null);
  704.             }
  705.         }
  706.         return $this;
  707.     }
  708.     /**
  709.      * @return Collection|ProductOption[]
  710.      */
  711.     public function getProductOptions(): Collection
  712.     {
  713.         return $this->productOptions;
  714.     }
  715.     public function addProductOption(ProductOption $productOption): self
  716.     {
  717.         if (!$this->productOptions->contains($productOption)) {
  718.             $this->productOptions[] = $productOption;
  719.             $productOption->setProduct($this);
  720.         }
  721.         return $this;
  722.     }
  723.     public function removeProductOption(ProductOption $productOption): self
  724.     {
  725.         if ($this->productOptions->removeElement($productOption)) {
  726.             // set the owning side to null (unless already changed)
  727.             if ($productOption->getProduct() === $this) {
  728.                 $productOption->setProduct(null);
  729.             }
  730.         }
  731.         return $this;
  732.     }
  733.     /**
  734.      * @return Collection|SubCategory[]
  735.      */
  736.     public function getSubCategories(): Collection
  737.     {
  738.         return $this->subCategories;
  739.     }
  740.     public function addSubCategory(SubCategory $subCategory): self
  741.     {
  742.         if (!$this->subCategories->contains($subCategory)) {
  743.             $this->subCategories[] = $subCategory;
  744.         }
  745.         return $this;
  746.     }
  747.     public function removeSubCategory(SubCategory $subCategory): self
  748.     {
  749.         $this->subCategories->removeElement($subCategory);
  750.         return $this;
  751.     }
  752.     public function getWeight(): ?string
  753.     {
  754.         return $this->weight;
  755.     }
  756.     public function setWeight(?string $weight): self
  757.     {
  758.         $this->weight $weight;
  759.         return $this;
  760.     }
  761.     public function getTransporteurs(): ?array
  762.     {
  763.         return $this->transporteurs;
  764.     }
  765.     public function setTransporteurs(?array $transporteurs): self
  766.     {
  767.         $this->transporteurs $transporteurs;
  768.         return $this;
  769.     }
  770.     public function getCodePromo(): ?string
  771.     {
  772.         return $this->codePromo;
  773.     }
  774.     public function setCodePromo(?string $codePromo): self
  775.     {
  776.         $this->codePromo $codePromo;
  777.         return $this;
  778.     }
  779.     public function getCodePromoEuro(): ?float
  780.     {
  781.         return $this->codePromoEuro;
  782.     }
  783.     public function setCodePromoEuro(?float $codePromoEuro): self
  784.     {
  785.         $this->codePromoEuro $codePromoEuro;
  786.         return $this;
  787.     }
  788.     public function getProductDescription(): ?ProductDescription
  789.     {
  790.         return $this->productDescription;
  791.     }
  792.     public function setProductDescription(?ProductDescription $productDescription): self
  793.     {
  794.         // unset the owning side of the relation if necessary
  795.         if ($productDescription === null && $this->productDescription !== null) {
  796.             $this->productDescription->setProduct(null);
  797.         }
  798.         // set the owning side of the relation if necessary
  799.         if ($productDescription !== null && $productDescription->getProduct() !== $this) {
  800.             $productDescription->setProduct($this);
  801.         }
  802.         $this->productDescription $productDescription;
  803.         return $this;
  804.     }
  805.     public function getTemplate(): ?int
  806.     {
  807.         return $this->template;
  808.     }
  809.     public function setTemplate(?int $template): self
  810.     {
  811.         $this->template $template;
  812.         return $this;
  813.     }
  814.     /**
  815.      * @return Collection|AnnonceCompany[]
  816.      */
  817.     public function getAnnonceCompanies(): Collection
  818.     {
  819.         return $this->annonceCompanies;
  820.     }
  821.     public function addAnnonceCompany(AnnonceCompany $annonceCompany): self
  822.     {
  823.         if (!$this->annonceCompanies->contains($annonceCompany)) {
  824.             $this->annonceCompanies[] = $annonceCompany;
  825.             $annonceCompany->setProducts($this);
  826.         }
  827.         return $this;
  828.     }
  829.     public function removeAnnonceCompany(AnnonceCompany $annonceCompany): self
  830.     {
  831.         if ($this->annonceCompanies->removeElement($annonceCompany)) {
  832.             // set the owning side to null (unless already changed)
  833.             if ($annonceCompany->getProducts() === $this) {
  834.                 $annonceCompany->setProducts(null);
  835.             }
  836.         }
  837.         return $this;
  838.     }
  839.     public function getTypeLocation(): ?TypeLocation
  840.     {
  841.         return $this->typeLocation;
  842.     }
  843.     public function setTypeLocation(?TypeLocation $typeLocation): self
  844.     {
  845.         $this->typeLocation $typeLocation;
  846.         return $this;
  847.     }
  848.     public function getTypePrestation(): ?TypePrestation
  849.     {
  850.         return $this->typePrestation;
  851.     }
  852.     public function setTypePrestation(?TypePrestation $typePrestation): self
  853.     {
  854.         $this->typePrestation $typePrestation;
  855.         return $this;
  856.     }
  857.     /**
  858.      * @return Collection|Location[]
  859.      */
  860.     public function getLocations(): Collection
  861.     {
  862.         return $this->locations;
  863.     }
  864.     public function addLocation(Location $location): self
  865.     {
  866.         if (!$this->locations->contains($location)) {
  867.             $this->locations[] = $location;
  868.             $location->setProduct($this);
  869.         }
  870.         return $this;
  871.     }
  872.     public function removeLocation(Location $location): self
  873.     {
  874.         if ($this->locations->removeElement($location)) {
  875.             // set the owning side to null (unless already changed)
  876.             if ($location->getProduct() === $this) {
  877.                 $location->setProduct(null);
  878.             }
  879.         }
  880.         return $this;
  881.     }
  882.     /**
  883.      * @return Collection|Reservation[]
  884.      */
  885.     public function getReservations(): Collection
  886.     {
  887.         return $this->reservations;
  888.     }
  889.     public function addReservation(Reservation $reservation): self
  890.     {
  891.         if (!$this->reservations->contains($reservation)) {
  892.             $this->reservations[] = $reservation;
  893.             $reservation->setProduct($this);
  894.         }
  895.         return $this;
  896.     }
  897.     public function removeReservation(Reservation $reservation): self
  898.     {
  899.         if ($this->reservations->removeElement($reservation)) {
  900.             // set the owning side to null (unless already changed)
  901.             if ($reservation->getProduct() === $this) {
  902.                 $reservation->setProduct(null);
  903.             }
  904.         }
  905.         return $this;
  906.     }
  907.     public function getTva(): ?Tva
  908.     {
  909.         return $this->tva;
  910.     }
  911.     public function setTva(?Tva $tva): self
  912.     {
  913.         $this->tva $tva;
  914.         return $this;
  915.     }
  916.     /**
  917.      * @return Collection|Caution[]
  918.      */
  919.     public function getCautions(): Collection
  920.     {
  921.         return $this->cautions;
  922.     }
  923.     public function addCaution(Caution $caution): self
  924.     {
  925.         if (!$this->cautions->contains($caution)) {
  926.             $this->cautions[] = $caution;
  927.             $caution->setProduct($this);
  928.         }
  929.         return $this;
  930.     }
  931.     public function removeCaution(Caution $caution): self
  932.     {
  933.         if ($this->cautions->removeElement($caution)) {
  934.             // set the owning side to null (unless already changed)
  935.             if ($caution->getProduct() === $this) {
  936.                 $caution->setProduct(null);
  937.             }
  938.         }
  939.         return $this;
  940.     }
  941.     /**
  942.      * @return Collection|Participant[]
  943.      */
  944.     public function getParticipants(): Collection
  945.     {
  946.         return $this->participants;
  947.     }
  948.     public function addParticipant(Participant $participant): self
  949.     {
  950.         if (!$this->participants->contains($participant)) {
  951.             $this->participants[] = $participant;
  952.             $participant->setProduit($this);
  953.         }
  954.         return $this;
  955.     }
  956.     public function removeParticipant(Participant $participant): self
  957.     {
  958.         if ($this->participants->removeElement($participant)) {
  959.             // set the owning side to null (unless already changed)
  960.             if ($participant->getProduit() === $this) {
  961.                 $participant->setProduit(null);
  962.             }
  963.         }
  964.         return $this;
  965.     }
  966.     public function getTypeHebergements(): ?TypeHebergement
  967.     {
  968.         return $this->typeHebergements;
  969.     }
  970.     public function setTypeHebergements(?TypeHebergement $typeHebergements): self
  971.     {
  972.         $this->typeHebergements $typeHebergements;
  973.         return $this;
  974.     }
  975.     /**
  976.      * @return Collection|Chambre[]
  977.      */
  978.     public function getChambres(): Collection
  979.     {
  980.         return $this->chambres;
  981.     }
  982.     public function addChambre(Chambre $chambre): self
  983.     {
  984.         if (!$this->chambres->contains($chambre)) {
  985.             $this->chambres[] = $chambre;
  986.             $chambre->setProduct($this);
  987.         }
  988.         return $this;
  989.     }
  990.     public function removeChambre(Chambre $chambre): self
  991.     {
  992.         $this->chambres->removeElement($chambre);
  993.         return $this;
  994.     }
  995.     /**
  996.      * @return Collection|Caracteristic[]
  997.      */
  998.     public function getCaracteristics(): Collection
  999.     {
  1000.         return $this->caracteristics;
  1001.     }
  1002.     public function addCaracteristic(Caracteristic $caracteristic): self
  1003.     {
  1004.         if (!$this->caracteristics->contains($caracteristic)) {
  1005.             $this->caracteristics[] = $caracteristic;
  1006.             $caracteristic->addProduct($this);
  1007.         }
  1008.         return $this;
  1009.     }
  1010.     public function removeCaracteristic(Caracteristic $caracteristic): self
  1011.     {
  1012.         if ($this->caracteristics->removeElement($caracteristic)) {
  1013.             $caracteristic->removeProduct($this);
  1014.         }
  1015.         return $this;
  1016.     }
  1017.     /**
  1018.      * @return Collection|Equipment[]
  1019.      */
  1020.     public function getEquipment(): Collection
  1021.     {
  1022.         return $this->equipment;
  1023.     }
  1024.     public function addEquipment(Equipment $equipment): self
  1025.     {
  1026.         if (!$this->equipment->contains($equipment)) {
  1027.             $this->equipment[] = $equipment;
  1028.             $equipment->addProduct($this);
  1029.         }
  1030.         return $this;
  1031.     }
  1032.     public function removeEquipment(Equipment $equipment): self
  1033.     {
  1034.         if ($this->equipment->removeElement($equipment)) {
  1035.             $equipment->removeProduct($this);
  1036.         }
  1037.         return $this;
  1038.     }
  1039.     /**
  1040.      * @return Collection|LangueHote[]
  1041.      */
  1042.     public function getLangueHotes(): Collection
  1043.     {
  1044.         return $this->langueHotes;
  1045.     }
  1046.     public function addLangueHote(LangueHote $langueHote): self
  1047.     {
  1048.         if (!$this->langueHotes->contains($langueHote)) {
  1049.             $this->langueHotes[] = $langueHote;
  1050.             $langueHote->addProduct($this);
  1051.         }
  1052.         return $this;
  1053.     }
  1054.     public function removeLangueHote(LangueHote $langueHote): self
  1055.     {
  1056.         if ($this->langueHotes->removeElement($langueHote)) {
  1057.             $langueHote->removeProduct($this);
  1058.         }
  1059.         return $this;
  1060.     }
  1061.     /**
  1062.      * @return Collection|TypeLocalisation[]
  1063.      */
  1064.     public function getTypeLocalisations(): Collection
  1065.     {
  1066.         return $this->typeLocalisations;
  1067.     }
  1068.     public function addTypeLocalisation(TypeLocalisation $typeLocalisation): self
  1069.     {
  1070.         if (!$this->typeLocalisations->contains($typeLocalisation)) {
  1071.             $this->typeLocalisations[] = $typeLocalisation;
  1072.             $typeLocalisation->addProduct($this);
  1073.         }
  1074.         return $this;
  1075.     }
  1076.     public function removeTypeLocalisation(TypeLocalisation $typeLocalisation): self
  1077.     {
  1078.         if ($this->typeLocalisations->removeElement($typeLocalisation)) {
  1079.             $typeLocalisation->removeProduct($this);
  1080.         }
  1081.         return $this;
  1082.     }
  1083.     /**
  1084.      * @return Collection|Security[]
  1085.      */
  1086.     public function getSecurities(): Collection
  1087.     {
  1088.         return $this->securities;
  1089.     }
  1090.     public function addSecurity(Security $security): self
  1091.     {
  1092.         if (!$this->securities->contains($security)) {
  1093.             $this->securities[] = $security;
  1094.             $security->addProduct($this);
  1095.         }
  1096.         return $this;
  1097.     }
  1098.     public function removeSecurity(Security $security): self
  1099.     {
  1100.         if ($this->securities->removeElement($security)) {
  1101.             $security->removeProduct($this);
  1102.         }
  1103.         return $this;
  1104.     }
  1105.     public function getTaxeSejour(): ?float
  1106.     {
  1107.         return $this->taxeSejour;
  1108.     }
  1109.     public function setTaxeSejour(?float $taxeSejour): self
  1110.     {
  1111.         $this->taxeSejour $taxeSejour;
  1112.         return $this;
  1113.     }
  1114.     public function getPrixCaution(): ?float
  1115.     {
  1116.         return $this->prixCaution;
  1117.     }
  1118.     public function setPrixCaution(?float $prixCaution): self
  1119.     {
  1120.         $this->prixCaution $prixCaution;
  1121.         return $this;
  1122.     }
  1123.     public function getLongitude(): ?float
  1124.     {
  1125.         return $this->longitude;
  1126.     }
  1127.     public function setLongitude(?float $longitude): self
  1128.     {
  1129.         $this->longitude $longitude;
  1130.         return $this;
  1131.     }
  1132.     public function getLatitude(): ?float
  1133.     {
  1134.         return $this->latitude;
  1135.     }
  1136.     public function setLatitude(?float $latitude): self
  1137.     {
  1138.         $this->latitude $latitude;
  1139.         return $this;
  1140.     }
  1141.     public function getTypeActivity(): ?ActivityType
  1142.     {
  1143.         return $this->typeActivity;
  1144.     }
  1145.     public function setTypeActivity(?ActivityType $typeActivity): self
  1146.     {
  1147.         $this->typeActivity $typeActivity;
  1148.         return $this;
  1149.     }
  1150.     /**
  1151.      * @return Collection<int, ProductReduction>
  1152.      */
  1153.     public function getProductReductions(): Collection
  1154.     {
  1155.         return $this->productReductions;
  1156.     }
  1157.     public function addProductReduction(ProductReduction $productReduction): self
  1158.     {
  1159.         if (!$this->productReductions->contains($productReduction)) {
  1160.             $this->productReductions[] = $productReduction;
  1161.             $productReduction->setProduct($this);
  1162.         }
  1163.         return $this;
  1164.     }
  1165.     public function removeProductReduction(ProductReduction $productReduction): self
  1166.     {
  1167.         if ($this->productReductions->removeElement($productReduction)) {
  1168.             // set the owning side to null (unless already changed)
  1169.             if ($productReduction->getProduct() === $this) {
  1170.                 $productReduction->setProduct(null);
  1171.             }
  1172.         }
  1173.         return $this;
  1174.     }
  1175.     public function getSpringPrice(): ?float
  1176.     {
  1177.         return $this->springPrice;
  1178.     }
  1179.     public function setSpringPrice(?float $springPrice): self
  1180.     {
  1181.         $this->springPrice $springPrice;
  1182.         return $this;
  1183.     }
  1184.     public function getSummerPrice(): ?float
  1185.     {
  1186.         return $this->summerPrice;
  1187.     }
  1188.     public function setSummerPrice(?float $summerPrice): self
  1189.     {
  1190.         $this->summerPrice $summerPrice;
  1191.         return $this;
  1192.     }
  1193.     public function getAutumnPrice(): ?float
  1194.     {
  1195.         return $this->autumnPrice;
  1196.     }
  1197.     public function setAutumnPrice(?float $autumnPrice): self
  1198.     {
  1199.         $this->autumnPrice $autumnPrice;
  1200.         return $this;
  1201.     }
  1202.     public function getWinterPrice(): ?float
  1203.     {
  1204.         return $this->winterPrice;
  1205.     }
  1206.     public function setWinterPrice(?float $winterPrice): self
  1207.     {
  1208.         $this->winterPrice $winterPrice;
  1209.         return $this;
  1210.     }
  1211.     public function getWeekEndPrice(): ?float
  1212.     {
  1213.         return $this->weekEndPrice;
  1214.     }
  1215.     public function setWeekEndPrice(?float $weekEndPrice): self
  1216.     {
  1217.         $this->weekEndPrice $weekEndPrice;
  1218.         return $this;
  1219.     }
  1220.     /**
  1221.      * @return Collection<int, ProgrammingDayPrice>
  1222.      */
  1223.     public function getDayPrice(): Collection
  1224.     {
  1225.         return $this->dayPrice;
  1226.     }
  1227.     public function addDayPrice(ProgrammingDayPrice $dayPrice): self
  1228.     {
  1229.         if (!$this->dayPrice->contains($dayPrice)) {
  1230.             $this->dayPrice[] = $dayPrice;
  1231.             $dayPrice->setProduct($this);
  1232.         }
  1233.         return $this;
  1234.     }
  1235.     public function removeDayPrice(ProgrammingDayPrice $dayPrice): self
  1236.     {
  1237.         if ($this->dayPrice->removeElement($dayPrice)) {
  1238.             // set the owning side to null (unless already changed)
  1239.             if ($dayPrice->getProduct() === $this) {
  1240.                 $dayPrice->setProduct(null);
  1241.             }
  1242.         }
  1243.         return $this;
  1244.     }
  1245.     /**
  1246.      * @return Collection<int, ProductAgenda>
  1247.      */
  1248.     public function getProductAgendas(): Collection
  1249.     {
  1250.         return $this->productAgendas;
  1251.     }
  1252.     public function addProductAgenda(ProductAgenda $productAgenda): self
  1253.     {
  1254.         if (!$this->productAgendas->contains($productAgenda)) {
  1255.             $this->productAgendas[] = $productAgenda;
  1256.             $productAgenda->setProduct($this);
  1257.         }
  1258.     }
  1259.     public function removeProductAgenda(ProductAgenda $productAgenda): self
  1260.     {
  1261.         if ($this->productAgendas->removeElement($productAgenda)) {
  1262.             // set the owning side to null (unless already changed)
  1263.             if ($productAgenda->getProduct() === $this) {
  1264.                 $productAgenda->setProduct(null);
  1265.             }
  1266.         }
  1267.     }
  1268.     /**
  1269.      * @return Collection<int, ProductAutoReduction>
  1270.      */
  1271.     public function getProductAutoReduction(): Collection
  1272.     {
  1273.         return $this->productAutoReduction;
  1274.     }
  1275.     public function addProductAutoReduction(ProductAutoReduction $productAutoReduction): self
  1276.     {
  1277.         if (!$this->productAutoReduction->contains($productAutoReduction)) {
  1278.             $this->productAutoReduction[] = $productAutoReduction;
  1279.             $productAutoReduction->setProduct($this);
  1280.         }
  1281.         return $this;
  1282.     }
  1283.     public function removeProductAutoReduction(ProductAutoReduction $productAutoReduction): self
  1284.     {
  1285.         if ($this->productAutoReduction->removeElement($productAutoReduction)) {
  1286.             // set the owning side to null (unless already changed)
  1287.             if ($productAutoReduction->getProduct() === $this) {
  1288.                 $productAutoReduction->setProduct(null);
  1289.             }
  1290.         }
  1291.         return $this;
  1292.     }
  1293.     /**
  1294.      * @return Collection<int, Publication>
  1295.      */
  1296.     public function getPublications(): Collection
  1297.     {
  1298.         return $this->publications;
  1299.     }
  1300.     public function addPublication(Publication $publication): self
  1301.     {
  1302.         if (!$this->publications->contains($publication)) {
  1303.             $this->publications[] = $publication;
  1304.             $publication->setProductCompany($this);
  1305.         }
  1306.         return $this;
  1307.     }
  1308.     public function removePublication(Publication $publication): self
  1309.     {
  1310.         if ($this->publications->removeElement($publication)) {
  1311.             // set the owning side to null (unless already changed)
  1312.             if ($publication->getProductCompany() === $this) {
  1313.                 $publication->setProductCompany(null);
  1314.             }
  1315.         }
  1316.         return $this;
  1317.     }
  1318.     /**
  1319.      * @return Collection<int, PendingLocation>
  1320.      */
  1321.     public function getPendingLocations(): Collection
  1322.     {
  1323.         return $this->pendingLocations;
  1324.     }
  1325.     public function addPendingLocation(PendingLocation $pendingLocation): self
  1326.     {
  1327.         if (!$this->pendingLocations->contains($pendingLocation)) {
  1328.             $this->pendingLocations[] = $pendingLocation;
  1329.             $pendingLocation->setProduct($this);
  1330.         }
  1331.         return $this;
  1332.     }
  1333.     public function removePendingLocation(PendingLocation $pendingLocation): self
  1334.     {
  1335.         if ($this->pendingLocations->removeElement($pendingLocation)) {
  1336.             // set the owning side to null (unless already changed)
  1337.             if ($pendingLocation->getProduct() === $this) {
  1338.                 $pendingLocation->setProduct(null);
  1339.             }
  1340.         }
  1341.         return $this;
  1342.     }
  1343.     /**
  1344.      * @return Collection<int, PendingReservation>
  1345.      */
  1346.     public function getPendingReservations(): Collection
  1347.     {
  1348.         return $this->pendingReservations;
  1349.     }
  1350.     public function addPendingReservation(PendingReservation $pendingReservation): self
  1351.     {
  1352.         if (!$this->pendingReservations->contains($pendingReservation)) {
  1353.             $this->pendingReservations[] = $pendingReservation;
  1354.             $pendingReservation->setProduct($this);
  1355.         }
  1356.         return $this;
  1357.     }
  1358.     public function removePendingReservation(PendingReservation $pendingReservation): self
  1359.     {
  1360.         if ($this->pendingReservations->removeElement($pendingReservation)) {
  1361.             // set the owning side to null (unless already changed)
  1362.             if ($pendingReservation->getProduct() === $this) {
  1363.                 $pendingReservation->setProduct(null);
  1364.             }
  1365.         }
  1366.         return $this;
  1367.     }
  1368.     /**
  1369.      * @return Collection<int, ProductPeriodPrice>
  1370.      */
  1371.     public function getPeriodPrice(): Collection
  1372.     {
  1373.         return $this->periodPrice;
  1374.     }
  1375.     public function addPeriodPrice(ProductPeriodPrice $periodPrice): self
  1376.     {
  1377.         if (!$this->periodPrice->contains($periodPrice)) {
  1378.             $this->periodPrice[] = $periodPrice;
  1379.             $periodPrice->setProduct($this);
  1380.         }
  1381.         return $this;
  1382.     }
  1383.     public function removePeriodPrice(ProductPeriodPrice $periodPrice): self
  1384.     {
  1385.         if ($this->periodPrice->removeElement($periodPrice)) {
  1386.             // set the owning side to null (unless already changed)
  1387.             if ($periodPrice->getProduct() === $this) {
  1388.                 $periodPrice->setProduct(null);
  1389.             }
  1390.         }
  1391.         return $this;
  1392.     }
  1393.     public function getCityLocalisation(): ?string
  1394.     {
  1395.         return $this->cityLocalisation;
  1396.     }
  1397.     public function setCityLocalisation(?string $cityLocalisation): self
  1398.     {
  1399.         $this->cityLocalisation $cityLocalisation;
  1400.         return $this;
  1401.     }
  1402.     public function getNbChambre(): ?int
  1403.     {
  1404.         return $this->nbChambre;
  1405.     }
  1406.     public function setNbChambre(?int $nbChambre): self
  1407.     {
  1408.         $this->nbChambre $nbChambre;
  1409.         return $this;
  1410.     }
  1411.     public function getNightMin(): ?int
  1412.     {
  1413.         return $this->nightMin;
  1414.     }
  1415.     public function setNightMin(?int $nightMin): self
  1416.     {
  1417.         $this->nightMin $nightMin;
  1418.         return $this;
  1419.     }
  1420.     /**
  1421.      * @return Collection<int, TarifDegressif>
  1422.      */
  1423.     public function getTarifDegressifs(): Collection
  1424.     {
  1425.         return $this->tarifDegressifs;
  1426.     }
  1427.     public function addTarifDegressif(TarifDegressif $tarifDegressif): self
  1428.     {
  1429.         if (!$this->tarifDegressifs->contains($tarifDegressif)) {
  1430.             $this->tarifDegressifs[] = $tarifDegressif;
  1431.             $tarifDegressif->setProduct($this);
  1432.         }
  1433.         return $this;
  1434.     }
  1435.     public function removeTarifDegressif(TarifDegressif $tarifDegressif): self
  1436.     {
  1437.         if ($this->tarifDegressifs->removeElement($tarifDegressif)) {
  1438.             // set the owning side to null (unless already changed)
  1439.             if ($tarifDegressif->getProduct() === $this) {
  1440.                 $tarifDegressif->setProduct(null);
  1441.             }
  1442.         }
  1443.         return $this;
  1444.     }
  1445.     /**
  1446.      * @return Collection<int, EquipementsCuisine>
  1447.      */
  1448.     public function getEquipementsCuisines(): Collection
  1449.     {
  1450.         return $this->equipementsCuisines;
  1451.     }
  1452.     public function addEquipementsCuisine(EquipementsCuisine $equipementsCuisine): self
  1453.     {
  1454.         if (!$this->equipementsCuisines->contains($equipementsCuisine)) {
  1455.             $this->equipementsCuisines[] = $equipementsCuisine;
  1456.             $equipementsCuisine->addProduct($this);
  1457.         }
  1458.         return $this;
  1459.     }
  1460.     public function removeEquipementsCuisine(EquipementsCuisine $equipementsCuisine): self
  1461.     {
  1462.         if ($this->equipementsCuisines->removeElement($equipementsCuisine)) {
  1463.             $equipementsCuisine->removeProduct($this);
  1464.         }
  1465.         return $this;
  1466.     }
  1467.     /**
  1468.      * @return Collection<int, SalleDeBain>
  1469.      */
  1470.     public function getSalleDeBains(): Collection
  1471.     {
  1472.         return $this->salleDeBains;
  1473.     }
  1474.     public function addSalleDeBain(SalleDeBain $salleDeBain): self
  1475.     {
  1476.         if (!$this->salleDeBains->contains($salleDeBain)) {
  1477.             $this->salleDeBains[] = $salleDeBain;
  1478.             $salleDeBain->addProduct($this);
  1479.         }
  1480.         return $this;
  1481.     }
  1482.     public function removeSalleDeBain(SalleDeBain $salleDeBain): self
  1483.     {
  1484.         if ($this->salleDeBains->removeElement($salleDeBain)) {
  1485.             $salleDeBain->removeProduct($this);
  1486.         }
  1487.         return $this;
  1488.     }
  1489.     /**
  1490.      * @return Collection<int, AccessoiresDeChambre>
  1491.      */
  1492.     public function getAccessoiresDeChambres(): Collection
  1493.     {
  1494.         return $this->accessoiresDeChambres;
  1495.     }
  1496.     public function addAccessoiresDeChambre(AccessoiresDeChambre $accessoiresDeChambre): self
  1497.     {
  1498.         if (!$this->accessoiresDeChambres->contains($accessoiresDeChambre)) {
  1499.             $this->accessoiresDeChambres[] = $accessoiresDeChambre;
  1500.             $accessoiresDeChambre->addProduct($this);
  1501.         }
  1502.         return $this;
  1503.     }
  1504.     public function removeAccessoiresDeChambre(AccessoiresDeChambre $accessoiresDeChambre): self
  1505.     {
  1506.         if ($this->accessoiresDeChambres->removeElement($accessoiresDeChambre)) {
  1507.             $accessoiresDeChambre->removeProduct($this);
  1508.         }
  1509.         return $this;
  1510.     }
  1511.     /**
  1512.      * @return Collection<int, MobilierExterieur>
  1513.      */
  1514.     public function getMobilierExterieurs(): Collection
  1515.     {
  1516.         return $this->mobilierExterieurs;
  1517.     }
  1518.     public function addMobilierExterieur(MobilierExterieur $mobilierExterieur): self
  1519.     {
  1520.         if (!$this->mobilierExterieurs->contains($mobilierExterieur)) {
  1521.             $this->mobilierExterieurs[] = $mobilierExterieur;
  1522.             $mobilierExterieur->addProduct($this);
  1523.         }
  1524.         return $this;
  1525.     }
  1526.     public function removeMobilierExterieur(MobilierExterieur $mobilierExterieur): self
  1527.     {
  1528.         if ($this->mobilierExterieurs->removeElement($mobilierExterieur)) {
  1529.             $mobilierExterieur->removeProduct($this);
  1530.         }
  1531.         return $this;
  1532.     }
  1533.     public function getCaracteristiqueVehicule(): ?CaracteristiqueVehicule
  1534.     {
  1535.         return $this->caracteristiqueVehicule;
  1536.     }
  1537.     public function setCaracteristiqueVehicule(?CaracteristiqueVehicule $caracteristiqueVehicule): self
  1538.     {
  1539.         $this->caracteristiqueVehicule $caracteristiqueVehicule;
  1540.         return $this;
  1541.     }
  1542.     /**
  1543.      * @return Collection<int, Notification>
  1544.      */
  1545.     public function getNotificationReservation(): Collection
  1546.     {
  1547.         return $this->notificationReservation;
  1548.     }
  1549.     public function addNotificationReservation(Notification $notificationReservation): self
  1550.     {
  1551.         if (!$this->notificationReservation->contains($notificationReservation)) {
  1552.             $this->notificationReservation[] = $notificationReservation;
  1553.             $notificationReservation->setProduct($this);
  1554.         }
  1555.         return $this;
  1556.     }
  1557.     public function removeNotificationReservation(Notification $notificationReservation): self
  1558.     {
  1559.         if ($this->notificationReservation->removeElement($notificationReservation)) {
  1560.             // set the owning side to null (unless already changed)
  1561.             if ($notificationReservation->getProduct() === $this) {
  1562.                 $notificationReservation->setProduct(null);
  1563.             }
  1564.         }
  1565.         return $this;
  1566.     }
  1567.     public function getCommune(): ?Commune
  1568.     {
  1569.         return $this->commune;
  1570.     }
  1571.     public function setCommune(?Commune $commune): self
  1572.     {
  1573.         $this->commune $commune;
  1574.         return $this;
  1575.     }
  1576.     public function getLocalisatioHebergs(): Collection
  1577.     {
  1578.         return $this->localisatioHebergs;
  1579.     }
  1580.     public function addLocalisatioHebergs(LocalisatioHebergs $localisatioHebergs): self
  1581.     {
  1582.         if (!$this->localisatioHebergs->contains($localisatioHebergs)) {
  1583.             $this->localisatioHebergs[] = $localisatioHebergs;
  1584.         }
  1585.         return $this;
  1586.     }
  1587.     public function removeLocalisatioHebergs(LocalisatioHebergs $localisatioHebergs): self
  1588.     {
  1589.         $this->localisatioHebergs->removeElement($localisatioHebergs);
  1590.         return $this;
  1591.     }
  1592. }