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)); } }