public async Task <PagedResultDto <AuditLogListDto> > GetAuditLogs(GetAuditLogsInput input) { var query = _auditlogRepository.AsQueryable(); query = query .WhereIf(input.MinExecutionDuration.HasValue && input.MinExecutionDuration > 0, item => item.ExecutionDuration >= input.MinExecutionDuration.Value) .WhereIf(input.MaxExecutionDuration.HasValue && input.MaxExecutionDuration < int.MaxValue, item => item.ExecutionDuration <= input.MaxExecutionDuration.Value) .WhereIf(input.HasException == true, item => item.Exceptions != null && item.Exceptions != "") .WhereIf(input.HasException == false, item => item.Exceptions == null || item.Exceptions == ""); var resultCount = await query.CountAsync(); var results = await query .OrderBy(input.Sorting ?? "executionTime desc") .PageBy(input) .ToListAsync(); var auditLogListDtos = ObjectMapper.Map <List <AuditLog>, List <AuditLogListDto> >(results); return(new PagedResultDto <AuditLogListDto>(resultCount, auditLogListDtos)); }