public FlightSearchResponse Search(string departureStation, string arrivalStation, DateTime beginDate, DateTime endDate, short paxCount, BitArray daysOfWeek, short?maxPrice) { var response = FlightSearchResponseFactory.New(); var totalDays = (endDate - beginDate).TotalDays; for (int dayIndex = 0; dayIndex <= totalDays; dayIndex++) { var day = beginDate.AddDays(dayIndex); response.OutboundFlights.Add(new Flight() { DepartureStation = departureStation, ArrivalStation = arrivalStation, DepartureDate = day, STD = day.AddHours(8), STA = day.AddHours(10), CarrierCode = "HV", FlightNumber = 123, Price = 100 }); response.InboundFlights.Add(new Flight() { DepartureStation = arrivalStation, ArrivalStation = departureStation, DepartureDate = day, STD = day.AddHours(8), STA = day.AddHours(10), CarrierCode = "HV", FlightNumber = 123, Price = 100 }); } return(response); }
public FlightSearchResponse Search(string departureStation, string arrivalStation, DateTime beginDate, DateTime endDate, short paxCount, BitArray daysOfWeek, short?maxPrice) { var response = FlightSearchResponseFactory.New(); var esbClient = new EsbApi34(); esbClient.LogOn(); try { var outboundAvailabilityRequest = esbClient.BookingManager.CreateAvailabilityRequest(departureStation.Trim(), arrivalStation.Trim(), beginDate, endDate, carrierCode: null, paxCount: paxCount, paxPriceTypes: PaxPriceTypes); var inboundAvailabilityRequest = esbClient.BookingManager.CreateAvailabilityRequest(arrivalStation.Trim(), departureStation.Trim(), beginDate, endDate, carrierCode: null, paxCount: paxCount, paxPriceTypes: PaxPriceTypes); var availabilityResponse = esbClient.BookingManager.GetAvailability(new TripAvailabilityRequest() { AvailabilityRequests = new[] { outboundAvailabilityRequest, inboundAvailabilityRequest } }); var journeys = availabilityResponse.Journeys(); foreach (var journey in journeys) { var availableFare = (AvailableFare)journey.Fares().FirstOrDefault(); if (availableFare == null) { continue; } var segment = journey.Segments[0]; var departureDate = segment.STD.Date; var price = FarePrice(availableFare); if (maxPrice.HasValue && price > maxPrice.Value) { continue; } if (!ContainsDayOfWeek(daysOfWeek, departureDate.DayOfWeek)) { continue; } var flight = new Flight() { DepartureStation = segment.DepartureStation, ArrivalStation = segment.ArrivalStation, DepartureDate = departureDate, CarrierCode = segment.FlightDesignator.CarrierCode, FlightNumber = short.Parse(segment.FlightDesignator.FlightNumber), STD = segment.STD, STA = segment.STA, Price = price }; if (flight.DepartureStation.Equals(departureStation.Trim())) { response.OutboundFlights.Add(flight); } else { response.InboundFlights.Add(flight); } } return(response); } finally { esbClient.LogOut(); } }