public async Task <List <OutcomeOverviewModel> > HandleAsync(ListMonthOutcomeFromCategory query) { using (ReadModelContext db = readModelContextFactory.Create()) { IQueryable <OutcomeEntity> entities = db.Outcomes.WhereUserKey(query.UserKey); if (!query.CategoryKey.IsEmpty) { entities = entities.Where(o => o.Categories.Select(c => c.CategoryId).Contains(query.CategoryKey.AsGuidKey().Guid)); } var sql = entities .Include(o => o.Categories) .Where(o => o.When.Month == query.Month.Month && o.When.Year == query.Month.Year); sql = SortOverviewOutcomes(sql, query.SortDescriptor); if (query.PageIndex != null) { sql = sql.TakePage(query.PageIndex.Value, PageSize); } List <OutcomeOverviewModel> models = await sql .Select(o => o.ToOverviewModel()) .ToListAsync(); return(models); } }
public async Task <IEnumerable <OutcomeOverviewModel> > HandleAsync(ListMonthOutcomeFromCategory query) { using (ReadModelContext db = new ReadModelContext()) { IQueryable <OutcomeEntity> entities = db.Outcomes; if (!query.CategoryKey.IsEmpty) { entities = entities.Where(o => o.Categories.Select(c => c.CategoryId).Contains(query.CategoryKey.AsGuidKey().Guid)); } List <OutcomeOverviewModel> outcomes = await entities .Where(o => o.When.Month == query.Month.Month && o.When.Year == query.Month.Year) .OrderBy(o => o.When) .Select(o => o.ToOverviewModel()) .ToListAsync(); return(outcomes); } }
public async Task <List <OutcomeOverviewModel> > HandleAsync(ListMonthOutcomeFromCategory query) { using (ReadModelContext db = dbFactory.Create()) { var sql = db.Outcomes .Include(o => o.Categories) .WhereUserKey(query) .Where(o => o.When.Month == query.Month.Month && o.When.Year == query.Month.Year); sql = ApplyCategoryKey(sql, query.CategoryKey); sql = ApplySorting(sql, query); sql = ApplyPaging(sql, query); List <OutcomeOverviewModel> models = await sql .Select(o => o.ToOverviewModel(query.Version)) .ToListAsync(); return(models); } }