public async Task <ActionResult <TodoItemDto> > GetTodoItems([FromQuery] TodoItemFilter filter)
        {
            // var count = await _repo.All.CountAsync();
            // var user = User.Claims.Where(c => c.Type == ClaimTypes.Name).FirstOrDefault();
            var todoItems = await _repo.All.Apply(filter).ToListAsync();

            var todoItemsDto = _mapper.Map <List <TodoItemDto> >(todoItems);

            return(Ok(todoItemsDto));
        }
Beispiel #2
0
 public static IQueryable <TodoItem> Filter(this IQueryable <TodoItem> query, TodoItemFilter filter)
 {
     if (!string.IsNullOrEmpty(filter.Name))
     {
         query = query.Where(ti => ti.Name.ToLower().Contains(filter.Name.ToLower()));
     }
     if (filter.IsComplete.HasValue)
     {
         query = query.Where(ti => ti.IsComplete == filter.IsComplete);
     }
     return(query);
 }
        public async Task Find_Should_ReturnItemsFilteredByTitle()
        {
            // Arrange
            SetupForFind();
            var filter = new TodoItemFilter {
                Title = "Piano"
            };

            // Act
            var results = await _repository.Find(filter, null, 1, 10);

            // Assert
            AssertOneResult("Piano leassons", results);
        }
        public async Task Find_Should_ReturnItemsFilteredByIsCompleted()
        {
            // Arrange
            SetupForFind();
            var filter = new TodoItemFilter {
                IsCompleted = true
            };

            // Act
            var results = await _repository.Find(filter, null, 1, 10);

            // Assert
            AssertOneResult("Completed", results);
        }
        public async Task Find_Should_ReturnItemsFilteredByDescription()
        {
            // Arrange
            SetupForFind();
            var filter = new TodoItemFilter {
                Description = "time of the week"
            };

            // Act
            var results = await _repository.Find(filter, null, 1, 10);

            // Assert
            AssertOneResult("Laundry", results);
        }
Beispiel #6
0
        public async Task <Page <TodoItem> > Find(TodoItemFilter filter, Sort <TodoItem> sortOrder, int page, int pageSize)
        {
            var query = _uow.GetRepository <TodoItem>().FindAll(null, false);

            if (!string.IsNullOrEmpty(filter?.Title))
            {
                query = query.Where(x => x.Title.StartsWith(filter.Title));
            }

            if (!string.IsNullOrEmpty(filter?.Description))
            {
                query = query.Where(x => x.Description.Contains(filter.Description));
            }

            if (filter?.IsCompleted != null)
            {
                query = query.Where(x => x.IsCompleted == filter.IsCompleted);
            }

            if (sortOrder == null)
            {
                // Skip doesn't work on unordered queries, so provide a default sort.
                query = query.OrderBy(x => x.Id);
            }
            else
            {
                query = sortOrder.Ascending ? query.OrderBy(sortOrder.Expression) : query.OrderByDescending(sortOrder.Expression);
            }

            var items = await query
                        .Skip((page - 1) *pageSize)
                        .Take(pageSize)
                        .ToArrayAsync()
                        .ConfigureAwait(false);

            var totalItems = await query.CountAsync().ConfigureAwait(false);

            return(new Page <TodoItem>(items, page, pageSize, totalItems));
        }
Beispiel #7
0
 public Task <Page <TodoItem> > Find(TodoItemFilter filter, Sort <TodoItem> sortOrder, int page, int pageSize)
 {
     return(_repository.Find(filter, sortOrder, page, pageSize));
 }
Beispiel #8
0
 public static IQueryable <TodoItem> Apply(this IQueryable <TodoItem> query, TodoItemFilter filter)
 {
     return(query.Filter(filter).Sort(filter).Paginate(filter));
 }