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));
        }
示例#2
0
        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);
        }
示例#3
0
        public async Task <IActionResult> GetTodo([FromQuery] GetTodoListQuery getTodoListQuery)
        {
            var result = await _mediator.Send(getTodoListQuery);

            return(Ok(result));
        }