public async Task <IEnumerable <TodoDto> > Handle(GetTodoListQuery request, CancellationToken cancellationToken) { if (request is null) { throw new ArgumentNullException(nameof(request)); } _logger.LogDebug($"Handle {nameof(GetTodoByIdQuery)}"); var todoList = await _repository.GetTodoListAsync(); if (!todoList.Any()) { _logger.LogError("No todos could be found."); return(Enumerable.Empty <TodoDto>()); } return(_mapper.Map <IEnumerable <TodoDto> >(todoList)); }
public async Task <IEnumerable <TodoListItem> > GetTodoListsAsync(GetTodoListQuery query, CancellationToken cancelationToken) { IEnumerable <Dse.TodoListItem> items; if (!string.IsNullOrEmpty(query.Filter)) { items = await _storageContext.TodoLists.Get(l => l.Name.Contains(query.Filter) || l.Description.Contains(query.Filter), cancelationToken); } else { items = await _storageContext.TodoLists.GetAll(cancelationToken); } items = items.OrderBy(l => l.Name) .Skip(query.Offset) .Take(query.Count); IEnumerable <TodoListItem> resultItems = _mapper.Map <List <TodoListItem> >(items); if (query.IncludeTasks) { cancelationToken.ThrowIfCancellationRequested(); var listsDic = resultItems.ToDictionary(l => l.Id); var tasks = await _storageContext.Tasks.Get(t => listsDic.Keys.Contains(t.ListId), cancelationToken); foreach (var list in listsDic.Values) { list.Tasks = tasks.Where(t => t.ListId == list.Id) .Select(t => _mapper.Map <TodoListTask>(t)) .OrderBy(t => t.Name) .ToList(); } } cancelationToken.ThrowIfCancellationRequested(); return(resultItems); }
public async Task <IActionResult> GetTodo([FromQuery] GetTodoListQuery getTodoListQuery) { var result = await _mediator.Send(getTodoListQuery); return(Ok(result)); }