Exemplo n.º 1
0
 /**
  * Display
  */
 public function display($tpl = null)
 {
     // load data
     $this->month = CHLibDate::getMonth(substr($this->search->start_date, 0, -3));
     $this->months_list = CHLibDate::getMonthsList();
     $this->availability = $this->get('Availability');
     // check availability
     if (!$this->availability || $this->availability->errors->errors) {
         // errors view
         $this->setLayout('errors');
     }
     // rooms with extras
     if (isset($this->availability->results)) {
         $this->rooms_with_extras = [];
         $rooms_with_extras = [];
         foreach ($this->availability->results->search_rooms as $search_room) {
             foreach ($search_room->available_rooms as $available_room) {
                 if (count($available_room->extras)) {
                     $rooms_with_extras[] = (int) $available_room->room_id;
                 }
             }
         }
         $this->rooms_with_extras = array_values(array_unique($rooms_with_extras));
     }
     // extend view
     $this->extendView();
     // display the view
     parent::display($tpl);
 }
Exemplo n.º 2
0
 /**
  * Get the availability data for a hotel
  */
 public function getCalendar()
 {
     // hotel_id
     $hotel_id = $this->getHotelId();
     if (!$hotel_id) {
         throw new Exception(CHClient::string('error_resource_not_found'), 404);
     }
     // load search
     $search = CHClient::getSearch();
     // get month start and end dates
     $default_month = substr($search->start_date, 0, -3);
     $month_date = $this->app->getUserStateFromRequest('chclient.month', 'month', $default_month, 'string');
     // init calendar object
     $calendar = new stdClass();
     $calendar->month = CHLibDate::getMonth($month_date);
     $calendar->months_list = CHLibDate::getMonthsList();
     // get ari from api
     $request = (object) ['hotel_id' => $hotel_id, 'start_date' => $calendar->month->start, 'end_date' => $calendar->month->end, 'currency' => $search->currency, 'lang' => JFactory::getLanguage()->getTag()];
     $api_request = $this->apiRequest('ari_get', $request);
     // check for errors
     if ($api_request->errors->errors) {
         return $api_request;
     }
     // finalise calendar object
     $calendar->ari = $api_request->response;
     return $calendar;
 }
Exemplo n.º 3
0
 /**
  * Get Availability
  */
 public function getAvailability()
 {
     // init request
     $search = $this->search;
     $search->hotels_ids = $this->getHotelsIds();
     $api_request = $this->apiRequest('search_results', $search);
     if (!$api_request) {
         return false;
     }
     // prepare availability object
     $availability = (object) [];
     $availability->errors = $api_request->errors;
     $availability->request = $api_request->request->data;
     if (isset($api_request->app)) {
         $availability->app = $api_request->app;
         $availability->app->voucher_text_html = CHLibDisplay::convertMarkdownToHtml($availability->app->voucher_text);
     }
     // inventory tasks
     if (isset($api_request->response->inventory)) {
         // prepare hotel info
         $availability->hotel = CHInventory::prepare($api_request->response->inventory[0]);
         // update inventory db
         foreach ($api_request->response->inventory as $inventory) {
             $this->_db->setQuery("DELETE FROM `#__chclient_inventory` WHERE id = {$inventory->id}")->execute();
             $insert = (object) ['id' => $inventory->id, 'title' => $inventory->title, 'slug' => $inventory->slug, 'data' => json_encode($inventory)];
             $this->_db->insertObject('#__chclient_inventory', $insert, 'id');
         }
     }
     // check for errors
     if ($api_request->errors->errors) {
         // init calendar object
         if (isset($api_request->response->month_ari)) {
             $calendar = new stdClass();
             $calendar->month = CHLibDate::getMonth(substr($search->start_date, 0, -3));
             $calendar->months_list = CHLibDate::getMonthsList();
             $calendar->ari = $api_request->response->month_ari;
             $availability->calendar = $calendar;
         }
         return $availability;
     }
     // prepare the info
     $availability->results = $api_request->response->results[0];
     $availability->month_ari = $api_request->response->month_ari;
     return $availability;
 }