public async Task <ExportTodoCategoriesVm> Handle(ExportTodoCategoriesQuery request, CancellationToken cancellationToken)
        {
            var vm      = new ExportTodoCategoriesVm();
            var records = await _context.TodoItems
                          .Where(x => x.CategoryId == request.CategoryId)
                          .ProjectTo <TodoCategoryItemFileRecord>(_mapper.ConfigurationProvider)
                          .ToListAsync(cancellationToken);

            vm.Content     = _fileBuilder.BuildTodoItemsFile(records);
            vm.ContentType = "text/csv";
            vm.FileName    = "TodoItems.csv";

            return(await Task.FromResult(vm));
        }
    public async Task <ExportTodosVm> Handle(ExportTodosQuery request, CancellationToken cancellationToken)
    {
        var records = await _context.TodoItems
                      .Where(t => t.ListId == request.ListId)
                      .ProjectTo <TodoItemRecord>(_mapper.ConfigurationProvider)
                      .ToListAsync(cancellationToken);

        var vm = new ExportTodosVm(
            "TodoItems.csv",
            "text/csv",
            _fileBuilder.BuildTodoItemsFile(records));

        return(vm);
    }
            public async Task <TodoItemsFileVm> Handle(GetTodoItemsFileQuery request, CancellationToken cancellationToken)
            {
                var records = await _context.TodoItems
                              .ProjectTo <TodoItemFileRecord>(_mapper.ConfigurationProvider)
                              .ToListAsync(cancellationToken);

                var fileContent = _fileBuilder.BuildTodoItemsFile(records);

                var vm = new TodoItemsFileVm
                {
                    Content     = fileContent,
                    ContentType = "text/csv",
                    FileName    = "TodoItems.csv"
                };

                return(vm);
            }
        public async Task <ExportTodosVm> Handle(
            ExportTodosQuery request,
            CancellationToken cancellationToken)
        {
            var vm = new ExportTodosVm();

            var records = (await _repository.GetAllAsync())
                          .Where(t => t.ListId == request.ListId)
                          .AsQueryable()
                          .ProjectTo <TodoItemRecord>(_mapper.ConfigurationProvider)
                          .ToList();

            vm.Content     = _fileBuilder.BuildTodoItemsFile(records);
            vm.ContentType = "text/csv";
            vm.FileName    = "TodoItems.csv";

            return(await Task.FromResult(vm));
        }
Beispiel #5
0
        public async Task <ExportTodosVm> Handle(ExportTodosQuery request, CancellationToken cancellationToken)
        {
            var vm = new ExportTodosVm();

            // TODO: No caso desse exemplo, o cara estava usando 'ToListAsync', q é um método do EntityFrameworkCore, ou seja, estava acoplando dependência de banco de dados diretamente aqui
            //var records = await _context.TodoItems
            //        .Where(t => t.ListId == request.ListId)
            //        .AsQueryable()
            //        .ProjectTo<TodoItemRecord>(_mapper.ConfigurationProvider)
            //        .ToListAsync(cancellationToken);

            IEnumerable <TodoItemRecord> todoItemRecords = await _context
                                                           .GetTodoItemRecords(request.ListId, _mapper.ConfigurationProvider, cancellationToken);

            // Ou..
            IEnumerable <TodoItemRecord> todoItemRecordsFromRepo = await _todoItemRepository
                                                                   .GetTodoItemRecords(request.ListId, _mapper.ConfigurationProvider, cancellationToken);

            vm.Content     = _fileBuilder.BuildTodoItemsFile(todoItemRecords);
            vm.ContentType = "text/csv";
            vm.FileName    = "TodoItems.csv";

            return(await Task.FromResult(vm));
        }