private Hotel processOneHotel(XmlNode hotelNode) { try { Hotel result = new Hotel(); result.HotelInfo = new HotelInformation(); result.HotelInfo.Address = new Address(); foreach (XmlNode node in hotelNode.ChildNodes) { if (node.Name == "id") { result.HotelInfo.Id = long.Parse(node.ChildNodes.Item(0).InnerText); } if (node.Name == "name") { result.HotelInfo.Name = node.InnerText; //Console.WriteLine(" Hotel Id: " + result.HotelInfo.Id + ", Name: " + result.HotelInfo.Name); } if (node.Name == "addr") { foreach (XmlNode item in node.ChildNodes) { if (item.Name == "line1"){ result.HotelInfo.Address.Street1 = item.InnerText; } if (item.Name == "line2"){ result.HotelInfo.Address.Street2 = item.InnerText; } if (item.Name == "city"){ result.HotelInfo.Address.City = new City { Name = item.InnerText }; } if (item.Name == "state"){ result.HotelInfo.Address.State = new State { Code = item.Attributes.Item(0).InnerText, Name = item.Attributes.Item(1).InnerText }; } if (item.Name == "country"){ result.HotelInfo.Address.Country = new Country { Code = item.Attributes.Item(0).InnerText, Name = item.Attributes.Item(1).InnerText }; } if (item.Name == "postal"){ result.HotelInfo.Address.Postcode = item.InnerText; } } //Console.WriteLine(" Address is processed"); } if (node.Name == "latitude"){ result.HotelInfo.Address.Latitude = float.Parse(node.InnerText); } if (node.Name == "longitude"){ result.HotelInfo.Address.Longtitude = float.Parse(node.InnerText); } if (node.Name == "stars"){ result.HotelInfo.StarRating = float.Parse(node.InnerText); } if (node.Name == "airportsDesc"){ result.HotelInfo.AreaInfo = "Airport Description: " + node.InnerText; } if (node.Name == "description"){ result.HotelInfo.HotelDescription = node.InnerText; } if (node.Name == "checkInTime") { if (result.HotelInfo.PolicyInfo == null) { result.HotelInfo.PolicyInfo = new HotelPolicy(); } result.HotelInfo.PolicyInfo.CheckInTime = node.InnerText; } if (node.Name == "checkOutTime"){ if (result.HotelInfo.PolicyInfo == null) { result.HotelInfo.PolicyInfo = new HotelPolicy(); } result.HotelInfo.PolicyInfo.CheckOutTime = node.InnerText; } if (node.Name == "amenities") { result.HotelInfo.Amenities = new List<Amenity>(); foreach (XmlNode amenityNode in node.ChildNodes) { if (amenityNode.FirstChild.Name == "code") { Amenity amenity = new Amenity(); amenity.Code = amenityNode.FirstChild.InnerText; if (amenitiesList.getAmenitiesCodeList.Contains(amenity.Code)) { amenity.Name = amenitiesList.getAmenitiesCodeList[amenity.Code].ToString(); result.HotelInfo.Amenities.Add(amenity); } else { //Console.WriteLine(" *** Amenity code NOT found: '" + amenity.Code + "' ***"); } } } //Console.WriteLine(" Amenities are processed"); } if (node.Name == "medias") { result.HotelInfo.Images = new List<HotelImage>(); foreach (XmlNode mediaNode in node.ChildNodes) { HotelImage image = new HotelImage(); for (int i = 0; i <= mediaNode.ChildNodes.Count - 1; i++) { if (mediaNode.ChildNodes[i].Name == "type"){ image.Code = mediaNode.ChildNodes[i].InnerText; } if (mediaNode.ChildNodes[i].Name == "url"){ image.URL = mediaNode.ChildNodes[i].InnerText; } } result.HotelInfo.Images.Add(image); } //Console.WriteLine(" Medias are processed"); } if (node.Name == "facilities") { result.HotelInfo.Facilities = new List<Facility>(); foreach (XmlNode facilityNode in node.ChildNodes) { Facility facility = new Facility(); for (int i = 0; i <= facilityNode.ChildNodes.Count - 1; i++) { if (facilityNode.ChildNodes[i].Name == "type") { facility.Code = facilityNode.ChildNodes[i].InnerText; } if (facilityNode.ChildNodes[i].Name == "desc") { facility.Description = facilityNode.ChildNodes[i].InnerText; } } result.HotelInfo.Facilities.Add(facility); } //Console.WriteLine(" Facilities are processed"); } if (node.Name == "userReviews") { result.HotelInfo.GuestReview = new GuestReview(); foreach (XmlNode reviewNode in node.ChildNodes) { if (reviewNode.Name == "userScore") { result.HotelInfo.GuestReview.UserScore = float.Parse(reviewNode.InnerText); } if (reviewNode.Name == "numberOfReviews") { result.HotelInfo.GuestReview.NumberOfReviews = long.Parse(reviewNode.InnerText); } if (reviewNode.Name == "numberOfRecommendations") { result.HotelInfo.GuestReview.NumberOfRecommendations = long.Parse(reviewNode.InnerText); } } //Console.WriteLine(" UserReviews is processed"); } if (node.Name == "chainCode"){ result.HotelInfo.Chain = new Identification { Code = node.InnerText }; } } return result; } catch (Exception ex) { Console.WriteLine(ex.ToString()); return null; } }
public HotelContentRS MappingHotelInfo(HotelInformationResponse rawRs) { HotelContentRS rs = new HotelContentRS(); //EAN warning and error if (rawRs.EanWsError != null) { //error! something has happened rs.Errors = new List<WarningAndError>(); WarningAndError error = helper.GenerateWarningAndError(9001, rawRs.EanWsError); rs.Errors.Add(error); } else { rs.Hotels = new List<HDSInterfaces.Hotel>(); HDSInterfaces.Hotel hotel = new HDSInterfaces.Hotel(); hotel.HotelInfo = new HotelInformation(); hotel.HotelInfo.Id = rawRs.hotelId; //name and address if (rawRs.HotelSummary != null){ hotel.HotelInfo.Name = rawRs.HotelSummary.name; hotel.HotelInfo.Address = helper.GenerateHotelAddress(rawRs.HotelSummary); //rating if (rawRs.HotelSummary.hotelRatingSpecified) { hotel.HotelInfo.StarRating = rawRs.HotelSummary.hotelRating; } if (rawRs.HotelSummary.tripAdvisorRatingSpecified) { hotel.HotelInfo.TripAdvisorRating = rawRs.HotelSummary.tripAdvisorRating; } } //description and information if (rawRs.HotelDetails != null){ hotel.HotelInfo.HotelDescription = rawRs.HotelDetails.propertyDescription; hotel.HotelInfo.AreaInfo = rawRs.HotelDetails.areaInformation; hotel.HotelInfo.RoomInfo = rawRs.HotelDetails.roomInformation; hotel.HotelInfo.DrivingDirection = rawRs.HotelDetails.drivingDirections; hotel.HotelInfo.AdditionalInfo = rawRs.HotelDetails.propertyInformation; hotel.HotelInfo.PolicyInfo = new HotelPolicy{ PolicyDescription = rawRs.HotelDetails.hotelPolicy, CheckInInstruction = rawRs.HotelDetails.checkInInstructions, CheckInTime = rawRs.HotelDetails.checkInTime, CheckOutTime = rawRs.HotelDetails.checkOutTime, }; } //room info hotel.HotelInfo.RoomInfos = new List<RoomInfo>(); if (rawRs.RoomTypes != null) { if (rawRs.RoomTypes.size > 0){ foreach (Expedia.HotelShoppingServiceReference.RoomType roomType in rawRs.RoomTypes.RoomType){ RoomInfo room = new RoomInfo{ Id = roomType.roomTypeId, Code = roomType.roomCode, Name = roomType.description, Description = roomType.descriptionLong }; hotel.HotelInfo.RoomInfos.Add(room); } } } //amenitity hotel.HotelInfo.Amenities = new List<HDSInterfaces.Amenity>(); if (rawRs.PropertyAmenities != null){ if (rawRs.PropertyAmenities.size > 0){ foreach (PropertyAmenity rawAmenitity in rawRs.PropertyAmenities.PropertyAmenity){ HDSInterfaces.Amenity amenity = new Amenity { Id = rawAmenitity.amenityId, Description = rawAmenitity.amenity.Trim() }; hotel.HotelInfo.Amenities.Add(amenity); } } } //images hotel.HotelInfo.Images = new List<HDSInterfaces.HotelImage>(); if (rawRs.HotelImages != null){ if (rawRs.HotelImages.size > 0){ foreach (Expedia.HotelShoppingServiceReference.HotelImage rawImage in rawRs.HotelImages.HotelImage){ hotel.HotelInfo.Images.Add(helper.GenerateHotelImage(rawImage)); } } } rs.Hotels.Add(hotel); } return rs; }