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;
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }