src/Entity/Hotel.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\Interfaces\AddressInfoInterface;
  4. use App\Entity\Media\Gallery;
  5. use App\Entity\WebContent\Review;
  6. use Doctrine\Common\Collections\ArrayCollection;
  7. use Doctrine\Common\Collections\Collection;
  8. use Doctrine\ORM\Mapping as ORM;
  9. use Symfony\Cmf\Bundle\CoreBundle\Translatable\TranslatableInterface;
  10. use Symfony\Cmf\Component\Routing\RouteReferrersInterface;
  11. use WAM\Bundle\CoreBundle\Entity\Interfaces\TagInterface;
  12. use WAM\Bundle\CoreBundle\Model\Translatable;
  13. use WAM\Bundle\MediaBundle\Entity\Interfaces\MediaInterface;
  14. use WAM\Bundle\RoutingBundle\Entity\Interfaces\SeoBehaviourInterface;
  15. use WAM\Bundle\RoutingBundle\Entity\Interfaces\SeoMetaReadInterface;
  16. use WAM\Bundle\RoutingBundle\Entity\Traits\MultiRouteTrait;
  17. /**
  18.  * @author David Velasco <dvelasco@wearemarketing.com>
  19.  *
  20.  * @ORM\Entity()
  21.  * @ORM\Table(name="app_hotel")
  22.  */
  23. class Hotel implements TranslatableInterfaceRouteReferrersInterfaceSeoMetaReadInterfaceSeoBehaviourInterfaceAddressInfoInterface
  24. {
  25.     use Translatable;
  26.     use MultiRouteTrait;
  27.     use AddressInfoTrait;
  28.     const CITY_MADRID 'madrid';
  29.     const CITY_MENORCA 'menorca';
  30.     /**
  31.      * Identifier.
  32.      *
  33.      * @var int
  34.      *
  35.      * @ORM\Id
  36.      * @ORM\Column(type="integer")
  37.      * @ORM\GeneratedValue(strategy="IDENTITY")
  38.      */
  39.     protected $id;
  40.     /**
  41.      * @var Media
  42.      *
  43.      * @ORM\ManyToOne(
  44.      *  targetEntity         = "WAM\Component\Media\Model\Interfaces\MediaInterface",
  45.      *  cascade              = {"all"}
  46.      * )
  47.      * @ORM\JoinColumn(
  48.      *  onDelete="SET NULL",
  49.      *  nullable=true
  50.      * )
  51.      */
  52.     protected ?MediaInterface $mainImage null;
  53.     /**
  54.      * @var Media
  55.      *
  56.      * @ORM\ManyToOne(
  57.      *  targetEntity         = "WAM\Component\Media\Model\Interfaces\MediaInterface",
  58.      *  cascade              = {"all"}
  59.      * )
  60.      * @ORM\JoinColumn(
  61.      *  onDelete="SET NULL",
  62.      *  nullable=true
  63.      * )
  64.      */
  65.     protected ?MediaInterface $headerImage null;
  66.     /**
  67.      * @var Media
  68.      *
  69.      * @ORM\ManyToOne(
  70.      *  targetEntity         = "WAM\Component\Media\Model\Interfaces\MediaInterface",
  71.      *  cascade              = {"all"}
  72.      * )
  73.      * @ORM\JoinColumn(
  74.      *  onDelete="SET NULL",
  75.      *  nullable=true
  76.      * )
  77.      */
  78.     protected $roomsHeaderImage;
  79.     /**
  80.      * @var Media
  81.      *
  82.      * @ORM\ManyToOne(
  83.      *  targetEntity         = "WAM\Component\Media\Model\Interfaces\MediaInterface",
  84.      *  cascade              = {"all"}
  85.      * )
  86.      * @ORM\JoinColumn(
  87.      *  onDelete="SET NULL",
  88.      *  nullable=true
  89.      * )
  90.      */
  91.     protected $ctaImage;
  92.     /**
  93.      * @ORM\OneToMany(targetEntity="App\Entity\WebContent\Review", mappedBy="hotel")
  94.      */
  95.     protected Collection $reviews;
  96.     /**
  97.      * Gallery has medias.
  98.      *
  99.      * @ORM\OneToOne(targetEntity = "WAM\Bundle\MediaBundle\Entity\Interfaces\GalleryInterface")
  100.      * @ORM\JoinColumn(referencedColumnName="id", nullable=true)
  101.      */
  102.     protected $gallery1;
  103.     /**
  104.      * Gallery has medias.
  105.      *
  106.      * @ORM\OneToOne(targetEntity = "WAM\Bundle\MediaBundle\Entity\Interfaces\GalleryInterface")
  107.      * @ORM\JoinColumn(referencedColumnName="id", nullable=true)
  108.      */
  109.     protected $gallery2;
  110.     /**
  111.      * @ORM\ManyToMany(targetEntity="KeySellingPoint")
  112.      * @ORM\JoinTable(name="app_hotel_keysellingpoint_hotel",
  113.      *      joinColumns={@ORM\JoinColumn(name="hotel_id", referencedColumnName="id")},
  114.      *      inverseJoinColumns={@ORM\JoinColumn(name="keySellingPoint_id", referencedColumnName="id")}
  115.      *      )
  116.      */
  117.     private $keySellingPointsHotel;
  118.     /**
  119.      * @ORM\ManyToMany(targetEntity="KeySellingPoint")
  120.      * @ORM\JoinTable(name="app_hotel_keysellingpoint_hotel_home",
  121.      *      joinColumns={@ORM\JoinColumn(name="hotel_id", referencedColumnName="id")},
  122.      *      inverseJoinColumns={@ORM\JoinColumn(name="keySellingPoint_id", referencedColumnName="id")}
  123.      *      )
  124.      */
  125.     private $keySellingPointsHome;
  126.     /**
  127.      * One Hotel has Many Experiences.
  128.      *
  129.      * @ORM\OneToMany(targetEntity="Experience", mappedBy="hotel")
  130.      * @ORM\OrderBy({"position" = "ASC"})
  131.      */
  132.     private $experiences;
  133.     /**
  134.      * @var string
  135.      *
  136.      * @ORM\Column(type="string", nullable=true)
  137.      */
  138.     private $city;
  139.     /**
  140.      * @ORM\OneToMany(targetEntity="Room", mappedBy="hotel")
  141.      * @ORM\OrderBy({"position" = "ASC"})
  142.      */
  143.     private $rooms;
  144.     /**
  145.      * @ORM\ManyToMany(targetEntity="App\Entity\Advantage")
  146.      * @ORM\JoinTable(name="app_hotels_advantages",
  147.      *      joinColumns={@ORM\JoinColumn(name="hotel_id", referencedColumnName="id")},
  148.      *      inverseJoinColumns={@ORM\JoinColumn(name="advantage_id", referencedColumnName="id")}
  149.      *      )
  150.      */
  151.     private Collection $advantages;
  152.     /**
  153.      * @ORM\Column(type="boolean", nullable=true)
  154.      */
  155.     private ?bool $showAdvantages false;
  156.     /**
  157.      * @var string
  158.      *
  159.      * @ORM\Column(type="string", nullable=true)
  160.      */
  161.     private $hotelClass;
  162.     /**
  163.      * @ORM\ManyToOne(targetEntity="Location", inversedBy="hotels")
  164.      * @ORM\JoinColumn(name="location_id", referencedColumnName="id")
  165.      */
  166.     private $location;
  167.     /**
  168.      * @var string
  169.      *
  170.      * @ORM\Column(type="string", nullable=true)
  171.      */
  172.     private $simpleName;
  173.     /**
  174.      * @ORM\Column(type="string", nullable=true)
  175.      */
  176.     private $hotelHeaderVideo;
  177.     /**
  178.      * @ORM\Column(type="string", nullable=true)
  179.      */
  180.     private $roomsHeaderVideo;
  181.     /**
  182.      * @ORM\ManyToOne(targetEntity="WAM\Component\Media\Model\Interfaces\MediaInterface")
  183.      * @ORM\JoinColumn(referencedColumnName="id")
  184.      */
  185.     private $verticalMainImage;
  186.     /**
  187.      * @ORM\Column(type="string")
  188.      */
  189.     private $googleUrl;
  190.     /**
  191.      * @ORM\Column(type="text", nullable=true)
  192.      */
  193.     private $reviewProScript1;
  194.     /**
  195.      * @ORM\Column(type="text", nullable=true)
  196.      */
  197.     private $reviewProScript2;
  198.     /**
  199.      * @ORM\Column(type="text", nullable=true)
  200.      */
  201.     private $reviewProScript3;
  202.     /**
  203.      * @ORM\Column(type="text", nullable=true)
  204.      */
  205.     private $reviewProScript4;
  206.     /**
  207.      * @ORM\Column(type="text", nullable=true)
  208.      */
  209.     private $reviewProScript5;
  210.     /**
  211.      * @ORM\Column(type="text", nullable=true)
  212.      */
  213.     private $reviewProScript6;
  214.     /**
  215.      * @ORM\Column(type="boolean", nullable=true, options={"default" : 1})
  216.      */
  217.     private $enabled;
  218.     /**
  219.      * @ORM\Column(type="boolean", options={"default": 1})
  220.      */
  221.     private $enabledPickingUp true;
  222.     /**
  223.      * @ORM\ManyToMany(targetEntity="App\Entity\PurchasableExperience", mappedBy="hotels")
  224.      */
  225.     protected $purchasableExperiences;
  226.     /**
  227.      * @ORM\Column(type="text", nullable=false)
  228.      */
  229.     private $miraiHotelId;
  230.     /**
  231.      * @ORM\Column(type="text", nullable=true)
  232.      */
  233.     private $happyForceHierarchyId;
  234.     /**
  235.      * @ORM\ManyToOne(targetEntity="App\Entity\Media\Gallery")
  236.      * @ORM\JoinColumn(referencedColumnName="id")
  237.      */
  238.     private $galleryCertifications;
  239.     /**
  240.      * @ORM\Column(type="text", nullable=true)
  241.      */
  242.     private ?string $leftIcons null;
  243.     /**
  244.      * @ORM\Column(type="text", nullable=true)
  245.      */
  246.     private ?string $rightIcons null;
  247.     /**
  248.      * @ORM\Column(type="text", nullable=true)
  249.      */
  250.     private ?string $rightScript1 null;
  251.     /**
  252.      * @ORM\Column(type="text", nullable=true)
  253.      */
  254.     private ?string $rightScript2 null;
  255.     /**
  256.      * @ORM\Column(type="text", nullable=true)
  257.      */
  258.     private ?string $rightScript3 null;
  259.     /**
  260.      * @ORM\Column(type="text", nullable=true)
  261.      */
  262.     private ?string $rightScript4 null;
  263.     /**
  264.      * @ORM\Column(type="text", nullable=true)
  265.      */
  266.     private ?string $rightScript5 null;
  267.     /**
  268.      * @ORM\Column(type="text", nullable=true)
  269.      */
  270.     private ?string $rightScript6 null;
  271.     /**
  272.      * @ORM\Column(type="boolean", options={"default": 0})
  273.      */
  274.     private bool $isApartment false;
  275.     /**
  276.      * @ORM\ManyToOne(targetEntity="App\Entity\Media\Gallery")
  277.      * @ORM\JoinColumn(referencedColumnName="id", nullable=true)
  278.      */
  279.     private ?Gallery $cityGallery;
  280.     /**
  281.      * @ORM\ManyToMany(targetEntity="WAM\Bundle\CoreBundle\Entity\Interfaces\TagInterface")
  282.      *
  283.      * @var Collection|TagInterface[]
  284.      */
  285.     private ?Collection $tags;
  286.     /**
  287.      * @ORM\Column(type="string", nullable=true)
  288.      */
  289.     private ?string $direction null;
  290.     /**
  291.      * Hotel constructor.
  292.      */
  293.     public function __construct()
  294.     {
  295.         $this->keySellingPointsHotel = new ArrayCollection();
  296.         $this->keySellingPointsHome = new ArrayCollection();
  297.         $this->experiences = new ArrayCollection();
  298.         $this->rooms = new ArrayCollection();
  299.         $this->advantages = new ArrayCollection();
  300.         $this->reviews = new ArrayCollection();
  301.     }
  302.     /**
  303.      * Getter for id.
  304.      *
  305.      * @return int
  306.      */
  307.     public function getId()
  308.     {
  309.         return $this->id;
  310.     }
  311.     public function setTitle($title)
  312.     {
  313.         $this->translate(nullfalse)->setTitle($title);
  314.         return $this;
  315.     }
  316.     public function getTitle()
  317.     {
  318.         return $this->translate(nullfalse)->getTitle();
  319.     }
  320.     /**
  321.      * @param string $locale
  322.      *
  323.      * @return $this
  324.      */
  325.     public function setLocale($locale)
  326.     {
  327.         $this->setCurrentLocale($locale);
  328.         return $this;
  329.     }
  330.     /**
  331.      * @return string
  332.      */
  333.     public function getLocale()
  334.     {
  335.         return $this->getCurrentLocale();
  336.     }
  337.     /**
  338.      * Getter for mainImage.
  339.      *
  340.      * @return Media
  341.      */
  342.     public function getMainImage()
  343.     {
  344.         return $this->mainImage;
  345.     }
  346.     /**
  347.      * Setter for mainImage.
  348.      *
  349.      * @param Media $mainImage
  350.      *
  351.      * @return Hotel
  352.      */
  353.     public function setMainImage(MediaInterface $mainImage)
  354.     {
  355.         $this->mainImage $mainImage;
  356.         return $this;
  357.     }
  358.     /**
  359.      * @return string
  360.      */
  361.     public function getSeoTitle(): ?string
  362.     {
  363.         return $this->getTitle();
  364.     }
  365.     /**
  366.      * @return string
  367.      */
  368.     public function getSeoDescription(): ?string
  369.     {
  370.         return $this->getTitle();
  371.     }
  372.     /**
  373.      * @return string|array
  374.      */
  375.     public function getSeoKeywords()
  376.     {
  377.         return $this->getTitle();
  378.     }
  379.     /**
  380.      * @return string
  381.      */
  382.     public function getSlug($locale null)
  383.     {
  384.         return $this->translate($localefalse)->getSlug();
  385.     }
  386.     /**
  387.      * @param $text
  388.      *
  389.      * @return $this
  390.      */
  391.     public function setSlug($text)
  392.     {
  393.         $this->translate(nullfalse)->setSlug($text);
  394.         return $this;
  395.     }
  396.     public function setIntroduction($introduction)
  397.     {
  398.         $this->translate(nullfalse)->setIntroduction($introduction);
  399.         return $this;
  400.     }
  401.     public function getIntroduction()
  402.     {
  403.         return $this->translate(nullfalse)->getIntroduction();
  404.     }
  405.     public function setContent($content)
  406.     {
  407.         $this->translate(nullfalse)->setContent($content);
  408.         return $this;
  409.     }
  410.     public function getContent()
  411.     {
  412.         return $this->translate(nullfalse)->getContent();
  413.     }
  414.     public function setReviewProTitle($reviewProTitle)
  415.     {
  416.         $this->translate(nullfalse)->setReviewProTitle($reviewProTitle);
  417.         return $this;
  418.     }
  419.     public function getReviewProTitle()
  420.     {
  421.         return $this->translate(nullfalse)->getReviewProTitle();
  422.     }
  423.     public function setReviewProIframe($reviewProIframe)
  424.     {
  425.         $this->translate(nullfalse)->setReviewProIframe($reviewProIframe);
  426.         return $this;
  427.     }
  428.     public function getReviewProIframe()
  429.     {
  430.         return $this->translate(nullfalse)->getReviewProIframe();
  431.     }
  432.     public function setReviewProTestimonialsIframe($reviewProTestimonialsIframe)
  433.     {
  434.         $this->translate(nullfalse)->setReviewProTestimonialsIframe($reviewProTestimonialsIframe);
  435.         return $this;
  436.     }
  437.     public function getReviewProTestimonialsIframe()
  438.     {
  439.         return $this->translate(nullfalse)->getReviewProTestimonialsIframe();
  440.     }
  441.     /**
  442.      * @return mixed
  443.      */
  444.     public function getCtaImage()
  445.     {
  446.         return $this->ctaImage;
  447.     }
  448.     /**
  449.      * @param mixed $ctaImage
  450.      *
  451.      * @return Hotel
  452.      */
  453.     public function setCtaImage($ctaImage)
  454.     {
  455.         $this->ctaImage $ctaImage;
  456.         return $this;
  457.     }
  458.     /**
  459.      * @return mixed
  460.      */
  461.     public function getEnabled()
  462.     {
  463.         return $this->enabled;
  464.     }
  465.     /**
  466.      * @param mixed $enabled
  467.      */
  468.     public function setEnabled($enabled)
  469.     {
  470.         $this->enabled $enabled;
  471.     }
  472.     /**
  473.      * @return mixed
  474.      */
  475.     public function getPurchasableExperiences()
  476.     {
  477.         return $this->purchasableExperiences;
  478.     }
  479.     /**
  480.      * @param mixed $purchasableExperiences
  481.      */
  482.     public function setPurchasableExperiences($purchasableExperiences)
  483.     {
  484.         $this->purchasableExperiences $purchasableExperiences;
  485.     }
  486.     public function setCtaText($ctaText)
  487.     {
  488.         $this->translate(nullfalse)->setCtaText($ctaText);
  489.         return $this;
  490.     }
  491.     public function getCtaText()
  492.     {
  493.         return $this->translate(nullfalse)->getCtaText();
  494.     }
  495.     public function setCtaButtonUrl($ctaButtonUrl)
  496.     {
  497.         $this->translate(nullfalse)->setCtaButtonUrl($ctaButtonUrl);
  498.         return $this;
  499.     }
  500.     public function getCtaButtonUrl()
  501.     {
  502.         return $this->translate(nullfalse)->getCtaButtonUrl();
  503.     }
  504.     public function setCtaButtonText($ctaButtonText)
  505.     {
  506.         $this->translate(nullfalse)->setCtaButtonText($ctaButtonText);
  507.         return $this;
  508.     }
  509.     public function getCtaButtonText()
  510.     {
  511.         return $this->translate(nullfalse)->getCtaButtonText();
  512.     }
  513.     public function addRoom(Room $room)
  514.     {
  515.         if (!$this->rooms->contains($room)) {
  516.             $this->rooms->add($room);
  517.             $room->setHotel($this);
  518.         }
  519.         return $this;
  520.     }
  521.     public function removeRoom(Room $room)
  522.     {
  523.         if ($this->rooms->contains($room)) {
  524.             $this->rooms->removeElement($room);
  525.             $room->setHotel(null);
  526.         }
  527.         return $this;
  528.     }
  529.     /**
  530.      * @return $this Self Object
  531.      */
  532.     public function addKeySellingPointHotel(KeySellingPoint $ksp)
  533.     {
  534.         if (!$this->keySellingPointsHotel->contains($ksp)) {
  535.             $this->keySellingPointsHotel->add($ksp);
  536.         }
  537.         return $this;
  538.     }
  539.     /**
  540.      * @return $this Self Object
  541.      */
  542.     public function removeKeySellingPointHotel(KeySellingPoint $ksp)
  543.     {
  544.         $this->keySellingPointsHotel->removeElement($ksp);
  545.         return $this;
  546.     }
  547.     /**
  548.      * Getter for headerImage.
  549.      *
  550.      * @return Media
  551.      */
  552.     public function getHeaderImage()
  553.     {
  554.         return $this->headerImage;
  555.     }
  556.     /**
  557.      * Setter for headerImage.
  558.      *
  559.      * @param Media $headerImage
  560.      *
  561.      * @return Hotel
  562.      */
  563.     public function setHeaderImage(MediaInterface $headerImage)
  564.     {
  565.         $this->headerImage $headerImage;
  566.         return $this;
  567.     }
  568.     /**
  569.      * Getter for gallery1.
  570.      *
  571.      * @return mixed
  572.      */
  573.     public function getGallery1()
  574.     {
  575.         return $this->gallery1;
  576.     }
  577.     /**
  578.      * Setter for gallery1.
  579.      *
  580.      * @param mixed $gallery1
  581.      *
  582.      * @return Hotel
  583.      */
  584.     public function setGallery1($gallery1)
  585.     {
  586.         $this->gallery1 $gallery1;
  587.         return $this;
  588.     }
  589.     /**
  590.      * Getter for gallery2.
  591.      *
  592.      * @return mixed
  593.      */
  594.     public function getGallery2()
  595.     {
  596.         return $this->gallery2;
  597.     }
  598.     /**
  599.      * Setter for gallery2.
  600.      *
  601.      * @param mixed $gallery2
  602.      *
  603.      * @return Hotel
  604.      */
  605.     public function setGallery2($gallery2)
  606.     {
  607.         $this->gallery2 $gallery2;
  608.         return $this;
  609.     }
  610.     /**
  611.      * Getter for keySellingPointsHotel.
  612.      *
  613.      * @return mixed
  614.      */
  615.     public function getKeySellingPointsHotel()
  616.     {
  617.         return $this->keySellingPointsHotel;
  618.     }
  619.     /**
  620.      * Setter for keySellingPointsHotel.
  621.      *
  622.      * @param mixed $keySellingPointsHotel
  623.      *
  624.      * @return Hotel
  625.      */
  626.     public function setKeySellingPointsHotel($keySellingPointsHotel)
  627.     {
  628.         foreach ($keySellingPointsHotel as $item) {
  629.             $this->addKeySellingPointHotel($item);
  630.         }
  631.         return $this;
  632.     }
  633.     /**
  634.      * Getter for experiences.
  635.      *
  636.      * @return ArrayCollection
  637.      */
  638.     public function getExperiences()
  639.     {
  640.         return $this->experiences;
  641.     }
  642.     /**
  643.      * Setter for experiences.
  644.      *
  645.      * @return Hotel
  646.      */
  647.     public function setExperiences(ArrayCollection $experiences)
  648.     {
  649.         $this->experiences $experiences;
  650.         return $this;
  651.     }
  652.     /**
  653.      * @return $this Self Object
  654.      */
  655.     public function addExperience(Experience $experience)
  656.     {
  657.         if (!$this->experiences->contains($experience)) {
  658.             $this->experiences->add($experience);
  659.         }
  660.         return $this;
  661.     }
  662.     /**
  663.      * @return $this Self Object
  664.      */
  665.     public function removeExperience(Experience $experience)
  666.     {
  667.         $this->experiences->removeElement($experience);
  668.         return $this;
  669.     }
  670.     /**
  671.      * Getter for city.
  672.      *
  673.      * @return string
  674.      */
  675.     public function getCity()
  676.     {
  677.         return $this->city;
  678.     }
  679.     /**
  680.      * Setter for city.
  681.      *
  682.      * @param string $city
  683.      *
  684.      * @return Hotel
  685.      */
  686.     public function setCity($city)
  687.     {
  688.         $this->city $city;
  689.         return $this;
  690.     }
  691.     /**
  692.      * Getter for rooms.
  693.      *
  694.      * @return mixed
  695.      */
  696.     public function getRooms()
  697.     {
  698.         return $this->rooms;
  699.     }
  700.     /**
  701.      * @return Collection
  702.      */
  703.     public function getAdvantages(): Collection
  704.     {
  705.         return $this->advantages;
  706.     }
  707.     /**
  708.      * @param Collection $advantages
  709.      */
  710.     public function setAdvantages(Collection $advantages): void
  711.     {
  712.         $this->advantages $advantages;
  713.     }
  714.     /**
  715.      * @return bool|null
  716.      */
  717.     public function getShowAdvantages(): ?bool
  718.     {
  719.         return $this->showAdvantages;
  720.     }
  721.     /**
  722.      * @param bool|null $showAdvantages
  723.      */
  724.     public function setShowAdvantages(?bool $showAdvantages): void
  725.     {
  726.         $this->showAdvantages $showAdvantages;
  727.     }
  728.     /**
  729.      * Setter for rooms.
  730.      *
  731.      * @return Hotel
  732.      */
  733.     public function setRooms(Collection $rooms)
  734.     {
  735.         foreach ($this->rooms as $room) {
  736.             if (!$rooms->contains($room)) {
  737.                 $this->removeRoom($room);
  738.             }
  739.         }
  740.         foreach ($rooms as $room) {
  741.             $this->addRoom($room);
  742.         }
  743.         return $this;
  744.     }
  745.     /**
  746.      * Getter for hotelClass.
  747.      *
  748.      * @return mixed
  749.      */
  750.     public function getHotelClass()
  751.     {
  752.         return $this->hotelClass;
  753.     }
  754.     /**
  755.      * Setter for hotelClass.
  756.      *
  757.      * @param mixed $hotelClass
  758.      *
  759.      * @return Hotel
  760.      */
  761.     public function setHotelClass($hotelClass)
  762.     {
  763.         $this->hotelClass $hotelClass;
  764.         return $this;
  765.     }
  766.     /**
  767.      * @return mixed
  768.      */
  769.     public function getReviews()
  770.     {
  771.         return $this->reviews;
  772.     }
  773.     /**
  774.      * @param mixed $reviews
  775.      *
  776.      * @return Hotel
  777.      */
  778.     public function setReviews($reviews)
  779.     {
  780.         $this->reviews $reviews;
  781.         return $this;
  782.     }
  783.     public function addReview(Review $review)
  784.     {
  785.         if (!$this->reviews->contains($review)) {
  786.             $this->reviews->add($review);
  787.         }
  788.         return $this;
  789.     }
  790.     public function removeReview(Review $review)
  791.     {
  792.         $this->reviews->removeElement($review);
  793.         return $this;
  794.     }
  795.     public function setRoomSectionTitle($roomSectionTitle)
  796.     {
  797.         $this->translate(nullfalse)->setRoomSectionTitle($roomSectionTitle);
  798.         return $this;
  799.     }
  800.     public function getRoomSectionTitle()
  801.     {
  802.         return $this->translate(nullfalse)->getRoomSectionTitle();
  803.     }
  804.     public function setRoomSectionContent($roomSectionContent)
  805.     {
  806.         $this->translate(nullfalse)->setRoomSectionContent($roomSectionContent);
  807.         return $this;
  808.     }
  809.     public function getRoomSectionContent()
  810.     {
  811.         return $this->translate(nullfalse)->getRoomSectionContent();
  812.     }
  813.     public function setRoomSectionLinkTitle($roomSectionLinkTitle)
  814.     {
  815.         $this->translate(nullfalse)->setRoomSectionLinkTitle($roomSectionLinkTitle);
  816.         return $this;
  817.     }
  818.     public function getRoomSectionLinkTitle()
  819.     {
  820.         return $this->translate(nullfalse)->getRoomSectionLinkTitle();
  821.     }
  822.     public function __toString()
  823.     {
  824.         return (string) $this->getTitle();
  825.     }
  826.     /**
  827.      * Getter for location.
  828.      *
  829.      * @return mixed
  830.      */
  831.     public function getLocation()
  832.     {
  833.         return $this->location;
  834.     }
  835.     /**
  836.      * Setter for location.
  837.      *
  838.      * @param $location
  839.      *
  840.      * @return Hotel
  841.      */
  842.     public function setLocation($location)
  843.     {
  844.         $this->location $location;
  845.         return $this;
  846.     }
  847.     /**
  848.      * Getter for roomsHeaderImage.
  849.      *
  850.      * @return Media
  851.      */
  852.     public function getRoomsHeaderImage()
  853.     {
  854.         return $this->roomsHeaderImage;
  855.     }
  856.     /**
  857.      * Setter for roomsHeaderImage.
  858.      *
  859.      * @param Media $roomsHeaderImage
  860.      *
  861.      * @return Hotel
  862.      */
  863.     public function setRoomsHeaderImage(MediaInterface $roomsHeaderImage)
  864.     {
  865.         $this->roomsHeaderImage $roomsHeaderImage;
  866.         return $this;
  867.     }
  868.     public function setRoomsHeaderTitle($roomsHeaderTitle)
  869.     {
  870.         $this->translate(nullfalse)->setRoomsHeaderTitle($roomsHeaderTitle);
  871.         return $this;
  872.     }
  873.     public function getRoomsHeaderTitle()
  874.     {
  875.         return $this->translate(nullfalse)->getRoomsHeaderTitle();
  876.     }
  877.     /**
  878.      * Getter for keySellingPointsHome.
  879.      *
  880.      * @return mixed
  881.      */
  882.     public function getKeySellingPointsHome()
  883.     {
  884.         return $this->keySellingPointsHome;
  885.     }
  886.     /**
  887.      * Setter for keySellingPointsHome.
  888.      *
  889.      * @param mixed $keySellingPointsHome
  890.      *
  891.      * @return Hotel
  892.      */
  893.     public function setKeySellingPointsHome($keySellingPointsHome)
  894.     {
  895.         foreach ($keySellingPointsHome as $item) {
  896.             $this->addKeySellingPointHome($item);
  897.         }
  898.         return $this;
  899.     }
  900.     /**
  901.      * @return $this Self Object
  902.      */
  903.     public function addKeySellingPointHome(KeySellingPoint $ksp)
  904.     {
  905.         if (!$this->keySellingPointsHome->contains($ksp)) {
  906.             $this->keySellingPointsHome->add($ksp);
  907.         }
  908.         return $this;
  909.     }
  910.     public function setIntroductionTitle($introductionTitle)
  911.     {
  912.         $this->translate(nullfalse)->setIntroductionTitle($introductionTitle);
  913.         return $this;
  914.     }
  915.     public function getIntroductionTitle()
  916.     {
  917.         return $this->translate(nullfalse)->getIntroductionTitle();
  918.     }
  919.     /**
  920.      * @return $this Self Object
  921.      */
  922.     public function removeKeySellingPointHome(KeySellingPoint $ksp)
  923.     {
  924.         $this->keySellingPointsHome->removeElement($ksp);
  925.         return $this;
  926.     }
  927.     public function setHowToGetThere($howToGetThere)
  928.     {
  929.         $this->translate(nullfalse)->setHowToGetThere($howToGetThere);
  930.         return $this;
  931.     }
  932.     public function getHowToGetThere()
  933.     {
  934.         return $this->translate(nullfalse)->getHowToGetThere();
  935.     }
  936.     public function getInstagramScript()
  937.     {
  938.         return $this->translate(nullfalse)->getInstagramScript();
  939.     }
  940.     public function setInstagramScript($instagramScript)
  941.     {
  942.         $this->translate(nullfalse)->setInstagramScript($instagramScript);
  943.         return $this;
  944.     }
  945.     /**
  946.      * Getter for simpleName.
  947.      *
  948.      * @return string
  949.      */
  950.     public function getSimpleName()
  951.     {
  952.         return $this->simpleName;
  953.     }
  954.     /**
  955.      * Setter for simpleName.
  956.      *
  957.      * @param string $simpleName
  958.      *
  959.      * @return Hotel
  960.      */
  961.     public function setSimpleName($simpleName)
  962.     {
  963.         $this->simpleName $simpleName;
  964.         return $this;
  965.     }
  966.     /**
  967.      * Getter for hotelHeaderVideo.
  968.      *
  969.      * @return mixed
  970.      */
  971.     public function getHotelHeaderVideo()
  972.     {
  973.         return $this->hotelHeaderVideo;
  974.     }
  975.     /**
  976.      * Setter for hotelHeaderVideo.
  977.      *
  978.      * @param mixed $hotelHeaderVideo
  979.      *
  980.      * @return Hotel
  981.      */
  982.     public function setHotelHeaderVideo($hotelHeaderVideo)
  983.     {
  984.         $this->hotelHeaderVideo $hotelHeaderVideo;
  985.         return $this;
  986.     }
  987.     /**
  988.      * Getter for roomsHeaderVideo.
  989.      *
  990.      * @return mixed
  991.      */
  992.     public function getRoomsHeaderVideo()
  993.     {
  994.         return $this->roomsHeaderVideo;
  995.     }
  996.     /**
  997.      * Setter for roomsHeaderVideo.
  998.      *
  999.      * @param mixed $roomsHeaderVideo
  1000.      *
  1001.      * @return Hotel
  1002.      */
  1003.     public function setRoomsHeaderVideo($roomsHeaderVideo)
  1004.     {
  1005.         $this->roomsHeaderVideo $roomsHeaderVideo;
  1006.         return $this;
  1007.     }
  1008.     /**
  1009.      * Getter for verticalMainImage.
  1010.      *
  1011.      * @return mixed
  1012.      */
  1013.     public function getVerticalMainImage()
  1014.     {
  1015.         return $this->verticalMainImage;
  1016.     }
  1017.     /**
  1018.      * Setter for verticalMainImage.
  1019.      *
  1020.      * @param mixed $verticalMainImage
  1021.      *
  1022.      * @return Hotel
  1023.      */
  1024.     public function setVerticalMainImage($verticalMainImage)
  1025.     {
  1026.         $this->verticalMainImage $verticalMainImage;
  1027.         return $this;
  1028.     }
  1029.     /**
  1030.      * Getter for googleUrl.
  1031.      *
  1032.      * @return mixed
  1033.      */
  1034.     public function getGoogleUrl()
  1035.     {
  1036.         return $this->googleUrl;
  1037.     }
  1038.     /**
  1039.      * Setter for googleUrl.
  1040.      *
  1041.      * @param mixed $googleUrl
  1042.      *
  1043.      * @return Hotel
  1044.      */
  1045.     public function setGoogleUrl($googleUrl)
  1046.     {
  1047.         $this->googleUrl $googleUrl;
  1048.         return $this;
  1049.     }
  1050.     /**
  1051.      * Getter for reviewProScript1.
  1052.      *
  1053.      * @return mixed
  1054.      */
  1055.     public function getReviewProScript1()
  1056.     {
  1057.         return $this->reviewProScript1;
  1058.     }
  1059.     /**
  1060.      * Setter for reviewProScript1.
  1061.      *
  1062.      * @param mixed $reviewProScript1
  1063.      *
  1064.      * @return Hotel
  1065.      */
  1066.     public function setReviewProScript1($reviewProScript1)
  1067.     {
  1068.         $this->reviewProScript1 $reviewProScript1;
  1069.         return $this;
  1070.     }
  1071.     /**
  1072.      * Getter for reviewProScript2.
  1073.      *
  1074.      * @return mixed
  1075.      */
  1076.     public function getReviewProScript2()
  1077.     {
  1078.         return $this->reviewProScript2;
  1079.     }
  1080.     /**
  1081.      * Setter for reviewProScript2.
  1082.      *
  1083.      * @param mixed $reviewProScript2
  1084.      *
  1085.      * @return Hotel
  1086.      */
  1087.     public function setReviewProScript2($reviewProScript2)
  1088.     {
  1089.         $this->reviewProScript2 $reviewProScript2;
  1090.         return $this;
  1091.     }
  1092.     /**
  1093.      * Getter for reviewProScript3.
  1094.      *
  1095.      * @return mixed
  1096.      */
  1097.     public function getReviewProScript3()
  1098.     {
  1099.         return $this->reviewProScript3;
  1100.     }
  1101.     /**
  1102.      * Setter for reviewProScript3.
  1103.      *
  1104.      * @param mixed $reviewProScript3
  1105.      *
  1106.      * @return Hotel
  1107.      */
  1108.     public function setReviewProScript3($reviewProScript3)
  1109.     {
  1110.         $this->reviewProScript3 $reviewProScript3;
  1111.         return $this;
  1112.     }
  1113.     /**
  1114.      * Getter for reviewProScript4.
  1115.      *
  1116.      * @return mixed
  1117.      */
  1118.     public function getReviewProScript4()
  1119.     {
  1120.         return $this->reviewProScript4;
  1121.     }
  1122.     /**
  1123.      * Setter for reviewProScript4.
  1124.      *
  1125.      * @param mixed $reviewProScript4
  1126.      *
  1127.      * @return Hotel
  1128.      */
  1129.     public function setReviewProScript4($reviewProScript4)
  1130.     {
  1131.         $this->reviewProScript4 $reviewProScript4;
  1132.         return $this;
  1133.     }
  1134.     /**
  1135.      * Getter for reviewProScript5.
  1136.      *
  1137.      * @return mixed
  1138.      */
  1139.     public function getReviewProScript5()
  1140.     {
  1141.         return $this->reviewProScript5;
  1142.     }
  1143.     /**
  1144.      * Setter for reviewProScript5.
  1145.      *
  1146.      * @param mixed $reviewProScript5
  1147.      *
  1148.      * @return Hotel
  1149.      */
  1150.     public function setReviewProScript5($reviewProScript5)
  1151.     {
  1152.         $this->reviewProScript5 $reviewProScript5;
  1153.         return $this;
  1154.     }
  1155.     /**
  1156.      * Getter for reviewProScript6.
  1157.      *
  1158.      * @return mixed
  1159.      */
  1160.     public function getReviewProScript6()
  1161.     {
  1162.         return $this->reviewProScript6;
  1163.     }
  1164.     /**
  1165.      * Setter for reviewProScript6.
  1166.      *
  1167.      * @param mixed $reviewProScript6
  1168.      *
  1169.      * @return Hotel
  1170.      */
  1171.     public function setReviewProScript6($reviewProScript6)
  1172.     {
  1173.         $this->reviewProScript6 $reviewProScript6;
  1174.         return $this;
  1175.     }
  1176.     public static function getCities()
  1177.     {
  1178.         return [
  1179.             self::CITY_MENORCA => self::CITY_MENORCA,
  1180.             self::CITY_MADRID => self::CITY_MADRID,
  1181.         ];
  1182.     }
  1183.     /**
  1184.      * Getter for enabledPickingUp.
  1185.      *
  1186.      * @return bool|null
  1187.      */
  1188.     public function getEnabledPickingUp()
  1189.     {
  1190.         return $this->enabledPickingUp;
  1191.     }
  1192.     /**
  1193.      * Setter for enabledPickingUp.
  1194.      *
  1195.      * @param bool|null $enabledPickingUp
  1196.      *
  1197.      * @return Hotel
  1198.      */
  1199.     public function setEnabledPickingUp($enabledPickingUp)
  1200.     {
  1201.         $this->enabledPickingUp $enabledPickingUp;
  1202.         return $this;
  1203.     }
  1204.     public function getGoogleStructuredCode()
  1205.     {
  1206.         return $this->translate(nullfalse)->getGoogleStructuredCode();
  1207.     }
  1208.     public function setGoogleStructuredCode($googleStructuredCode)
  1209.     {
  1210.         $this->translate(nullfalse)->setGoogleStructuredCode($googleStructuredCode);
  1211.         return $this;
  1212.     }
  1213.     public function getMiraiHotelId()
  1214.     {
  1215.         return $this->miraiHotelId;
  1216.     }
  1217.     public function setMiraiHotelId($miraiHotelId)
  1218.     {
  1219.         $this->miraiHotelId $miraiHotelId;
  1220.     }
  1221.     /**
  1222.      * @return mixed
  1223.      */
  1224.     public function getHappyForceHierarchyId()
  1225.     {
  1226.         return $this->happyForceHierarchyId;
  1227.     }
  1228.     /**
  1229.      * @param mixed $happyForceHierarchyId
  1230.      */
  1231.     public function setHappyForceHierarchyId($happyForceHierarchyId): void
  1232.     {
  1233.         $this->happyForceHierarchyId $happyForceHierarchyId;
  1234.     }
  1235.     /**
  1236.      * @return mixed
  1237.      */
  1238.     public function getGalleryCertifications()
  1239.     {
  1240.         return $this->galleryCertifications;
  1241.     }
  1242.     /**
  1243.      * @param mixed $galleryCertifications
  1244.      */
  1245.     public function setGalleryCertifications($galleryCertifications): void
  1246.     {
  1247.         $this->galleryCertifications $galleryCertifications;
  1248.     }
  1249.     /**
  1250.      * @return string|null
  1251.      */
  1252.     public function getLeftIcons(): ?string
  1253.     {
  1254.         return $this->leftIcons;
  1255.     }
  1256.     /**
  1257.      * @param string|null $leftIcons
  1258.      */
  1259.     public function setLeftIcons(?string $leftIcons): void
  1260.     {
  1261.         $this->leftIcons $leftIcons;
  1262.     }
  1263.     /**
  1264.      * @return string|null
  1265.      */
  1266.     public function getRightIcons(): ?string
  1267.     {
  1268.         return $this->rightIcons;
  1269.     }
  1270.     /**
  1271.      * @param string|null $rightIcons
  1272.      */
  1273.     public function setRightIcons(?string $rightIcons): void
  1274.     {
  1275.         $this->rightIcons $rightIcons;
  1276.     }
  1277.     /**
  1278.      * @return string|null
  1279.      */
  1280.     public function getRightScript1(): ?string
  1281.     {
  1282.         return $this->rightScript1;
  1283.     }
  1284.     /**
  1285.      * @param string|null $rightScript1
  1286.      */
  1287.     public function setRightScript1(?string $rightScript1): void
  1288.     {
  1289.         $this->rightScript1 $rightScript1;
  1290.     }
  1291.     /**
  1292.      * @return string|null
  1293.      */
  1294.     public function getRightScript2(): ?string
  1295.     {
  1296.         return $this->rightScript2;
  1297.     }
  1298.     /**
  1299.      * @param string|null $rightScript2
  1300.      */
  1301.     public function setRightScript2(?string $rightScript2): void
  1302.     {
  1303.         $this->rightScript2 $rightScript2;
  1304.     }
  1305.     /**
  1306.      * @return string|null
  1307.      */
  1308.     public function getRightScript3(): ?string
  1309.     {
  1310.         return $this->rightScript3;
  1311.     }
  1312.     /**
  1313.      * @param string|null $rightScript3
  1314.      */
  1315.     public function setRightScript3(?string $rightScript3): void
  1316.     {
  1317.         $this->rightScript3 $rightScript3;
  1318.     }
  1319.     /**
  1320.      * @return string|null
  1321.      */
  1322.     public function getRightScript4(): ?string
  1323.     {
  1324.         return $this->rightScript4;
  1325.     }
  1326.     /**
  1327.      * @param string|null $rightScript4
  1328.      */
  1329.     public function setRightScript4(?string $rightScript4): void
  1330.     {
  1331.         $this->rightScript4 $rightScript4;
  1332.     }
  1333.     /**
  1334.      * @return string|null
  1335.      */
  1336.     public function getRightScript5(): ?string
  1337.     {
  1338.         return $this->rightScript5;
  1339.     }
  1340.     /**
  1341.      * @param string|null $rightScript5
  1342.      */
  1343.     public function setRightScript5(?string $rightScript5): void
  1344.     {
  1345.         $this->rightScript5 $rightScript5;
  1346.     }
  1347.     /**
  1348.      * @return string|null
  1349.      */
  1350.     public function getRightScript6(): ?string
  1351.     {
  1352.         return $this->rightScript6;
  1353.     }
  1354.     /**
  1355.      * @param string|null $rightScript6
  1356.      */
  1357.     public function setRightScript6(?string $rightScript6): void
  1358.     {
  1359.         $this->rightScript6 $rightScript6;
  1360.     }
  1361.     /**
  1362.      * @return bool
  1363.      */
  1364.     public function isApartment(): bool
  1365.     {
  1366.         return $this->isApartment;
  1367.     }
  1368.     /**
  1369.      * @param bool $isApartment
  1370.      */
  1371.     public function setIsApartment(bool $isApartment): void
  1372.     {
  1373.         $this->isApartment $isApartment;
  1374.     }
  1375.     /**
  1376.      * @return Gallery|null
  1377.      */
  1378.     public function getCityGallery(): ?Gallery
  1379.     {
  1380.         return $this->cityGallery;
  1381.     }
  1382.     /**
  1383.      * @param Gallery|null $cityGallery
  1384.      */
  1385.     public function setCityGallery(?Gallery $cityGallery): void
  1386.     {
  1387.         $this->cityGallery $cityGallery;
  1388.     }
  1389.     /**
  1390.      * @return Collection|TagInterface[]
  1391.      */
  1392.     public function getTags(): Collection
  1393.     {
  1394.         return $this->tags;
  1395.     }
  1396.     public function setTags(Collection $tags): void
  1397.     {
  1398.         $this->tags $tags;
  1399.     }
  1400.     public function addTag(TagInterface $tag): void
  1401.     {
  1402.         if (!$this->tags->contains($tag)) {
  1403.             $this->tags->add($tag);
  1404.         }
  1405.     }
  1406.     public function removeTag(TagInterface $tag): void
  1407.     {
  1408.         $this->tags->removeElement($tag);
  1409.     }
  1410.     /**
  1411.      * @return string|null
  1412.      */
  1413.     public function getDirection(): ?string
  1414.     {
  1415.         return $this->direction;
  1416.     }
  1417.     /**
  1418.      * @param string|null $direction
  1419.      */
  1420.     public function setDirection(?string $direction): void
  1421.     {
  1422.         $this->direction $direction;
  1423.     }
  1424. }