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