コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
 public Task <IActionResult> RunGetTestScenarioCountsForSpecifications([FromBody] SpecificationListModel specificationListModel)
 {
     return(_testResultsCountsService.GetTestScenarioCountsForSpecifications(specificationListModel));
 }
コード例 #4
0
 public Task <IActionResult> GetCalculationStatusCounts([FromBody] SpecificationListModel specifications) => _calcsService.GetCalculationStatusCounts(specifications);
コード例 #5
0
        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));
        }