public async Task<ApiResponse<PCalcResultInfo>> Calculate(CalculateRequest calculateRequest)
        {
            RestRequest request = GetNewRequest();
            request.Resource = "Calculate";
            request.Method = Method.POST;
            request.AddBody(calculateRequest);

            return await Execute<PCalcResultInfo>(request, m_Api, string.Empty);
        }
        private async Task<ActionResult> HandleCalculation(ActionResultInfo actionResult, EnvironmentInfo environment)
        {
            PCalcResultInfo lastResult = GetLastPcalcResult();
            if (null == lastResult)
            {
                return HandleGeneralError("Index", ProductCalculationViewModel.Create(EQueryType.None), "Unable to retrieve last product");
            }
            if (null == environment)
            {
                return HandleGeneralError("Index", ProductCalculationViewModel.Create(EQueryType.None), "Unable to retrieve environment information");
            }

            CalculateRequest calc = new CalculateRequest();
            calc.Environment = environment;
            calc.ProductDescription = lastResult.ProductDescription;
            calc.ActionResult = actionResult;
            ApiResponse<PCalcResultInfo> response = await m_Repository.Calculate(calc);
            if (IsApiError(response) || PcalcResultIsValid(response.ApiResult) == false)
            {
                return HandleGeneralPcalcError("Index", ProductCalculationViewModel.Create(EQueryType.None), response.ApiResult);
            }
            AddOrUpdateTempData(response.ApiResult, calc.Environment);
            AddViewData(response.ApiResult, environment);
            return View("Index", ProductCalculationViewModel.Create(response.ApiResult.QueryType));            
        }
 public async Task<IHttpActionResult> CalculateProduct(CalculateRequest calculationRequest)
 {
     if (!ModelState.IsValid)
     {
         return BadRequest(ModelState);
     }
     PCalcResultInfo result = await m_Calculator.Calculate(calculationRequest.Environment, calculationRequest.ProductDescription, calculationRequest.ActionResult);
     return CreateProductCalculationResponse(result);
 }