Ejemplo n.º 1
0
        /// <summary>
        /// A helper method to retreive all time information for the input intra day filters
        /// </summary>
        /// <param name="intraDayFilters">List of intra day filters</param>
        /// <returns>List of instances of IntraDayDetails</returns>
        public async Task <List <IntraDayDetails> > GetTimeDetails(List <IntraDayFilter> intraDayFilters)
        {
            List <IntraDayDetails> selectedTimes = new List <IntraDayDetails>();
            var timezones = await _timezoneRepository.GetTimezones();

            intraDayFilters.ForEach(intraDayFilter =>
            {
                var timeDetails = (from t in timezones
                                   where (!intraDayFilter.Include.Any() || intraDayFilter.Include.Contains(t.TimezoneId)) &&
                                   (!intraDayFilter.Exclude.Any() || !intraDayFilter.Exclude.Contains(t.TimezoneId))
                                   select new IntraDayDetails
                {
                    TimezoneId = t.TimezoneId,
                    CurrentDate = DateTime.UtcNow.Add(TimezoneHelper.GetOffset(t.Abbreviation).Value).Date,
                    CurrentDateTime = DateTime.UtcNow.Add(TimezoneHelper.GetOffset(t.Abbreviation).Value),
                    StartDate = DateTime.UtcNow.Add(TimezoneHelper.GetOffset(t.Abbreviation).Value).Date.AddDays(intraDayFilter.RelativeStartDay),
                    EndDate = DateTime.UtcNow.Add(TimezoneHelper.GetOffset(t.Abbreviation).Value).Date.AddDays(intraDayFilter.RelativeEndDay),
                    RecentlyUpdatedInDays = intraDayFilter.PickRecentlyUpdatedInDays
                }).ToList();

                if (timeDetails.Any())
                {
                    selectedTimes.AddRange(timeDetails);
                }
            });
            return(selectedTimes);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// A helper method to retreive all time information for the input span filters
        /// </summary>
        /// <param name="spanFilters">List of span filters</param>
        /// <returns>List of instances of SpanDetails</returns>
        public async Task <List <SpanDetails> > GetTimeDetails(List <SpanFilter> spanFilters)
        {
            List <SpanDetails> selectedTimes = new List <SpanDetails>();
            var timezones = await _timezoneRepository.GetTimezones();

            spanFilters.ForEach(spanFilter =>
            {
                var timeDetails = (from t in timezones
                                   where DateTime.UtcNow.Add(TimezoneHelper.GetOffset(t.Abbreviation).Value).TimeOfDay >= spanFilter.Start &&
                                   DateTime.UtcNow.Add(TimezoneHelper.GetOffset(t.Abbreviation).Value).TimeOfDay < spanFilter.End &&
                                   (!spanFilter.Include.Any() || spanFilter.Include.Contains(t.TimezoneId)) &&
                                   (!spanFilter.Exclude.Any() || !spanFilter.Exclude.Contains(t.TimezoneId))
                                   select new SpanDetails
                {
                    Days = spanFilter.DaysOfData,
                    CurrentDate = DateTime.UtcNow.Add(TimezoneHelper.GetOffset(t.Abbreviation).Value).Date,
                    CurrentDateTime = DateTime.UtcNow.Add(TimezoneHelper.GetOffset(t.Abbreviation).Value),
                    TimezoneId = t.TimezoneId
                }).ToList();

                if (timeDetails.Any())
                {
                    selectedTimes.AddRange(timeDetails);
                }
            });

            return(selectedTimes);
        }