public function hookActionValidateOrder($data)
 {
     $cart = $data['cart'];
     $order = $data['order'];
     $customer = $data['customer'];
     $cart_products = $cart->getProducts();
     foreach ($cart_products as $k => $v) {
         $obj_cart_bk_data = new HotelCartBookingData();
         $cart_bk_data = $obj_cart_bk_data->getOnlyCartBookingData($cart->id, $cart->id_guest, $v['id_product']);
         if ($cart_bk_data) {
             foreach ($cart_bk_data as $cb_k => $cb_v) {
                 $obj_cart_bk_data = new HotelCartBookingData($cb_v['id']);
                 $obj_cart_bk_data->id_order = $order->id;
                 $obj_cart_bk_data->id_customer = $customer->id;
                 $obj_cart_bk_data->save();
                 $obj_htl_bk_dtl = new HotelBookingDetail();
                 $obj_htl_bk_dtl->id_product = $v['id_product'];
                 $obj_htl_bk_dtl->id_order = $order->id;
                 $obj_htl_bk_dtl->id_cart = $cart->id;
                 $obj_htl_bk_dtl->id_room = $obj_cart_bk_data->id_room;
                 $obj_htl_bk_dtl->id_hotel = $obj_cart_bk_data->id_hotel;
                 $obj_htl_bk_dtl->id_customer = $customer->id;
                 $obj_htl_bk_dtl->booking_type = $obj_cart_bk_data->booking_type;
                 $obj_htl_bk_dtl->id_status = 1;
                 $obj_htl_bk_dtl->comment = $obj_cart_bk_data->comment;
                 $obj_htl_bk_dtl->date_from = $obj_cart_bk_data->date_from;
                 $obj_htl_bk_dtl->date_to = $obj_cart_bk_data->date_to;
                 $obj_htl_bk_dtl->save();
             }
         }
     }
 }
         $hotel_room_info_arr = $hotel_room_data['rm_data'][0]['data']['available'];
         if ($hotel_room_info_arr) {
             $i = 0;
             foreach ($hotel_room_info_arr as $key => $value) {
                 if ($i < $quantity) {
                     $obj_htl_cart_booking_data = new HotelCartBookingData();
                     $obj_htl_cart_booking_data->id_cart = $id_cart;
                     $obj_htl_cart_booking_data->id_guest = $id_guest;
                     $obj_htl_cart_booking_data->id_customer = $id_customer;
                     $obj_htl_cart_booking_data->id_product = $value['id_product'];
                     $obj_htl_cart_booking_data->id_room = $value['id_room'];
                     $obj_htl_cart_booking_data->id_hotel = $value['id_hotel'];
                     $obj_htl_cart_booking_data->booking_type = 1;
                     $obj_htl_cart_booking_data->date_from = $date_from;
                     $obj_htl_cart_booking_data->date_to = $date_to;
                     $obj_htl_cart_booking_data->save();
                     $i++;
                 } else {
                     break;
                 }
             }
             die(Tools::jsonEncode(array('status' => 'success', 'avail_rooms' => $total_available_rooms)));
         } else {
             die(Tools::jsonEncode(array('status' => 'failed1')));
         }
     } else {
         die(Tools::jsonEncode(array('status' => 'unavailable_quantity', 'avail_rooms' => $total_available_rooms)));
     }
 } else {
     die(Tools::jsonEncode(array('status' => 'failed2')));
 }
 public function ajaxProcessAddDataToCart()
 {
     // for Add Quantity
     $id_room = Tools::getValue('id_room');
     $booking_type = Tools::getValue('booking_type');
     $comment = Tools::getValue('comment');
     // for both (add , delete)
     $id_hotel = Tools::getValue('id_hotel');
     $id_product = Tools::getValue('id_prod');
     $date_from = Tools::getValue('date_from');
     $date_to = Tools::getValue('date_to');
     $search_id_prod = Tools::getValue('search_id_prod');
     $search_date_from = Tools::getValue('search_date_from');
     $search_date_to = Tools::getValue('search_date_to');
     // for delete quantity
     $id_cart = Tools::getValue('id_cart');
     $id_cart_book_data = Tools::getValue('id_cart_book_data');
     $ajax_delete = Tools::getValue('ajax_delete');
     // If delete from cart(not for room list delete(pagebottom tabs))
     $opt = Tools::getValue('opt');
     // if 1 then add quantity or if 0 means delete quantity
     // discuss later
     //
     // $obj_hotel_info = new HotelBranchInformation();
     // $hotel_info = $obj_hotel_info->hotelBranchInfoById($id_hotel);
     // $date_from = date('Y-m-d H:i:s', strtotime("$date_from +".date('H', strtotime($hotel_info['check_in']))." hours +".date('i', strtotime($hotel_info['check_in']))." minutes"));
     // $date_to = date('Y-m-d H:i:s', strtotime("$date_to +".date('H', strtotime($hotel_info['check_out']))." hours +".date('i', strtotime($hotel_info['check_out']))." minutes"));
     $obj_booking_dtl = new HotelBookingDetail();
     $num_day = $obj_booking_dtl->getNumberOfDays($date_from, $date_to);
     //quantity of product
     $product = new Product($id_product, false, Configuration::get('PS_LANG_DEFAULT'));
     // $id_product_attribute = $product->getDefaultIdProductAttribute();
     if ($opt) {
         // $cart_rules = $this->context->cart->getCartRules();
         $amount = Product::getPriceStatic($id_product, true, null, 6, null, false, true, $num_day);
     }
     if ($opt) {
         $direction = 'up';
     } else {
         $direction = 'down';
     }
     $this->context->cart->updateQty($num_day, $id_product, null, false, $direction);
     $total_amount = $this->context->cart->getOrderTotal();
     $id_cart = $this->context->cart->id;
     $id_guest = $this->context->cookie->id_guest;
     $obj_cart_book_data = new HotelCartBookingData();
     if ($opt) {
         $obj_cart_book_data->id_cart = $id_cart;
         $obj_cart_book_data->id_guest = $id_guest;
         $obj_cart_book_data->id_product = $id_product;
         $obj_cart_book_data->id_room = $id_room;
         $obj_cart_book_data->id_hotel = $id_hotel;
         $obj_cart_book_data->amount = $amount;
         $obj_cart_book_data->booking_type = $booking_type;
         $obj_cart_book_data->comment = $comment;
         $obj_cart_book_data->date_from = $date_from;
         $obj_cart_book_data->date_to = $date_to;
         $obj_cart_book_data->save();
         $obj_rm_info = new HotelRoomInformation($id_room);
         $rms_in_cart = $obj_cart_book_data->getCountRoomsInCart($id_cart, $id_guest);
         $booking_stats = $obj_booking_dtl->getBookingData($date_from, $date_to, $id_hotel, $search_id_prod, 0, 0, 1, 1, 1, 1, 0, 0, $id_cart, $id_guest, 1);
         $cart_data = array('room_num' => $obj_rm_info->room_num, 'room_type' => Product::getProductName((int) $id_product), 'date_from' => date('Y-M-d', strtotime($date_from)), 'date_to' => date('Y-M-d', strtotime($date_to)), 'amount' => $amount, 'qty' => $num_day, 'rms_in_cart' => $rms_in_cart, 'total_amount' => $total_amount, 'booking_stats' => $booking_stats, 'id_cart_book_data' => $obj_cart_book_data->id);
         if ($obj_cart_book_data->id) {
             die(Tools::jsonEncode($cart_data));
         } else {
             die(0);
         }
     } else {
         $data_dlt = $obj_cart_book_data->deleteRowById($id_cart_book_data);
         if ($data_dlt) {
             $rms_in_cart = $obj_cart_book_data->getCountRoomsInCart($id_cart, $id_guest);
             if (!$ajax_delete) {
                 $booking_stats = $obj_booking_dtl->getBookingData($date_from, $date_to, $id_hotel, $search_id_prod, 0, 0, 1, 1, 1, 1, 0, 0, $id_cart, $id_guest, 1);
                 $cart_data = array('total_amount' => $total_amount, 'rms_in_cart' => $rms_in_cart, 'booking_stats' => $booking_stats);
             }
             if ($ajax_delete) {
                 $obj_htl_info = new HotelBranchInformation();
                 $obj_rm_type = new HotelRoomType();
                 $this->context->smarty->assign(array('id_cart' => $id_cart, 'id_guest' => $id_guest));
                 // No use of adult, child, num_rooms
                 $adult = 0;
                 $children = 0;
                 $num_rooms = 1;
                 $booking_data = array();
                 $booking_data = $obj_booking_dtl->getBookingData($search_date_from, $search_date_to, $id_hotel, $search_id_prod, $adult, $children, $num_rooms, 0, 1, 1, 1, 1, $id_cart, $id_guest, 1);
                 $this->context->smarty->assign(array('date_from' => $date_from, 'date_to' => $date_to, 'booking_data' => $booking_data, 'ajax_delete' => $ajax_delete));
                 $tpl_path = 'hotelreservationsystem/views/templates/admin/hotel_rooms_booking/helpers/view/view.tpl';
                 $room_tpl = $this->context->smarty->fetch(_PS_MODULE_DIR_ . $tpl_path);
                 $cart_data = array('total_amount' => $total_amount, 'room_tpl' => $room_tpl, 'rms_in_cart' => $rms_in_cart, 'booking_data' => $booking_data);
             }
             die(Tools::jsonEncode($cart_data));
         } else {
             die(0);
         }
     }
 }