public async Task <IActionResult> PostAsync([FromBody] MoveInput input, string id) { if (input.isValid() == false) { return(StatusCode(400)); } var bot = await _storage.GetBotAsync(input.botToken); if (bot == null) { return(StatusCode(403)); } var board = await _storage.GetBoardAsync(id); if (board == null) { return(StatusCode(404)); } if (board.HasBot(bot) == false) { return(StatusCode(403)); } if (board.CanMove(bot) == false) { return(StatusCode(403)); } var moveResult = await _moveService.MoveAsync(id, bot.Name, input.direction); if (moveResult != MoveResultCode.Ok) { return(StatusCode(409, GetAndGenerateBoardAsync(id))); } return(Ok(GetAndGenerateBoardAsync(id))); }