/**
  * 
  * get rooms
  *
  * @access public	
  * @param
  * @return	
  */
 public function __getRooms()
 {
     parent::load_model("OWS_rooms");
     $this->roomList = array();
     $result = $this->CI->ows_information->QueryHotelInformation();
     $roomList = $result["HotelInformation"]["HotelExtendedInformation"]["FacilityInfo"]["GuestRooms"]["GuestRoom"];
     foreach ($roomList as $room) {
         $roomObject = new OWS_rooms($room["RoomDescription"]["Text"]["TextElement"]["!"], $room["!code"], $room["!maxOccupancy"]);
         $this->roomList[] = $roomObject;
     }
     return $this->roomList;
 }
 /**
  * constructor
  * 
  * @access public
  * @param
  * @return
  */
 public function __construct()
 {
     parent::__construct();
     $this->load_session();
     parent::load_soap("OWS_soap_security");
 }
 /**
  * 
  * detail availabilty
  *
  * @access protected	
  * @param
  * @return	
  */
 public function detail_availability($StartDate, $EndDate, $totalNumberOfGuests, $numberOfChildren, $numberOfRooms, $roomTypeCode = "ALL", $ratePlanCode = "", $availReqType = "Room", $invBlockCode = "", $promotionCode = '')
 {
     parent::load_model("OWS_rooms");
     parent::load_model("OWS_rates");
     $this->roomList = array();
     $roomOccupancy = $totalNumberOfGuests + $numberOfChildren;
     $data = array();
     $data["summaryOnly"] = "false";
     $data["availReqType"] = $availReqType;
     $data["roomTypeCode"] = $roomTypeCode;
     $data["ratePlanCode"] = $ratePlanCode;
     $data["StartDate"] = $StartDate;
     $data["EndDate"] = $EndDate;
     $data["numberOfRooms"] = $numberOfRooms;
     //$data["roomOccupancy"]			= $totalNumberOfGuests;
     $data["totalNumberOfGuests"] = $totalNumberOfGuests;
     $data["numberOfChildren"] = $numberOfChildren;
     $data["promotionCode"] = $promotionCode;
     $data["invBlockCode"] = $invBlockCode;
     $data["qualifyingIdValue"] = "";
     $data["qualifyingIdType"] = "";
     $resultArray = $this->CI->ows_availability->Availability($data);
     if ($resultArray["success"]) {
         try {
             $result = $resultArray["response"];
             if ($data["roomTypeCode"] == "ALL") {
                 $rooms = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["RoomTypes"]["RoomType"];
             } else {
                 $rooms = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["RoomTypes"];
             }
             $rooms_rates = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["RoomRates"]["RoomRate"];
             $rooms_ratePlans = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["RatePlans"]["RatePlan"];
             //check if requested for a group code
             if (empty($invBlockCode)) {
                 $single_plan = FALSE;
                 $ratePlans = array();
                 foreach ($rooms_ratePlans as $room_ratePlan) {
                     if (!is_array($room_ratePlan) || !array_key_exists("!ratePlanCode", $room_ratePlan)) {
                         $single_plan = TRUE;
                         break;
                     }
                     $ratePlans[$room_ratePlan["!ratePlanCode"]] = $room_ratePlan;
                 }
                 if ($single_plan) {
                     $rooms_ratePlans = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["RatePlans"];
                     foreach ($rooms_ratePlans as $room_ratePlan) {
                         if (!is_array($room_ratePlan) || !array_key_exists("!ratePlanCode", $room_ratePlan)) {
                             $single_plan = TRUE;
                             break;
                         }
                         $ratePlans[$room_ratePlan["!ratePlanCode"]] = $room_ratePlan;
                     }
                 }
                 $single_rate = FALSE;
                 $rates = array();
                 foreach ($rooms_rates as $room_rate) {
                     if (!is_array($room_rate) || !array_key_exists("!ratePlanCode", $room_rate)) {
                         $single_rate = TRUE;
                         break;
                     }
                     $ratePlanObject = new OWS_rates($room_rate["!ratePlanCode"], "", "CancellationDateTime", $ratePlans[$room_rate["!ratePlanCode"]]["RatePlanDescription"]["Text"], $room_rate["Total"]["!"], $room_rate["Total"]["!currencyCode"]);
                     $rates[$room_rate["!roomTypeCode"]][] = $ratePlanObject;
                 }
                 if ($single_rate) {
                     $rooms_rates = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["RoomRates"];
                     foreach ($rooms_rates as $room_rate) {
                         $cancellation = $ratePlans[$room_rate["!ratePlanCode"]]["AdditionalDetails"]["AdditionalDetail"][1]["AdditionalDetailDescription"]["Text"];
                         /*
                         $cancellation = $this->CI->ny_core->__get_config("reservation/cancellation/default");
                         
                         $non_rd = str_replace(" ", "", $this->CI->ny_core->__get_config("reservations/rates/nonrefundable"));
                         
                         $non_rd_array = explode(',', $non_rd);
                         if(is_array($non_rd_array) && sizeof($non_rd_array) > 0)
                         {
                         	foreach($non_rd_array as $non_rd_single)
                         	{
                         		if($room_rate["!ratePlanCode"] == $non_rd_single)
                         		{
                         			$cancellation = "Non Refundable Rate";
                         			break;
                         		}
                         	}
                         }
                         else
                         {
                         	if($room_rate["!ratePlanCode"] == $non_rd)
                         	{
                         		$cancellation = "<b>Non Refundable Rate</b>";
                         		break;
                         	}
                         }
                         */
                         $ratePlanObject = new OWS_rates($room_rate["!ratePlanCode"], "", $cancellation, $ratePlans[$room_rate["!ratePlanCode"]]["RatePlanDescription"]["Text"], $room_rate["Total"]["!"], $room_rate["Total"]["!currencyCode"]);
                         $rates[$room_rate["!roomTypeCode"]][] = $ratePlanObject;
                     }
                 }
             } else {
                 $rooms_rates = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["RoomRates"]["RoomRate"];
                 $rooms_ratePlans = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["RatePlans"];
                 $ratePlans = array();
                 foreach ($rooms_ratePlans as $room_ratePlan) {
                     $ratePlans[$invBlockCode] = $room_ratePlan;
                 }
                 $rates = array();
                 $single_rate = FALSE;
                 foreach ($rooms_rates as $room_rate) {
                     if (!is_array($room_rate) || !array_key_exists("!suppressRate", $room_rate)) {
                         $single_rate = TRUE;
                         break;
                     }
                     $ratePlanObject = new OWS_rates("", $ratePlans[$invBlockCode]["!hold"], $ratePlans[$invBlockCode]["CancellationDateTime"], $ratePlans[$invBlockCode]["RatePlanDescription"]["Text"], $room_rate["Total"]["!"], $room_rate["Total"]["!currencyCode"], $invBlockCode);
                     $rates[$room_rate["!roomTypeCode"]][] = $ratePlanObject;
                 }
                 if ($single_rate) {
                     $rooms_rates = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["RoomRates"];
                     foreach ($rooms_rates as $room_rate) {
                         $cancellation = $ratePlans[$invBlockCode]["AdditionalDetails"]["AdditionalDetail"][1]["AdditionalDetailDescription"]["Text"];
                         /*
                         $cancellation = $this->CI->ny_core->__get_config("reservation/cancellation/gcode");
                         
                         $non_rd = str_replace(" ", "", $this->CI->ny_core->__get_config("reservations/rates/nonrefundable"));
                         	
                         $non_rd_array = explode(',', $non_rd);
                         if(is_array($non_rd_array) && sizeof($non_rd_array) > 0)
                         {
                         	foreach($non_rd_array as $non_rd_single)
                         	{
                         		if($invBlockCode == $non_rd_single)
                         		{
                         			$cancellation = "Non Refundable Rate";
                         			break;
                         		}
                         	}
                         }
                         else
                         {
                         	if($invBlockCode == $non_rd)
                         	{
                         		$cancellation = "<b>Non Refundable Rate</b>";
                         		break;
                         	}
                         }
                         */
                         $ratePlanObject = new OWS_rates("", "", $cancellation, $ratePlans[$invBlockCode]["RatePlanDescription"]["Text"], $room_rate["Total"]["!"], $room_rate["Total"]["!currencyCode"], $invBlockCode);
                         $rates[$room_rate["!roomTypeCode"]][] = $ratePlanObject;
                     }
                 }
             }
             $resultArray["ratePlan"] = $ratePlanObject;
             $single_room = FALSE;
             foreach ($rooms as $room) {
                 if (!is_array($room) || !array_key_exists("!roomTypeCode", $room)) {
                     $single_room = TRUE;
                     break;
                 }
                 $rate = array();
                 if (array_key_exists($room["!roomTypeCode"], $rates)) {
                     $rate = $rates[$room["!roomTypeCode"]];
                 }
                 $roomObject = new OWS_rooms($room["RoomTypeDescription"]["Text"], $room["!roomTypeCode"], '', $rate, '', '');
                 $this->roomList = $roomObject;
             }
             if ($single_room) {
                 $rooms = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["RoomTypes"];
                 foreach ($rooms as $room) {
                     /*
                     if(!is_array($room) || array_key_exists("!roomTypeCode", $room))
                     {
                     	$resultArray["success"] = FALSE;
                     	$resultArray["err_message"] = "No Rooms Available on the dates provided. Contact us for more info";
                     	die("test");
                     	break;
                     }
                     */
                     $rate = array();
                     if (array_key_exists($room["!roomTypeCode"], $rates)) {
                         $rate = $rates[$room["!roomTypeCode"]];
                     }
                     $roomObject = new OWS_rooms($room["RoomTypeDescription"]["Text"], $room["!roomTypeCode"], '', $rate, '', '');
                     $this->roomList = $roomObject;
                 }
             }
             //return $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"];
             $resultArray["roomList"] = $this->roomList;
         } catch (Exception $ex) {
             $resultArray["success"] = FALSE;
             $resultArray["err_message"] = "No Rooms Available on the dates provided. Contact us for more info";
         }
         if (key_exists("0", $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["ExpectedCharges"]["ChargesForPostingDate"])) {
             $ExpectedCharges = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["ExpectedCharges"]["ChargesForPostingDate"][0]["TaxesAndFees"]["Charges"];
         } else {
             $ExpectedCharges = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["ExpectedCharges"]["ChargesForPostingDate"]["TaxesAndFees"]["Charges"];
         }
         $resultArray["ExpectedCharges"] = array();
         foreach ($ExpectedCharges as $charge) {
             //if($charge["Amount"]["!"] != "0")
             $resultArray["ExpectedCharges"][] = $charge;
         }
         $resultArray["Totals"]["TotalRoomRateAndPackages"] = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["ExpectedCharges"]["!TotalRoomRateAndPackages"];
         $resultArray["Totals"]["TotalTaxesAndFees"] = $result["AvailResponseSegments"]["AvailResponseSegment"]["RoomStayList"]["RoomStay"]["ExpectedCharges"]["!TotalTaxesAndFees"];
         $resultArray["Totals"]["Total"] = $resultArray["Totals"]["TotalRoomRateAndPackages"] + $resultArray["Totals"]["TotalTaxesAndFees"];
     }
     unset($resultArray["response"]);
     return $resultArray;
 }
 /**
  * constructor
  * 
  * @access public
  * @param
  * @return
  */
 public function __construct()
 {
     //load admin constructor
     parent::__construct();
     parent::load_soap("OWS_membership");
 }
 /**
  * 
  * fetch booking
  *
  * @access protected	
  * @param
  * @return	
  */
 public function FetchBooking($ConfirmationNumber)
 {
     $data["ConfirmationNumber"] = $ConfirmationNumber;
     parent::load_model("OWS_rooms");
     $resultArray = $this->CI->ows_reservation->FetchBooking($data);
     if ($resultArray["success"]) {
         $resultArray["reservationsList"] = array();
         try {
             $reservation = $resultArray["response"]["HotelReservation"];
             $resultReservation["id"] = $reservation["UniqueIDList"]["UniqueID"]["0"];
             $resultReservation["TimeSpan"] = $reservation["RoomStays"]["RoomStay"]["TimeSpan"];
             $resultReservation["Total"] = $reservation["RoomStays"]["RoomStay"]["Total"]["!"];
             $resultReservation["TaxesAndFees"] = $reservation["RoomStays"]["RoomStay"]["ExpectedCharges"]["!TotalTaxesAndFees"];
             $resultReservation["roomFee"] = $reservation["RoomStays"]["RoomStay"]["ExpectedCharges"]["!TotalRoomRateAndPackages"];
             $room = $reservation["RoomStays"]["RoomStay"]["RoomTypes"]["RoomType"];
             $resultReservation["GuestCounts"] = $reservation["RoomStays"]["RoomStay"]["GuestCounts"]["GuestCount"];
             $resultReservation["Room"] = new OWS_rooms($room["RoomTypeDescription"]["Text"], $room["!roomTypeCode"], '', '', '', '');
             $resultReservation["status"] = $reservation["!reservationStatus"];
             $resultReservation["Payment"] = $reservation["RoomStays"]["RoomStay"]["Guarantee"]["GuaranteesAccepted"]["GuaranteeAccepted"]["GuaranteeCreditCard"];
             $resultReservation["Payment"]["cardNumber"] = "***" . substr($resultReservation["Payment"]["cardNumber"], -4, 4);
             $resultReservation["ratePlan"] = $reservation["RoomStays"]["RoomStay"]["RatePlans"]["RatePlan"];
             if (!key_exists("RatePlanDescription", $resultReservation["ratePlan"])) {
                 $resultReservation["ratePlan"]["RatePlanDescription"] = array("Text" => "Group Code: " . $room["!invBlockCode"]);
             }
             $StartDate = explode("T", $resultReservation["TimeSpan"]["StartDate"], 2);
             $EndDate = explode("T", $resultReservation["TimeSpan"]["EndDate"], 2);
             $StartDate = date("Y-m-d", strtotime($StartDate[0]));
             $EndDate = date("Y-m-d", strtotime($EndDate[0]));
             $resultReservation["core_totals"]["tax"] = 0;
             $resultReservation["core_totals"]["total"] = $resultReservation["Total"];
             /*
             $resultReservation["core_totals"]   = $this->CI->ny_core->__get_total_tax(	$room,
             																			$resultReservation["roomFee"],
             																			$resultReservation["TaxesAndFees"],
             																			GetDays($StartDate,$EndDate)
             																		);
             */
             if (key_exists("CancelTerm", $reservation["RoomStays"]["RoomStay"])) {
                 $resultReservation["cancelTerm"] = $reservation["RoomStays"]["RoomStay"]["CancelTerm"];
             }
             $resultArray["reservationsList"] = $resultReservation;
         } catch (Exception $ex) {
         }
     }
     unset($resultArray["response"]);
     return $resultArray;
 }
 /**
  * constructor
  * 
  * @access public
  * @param
  * @return
  */
 public function __construct()
 {
     parent::__construct();
     parent::load_soap("OWS_name");
 }