public PagedResponse <LogDTO> Execute(SearchLogDTO dto) { var logsQuery = Context.UseCaseLoggers.AsQueryable(); if (!string.IsNullOrEmpty(dto.Actor) && !string.IsNullOrWhiteSpace(dto.Actor)) { logsQuery = logsQuery.Where(l => l.Actor.ToLower().Contains(dto.Actor.ToLower())); } if (!string.IsNullOrEmpty(dto.UseCase) && !string.IsNullOrWhiteSpace(dto.UseCase)) { logsQuery = logsQuery.Where(l => l.UseCase.ToLower().Contains(dto.UseCase.ToLower())); } if (dto.DateFrom != null) { logsQuery = logsQuery.Where(l => l.DateTime >= dto.DateFrom); } if (dto.DateTo != null) { logsQuery = logsQuery.Where(l => l.DateTime <= dto.DateTo); } if (dto.DateFrom != null && dto.DateTo != null) { logsQuery = logsQuery.Where(l => l.DateTime >= dto.DateFrom) .Where(l => l.DateTime <= dto.DateTo); } var skipCount = dto.PerPage * (dto.Page - 1); var logs = Mapper.Map <List <LogDTO> >(logsQuery.Skip(skipCount).Take(dto.PerPage).ToList()); var response = new PagedResponse <LogDTO> { CurrentPage = dto.Page, ItemsPerPage = dto.PerPage, TotalCount = logsQuery.Count(), Items = logs }; return(response); }
public IActionResult Get([FromQuery] SearchLogDTO dto, [FromServices] IGetLogsQuery query) { return(Ok(_executor.ExecuteQuery(query, dto))); }