Example #1
0
        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)));
        }