Exemplo n.º 1
0
        public static FindCheapestReturnFlightsForMultipleTravelDatesCriteria DefaultCriteria()
        {
            var sameDayEvening      = new DepartureDateIsExact().And(new DepartureTimeIsAfter(new LocalTime(20, 00)));
            var nextDayEarlyMorning = new DepartureDateIsNextDay().And(new DepartureTimeIsBefore(new LocalTime(2, 0)));

            var departureFlightSpecification = sameDayEvening.Or(nextDayEarlyMorning);

            var returnFlightSpecification = new DepartureDateIsExact().And(new DepartureTimeIsAfter(new LocalTime(21, 00)));

            return(FindCheapestReturnFlightsForMultipleTravelDatesCriteriaBuilder.New()
                   .From("STN")
                   .To("SAW")
                   .FilterDepartureWith(departureFlightSpecification)
                   .FilterReturnWith(returnFlightSpecification)
                   .TravellingDates(EveryWeekendForTheNextXWeeks(12).NotInside(BookedFlights()).ToArray())
                   .Build());
        }
Exemplo n.º 2
0
        private static void Main()
        {
            //var departureFlightSpecification = new NullSpecification<Flight>();
            var departureFlightSpecification = new DepartureTimeIsAfter(new LocalTime(21, 00));
            var returnFlightSpecification    = new DepartureTimeIsAfter(new LocalTime(21, 00));

            var priceFinder = CreatePriceFinder();
            var repository  = CreateCheapestReturnFlightsRepository();

            var returnFlights = priceFinder.FindCheapestReturnFlightsForMultipleTravelDates(FindCheapestReturnFlightsForMultipleTravelDatesCriteriaBuilder.New()
                                                                                            .From("STN")
                                                                                            .To("SAW")
                                                                                            .FilterDepartureWith(departureFlightSpecification)
                                                                                            .FilterReturnWith(returnFlightSpecification)
                                                                                            .TravellingDates(EveryWeekendForTheNextYear().ToArray())
                                                                                            .Build()).Result.ToList();

            var currentInstant = SystemClock.Instance.GetCurrentInstant();

            repository.Save(returnFlights.Select(x => new ReturnFlightArchive(currentInstant, x))).Wait();

            DisplayHeaders();
            returnFlights.ForEach(DisplayReturnFlight);

            System.Console.Read();
        }