/// <summary> /// 酒店所在城市ID,酒店名称、酒店星级等查询酒店信息列表 /// </summary> /// <param name="availableOnlyIndicator"></param> /// <param name="hotelCityID"></param> /// <returns></returns> public static OTA_HotelSearchReturnEntity OTA_HotelSearch(bool availableOnlyIndicator, int hotelCityID) { OTA_HotelSearchCallEntity callEntity = new OTA_HotelSearchCallEntity(); callEntity.HotelCityCode = hotelCityID; callEntity.AvailableOnlyIndicator = availableOnlyIndicator; return hotelOTAService.OTA_HotelSearch(callEntity); }
/// <summary> /// 酒店所在城市ID,酒店名称、酒店星级等查询酒店信息列表 /// </summary> /// <param name="callEntity"></param> /// <returns></returns> public OTA_HotelSearchReturnEntity OTA_HotelSearch(OTA_HotelSearchCallEntity req) { OTA_HotelSearchReturnEntity rep = new OTA_HotelSearchReturnEntity(); if (req.AreaID == null && req.HotelCityCode == null && (req.HotelName == null || req.HotelName == "") && (req.HotelStarLevel == null || req.StarScore == null)) { rep.ValidateResult = false; rep.ValidateResultMessage = "请求信息不全"; return rep; } StringBuilder reqXml = new StringBuilder(); reqXml.AppendFormat("<ns:OTA_HotelSearchRQ Version=\"1.0\" PrimaryLangID=\"zh\" xsi:schemaLocation=\"http://www.opentravel.org/OTA/2003/05 OTA_HotelSearchRQ.xsd\" xmlns=\"http://www.opentravel.org/OTA/2003/05\">"); reqXml.Append("<ns:Criteria>"); reqXml.AppendFormat("<ns:Criterion>"); reqXml.Append("<ns:HotelRef "); if (req.HotelCityCode != null) { reqXml.AppendFormat(" HotelCityCode=\"{0}\"", req.HotelCityCode); } if (req.AreaID != null) { reqXml.AppendFormat(" AreaID=\"{0}\"", req.AreaID); } if (!string.IsNullOrEmpty(req.HotelName)) { reqXml.AppendFormat(" HotelName=\"{0}\"", req.HotelName); } reqXml.Append(" />"); if (req.PositionTypeCode!=null) { reqXml.AppendFormat("<ns:Position PositionTypeCode=\"{0}\" />", req.PositionTypeCode); } if (req.HotelStarLevel != null && req.StarScore != null) { reqXml.AppendFormat("<ns:Award Provider=\"{0}\" Rating=\"{1}\"/>", req.HotelStarLevel, req.StarScore); } reqXml.Append("</ns:Criterion>"); reqXml.Append("</ns:Criteria>"); reqXml.Append("</ns:OTA_HotelSearchRQ>"); req.RequestContent = reqXml.ToString(); string repXml = HotelApiCall(req); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(repXml); GetHeaderResult(xmlDoc, rep); List<CtripHotelRepEntity> hotelList = new List<CtripHotelRepEntity>(); List<ZoneTypeInfo> zoneinfos; ZoneTypeInfo zoneInfo; var hotelNodes = xmlDoc.SelectNodes("/Response/HotelResponse/OTA_HotelSearchRS/Properties/Property"); CtripHotelRepEntity entity = null; foreach (XmlElement el in hotelNodes) { entity = new CtripHotelRepEntity(); entity.AddressLine = el.SelectSingleNode("Address/AddressLine").InnerText.Trim(); entity.AreaID = el.GetAttribute("AreaID").Trim().ToInt32(); entity.BrandCode = el.GetAttribute("BrandCode") == "" ? 0 : el.GetAttribute("BrandCode").ToInt32(); entity.CityName = el.SelectSingleNode("Address/CityName").InnerText.Trim(); entity.HotelName = el.GetAttribute("HotelName").Trim(); entity.PostCode = el.SelectSingleNode("Address/PostalCode").InnerText.Trim(); entity.HotelCode = el.GetAttribute("HotelCode").Trim().ToInt32(); entity.HotelId = el.GetAttribute("HotelId").Trim().ToInt32(); entity.HotelCityCode = el.GetAttribute("HotelCityCode").Trim().ToInt32(); var awardNodes = el.SelectNodes("Award"); foreach (XmlElement al in awardNodes) { string provider = al.GetAttribute("Provider"); if (provider != "" && provider == "HotelStarRate") { entity.HotelStarRate = al.GetAttribute("Rating").Trim().ToDecimal(); } if (provider != "" && provider == "CtripStarRate") { entity.CtripStarRate = al.GetAttribute("Rating").Trim().ToDecimal(); } if (provider != "" && provider == "CtripRecommendRate") { entity.CtripRecommendRate = al.GetAttribute("Rating").Trim().ToDecimal(); } if (provider != "" && provider == "CtripCommRate") { entity.CtripCommRate = al.GetAttribute("Rating").Trim().ToDecimal(); } if (provider != "" && provider == "CommSurroundingRate") { entity.CommSurroundingRate = al.GetAttribute("Rating").Trim().ToDecimal(); } if (provider != "" && provider == "CommFacilityRate") { entity.CommFacilityRate = al.GetAttribute("Rating").Trim().ToDecimal(); } if (provider != "" && provider == "CommCleanRate") { entity.CommCleanRate = al.GetAttribute("Rating").Trim().ToDecimal(); } if (provider != "" && provider == "CommServiceRate") { entity.CommServiceRate = al.GetAttribute("Rating").Trim().ToDecimal(); } } var relativePositionNodes = el.SelectNodes("RelativePosition"); List<RelativePosition> relatives = new List<RelativePosition>(); foreach (XmlElement rl in relativePositionNodes) { relatives.Add(new RelativePosition() { Distance = rl.GetAttribute("Distance").Trim().ToDecimal(), Name = rl.GetAttribute("Name").Trim(), UnitOfMeasureCode = rl.GetAttribute("UnitOfMeasureCode").Trim().ToInt32() }); } entity.RelativePositions = relatives; List<VendorMessage> vendorMessages = new List<VendorMessage>(); var VendorMessageNodes = el.SelectNodes("VendorMessages/VendorMessage"); if (VendorMessageNodes != null && VendorMessageNodes.Count > 0) { VendorMessage vendorMessage = null; foreach (XmlNode v in VendorMessageNodes) { vendorMessage = new VendorMessage(); vendorMessage.InfoType = ((XmlElement)v).GetAttribute("InfoType").ToInt32(); var vText = v.SelectSingleNode("SubSection/Paragraph/Text"); if (vText != null) { vendorMessage.Paragraph = vText.InnerText.Trim(); } vendorMessages.Add(vendorMessage); } entity.VendorMessages = vendorMessages; } XmlNode imgText = el.SelectSingleNode("VendorMessages/VendorMessage/SubSection/Paragraph/Text"); if (imgText != null) { entity.ImgText = imgText.InnerText; } else { entity.ImgText = ""; } XmlNode positionNode = el.SelectSingleNode("Position"); entity.Longitude = ((XmlElement)positionNode).GetAttribute("Longitude"); entity.Latitude = ((XmlElement)positionNode).GetAttribute("Latitude"); entity.PositionTypeCode = ((XmlElement)positionNode).GetAttribute("PositionTypeCode"); var zongTypeNodes = el.SelectNodes("TPA_Extensions/Zone/ZoneType"); zoneinfos = new List<ZoneTypeInfo>(); if(zongTypeNodes!=null) { foreach(XmlElement xe in zongTypeNodes) { zoneInfo = new ZoneTypeInfo(); zoneInfo.ZoneID = xe.GetAttribute("ZoneID").Trim().ToInt32(); zoneInfo.ZoneName = xe.GetAttribute("ZoneName").Trim(); zoneinfos.Add(zoneInfo); } } entity.Zones = zoneinfos; hotelList.Add(entity); } rep.HotelList = hotelList; return rep; }