public static OTA_HotelCacheChangeReturnEntity OTA_HotelCacheChange(int cityID, int? hotelId, DateTime cacheTime) { OTA_HotelCacheChangeCallEntity callEntity = new OTA_HotelCacheChangeCallEntity(); callEntity.HotelCityCode = cityID; callEntity.HotelCode = hotelId; callEntity.CacheFromTimestamp = cacheTime; var rep = hotelOTAService.OTA_HotelCacheChange(callEntity); return rep; }
/// <summary> /// 返回在查询时间戳到现在这个时间段、及要查酒店所在酒店城市ID号下的所有酒店价格缓存变化通知列表 /// 若请求参数:HotelCode存在,则查询的是该酒店在该时间段内价格缓存变化列表 /// </summary> /// <param name="req"></param> /// <returns></returns> public OTA_HotelCacheChangeReturnEntity OTA_HotelCacheChange(OTA_HotelCacheChangeCallEntity req) { var rep = new OTA_HotelCacheChangeReturnEntity(); StringBuilder reqXml = new StringBuilder(); reqXml.Append("<ns:OTA_HotelCacheChangeRQ Version=\"1.0\">"); reqXml.AppendFormat("<ns:CacheSearchCriteria CacheFromTimestamp=\"{0}\">", req.CacheFromTimestamp.GetDateTimeFormats('s')[0].ToString()); reqXml.AppendFormat("<ns:CacheSearchCriterion HotelCityCode=\"{0}\"", req.HotelCityCode); if (req.HotelCode > 0) { reqXml.AppendFormat(" HotelCode=\"{0}\"", req.HotelCode); } reqXml.Append("/>"); reqXml.Append("</ns:CacheSearchCriteria>"); reqXml.Append("</ns:OTA_HotelCacheChangeRQ>"); req.RequestContent = reqXml.ToString(); string repXml = HotelApiCall(req); //LogHelper.Info(repXml); //LogHelper XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(repXml); GetHeaderResult(xmlDoc,rep); var rsNode = xmlDoc.SelectSingleNode("Response/HotelResponse/OTA_HotelCacheChangeRS"); string timeSpan = ((XmlElement)rsNode).GetAttribute("TimeStamp"); var changeNodes = rsNode.SelectNodes("CacheChangeInfo"); var changeItems = new List<HotelCacheChange>(); HotelCacheChange changeItem = null; foreach (XmlNode node in changeNodes) { changeItem = new HotelCacheChange(); changeItem.HotelCode = ((XmlElement)node).GetAttribute("HotelCode").Trim(); var timeSpanElement = (XmlElement)node.SelectSingleNode("TimeSpan"); changeItem.StartTime = timeSpanElement.GetAttribute("Start").Trim().ToDateTime(); changeItem.EndTime = timeSpanElement.GetAttribute("End").Trim().ToDateTime(); var otherInfoNode = (XmlElement)node.SelectSingleNode("OtherInfo"); changeItem.RatePlanCode = otherInfoNode.GetAttribute("RatePlanCode"); changeItems.Add(changeItem); } rep.HotelCacheChangeList = changeItems; return rep; }