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)); }
public async Task <Maybe <RemarksCountStatistics> > GetGeneralStatisticsAsync(GetRemarkGeneralStatistics query) => await _database.RemarkStatistics() .CalculateGeneralStatisticsAsync(query);