private async Task <DisplayedTasks> GetWeekTasksAsync(IQueryable <TaskItem> processedTasks, QueryProcessing queryProcessing) { processedTasks = processedTasks.Where(t => t.PlanningDate.HasValue && t.EffectiveDate == null); processedTasks = queryProcessing.SortTasks(processedTasks); int thisWeekRemainingDaysCount = DateTime.Today.DayOfWeek == 0 ? 0 : 7 - (int)DateTime.Today.DayOfWeek; DateTime thisWeekEndDate = DateTime.Today.AddDays(thisWeekRemainingDaysCount); Dictionary <string, IEnumerable <TaskItem> > tasks = await dbTasks .Where(t => t.PlanningDate <= thisWeekEndDate && t.PlanningDate.HasValue && t.EffectiveDate == null) .Select(t => new { t.PlanningDate }) .Distinct() .OrderBy(t => t.PlanningDate) .GroupJoin( processedTasks, t1 => t1.PlanningDate, t2 => t2.PlanningDate, (t1, t2) => new { t1.PlanningDate, t2 }) .ToDictionaryAsync(a => a.PlanningDate.Value.ToShortDateString(), a => a.t2); return(new DisplayedTasks { Week = tasks }); }
private async Task <DisplayedTasks> GetTodayTasksAsync(IQueryable <TaskItem> processedTasks, QueryProcessing queryProcessing) { processedTasks = processedTasks.Where(t => t.EffectiveDate == null && t.PlanningDate.HasValue && t.PlanningDate <= DateTime.Today); processedTasks = queryProcessing.SortTasks(processedTasks); long minId = dbCategories.Min(c => c.Id); IQueryable <Category> secondCategories = dbCategories.Where(c => c.Id > minId).OrderBy(c => c.Name); Dictionary <string, IEnumerable <TaskItem> > tasks = await dbCategories .Where(c => c.Id == minId) .Concat(secondCategories) .GroupJoin( processedTasks, c => c.Id, t => t.CategoryId, (c, ct) => new { c.Name, ct }) .ToDictionaryAsync(anonymous => anonymous.Name, anonymous => anonymous.ct); return(new DisplayedTasks { Today = tasks }); }
private async Task <DisplayedTasks> GetTasksAsync(IQueryable <TaskItem> processedTasks, QueryProcessing queryProcessing) { processedTasks = queryProcessing.SortTasks(processedTasks); List <TaskItem> tasks = await processedTasks.ToListAsync(); return(new DisplayedTasks { Active = tasks?.Where(t => t.IsCompleted == false).ToList(), Completed = tasks?.Where(t => t.IsCompleted == true).ToList() }); }
private async Task <DisplayedTasks> GetFoundTasksAsync(QueryProcessing queryProcessing) { IQueryable <TaskItem> processedTasks = queryProcessing.SearchTasks(dbTasks); processedTasks = processedTasks.Where(t => t.EffectiveDate == null); processedTasks = queryProcessing.SortTasks(processedTasks); long minId = dbCategories.Min(c => c.Id); IQueryable <Category> secondCategories = dbCategories.Where(c => c.Id > minId).OrderBy(c => c.Name); Dictionary <string, IEnumerable <TaskItem> > tasks = await dbCategories .Where(c => c.Id == minId) .Concat(secondCategories).GroupJoin( processedTasks, c => c.Id, t => t.CategoryId, (c, ct) => new { c.Name, ct }) .Where(a => a.ct.Count() > 0) .ToDictionaryAsync(anonymous => anonymous.Name, anonymous => anonymous.ct); return(new DisplayedTasks { Found = tasks }); }