private DateTimeOffset CalcLocalTime(FlightTime flightTime, AirportModel arrivingAt, DateTimeOffset departDate)
        {
            DateTimeOffset arrivalTime  = departDate.Add(flightTime.Duration);
            TimeZoneInfo   timeZoneInfo = ContosoTravel.Web.Application.Extensions.TimeZoneHelper.FindSystemTimeZoneById(arrivingAt.TimeZone);

            if (timeZoneInfo.IsDaylightSavingTime(arrivalTime))
            {
                arrivalTime = arrivalTime.AddHours(1);
            }

            return(TimeZoneInfo.ConvertTime(arrivalTime.DateTime, timeZoneInfo));
        }
        public async Task <IEnumerable <FlightModel> > GetAll(CancellationToken cancellationToken)
        {
            Random random = new Random();

            List <FlightModel> allFlights = new List <FlightModel>();

            foreach (var flightTime in FlightTime.GetAll())
            {
                var departingFrom = await _airportDataProvider.FindByCode(flightTime.DepartingFrom, CancellationToken.None);

                var arrivingAt = await _airportDataProvider.FindByCode(flightTime.ArrivingAt, CancellationToken.None);

                for (int dayOffset = -1; dayOffset < 7; dayOffset++)
                {
                    int          numberOfFlights   = random.Next(3, 5);
                    DateTime     today             = DateTime.Now.Date.AddDays(dayOffset);
                    TimeZoneInfo departingTimeZone = ContosoTravel.Web.Application.Extensions.TimeZoneHelper.FindSystemTimeZoneById(departingFrom.TimeZone);

                    for (int ii = 0; ii < numberOfFlights; ii++)
                    {
                        int            minutesToAddToFiveAm = (int)(random.NextDouble() * 19d * 60d);
                        DateTimeOffset departDate           = DateTimeOffset.Parse($"{today.ToString("MM/dd/yyyy")} 5:00 AM {departingTimeZone.BaseUtcOffset.Hours.ToString("00")}:{departingTimeZone.BaseUtcOffset.Minutes.ToString("00")}").AddMinutes(minutesToAddToFiveAm);

                        if (departingTimeZone.IsDaylightSavingTime(today))
                        {
                            departDate = departDate.AddHours(1);
                        }

                        allFlights.Add(new FlightModel()
                        {
                            DepartingFromAiport = departingFrom,
                            DepartingFrom       = flightTime.DepartingFrom,
                            ArrivingAtAiport    = arrivingAt,
                            ArrivingAt          = flightTime.ArrivingAt,
                            Duration            = flightTime.Duration,
                            DepartureTime       = departDate,
                            Cost        = 1500d * random.NextDouble(),
                            ArrivalTime = CalcLocalTime(flightTime, arrivingAt, departDate)
                        });
                    }
                }
            }

            return(allFlights);
        }