예제 #1
0
 public function _check_validate()
 {
     $data = array();
     $order_item_id = STInput::request('order_item_id', '');
     $st_first_name = STInput::request('st_first_name', '');
     if (empty($st_first_name)) {
         STAdmin::set_message(__('The firstname field is not empty.', ST_TEXTDOMAIN), 'danger');
         return false;
     }
     $st_last_name = STInput::request('st_last_name', '');
     if (empty($st_last_name)) {
         STAdmin::set_message(__('The lastname field is not empty.', ST_TEXTDOMAIN), 'danger');
         return false;
     }
     $st_email = STInput::request('st_email', '');
     if (empty($st_email)) {
         STAdmin::set_message(__('The email field is not empty.', ST_TEXTDOMAIN), 'danger');
         return false;
     }
     $st_phone = STInput::request('st_phone', '');
     if (empty($st_phone)) {
         STAdmin::set_message(__('The phone field is not empty.', ST_TEXTDOMAIN), 'danger');
         return false;
     }
     if (STInput::request('section', '') != 'edit_order_item') {
         $item_id = intval(STInput::request('item_id', ''));
         if ($item_id <= 0 || get_post_type($item_id) != 'st_rental') {
             STAdmin::set_message(__('The rental field is not empty.', ST_TEXTDOMAIN), 'danger');
             return false;
         }
         $check_in = STInput::request('check_in', '');
         if (empty($check_in)) {
             STAdmin::set_message(__('Date is invalid', ST_TEXTDOMAIN), 'danger');
             return false;
         }
         $check_out = STInput::request('check_out', '');
         if (empty($check_out)) {
             STAdmin::set_message(__('Date is invalid', ST_TEXTDOMAIN), 'danger');
             return false;
         }
         if (STInput::request('adult_number', '') == "") {
             STAdmin::set_message(__('The No. adults field is not empty', ST_TEXTDOMAIN), 'danger');
             return false;
         }
         $adult_number = intval(STInput::request('adult_number', ''));
         if ($adult_number <= 0) {
             $adult_number = 1;
         }
         if (STInput::request('child_number', '') == "") {
             STAdmin::set_message(__('The No. children field is not empty', ST_TEXTDOMAIN), 'danger');
             return false;
         }
         $child_number = intval(STInput::request('child_number', ''));
         if ($child_number <= 0) {
             $child_number = 0;
         }
         if (strtotime($check_out) - strtotime($check_in) <= 0) {
             STAdmin::set_message(__('The check-out is later than the check-in.', ST_TEXTDOMAIN), 'danger');
             return false;
         }
         $adult = intval(get_post_meta($item_id, 'rental_max_adult', true));
         $children = intval(get_post_meta($item_id, 'rental_max_children', true));
         if ($adult_number > $adult) {
             STAdmin::set_message(__('Number of adults in the room are incorrect.', ST_TEXTDOMAIN), 'danger');
             return false;
         }
         if ($child_number > $children) {
             STAdmin::set_message(__('Number of children in the room are incorrect.', ST_TEXTDOMAIN), 'danger');
             return false;
         }
         $today = date('m/d/Y');
         $period = TravelHelper::dateDiff($today, $check_in);
         $compare = TravelHelper::dateCompare($today, $check_in);
         $booking_period = get_post_meta($item_id, 'rentals_booking_period', true);
         if (empty($booking_period) || $booking_period <= 0) {
             $booking_period = 0;
         }
         if ($compare < 0) {
             STAdmin::set_message(__('You can not set check-in date in the past', ST_TEXTDOMAIN), 'danger');
             return false;
         }
         if ($period < $booking_period) {
             STAdmin::set_message(sprintf(__('This rental allow minimum booking is %d day(s)', ST_TEXTDOMAIN), $booking_period), 'danger');
             return false;
         }
         $checkin_ymd = date('Y-m-d', strtotime($check_in));
         $checkout_ymd = date('Y-m-d', strtotime($check_out));
         if (!RentalHelper::check_day_cant_order($item_id, $checkin_ymd, $checkout_ymd, 1)) {
             STAdmin::set_message(sprintf(__('This rental is not available from %s to %s.', ST_TEXTDOMAIN), $checkin_ymd, $checkout_ymd), 'danger');
             $pass_validate = FALSE;
             return false;
         }
         if (!RentalHelper::_check_room_available($item_id, $checkin_ymd, $checkout_ymd, 1)) {
             STAdmin::set_message(__('This rental is not available.', ST_TEXTDOMAIN), 'danger');
             $pass_validate = FALSE;
             return false;
         }
         $data = array('order_item_id' => $order_item_id, 'item_id' => $item_id, 'type' => 'normal_booking', 'check_in' => $check_in, 'check_out' => $check_out, 'st_booking_post_type' => 'st_rental', 'st_booking_id' => $item_id, 'adult_number' => $adult_number, 'child_number' => $child_number, 'room_num_search' => 1, 'check_in_timestamp' => strtotime($check_in), 'check_out_timestamp' => strtotime($check_out), 'status' => $_POST['status']);
     }
     return $data;
 }
