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
            });
        }
Пример #2
0
        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));
        }