public async Task <IActionResult> GetFundingCalculationResultsForSpecifications(HttpRequest request) { SpecificationListModel specifications = await request.ReadBodyJson <SpecificationListModel>(); if (specifications == null) { _logger.Error("Null specification model provided"); return(new BadRequestObjectResult("Null specifications model provided")); } if (specifications.SpecificationIds.IsNullOrEmpty()) { _logger.Error("Null or empty specification ids provided"); return(new BadRequestObjectResult("Null or empty specification ids provided")); } ConcurrentBag <FundingCalculationResultsTotals> totalsModels = new ConcurrentBag <FundingCalculationResultsTotals>(); IList <Task> totalsTasks = new List <Task>(); foreach (string specificationId in specifications.SpecificationIds) { totalsTasks.Add(Task.Run(async() => { decimal totalResult = await _resultsRepository.GetCalculationResultTotalForSpecificationId(specificationId); totalsModels.Add(new FundingCalculationResultsTotals { SpecificationId = specificationId, TotalResult = totalResult }); })); } try { await TaskHelper.WhenAllAndThrow(totalsTasks.ToArray()); } catch (Exception ex) { return(new InternalServerErrorResult($"An error occurred when obtaining calculation totals with the following message: \n {ex.Message}")); } return(new OkObjectResult(totalsModels)); }
public async Task <IActionResult> GetTestScenarioCountsForSpecifications(HttpRequest request) { string json = await request.GetRawBodyStringAsync(); SpecificationListModel specifications = JsonConvert.DeserializeObject <SpecificationListModel>(json); if (specifications == null) { _logger.Error("Null specification model provided"); return(new BadRequestObjectResult("Null specifications model provided")); } if (specifications.SpecificationIds.IsNullOrEmpty()) { _logger.Error("Null or empty specification ids provided"); return(new BadRequestObjectResult("Null or empty specification ids provided")); } ConcurrentBag <SpecificationTestScenarioResultCounts> scenarioCountModels = new ConcurrentBag <SpecificationTestScenarioResultCounts>(); IList <Task> scenarioCountsTasks = new List <Task>(); foreach (string specificationId in specifications.SpecificationIds) { scenarioCountsTasks.Add(Task.Run(async() => { SpecificationTestScenarioResultCounts scenarioResultCounts = await _testResultsRepository.GetSpecificationCounts(specificationId); scenarioCountModels.Add(scenarioResultCounts); })); } try { await TaskHelper.WhenAllAndThrow(scenarioCountsTasks.ToArray()); } catch (Exception ex) { return(new InternalServerErrorResult($"An error occurred when obtaining scenario counts with the follwing message: \n {ex.Message}")); } return(new OkObjectResult(scenarioCountModels)); }
public Task <IActionResult> RunGetTestScenarioCountsForSpecifications([FromBody] SpecificationListModel specificationListModel) { return(_testResultsCountsService.GetTestScenarioCountsForSpecifications(specificationListModel)); }
public Task <IActionResult> GetCalculationStatusCounts([FromBody] SpecificationListModel specifications) => _calcsService.GetCalculationStatusCounts(specifications);
public async Task <ApiResponse <IEnumerable <FundingCalculationResultsTotals> > > GetFundingCalculationResultsForSpecifications(SpecificationListModel specificationList) { Guard.ArgumentNotNull(specificationList, nameof(specificationList)); return(await PostAsync <IEnumerable <FundingCalculationResultsTotals>, SpecificationListModel>( $"get-calculation-result-totals-for-specifications", specificationList)); }