public async Task <IActionResult> SearchCalculationProviderResults([FromBody] SearchRequestViewModel request, [FromQuery] string calculationValueType = null) { Guard.ArgumentNotNull(request, nameof(request)); CalculationProviderResultSearchResultViewModel searchResults = await _calculationProviderResultsSearchService.PerformSearch(request); if (calculationValueType != null) { CalculationValueTypeViewModel valueType = calculationValueType.AsEnum <CalculationValueTypeViewModel>(); foreach (CalculationProviderResultSearchResultItemViewModel providerResult in searchResults.CalculationProviderResults) { providerResult.SetCalculationResultDisplay(valueType); } } CalculationProviderResultSearchResultViewModel result = searchResults; if (result != null) { return(Ok(result)); } return(new InternalServerErrorResult($"Find provider results HTTP request failed")); }
public static string AsFormatCalculationType(this object value, CalculationValueTypeViewModel calculationValueTypeViewModel) { if (value != null) { if (decimal.TryParse(value.ToString(), out decimal decimalValue)) { switch (calculationValueTypeViewModel) { case CalculationValueTypeViewModel.Number: return(decimalValue.AsFormattedNumber()); case CalculationValueTypeViewModel.Percentage: return(decimalValue.AsFormattedPercentage()); case CalculationValueTypeViewModel.Currency: return(decimalValue.AsFormattedMoney()); default: throw new InvalidOperationException("Unknown calculation type"); } } return(value.ToString()); } return(Properties.PageText.ExcludedText); }
public async Task <CalculationProviderResultSearchResultViewModel> PerformSearch(SearchRequestViewModel request) { int pageNumber = request.PageNumber.GetValueOrDefault(1); int pageSize = request.PageSize.GetValueOrDefault(50); ApiResponse <CalculationProviderResultSearchResults> searchRequestResult = await _resultsClient.SearchCalculationProviderResults(new SearchModel { PageNumber = pageNumber, Top = pageSize, SearchTerm = request.SearchTerm, IncludeFacets = request.IncludeFacets, ErrorToggle = string.IsNullOrWhiteSpace(request.ErrorToggle) ? (bool?)null : (request.ErrorToggle == "Errors"), Filters = request.Filters, SearchFields = request.SearchFields }); if (searchRequestResult?.Content == null) { _logger.Error("Find providers HTTP request failed"); return(null); } CalculationProviderResultSearchResults calculationProviderResultSearchResults = searchRequestResult.Content; CalculationProviderResultSearchResultViewModel result = new CalculationProviderResultSearchResultViewModel { TotalResults = calculationProviderResultSearchResults.TotalCount, CurrentPage = pageNumber, TotalErrorResults = calculationProviderResultSearchResults.TotalErrorCount }; List <SearchFacetViewModel> searchFacets = new List <SearchFacetViewModel>(); if (calculationProviderResultSearchResults.Facets != null) { foreach (Facet facet in calculationProviderResultSearchResults.Facets) { searchFacets.Add(_mapper.Map <SearchFacetViewModel>(facet)); } } result.Facets = searchFacets.AsEnumerable(); List <CalculationProviderResultSearchResultItemViewModel> itemResults = new List <CalculationProviderResultSearchResultItemViewModel>(); Dictionary <string, CalculationValueTypeViewModel> calcTypes = new Dictionary <string, CalculationValueTypeViewModel>(); foreach (CalculationProviderResultSearchResult searchresult in calculationProviderResultSearchResults.Results) { CalculationProviderResultSearchResultItemViewModel vmResult = _mapper.Map <CalculationProviderResultSearchResultItemViewModel>(searchresult); if (!calcTypes.ContainsKey(searchresult.CalculationId)) { ApiResponse <Common.ApiClient.Calcs.Models.Calculation> calcResult = await _calculationsApiClient.GetCalculationById(searchresult.CalculationId); if (calcResult == null || calcResult.Content == null || calcResult.StatusCode != System.Net.HttpStatusCode.OK) { throw new InvalidOperationException($"Unable to get calculation details for calculation ID '{searchresult.CalculationId}'"); } CalculationValueTypeViewModel calculationValueTypeViewModel = _mapper.Map <CalculationValueTypeViewModel>(calcResult.Content.ValueType); calcTypes.Add(searchresult.CalculationId, calculationValueTypeViewModel); } vmResult.SetCalculationResultDisplay(calcTypes[searchresult.CalculationId]); itemResults.Add(vmResult); } result.CalculationProviderResults = itemResults.AsEnumerable(); if (result.TotalResults == 0) { result.StartItemNumber = 0; result.EndItemNumber = 0; } else { result.StartItemNumber = ((pageNumber - 1) * pageSize) + 1; result.EndItemNumber = result.StartItemNumber + pageSize - 1; } if (result.EndItemNumber > calculationProviderResultSearchResults.TotalCount) { result.EndItemNumber = calculationProviderResultSearchResults.TotalCount; } result.PagerState = new PagerState(pageNumber, (int)Math.Ceiling(calculationProviderResultSearchResults.TotalCount / (double)pageSize), 4); return(result); }
public string AsDisplay(CalculationValueTypeViewModel calculationValueTypeViewModel) { return(CalculationResult.AsFormatCalculationType(calculationValueTypeViewModel)); }
public void SetCalculationResultDisplay(CalculationValueTypeViewModel calculationValueTypeViewModel) { CalculationResultDisplay = CalculationResult.AsFormatCalculationType(calculationValueTypeViewModel); }