public ActionResult Times([FromBody] CalculationModelRequest model)
        {
            CalculationModelResponse response;
            var result = _validator.IsValid(model, out response);

            if (!result)
            {
                return(BadRequest(response));
            }

            response.Result = model.Values.Aggregate((current, next) => current * next);

            return(Json(response));
        }
        public ActionResult Divide([FromBody] CalculationModelRequest model)
        {
            CalculationModelResponse response;
            var result = _validator.IsValid(model, out response);

            if (!result)
            {
                return(BadRequest(response));
            }

            try
            {
                response.Result = model.Values.Aggregate((current, next) => current / next);
            }
            catch (DivideByZeroException)
            {
                return(BadRequest(CommonResponses.DivideByZero.ApplyParameter("values")));
            }

            return(Json(response));
        }
示例#3
0
        public bool IsValid(CalculationModelRequest request, out CalculationModelResponse response)
        {
            response = new CalculationModelResponse
            {
                CorrelationId = _context.CorrelationId
            };

            if (request == null)
            {
                response.Errors = new List <ValidationMessage>
                {
                    new ValidationMessage
                    {
                        Type    = ValidationType.Input,
                        Message = _localizer["calculation-model:no-request"].Value,
                        Code    = "no_request"
                    }
                };
                return(false);
            }

            if (request.Values == null ||
                request.Values.Count < 2)
            {
                response.Errors = new List <ValidationMessage>
                {
                    new ValidationMessage
                    {
                        Type      = ValidationType.Input,
                        Message   = _localizer["calculation-model:must-contain-more-than-one"].Value,
                        Code      = "more_than_one",
                        Parameter = "values"
                    }
                };
                return(false);
            }

            return(true);
        }