public PagedResponse <TaskDTO> Execute(SearchTaskDTO dto) { var taskQuery = Context.Tasks.AsQueryable(); if (!string.IsNullOrEmpty(dto.Name) && !string.IsNullOrWhiteSpace(dto.Name)) { taskQuery = taskQuery.Where(t => t.Name.ToLower().Contains(dto.Name.ToLower())); } if (dto.StoryPoints > 0) { taskQuery = taskQuery.Where(t => t.StoryPoints == dto.StoryPoints); } if (!string.IsNullOrEmpty(dto.Project) && !string.IsNullOrWhiteSpace(dto.Project)) { taskQuery = taskQuery.Where(t => t.Project.Name.ToLower().Contains(dto.Project.ToLower())); } var skipCount = dto.PerPage * (dto.Page - 1); var tasks = Mapper.Map <List <TaskDTO> >(taskQuery.Skip(skipCount).Take(dto.PerPage).ToList()); var response = new PagedResponse <TaskDTO> { CurrentPage = dto.Page, ItemsPerPage = dto.PerPage, TotalCount = taskQuery.Count(), Items = tasks }; return(response); }
public IActionResult Get([FromQuery] SearchTaskDTO dto, [FromServices] IGetTaskQuery query) { return(Ok(_executor.ExecuteQuery(query, dto))); }