public async Task <ComputeExpressionResponseModel> ComputeExpression(ComputeExpressionRequestModel request) { var errorMessage = MathParserServiceParametersChecker.CheckForComputeExpression(request, 5); if (!string.IsNullOrEmpty(errorMessage)) { return(new ComputeExpressionResponseModel(false, errorMessage)); } var variables = request.Parameters.Select(p => p.GetVariable()).ToList(); var parseResult = _mathParser.TryParse(request.Expression, variables); if (parseResult.IsSuccessfulCreated == false) { return(new ComputeExpressionResponseModel(false, parseResult.ErrorMessage)); } var computeResult = parseResult.Expression.ComputeValue(request.Parameters); var expressionDAL = _expressionFactory .Create(parseResult, variables, request.Parameters, computeResult); await _dataBaseService.SaveAsync(expressionDAL); return(new ComputeExpressionResponseModel(true) { Result = computeResult, Expression = parseResult.Expression }); }
public async Task <ActionResult> ComputeExpression([FromBody] ComputeExpressionRequestModel request) { var result = await _mathParserService.ComputeExpression(request); if (!result.IsSuccessfulComputed) { return(StatusCode(500, new { Message = result.ErrorMessage })); } return(Ok(result)); }