private void ProcessSearchResults( SearchResults <ProviderCalculationResultsIndex> searchResult, CalculationProviderResultSearchResults results, string entityValue, string entityExceptionFieldName, bool useCalculationId) { if (!searchResult.Facets.IsNullOrEmpty()) { if (_featureToggle.IsExceptionMessagesEnabled() && searchResult.Facets.Any(f => f.Name == entityExceptionFieldName)) { results.TotalErrorCount = (int)(searchResult.TotalCount ?? 0); } else { results.Facets = results.Facets.Concat(searchResult.Facets); } } else { IList <CalculationProviderResultSearchResult> calculationResults = new List <CalculationProviderResultSearchResult>(); results.TotalCount = (int)(searchResult?.TotalCount ?? 0); if (!searchResult.Results.IsNullOrEmpty()) { foreach (CalculateFunding.Repositories.Common.Search.SearchResult <ProviderCalculationResultsIndex> result in searchResult.Results) { int valueIndex = Array.IndexOf(useCalculationId ? result.Result.CalculationId : result.Result.FundingLineId, entityValue); CalculationProviderResultSearchResult calculationResult = new CalculationProviderResultSearchResult { Id = result.Result.Id, ProviderId = result.Result.ProviderId, ProviderName = result.Result.ProviderName, SpecificationName = result.Result.SpecificationName, SpecificationId = result.Result.SpecificationId, LastUpdatedDate = result.Result.LastUpdatedDate.LocalDateTime, LocalAuthority = result.Result.LocalAuthority, ProviderType = result.Result.ProviderType, ProviderSubType = result.Result.ProviderSubType, UKPRN = result.Result.UKPRN, UPIN = result.Result.UPIN, URN = result.Result.URN, OpenDate = result.Result.OpenDate, EstablishmentNumber = result.Result.EstablishmentNumber, }; if (valueIndex >= 0) { if (useCalculationId) { calculationResult.CalculationId = entityValue; calculationResult.CalculationName = result.Result.CalculationName[valueIndex]; calculationResult.CalculationResult = result.Result.CalculationResult[valueIndex].GetObjectOrNull(); calculationResult.CalculationExceptionType = !result.Result.CalculationExceptionType.IsNullOrEmpty() ? result.Result.CalculationExceptionType[valueIndex] : string.Empty; calculationResult.CalculationExceptionMessage = !result.Result.CalculationExceptionMessage.IsNullOrEmpty() ? result.Result.CalculationExceptionMessage[valueIndex] : string.Empty; } else { calculationResult.FundingLineId = entityValue; calculationResult.FundingLineName = result.Result.FundingLineName[valueIndex]; calculationResult.FundingLineResult = result.Result.FundingLineResult[valueIndex].GetValueOrNull <decimal>(); calculationResult.FundingLineExceptionType = !result.Result.FundingLineExceptionType.IsNullOrEmpty() ? result.Result.FundingLineExceptionType[valueIndex] : string.Empty; calculationResult.FundingLineExceptionMessage = !result.Result.FundingLineExceptionMessage.IsNullOrEmpty() ? result.Result.FundingLineExceptionMessage[valueIndex] : string.Empty; } } calculationResults.Add(calculationResult); } } results.Results = calculationResults; } }
private void ProcessSearchResults(SearchResults <ProviderCalculationResultsIndex> searchResult, CalculationProviderResultSearchResults results, string calculationId) { if (!searchResult.Facets.IsNullOrEmpty()) { if (_featureToggle.IsExceptionMessagesEnabled() && searchResult.Facets.Any(f => f.Name == "calculationException")) { results.TotalErrorCount = (int)(searchResult?.TotalCount ?? 0); } else { results.Facets = results.Facets.Concat(searchResult.Facets); } } else { IList <CalculationProviderResultSearchResult> calculationResults = new List <CalculationProviderResultSearchResult>(); results.TotalCount = (int)(searchResult?.TotalCount ?? 0); if (!searchResult.Results.IsNullOrEmpty()) { foreach (CalculateFunding.Repositories.Common.Search.SearchResult <ProviderCalculationResultsIndex> result in searchResult.Results) { int calculationIdIndex = Array.IndexOf(result.Result.CalculationId, calculationId); if (calculationIdIndex < 0) { throw new Exception(); } CalculationProviderResultSearchResult calculationResult = new CalculationProviderResultSearchResult { Id = result.Result.Id, ProviderId = result.Result.ProviderId, ProviderName = result.Result.ProviderName, SpecificationName = result.Result.SpecificationName, SpecificationId = result.Result.SpecificationId, LastUpdatedDate = result.Result.LastUpdatedDate.LocalDateTime, LocalAuthority = result.Result.LocalAuthority, ProviderType = result.Result.ProviderType, ProviderSubType = result.Result.ProviderSubType, UKPRN = result.Result.UKPRN, UPIN = result.Result.UPIN, URN = result.Result.URN, OpenDate = result.Result.OpenDate, EstablishmentNumber = result.Result.EstablishmentNumber, CalculationId = calculationId, CalculationName = result.Result.CalculationName[calculationIdIndex], CalculationResult = result.Result.CalculationResult[calculationIdIndex].GetValueOrNull <double>() }; if (_featureToggle.IsExceptionMessagesEnabled()) { calculationResult.CalculationExceptionType = !result.Result.CalculationExceptionType.IsNullOrEmpty() ? result.Result.CalculationExceptionType[calculationIdIndex] : string.Empty; calculationResult.CalculationExceptionMessage = !result.Result.CalculationExceptionMessage.IsNullOrEmpty() ? result.Result.CalculationExceptionMessage[calculationIdIndex] : string.Empty; } calculationResults.Add(calculationResult); } } results.Results = calculationResults; } }