public ChartElement(DateTime startDate, int nodeValue, ChartGranuality granuality) { StartDate = startDate; NodeValue = nodeValue; switch (granuality) { case ChartGranuality.PerDay: DateLabel = startDate.ToString("dd.MM"); break; case ChartGranuality.PerWeek: { var endDate = startDate.AddDays(6); DateLabel = $"{startDate.ToString("dd.MM")}-{endDate.ToString("dd.MM")}"; break; } case ChartGranuality.PerMonth: { DateLabel = $"{startDate.ToString("MM.yyyy")}"; break; ; } } }
public ChartRequestDto(DateTime startDate, DateTime endDate, ChartType type, ChartGranuality granuality, int userId) { DateRange = new DateRange(startDate, endDate); Type = type; Granuality = granuality; UserId = userId; }
protected List <DateRange> TransformDateRange(ChartGranuality granuality, DateRange requestDateRange) { switch (granuality) { case ChartGranuality.PerDay: return(requestDateRange.GetDailyGroups()); case ChartGranuality.PerWeek: return(requestDateRange.GetWeekGroups()); case ChartGranuality.PerMonth: return(requestDateRange.GetMonthGroups()); default: throw new ArgumentOutOfRangeException(nameof(granuality), granuality, null); } }
protected IEnumerable <ChartElement> GroupAndSumGateUsagesByDateRange(IEnumerable <DateRange> dateRanges, Dictionary <DateTime, int> dailyAggregatedGateUsages, ChartGranuality granuality) { return(dateRanges.Select(dateRange => new ChartElement(dateRange.StartDate, dailyAggregatedGateUsages.Where(x => x.Key >= dateRange.StartDate && x.Key <= dateRange.EndDate).Sum(x => x.Value), granuality)).ToList()); }