/** * @param Hotel $hotel * @return bool|string */ public function generateHotelUrl(Hotel $hotel, $lang = null, $absolute = false, $rate = null) { $brand = $hotel->getBrand()->getArtsysId(); $city = ($hotel->getCity() and $hotel->getCity()->getSlug()) ? $hotel->getCity()->getSlug() : 'null'; $region = ($hotel->getRegion() and $hotel->getRegion()->getSlug()) ? $hotel->getRegion()->getSlug() : 'null'; $country = ($hotel->getRegion() and $hotel->getRegion()->getCountry() and $hotel->getRegion()->getCountry()->getSlug()) ? $hotel->getRegion()->getCountry()->getSlug() : 'null'; $slug = $hotel->getSlug() ? $hotel->getSlug() : ''; if ($lang === null) { $lang = $this->context->get('language'); } if ($rate and !is_object($rate)) { $rate = $this->entityManager->getRepository('SehBundle:Reservit\\Rate')->find($rate); } $rateSlug = null; if ($rate) { $rateSlug = sprintf('%s-%s', $this->translator->trans('seo.url.hotel.special_rate.prefix'), $rate->getSlug()); } if ($brand && $slug) { if ($brand == 'PDJ') { return $this->router->generate('hotel_pdj', array('region' => $region, 'city' => $city, 'slug' => $slug, 'rateSlug' => $rateSlug, 'locale' => $lang), $absolute); } elseif ($brand == 'IH') { return $this->router->generate('hotel_ih', array('region' => $region, 'city' => $city, 'slug' => $slug, 'rateSlug' => $rateSlug, 'locale' => $lang), $absolute); } elseif ($brand == 'QYS') { return $this->router->generate('hotel_qys', array('country' => $country, 'region' => $region, 'city' => $city, 'slug' => $slug, 'rateSlug' => $rateSlug, 'locale' => $lang), $absolute); } elseif ($brand == 'RDS') { return $this->router->generate('hotel_rds', array('country' => $country, 'region' => $region, 'slug' => $slug, 'rateSlug' => $rateSlug, 'locale' => $lang), $absolute); } } return false; }