public async Task <HttpResponseMessage> BookTicketInternational() { if (hepler.CheckHeader(Request)) { string responseString = string.Empty; HttpResponseMessage response = null; try { var searchParamterXml = await Request.Content.ReadAsByteArrayAsync(); string searchParameter = System.Text.Encoding.UTF8.GetString(searchParamterXml); XmlSerializer serializer = new XmlSerializer(typeof(Model.Request)); using (TextReader reader = new StringReader(searchParameter)) { Model.Request searchDetail = (Model.Request)serializer.Deserialize(reader); var searchRequestObject = TemplateXml.BookingStatusIntXml; searchRequestObject = searchRequestObject.Replace("OriginValue", searchDetail.Origin). Replace("DestinationValue", searchDetail.Destination). Replace("DepartDateValue", searchDetail.DepartDate). Replace("ReturnDateValue", searchDetail.ReturnDate). Replace("AdultCountValue", searchDetail.AdultPax). Replace("ChildCountValue", searchDetail.ChildPax). Replace("InfantCountValue", searchDetail.InfantPax). Replace("PreferredClassValue", searchDetail.Preferredclass). Replace("ModeValue", searchDetail.mode); //// Code to get all flight*** Start using (var httpClient = new HttpClient()) { var httpContent = new StringContent(searchRequestObject, Encoding.UTF8, "text/xml"); // Do the actual request and await the response var httpResponse = await httpClient.PostAsync("http://demo.arzoo.com:9301/Avalability", httpContent); // If the response contains content we want to read it! if (httpResponse.Content != null) { responseString = await httpResponse.Content.ReadAsStringAsync(); } } //*********End var serializer1 = new XmlSerializer(typeof(Arzoo_responseInt)); Arzoo_responseInt ArzooResponse; using (TextReader reader1 = new StringReader(responseString)) { ArzooResponse = (Arzoo_responseInt)serializer1.Deserialize(reader1); } if (ArzooResponse == null) { response = Request.CreateResponse <string>(HttpStatusCode.NoContent, "No Content Found"); } else if (!string.IsNullOrEmpty(ArzooResponse.Error)) { response = Request.CreateResponse <string>(HttpStatusCode.BadRequest, ArzooResponse.Error); } else { var selectedFlights = new OriginDestinationOptionInt(); //Check in depart flight if (ArzooResponse.AvailResponse != null) { var options = ArzooResponse.AvailResponse.OriginDestinationOptions.OriginDestinationOption.FirstOrDefault(o => o.Id == searchDetail.Id); if (options != null) { selectedFlights = options; } } if (selectedFlights == null) { response = Request.CreateResponse <string>(HttpStatusCode.NoContent, "No Content Found"); } else { var emptyNamepsaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); XmlSerializer xsSubmit = new XmlSerializer(typeof(OriginDestinationOptionInt)); var xml = ""; var settings = new XmlWriterSettings(); settings.Indent = true; settings.OmitXmlDeclaration = true; using (var sww = new StringWriter()) { using (XmlWriter writer = XmlWriter.Create(sww, settings)) { xsSubmit.Serialize(writer, selectedFlights, emptyNamepsaces); xml = sww.ToString(); // Your XML } } Random generator = new Random(); int partnerRefIdValue = generator.Next(100000, 1000000); var bookingRequestXml = TemplateXml.BookingRequestXml; bookingRequestXml = bookingRequestXml.Replace("FlghtDetailXmlTemplate", xml). Replace("creditcardnoValue", searchDetail.creditcardno). Replace("phoneNumberValue", searchDetail.phoneNumber). Replace("emailAddressValue", searchDetail.emailAddress). Replace("AdultCountValue", searchDetail.AdultPax). Replace("ChildCountValue", searchDetail.ChildPax). Replace("InfantCountValue", searchDetail.InfantPax). Replace("partnerRefIdValue", partnerRefIdValue.ToString()); var endTag = "</personName>"; int startIndex = searchParameter.IndexOf("<personName>"); int endIndex = searchParameter.IndexOf("</personName>", startIndex) + endTag.Length; var personNameXml = searchParameter.Substring(startIndex, endIndex - startIndex); bookingRequestXml = bookingRequestXml.Replace("CustomerInformationXmlValue", personNameXml); /*****Call to book Flight* Start****/ //// Code to get all flight*** Start using (var httpClient = new HttpClient()) { var httpContent = new StringContent(bookingRequestXml, Encoding.UTF8, "text/xml"); // Do the actual request and await the response var httpResponse = await httpClient.PostAsync("http://demo.arzoo.com:9301/Booking", httpContent); // If the response contains content we want to read it! if (httpResponse.Content != null) { responseString = await httpResponse.Content.ReadAsStringAsync(); } } /*****Call to book Flight* End****/ if (string.IsNullOrEmpty(responseString)) { response = Request.CreateResponse <string>(HttpStatusCode.BadRequest, "Invalid Request"); } else { /*******Extract repsonse oject from xml******/ var serializer2 = new XmlSerializer(typeof(Bookingresponse)); BookingResponse BookingresponseDetail; using (TextReader reader1 = new StringReader(responseString)) { BookingresponseDetail = (BookingResponse)serializer2.Deserialize(reader1); } if (!string.IsNullOrEmpty(BookingresponseDetail.Error)) { response = Request.CreateResponse <string>(HttpStatusCode.BadRequest, BookingresponseDetail.Error); } else { XmlSerializer xsBooking = new XmlSerializer(typeof(BookingResponse)); var responseXml = ""; using (var sww = new StringWriter()) { using (XmlWriter writer = XmlWriter.Create(sww)) { xsBooking.Serialize(writer, BookingresponseDetail); responseXml = sww.ToString(); // Your XML } } response = Request.CreateResponse <string>(HttpStatusCode.OK, responseXml); } } } } } } catch (Exception e) { responseString = e.Message; response = Request.CreateResponse <string>(HttpStatusCode.NotFound, responseString); } return(response); } return(null); }
public async Task <HttpResponseMessage> FlightPricingInternational() { if (hepler.CheckHeader(Request)) { string responseString = string.Empty; HttpResponseMessage response = null; try { var searchParamterXml = await Request.Content.ReadAsByteArrayAsync(); string searchParameter = System.Text.Encoding.UTF8.GetString(searchParamterXml); XmlSerializer serializer = new XmlSerializer(typeof(Model.Request)); using (TextReader reader = new StringReader(searchParameter)) { Model.Request searchDetail = (Model.Request)serializer.Deserialize(reader); var searchRequestObject = TemplateXml.FlightPricingIntXml; searchRequestObject = searchRequestObject.Replace("OriginValue", searchDetail.Origin). Replace("DestinationValue", searchDetail.Destination). Replace("DepartDateValue", searchDetail.DepartDate). Replace("ReturnDateValue", searchDetail.ReturnDate). Replace("AdultCountValue", searchDetail.AdultPax). Replace("ChildCountValue", searchDetail.ChildPax). Replace("InfantCountValue", searchDetail.InfantPax). Replace("PreferredClassValue", searchDetail.Preferredclass). Replace("ModeValue", searchDetail.mode); //// Code to get all flight*** Start using (var httpClient = new HttpClient()) { var httpContent = new StringContent(searchRequestObject, Encoding.UTF8, "text/xml"); // Do the actual request and await the response var httpResponse = await httpClient.PostAsync("http://demo.arzoo.com:9301/Avalability", httpContent); // If the response contains content we want to read it! if (httpResponse.Content != null) { responseString = await httpResponse.Content.ReadAsStringAsync(); } } //*********End var serializer1 = new XmlSerializer(typeof(Arzoo_responseInt)); Arzoo_responseInt ArzooResponse; using (TextReader reader1 = new StringReader(responseString)) { ArzooResponse = (Arzoo_responseInt)serializer1.Deserialize(reader1); } if (ArzooResponse == null) { response = Request.CreateResponse <string>(HttpStatusCode.NoContent, "No Content Found"); } else if (!string.IsNullOrEmpty(ArzooResponse.Error)) { response = Request.CreateResponse <string>(HttpStatusCode.BadRequest, ArzooResponse.Error); } else { var selectedFlights = new OriginDestinationOptionInt(); //Check in depart flight if (ArzooResponse.AvailResponse != null) { var options = ArzooResponse.AvailResponse.OriginDestinationOptions.OriginDestinationOption.FirstOrDefault(o => o.Id == searchDetail.Id); if (options != null) { selectedFlights = options; } } if (selectedFlights == null) { response = Request.CreateResponse <string>(HttpStatusCode.NoContent, "No Content Found"); } else { var emptyNamepsaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); XmlSerializer xsSubmit = new XmlSerializer(typeof(OriginDestinationOptionInt)); var xml = ""; var settings = new XmlWriterSettings(); settings.Indent = true; settings.OmitXmlDeclaration = true; using (var sww = new StringWriter()) { using (XmlWriter writer = XmlWriter.Create(sww, settings)) { xsSubmit.Serialize(writer, selectedFlights, emptyNamepsaces); xml = sww.ToString(); // Your XML } } var flightPricingRequestXml = TemplateXml.FlightPricingIntXml; flightPricingRequestXml = flightPricingRequestXml.Replace("FlghtDetailXmlTemplate", xml). Replace("AdultCountValue", searchDetail.AdultPax). Replace("ChildCountValue", searchDetail.ChildPax). Replace("InfantCountValue", searchDetail.InfantPax); /****Code to Call pricing Api*****/ using (var httpClient = new HttpClient()) { var httpContent = new StringContent(searchRequestObject, Encoding.UTF8, "text/xml"); // Do the actual request and await the response var httpResponse = await httpClient.PostAsync("http://demo.arzoo.com:9301/Pricing", httpContent); // If the response contains content we want to read it! if (httpResponse.Content != null) { responseString = await httpResponse.Content.ReadAsStringAsync(); } } /****Code to extract response object form xml*****/ var serializer2 = new XmlSerializer(typeof(PriceResponseInt)); PriceResponseInt pricingResponse; using (TextReader reader1 = new StringReader(responseString)) { pricingResponse = (PriceResponseInt)serializer2.Deserialize(reader1); } if (pricingResponse == null) { response = Request.CreateResponse <string>(HttpStatusCode.NoContent, "No Content Found"); } else if (!string.IsNullOrEmpty(pricingResponse.Error)) { response = Request.CreateResponse <string>(HttpStatusCode.BadRequest, pricingResponse.Error); } else { var flightList = new List <FlightsDetail>(); foreach (var flightSegment in pricingResponse.OriginDestinationOption.Onward.FlightSegments.FlightSegment) { flightList.Add(new FlightsDetail { ArrivalAirportCode = flightSegment.ArrivalAirportCode, ArrivalDateTime = flightSegment.ArrivalDateTime, Availability = flightSegment.BookingClass.Availability, Id = pricingResponse.OriginDestinationOption.Id, DepartureAirportCode = flightSegment.DepartureAirportCode, DepartureDateTime = flightSegment.DepartureDateTime, FlightNumber = flightSegment.FlightNumber, BookingClassFareInt = flightSegment.BookingClassFare, OperatingAirlineCode = flightSegment.OperatingAirlineCode, StopQuantity = flightSegment.NumStops, AirLineName = flightSegment.OperatingAirlineName }); } if (pricingResponse.OriginDestinationOption.Return != null && pricingResponse.OriginDestinationOption.Return.FlightSegments != null) { foreach (var flightSegment in pricingResponse.OriginDestinationOption.Return.FlightSegments.FlightSegment) { flightList.Add(new FlightsDetail { ArrivalAirportCode = flightSegment.ArrivalAirportCode, ArrivalDateTime = flightSegment.ArrivalDateTime, Availability = flightSegment.BookingClass.Availability, Id = pricingResponse.OriginDestinationOption.Id, DepartureAirportCode = flightSegment.DepartureAirportCode, DepartureDateTime = flightSegment.DepartureDateTime, FlightNumber = flightSegment.FlightNumber, BookingClassFareInt = flightSegment.BookingClassFare, OperatingAirlineCode = flightSegment.OperatingAirlineCode, StopQuantity = flightSegment.NumStops, AirLineName = flightSegment.OperatingAirlineName, IsReturnFlight = true }); } } if (flightList != null && flightList.Count > 0) { XmlSerializer flightResponse = new XmlSerializer(typeof(List <FlightsDetail>)); var flightResponseXml = ""; using (var sww = new StringWriter()) { using (XmlWriter writer = XmlWriter.Create(sww)) { flightResponse.Serialize(writer, flightList); flightResponseXml = sww.ToString(); // Your XML } } response = Request.CreateResponse <string>(HttpStatusCode.OK, flightResponseXml); } else { response = Request.CreateResponse <string>(HttpStatusCode.NotFound, "No Content Found"); } } } } } } catch (Exception e) { responseString = e.Message; response = Request.CreateResponse <string>(HttpStatusCode.NotFound, responseString); } return(response); } return(null); }