public async Task <ActionResult> Get([FromQuery] GetTodoItemsRequest requst) { var query = db.TodoItems.AsQueryable(); // filter if (!string.IsNullOrEmpty(requst.Filter.Title)) { query = query.Where(a => a.Title.Contains(requst.Filter.Title)); } if (requst.Filter.Status.HasValue) { query = query.Where(a => a.Status == requst.Filter.Status); } var total = await query.CountAsync(); var items = await query .OrderByDescending(a => a.CreateOn) .Skip(requst.Skip) .Take(GetTake(requst.Take)) .ToArrayAsync(); var response = new GetTodoItemsResponse { Items = items, Total = total }; return(Ok(response));
public async Task HandleAsyncTest(int totalItems) { var todoItemEntities = await PopulateTodoItems(totalItems); var handler = new GetTodoItemsRequestHandler(Context); var request = new GetTodoItemsRequest(); var response = await handler.HandleAsync(request); Assert.IsNotNull(response?.Item); Assert.AreEqual(0, response.Notifications.Count); Assert.AreEqual(todoItemEntities.Count, response.Item.Count); foreach (var todoItemEntity in todoItemEntities) { var todoItem = response.Item.SingleOrDefault(item => item.Id == todoItemEntity.Id); VerifyTodoItem.AssertTodoItem(todoItemEntity, todoItem); } }