Ejemplo n.º 1
0
        public async Task <IHttpActionResult> CalculateNext(int id, int current)
        {
            Logger.Instance.Info($"Processing CalculateNext({id}, {current}).");
            try
            {
                var calculation = await _repository.Get(id);

                if (calculation == null)
                {
                    return(NotFound());
                }

                int next;
                var previous = calculation.Current;
                try
                {
                    next = _calculator.Calculate(previous, current);
                }
                catch (InvalidOperationException)
                {
                    return(StatusCode(HttpStatusCode.ResetContent));
                }

                calculation.Current = next;
                await _repository.Update(calculation);

                await _responseSender.SendResponseAsync(calculation);

                return(Ok());
            }
            catch (Exception e)
            {
                Logger.Instance.Error($"Unknown error on CalculateNext({id}, {current}).", e);
                return(InternalServerError(e));
            }
        }