public static async Task <RemarksCountStatistics> CalculateGeneralStatisticsAsync(
            this IMongoCollection <RemarkStatistics> statistics,
            GetRemarkGeneralStatistics query)
        {
            var from   = query.From.GetValueOrDefault(default(DateTime));
            var to     = query.To.GetValueOrDefault(DateTime.MaxValue);
            var states = await statistics.AsQueryable()
                         .Where(x => x.State.CreatedAt > from && x.State.CreatedAt < to)
                         .Select(x => x.State.State)
                         .ToListAsync();

            var reported   = states.Count();
            var @new       = states.Count(x => x == RemarkState.Names.New);
            var processing = states.Count(x => x == RemarkState.Names.Processing);
            var resolved   = states.Count(x => x == RemarkState.Names.Resolved);
            var canceled   = states.Count(x => x == RemarkState.Names.Canceled);
            var renewed    = states.Count(x => x == RemarkState.Names.Renewed);
            var deleted    = reported - @new - processing - resolved - canceled - renewed;

            return(new RemarksCountStatistics(@new, reported, processing,
                                              resolved, canceled, deleted, renewed));
        }
Пример #2
0
 public async Task <Maybe <RemarksCountStatistics> > GetGeneralStatisticsAsync(GetRemarkGeneralStatistics query)
 => await _database.RemarkStatistics()
 .CalculateGeneralStatisticsAsync(query);