public async Task <InfrastructureLogServiceSearchResult> SearchLogsAsync(int start, int length, string searchValue, SortDirection sortDirection, InfrastructureLogSortColumnName sortColumnName, LogLevel[] logLevels)
        {
            var repositorySearchResult = await _infrastructureLogRepository.SearchLogsAsync(start, length, searchValue, sortDirection, sortColumnName, logLevels).ConfigureAwait(false);

            var infrastructureLogs = repositorySearchResult.FilteredLogs.Select(x => x.ToInfrastructureLog());

            return(new InfrastructureLogServiceSearchResult(repositorySearchResult.TotalLogCount, repositorySearchResult.RecordsFiltered, infrastructureLogs));
        }
Ejemplo n.º 2
0
        public async Task <InfrastructureLogRepositorySearchResult> SearchLogsAsync(int start, int length, string searchValue, SortDirection sortDirection, InfrastructureLogSortColumnName sortColumnName, LogLevel[] logLevels)
        {
            if (logLevels == null)
            {
                logLevels = new[] { LogLevel.Information, LogLevel.Debug, LogLevel.Trace, LogLevel.Warning, LogLevel.Error, LogLevel.Critical };
            }

            var recordsTotal = await InfrastructureLogs.CountAsync().ConfigureAwait(false);

            var filterQuery     = InfrastructureLogs.Where(x => (x.Category.ToLower().Contains(searchValue.ToLower()) || x.Content.ToLower().Contains(searchValue.ToLower())) && logLevels.Contains(x.LogLevel));
            var recordsFiltered = await filterQuery.CountAsync().ConfigureAwait(false);


            switch (sortColumnName)
            {
            case InfrastructureLogSortColumnName.CreatedDate:
                filterQuery = sortDirection == SortDirection.Ascending ? filterQuery.OrderBy(x => x.CreatedDate) : filterQuery.OrderByDescending(x => x.CreatedDate);
                break;

            case InfrastructureLogSortColumnName.Severity:
                filterQuery = sortDirection == SortDirection.Ascending ? filterQuery.OrderBy(x => x.LogLevel) : filterQuery.OrderByDescending(x => x.LogLevel);
                break;

            case InfrastructureLogSortColumnName.Source:
                filterQuery = sortDirection == SortDirection.Ascending ? filterQuery.OrderBy(x => x.Category) : filterQuery.OrderByDescending(x => x.LogLevel);
                break;

            case InfrastructureLogSortColumnName.Content:
                filterQuery = sortDirection == SortDirection.Ascending ? filterQuery.OrderBy(x => x.Content) : filterQuery.OrderByDescending(x => x.Content);
                break;

            case InfrastructureLogSortColumnName.MachineName:
                filterQuery = sortDirection == SortDirection.Ascending ? filterQuery.OrderBy(x => x.Content) : filterQuery.OrderByDescending(x => x.MachineName);
                break;
            }

            filterQuery = filterQuery.Skip(start).Take(length);

            var filteredResult = await filterQuery.ToListAsync().ConfigureAwait(false);

            var searchResult = new InfrastructureLogRepositorySearchResult(recordsTotal, recordsFiltered, filteredResult);

            return(searchResult);
        }
Ejemplo n.º 3
0
 public async Task <IActionResult> SearchInfrastructureLogs(int start = 0, int length = 10, string searchValue = "", SortDirection sortDirection = SortDirection.Descending, InfrastructureLogSortColumnName sortColumnName = InfrastructureLogSortColumnName.CreatedDate, LogLevel[] logLevels = null)
 {
     return(Ok(await _infrastructureLogService.SearchLogsAsync(start, length, searchValue, sortDirection, sortColumnName, logLevels).ConfigureAwait(false)));
 }