예제 #2
0
 function do_add_to_cart()
 {
     $form_validate = TRUE;
     $item_id = intval(STInput::request('item_id', ''));
     if ($item_id <= 0 || get_post_type($item_id) != 'st_rental') {
         STTemplate::set_message(__('This rental is not available.', ST_TEXTDOMAIN), 'danger');
         $form_validate = FALSE;
         return false;
     }
     $check_in = STInput::request('start', '');
     if (empty($check_in)) {
         STTemplate::set_message(__('The check in field is not empty.', ST_TEXTDOMAIN), 'danger');
         $form_validate = FALSE;
         return false;
     }
     $check_in = TravelHelper::convertDateFormat($check_in);
     $check_out = STInput::request('end', '');
     if (empty($check_out)) {
         STTemplate::set_message(__('The check out field is not empty.', ST_TEXTDOMAIN), 'danger');
         $form_validate = FALSE;
         return false;
     }
     $check_out = TravelHelper::convertDateFormat($check_out);
     $today = date('m/d/Y');
     $booking_period = get_post_meta($item_id, 'rentals_booking_period', true);
     if (empty($booking_period) || $booking_period <= 0) {
         $booking_period = 0;
     }
     $period = TravelHelper::dateDiff($today, $check_in);
     $compare = TravelHelper::dateCompare($today, $check_in);
     if ($compare < 0) {
         STTemplate::set_message(__('You can not set check-in date in the past', ST_TEXTDOMAIN), 'danger');
         $form_validate = FALSE;
         return false;
     }
     if ($period < $booking_period) {
         STTemplate::set_message(sprintf(__('This rental allow minimum booking is %d day(s)', ST_TEXTDOMAIN), $booking_period), 'danger');
         $form_validate = FALSE;
         return false;
     }
     $adult_number = intval(STInput::request('adult_number', ''));
     $child_number = intval(STInput::request('child_number', ''));
     $max_adult = intval(get_post_meta($item_id, 'rental_max_adult', true));
     $max_children = intval(get_post_meta($item_id, 'rental_max_children', true));
     if ($adult_number > $max_adult) {
         STTemplate::set_message(sprintf(__('A maximum number of adult(s): %d', ST_TEXTDOMAIN), $max_adult), 'danger');
         $form_validate = FALSE;
         return false;
     }
     if ($child_number > $max_children) {
         STTemplate::set_message(sprintf(__('A maximum number of children: %d', ST_TEXTDOMAIN), $max_children), 'danger');
         $form_validate = FALSE;
         return false;
     }
     $number_room = intval(get_post_meta($item_id, 'rental_number', true));
     $check_in_tmp = date('Y-m-d', strtotime($check_in));
     $check_out_tmp = date('Y-m-d', strtotime($check_out));
     if (!RentalHelper::check_day_cant_order($item_id, $check_in_tmp, $check_out_tmp, 1)) {
         STTemplate::set_message(sprintf(__('This rental is not available from %s to %s.', ST_TEXTDOMAIN), $check_in_tmp, $check_out_tmp), 'danger');
         $pass_validate = FALSE;
         return false;
     }
     if (!RentalHelper::_check_room_available($item_id, $check_in_tmp, $check_out_tmp, 1)) {
         STTemplate::set_message(__('This rental is not available.', ST_TEXTDOMAIN), 'danger');
         $pass_validate = FALSE;
         return false;
     }
     $item_price = STPrice::getRentalPriceOnlyCustomPrice($item_id, strtotime($check_in), strtotime($check_out));
     $extras = STInput::request('extra_price', array());
     $numberday = TravelHelper::dateDiff($check_in, $check_out);
     $extra_price = STPrice::getExtraPrice($extras, 1, $numberday);
     $price_sale = STPrice::getSalePrice($item_id, $item_price, strtotime($check_in), strtotime($check_out));
     $discount_rate = STPrice::get_discount_rate($item_id, strtotime($check_in));
     $data = array('item_price' => $item_price, 'ori_price' => $price_sale + $extra_price, 'check_in' => $check_in, 'check_out' => $check_out, 'adult_number' => $adult_number, 'child_number' => $child_number, 'extras' => $extras, 'extra_price' => $extra_price, 'commission' => TravelHelper::get_commission(), 'discount_rate' => $discount_rate);
     if ($form_validate) {
         $form_validate = apply_filters('st_rental_add_cart_validate', $form_validate);
     }
     if ($form_validate) {
         STCart::add_cart($item_id, 1, $item_price, $data);
     }
     return $form_validate;
 }