diff --git a/controllers/front/CategoryController.php b/controllers/front/CategoryController.php index 0fc5f8efb..c96a8632d 100644 --- a/controllers/front/CategoryController.php +++ b/controllers/front/CategoryController.php @@ -101,16 +101,8 @@ class CategoryControllerCore extends FrontController // validate dates if available $dateFrom = Tools::getValue('date_from'); $dateTo = Tools::getValue('date_to'); - - $currentTimestamp = strtotime(date('Y-m-d')); - $dateFromTimestamp = strtotime($dateFrom); - $dateToTimestamp = strtotime($dateTo); - - if ($dateFrom != '' && ($dateFromTimestamp === false || ($dateFromTimestamp < $currentTimestamp))) { - Tools::redirect($this->context->link->getPageLink('pagenotfound')); - } - - if ($dateTo != '' && ($dateToTimestamp === false || ($dateToTimestamp < $currentTimestamp))) { + $idHotel = HotelBranchInformation::getHotelIdByIdCategory($id_category); + if (!HotelHelper::validateDateRangeForHotel($dateFrom, $dateTo, $idHotel)) { Tools::redirect($this->context->link->getPageLink('pagenotfound')); } diff --git a/controllers/front/ProductController.php b/controllers/front/ProductController.php index 1028ae6e0..177fd5004 100644 --- a/controllers/front/ProductController.php +++ b/controllers/front/ProductController.php @@ -109,26 +109,18 @@ class ProductControllerCore extends FrontController // validate dates if available $dateFrom = Tools::getValue('date_from'); $dateTo = Tools::getValue('date_to'); - - $currentTimestamp = strtotime(date('Y-m-d')); - $dateFromTimestamp = strtotime($dateFrom); - $dateToTimestamp = strtotime($dateTo); - - if ($dateFrom != '' && ($dateFromTimestamp === false || ($dateFromTimestamp < $currentTimestamp))) { - Tools::redirect($this->context->link->getPageLink('pagenotfound')); - } - - if ($dateTo != '' && ($dateToTimestamp === false || ($dateToTimestamp < $currentTimestamp))) { - Tools::redirect($this->context->link->getPageLink('pagenotfound')); - } - parent::init(); if ($id_product = (int) Tools::getValue('id_product')) { $this->product = new Product($id_product, true, $this->context->language->id, $this->context->shop->id); } - if (!$this->product->booking_product || ($this->product->booking_product && !$this->product->show_at_front)) { + $objHotelRoomType = new HotelRoomType(); + $hotelRoomInfo = $objHotelRoomType->getRoomTypeInfoByIdProduct($this->product->id); + $idHotel = (int) $hotelRoomInfo['id_hotel']; + if (!HotelHelper::validateDateRangeForHotel($dateFrom, $dateTo, $idHotel)) { + Tools::redirect($this->context->link->getPageLink('pagenotfound')); + } else if (!$this->product->booking_product || ($this->product->booking_product && !$this->product->show_at_front)) { Tools::redirect($this->context->link->getPageLink('pagenotfound')); } diff --git a/modules/hotelreservationsystem/classes/HotelHelper.php b/modules/hotelreservationsystem/classes/HotelHelper.php index 0b615f59a..e4d78f7f8 100644 --- a/modules/hotelreservationsystem/classes/HotelHelper.php +++ b/modules/hotelreservationsystem/classes/HotelHelper.php @@ -931,4 +931,25 @@ class HotelHelper return $daysDifference; } + + public static function validateDateRangeForHotel($dateFrom, $dateTo, $idHotel) + { + $validStartDateTimeStamp = strtotime(date('Y-m-d')); + if ($preparationTime = (int) HotelOrderRestrictDate::getPreparationTime($idHotel)) { + $validStartDateTimeStamp = strtotime(date('Y-m-d', strtotime('+ '.$preparationTime.' day'))); + } + + $dateFromTimestamp = strtotime($dateFrom); + $dateToTimestamp = strtotime($dateTo); + $isValid = true; + if ($dateFrom != '' && ($dateFromTimestamp === false || ($dateFromTimestamp < $validStartDateTimeStamp))) { + $isValid = false; + } else if ($dateTo != '' && ($dateToTimestamp === false || ($dateToTimestamp < $validStartDateTimeStamp))) { + $isValid = false; + } else if ($dateTo != '' && $dateFrom != '' && $dateFromTimestamp >= $dateToTimestamp) { + $isValid = false; + } + + return $isValid; + } }