示例#1
0
        private static Flight CreateFlight(FlightCalculationRequest request, DateTime dateTime, WeeklyTimetable day)
        {
            var route      = new Route(request.Origin, request.Destination);
            var departDate = dateTime.Add(day.DepartureTime);
            var arriveDate = dateTime.Add(day.ArrivalTime);
            var flight     = new Flight(route, departDate, arriveDate, request.FlightNumber);

            return(flight);
        }
示例#2
0
        public List <Flight> Calculate(FlightCalculationRequest request)
        {
            var output        = new List <Flight>();
            var candidateDays = FindCandidateDays(request);

            foreach (var dateTime in candidateDays)
            {
                var day    = request.Timetables.First(a => a.DayOfWeek == dateTime.DayOfWeek);
                var flight = CreateFlight(request, dateTime, day);
                output.Add(flight);
            }
            return(output);
        }
示例#3
0
 private static List <DateTime> FindCandidateDays(FlightCalculationRequest request)
 {
     return(request.From.EachDay(request.To)
            .Where(a => request.Timetables.Select(z => z.DayOfWeek).Contains(a.DayOfWeek))
            .ToList());
 }