public ActionResult MakeMove(long id, Move move)
{
var game = GetChessGame(id);
var gameManager = new GameManager(game);
if (!IsPlayersMove(game, CurrentUser))
throw new Exception("It is not your turn!");
try
{
var movingTeam = gameManager.TeamToMove();
gameManager.MovePiece(move);
if (gameManager.IsDraw())
gameManager.MarkGameAsDraw();
else if (gameManager.IsCheckmate())
gameManager.MarkWinningTeam(movingTeam);
UnitOfWork.Commit();
var model = GetGameModel(game);
return Json(model, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
throw NewMoveFailureException(move, ex);
}
}