Esempio n. 1
0
 public IEnumerable <LoggedDayGroup> TryGetAllLoggedDayGroups(IEnumerable <LoggedDay> loggedDays, int trackerId,
                                                              GroupSortOption sortOption)
 {
     SortOption = sortOption;
     return(LoggedDays.Where(day => day.TrackerId == trackerId)
            .GroupBy(day => day.Date.Date,
                     (day, group) => new LoggedDayGroup
     {
         Date = day,
         Count = group.Count()
     }));
 }
Esempio n. 2
0
        private IEnumerable <LoggedDayGroup> GetAllLoggedDayGroups(IEnumerable <LoggedDay> loggedDays,
                                                                   int trackerId, GroupSortOption sortOption)
        {
            loggedDays = loggedDays ?? throw new ArgumentNullException(nameof(loggedDays));

            var groups = loggedDays
                         .Where(day => day.TrackerId == trackerId)
                         .GroupBy(day => day.Date.Date,
                                  (day, group) => new LoggedDayGroup
            {
                Date  = day,
                Count = group.Count()
            });

            groups = sortOption switch
            {
                GroupSortOption.DateDescending => groups.OrderByDescending(group => group.Date),
                GroupSortOption.DateAscending => groups.OrderBy(group => group.Date),
                GroupSortOption.CountDescending => groups.OrderByDescending(group => group.Count),
                _ => throw new NotImplementedException($"Sort option '{sortOption}' not supported.")
            };

            return(groups);
        }
 public IEnumerable <LoggedDayGroup> TryGetAllLoggedDayGroups(IEnumerable <LoggedDay> loggedDays,
                                                              int trackerId, GroupSortOption sortOption) => null;
Esempio n. 4
0
 /// <summary>
 /// Gets all <see cref="LoggedDay"/>s as <see cref="LoggedDayGroup"/>s for a given tracker id.
 /// </summary>
 /// <param name="loggedDays">Logged days to group.</param>
 /// <param name="trackerId">Tracker id of the logged days to get.</param>
 /// <param name="sortOption">Specifies the way to sort the results.</param>
 /// <returns>All logged day groups under the given tracker, in the given sort order.</returns>
 public IEnumerable <LoggedDayGroup> TryGetAllLoggedDayGroups(IEnumerable <LoggedDay> loggedDays,
                                                              int trackerId, GroupSortOption sortOption) =>
 Try.Run(() => GetAllLoggedDayGroups(loggedDays, trackerId, sortOption),
         ex => _logger.Error(ex, $"Failed to get all logged day groups for tracker id {trackerId}."));