Пример #1
0
        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);
        }
Пример #2
0
        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();
            }
        }