public dynamic CardPostitionChanged(string gameId, string cardLinkId, string top, string left) { var gameRequest = new CardPostitionChangedRequest { GameId = gameId, PlayerId = UserId, CardLinkId = cardLinkId, Top = top, Left = left }; var result = Network.MakePostRequest <bool>("cards/cardPositionChanged", gameRequest); var failed = result.StatusCode != HttpStatusCode.OK || result.Data.Failed; return(Json(new { Failed = failed, Error = failed ? result.Content : null, Data = result.Data })); }
public async Task <dynamic> CardPositionChanged(CardPostitionChangedRequest request) { Guid gameIdGuid; if (!Guid.TryParse(request.GameId, out gameIdGuid)) { return(InvalidGameId(request.GameId)); } var gameQuery = _context.Games .Where(g => g.Id == gameIdGuid) .Include(g => g.FirstPlayer) .Include(g => g.SecondPlayer) .Include(g => g.BattlefieldCards); var game = await gameQuery.FirstOrDefaultAsync(); if (game == null) { return(GameNotFound(request.GameId)); } var player = await _context.Users.FirstOrDefaultAsync(u => u.Id == request.PlayerId); if (player == null) { return(PlayerNotFound(request.PlayerId)); } if (game.FirstPlayer != player && game.SecondPlayer != player) { return(PlayerNotInGame(request.PlayerId, request.GameId)); } Guid cardlinkGuid; if (!Guid.TryParse(request.CardLinkId, out cardlinkGuid)) { return(InvalidCardLinkId(request.CardLinkId)); } var cardLink = await _context.CardLinks.Include(l => l.Token).Include(l => l.Card).FirstOrDefaultAsync(l => l.Id == cardlinkGuid); if (cardLink == null) { return(CardNotFound(request.CardLinkId, MoveFrom.Battlefield)); } double top, left; if (!double.TryParse(request.Top, out top) || !double.TryParse(request.Left, out left)) { return(Json(new Response <bool> { Failed = true, Result = false, Error = "Card position is invalid" })); } var bfCard = game.BattlefieldCards.FirstOrDefault(c => c.CardLink == cardLink); if (bfCard == null) { return(CardNotFound(request.CardLinkId, MoveFrom.Battlefield)); } bfCard.Top = top; bfCard.Left = left; await _context.SaveChangesAsync(); return(Json(new Response <bool> { Result = true })); }