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);
        }