static function _validate_cart_rental($data) { if (is_array($data) && count($data)) { $result = ValidateWooCheckout::_get_order_rental($data['rental_id'], $data['check_in'], $data['check_out']); $total_rental = intval(get_post_meta($data['rental_id'], 'rental_number', true)); if ($total_rental <= 0) { $total_rental = 0; } for ($i = $data['check_in']; $i <= $data['check_out']; $i = strtotime('+1 day', $i)) { $number_room = 0; $number_room_cart = 1; if (is_array($result) && count($result)) { foreach ($result as $item) { if ($i >= intval($item['check_in_timestamp']) && $i <= intval($item['check_out_timestamp'])) { $number_room += 1; } } if ($number_room_cart + $number_room > $total_rental) { $free_room = $total_rental - $number_room; $_SESSION['flash_validate_checkout'] = '<p class="bg-danger" style="padding: 10px 5px">' . sprintf(__('This <b>%s</b> rental has only %s rental(s) available on <b>%s</b>.', ST_TEXTDOMAIN), get_the_title($data['rental_id']), $free_room, date(TravelHelper::getDateFormat(), $i)) . '</p>'; return false; } } else { if ($number_room_cart > $total_rental) { $_SESSION['flash_validate_checkout'] = '<p class="bg-danger" style="padding: 10px 5px">' . sprintf(__('This <b>%s</b> rental has only %s rental(s) available on <b>%s</b>.', ST_TEXTDOMAIN), get_the_title($data['rental_id']), $total_rental, date(TravelHelper::getDateFormat(), $i)) . '</p>'; return false; } } } } return true; }
public function _before_checkout_process() { global $woocommerce; $cart_url = $woocommerce->cart->get_cart_url(); $_SESSION['flash_validate_checkout'] = ''; $cart = WC()->cart->get_cart(); $cart_hotel = ValidateWooCheckout::get_cart_data($cart, 'st_hotel'); $validate_hotel = ValidateWooCheckout::check_validate_hotel($cart_hotel); if (!$validate_hotel) { $data = array('result' => 'failure', 'messages' => '<div class="error-checkout mb20">' . $_SESSION['flash_validate_checkout'] . '<a href="' . $cart_url . '">' . __('Back to Cart page.', ST_TEXTDOMAIN) . '</a></div>', 'refresh' => 'false', 'reload' => 'false'); $_SESSION['flash_validate_checkout'] = ''; echo json_encode($data); die; } $cart_rental = ValidateWooCheckout::get_cart_data($cart, 'st_rental'); $validate_rental = ValidateWooCheckout::check_validate_rental($cart_rental); if (!$validate_rental) { $data = array('result' => 'failure', 'messages' => '<div class="error-checkout mb20">' . $_SESSION['flash_validate_checkout'] . '<a href="' . $cart_url . '">' . __('Back to Cart page.', ST_TEXTDOMAIN) . '</a></div>', 'refresh' => 'false', 'reload' => 'false'); $_SESSION['flash_validate_checkout'] = ''; echo json_encode($data); die; } $cart_tour = ValidateWooCheckout::get_cart_data($cart, 'st_tours'); $validate_tour = ValidateWooCheckout::check_validate_tour($cart_tour); if (!$validate_tour) { $data = array('result' => 'failure', 'messages' => '<div class="error-checkout mb20">' . $_SESSION['flash_validate_checkout'] . '<a href="' . $cart_url . '">' . __('Back to Cart page.', ST_TEXTDOMAIN) . '</a></div>', 'refresh' => 'false', 'reload' => 'false'); $_SESSION['flash_validate_checkout'] = ''; echo json_encode($data); die; } $cart_holiday = ValidateWooCheckout::get_cart_data($cart, 'st_holidays'); $validate_holiday = ValidateWooCheckout::check_validate_holiday($cart_holiday); if (!$validate_holiday) { $data = array('result' => 'failure', 'messages' => '<div class="error-checkout mb20">' . $_SESSION['flash_validate_checkout'] . '<a href="' . $cart_url . '">' . __('Back to Cart page.', ST_TEXTDOMAIN) . '</a></div>', 'refresh' => 'false', 'reload' => 'false'); $_SESSION['flash_validate_checkout'] = ''; echo json_encode($data); die; } $cart_activity = ValidateWooCheckout::get_cart_data($cart, 'st_activity'); $validate_activity = ValidateWooCheckout::check_validate_activity($cart_activity); if (!$validate_activity) { $data = array('result' => 'failure', 'messages' => '<div class="error-checkout mb20">' . $_SESSION['flash_validate_checkout'] . '<a href="' . $cart_url . '">' . __('Back to Cart page.', ST_TEXTDOMAIN) . '</a></div>', 'refresh' => 'false', 'reload' => 'false'); $_SESSION['flash_validate_checkout'] = ''; echo json_encode($data); die; } $cart_cars = ValidateWooCheckout::get_cart_data($cart, 'st_cars'); $validate_cars = ValidateWooCheckout::check_validate_car($cart_cars); if (!$validate_cars) { $data = array('result' => 'failure', 'messages' => '<div class="error-checkout mb20">' . $_SESSION['flash_validate_checkout'] . '<a href="' . $cart_url . '">' . __('Back to Cart page.', ST_TEXTDOMAIN) . '</a></div>', 'refresh' => 'false', 'reload' => 'false'); $_SESSION['flash_validate_checkout'] = ''; echo json_encode($data); die; } }
static function check_validate_hotel($data) { if (is_array($data) && count($data)) { foreach ($data as $key => $val) { $room_id = $key; $hotel_id = get_post_meta($room_id, 'room_parent', true); $allow_full_day = get_post_meta($hotel_id, 'allow_full_day', true); if (!$allow_full_day || $allow_full_day == '') { $allow_full_day = 'on'; } $total_room = intval(get_post_meta($key, 'number_room', true)); if ($total_room <= 0) { $total_room = 0; } $result = ValidateWooCheckout::_get_order_hotel($key, $val['min'], $val['max']); for ($i = intval($val['min']); $i <= intval($val['max']); $i = strtotime('+1 day', $i)) { $number_room = 0; $number_room_cart = 0; if (is_array($result) && count($result)) { foreach ($result as $item) { if ($allow_full_day == 'on') { if ($i >= intval($item['check_in_timestamp']) && $i <= intval($item['check_out_timestamp'])) { $number_room += $item['number_room']; } } else { if ($i >= intval($item['check_in_timestamp']) && $i < intval($item['check_out_timestamp'])) { $number_room += $item['number_room']; } } } foreach ($val['date'] as $key => $date) { if ($i >= intval($date['check_in']) && $i <= intval($date['check_out'])) { $number_room_cart += $val['room_num_search'][$key]; } } if ($number_room_cart + $number_room > $total_room) { $free_room = $total_room - $number_room; $_SESSION['flash_validate_checkout'] = '<p class="bg-danger" style="padding: 10px 5px">' . sprintf(__('The <b>%s</b> room has only %s room(s) available on <b>%s</b>.', ST_TEXTDOMAIN), get_the_title($room_id), $free_room, date(TravelHelper::getDateFormat(), $i)) . '</p>'; return false; } } else { $number_room_cart = 0; foreach ($val['date'] as $key => $date) { if ($i >= intval($date['check_in']) && $i <= intval($date['check_out'])) { $number_room_cart += $val['room_num_search'][$key]; } } if ($number_room_cart > $total_room) { $_SESSION['flash_validate_checkout'] = '<p class="bg-danger" style="padding: 10px 5px">' . sprintf(__('This <b>%s</b> room has only %s room(s) available on <b>%s</b>.', ST_TEXTDOMAIN), get_the_title($room_id), $total_room, date(TravelHelper::getDateFormat(), $i)) . '</p>'; return false; } } } } } return true; }