public bool AbortGame(int gameId) { using (var db = new HeartsEntities()) { var game = db.Games.FirstOrDefault(x => x.GameId == gameId); if (game.Status == (int)GameStatus.Ended) { throw new CustomException("Game has ended."); } if (game == null) { logger.Warn("GameId: {0} - not found.", game.GameId); throw new CustomException("Invalid game."); } var playerids = db.Users.Where(x => x.ActiveGameId == gameId); foreach (var player in playerids) { player.ActiveGameId = null; } game.Status = (int)GameStatus.Aborted; logger.Info("GameId: {0} - aborted.", game.GameId); db.SaveChanges(); return(true); } }
public bool UpdateActiveGame(int userId, int?gameId) { using (var db = new HeartsEntities()) { var user = db.Users.FirstOrDefault(x => x.UserId.Equals(userId)); if (gameId != null) { var game = db.Games.FirstOrDefault(x => x.GameId == gameId); if (game == null) { throw new CustomException("Invalid Game."); } } if (user == null) { logger.Info("User name: {0} - Not found.", userId); throw new CustomException("Invalid User"); } user.ActiveGameId = gameId; db.SaveChanges(); return(true); } }
public void Add(AuditTrail audit) { using (var db = new HeartsEntities()) { db.AuditTrails.Add(audit); db.SaveChanges(); } }
public string UpdateScores(Game newGame) { using (var db = new HeartsEntities()) { var game = db.Games.FirstOrDefault(x => x.GameId == newGame.GameId); if (game == null) { logger.Info("GameId: {0} - invalid game.", game.GameId); throw new CustomException("Invalid Game."); } game.Status = newGame.Status; game.Player1Score = newGame.Player1Score; game.Player2Score = newGame.Player2Score; game.Player3Score = newGame.Player3Score; game.Player4Score = newGame.Player4Score; UserDAL udal = new UserDAL(); var player1 = db.Users.FirstOrDefault(x => x.UserId == game.Player1); player1.Points = game.Player1Score; var player2 = db.Users.FirstOrDefault(x => x.UserId == game.Player2); player2.Points = game.Player2Score; var player3 = db.Users.FirstOrDefault(x => x.UserId == game.Player3); player3.Points = game.Player3Score; var player4 = db.Users.FirstOrDefault(x => x.UserId == game.Player4); player4.Points = game.Player4Score; int min = player1.Points; string winner = player1.Username; if (min < player2.Points) { min = player2.Points; winner = player2.Username; } if (min < player3.Points) { min = player3.Points; winner = player3.Username; } if (min < player4.Points) { min = player4.Points; winner = player4.Username; } var winnerUser = db.Users.FirstOrDefault(x => x.Username.Equals(winner)); winnerUser.Wins++; db.SaveChanges(); return(winner); } }
public Game AddPlayer(int playerid, int gameId) { using (var db = new HeartsEntities()) { var g = db.Games.FirstOrDefault(x => x.GameId == gameId); if (g.Status == (int)GameStatus.Aborted || g.Status == (int)GameStatus.Ended) { logger.Warn("GameId: {0} - doesn't exist anymore..", gameId); throw new CustomException("Game doesn't exist anymore."); } if (g.Player1 == null) { g.Player1 = playerid; g.Player1StartTime = DateTime.Now; } else if (g.Player2 == null) { g.Player2 = playerid; g.Player2StartTime = DateTime.Now; } else if (g.Player3 == null) { g.Player3 = playerid; g.Player3StartTime = DateTime.Now; } else if (g.Player4 == null) { g.Player4 = playerid; g.Player4StartTime = DateTime.Now; g.StartTime = DateTime.Now; } ; if (g.Player1 != null && g.Player2 != null && g.Player3 != null && g.Player4 != null) { g.Status = (int)GameStatus.Started; } if (g == null) { logger.Warn("GameId: {0} - not found.", g.GameId); throw new CustomException("Invalid Game."); } if (db.Users.FirstOrDefault(x => x.UserId == g.Player2 || x.UserId == g.Player3 || x.UserId == g.Player4) == null) { throw new CustomException("Invalid user."); } db.SaveChanges(); return(g); } }
public int AddGame(int player1) { using (var db = new HeartsEntities()) { var user = db.Users.FirstOrDefault(x => x.UserId == player1); if (user == null) { throw new CustomException("Invalid user."); } if (db.Games.FirstOrDefault(x => ( x.Player1 == player1 || x.Player2 == player1 || x.Player3 == player1 || x.Player4 == player1 ) && ( x.Status == (int)GameStatus.Started || x.Status == (int)GameStatus.Waiting) ) != null) { throw new CustomException("User is already part of an another game. You can play only one game at a time."); } Game game = new Game { Player1 = player1, Status = (int)GameStatus.Waiting, StartTime = DateTime.Now, Player1StartTime = DateTime.Now }; db.Games.Add(game); db.SaveChanges(); user.ActiveGameId = game.GameId; logger.Info("GamedId: {0} - added.", game.GameId); db.SaveChanges(); return(game.GameId); } }
public User AddUser(User user) { using (var db = new HeartsEntities()) { if (db.Users.FirstOrDefault(x => x.Username.Equals(user.Username)) != null) { throw new CustomException("User name already taken."); } if (db.Users.FirstOrDefault(x => x.EmailId.Equals(user.EmailId)) != null) { throw new CustomException("Email Id already exists."); } db.Users.Add(user); db.SaveChanges(); logger.Info("UserId: {0} - Registered.", user.UserId); return(user); } }
public void UpdateGameAfterInit(Game initGame) { using (var db = new HeartsEntities()) { var game = db.Games.FirstOrDefault(x => x.GameId == initGame.GameId); if (game == null) { logger.Info("GameId: {0} - invalid game.", game.GameId); throw new CustomException("Invalid Game."); } game.Turn = initGame.Turn; game.Status = initGame.Status; game.PassOrPlay = initGame.PassOrPlay; game.GameRound = initGame.GameRound; game.Player1Hand = initGame.Player1Hand; game.Player2Hand = initGame.Player2Hand; game.Player3Hand = initGame.Player3Hand; game.Player4Hand = initGame.Player4Hand; db.SaveChanges(); } }
public Move AddMove(Move move) { using (var db = new HeartsEntities()) { if (db.Games.FirstOrDefault(x => x.GameId == move.GameId) == null) { throw new Exception("Game not found."); } if (db.Users.FirstOrDefault(x => x.UserId == move.PlayerId) == null) { throw new Exception("User not found."); } if (db.Games.FirstOrDefault( x => x.GameId == move.GameId && ( x.Player1 != move.PlayerId || x.Player2 != move.PlayerId || x.Player3 != move.PlayerId || x.Player4 != move.PlayerId)) == null) { throw new Exception("User not in game."); } db.Moves.Add(move); db.SaveChanges(); return(move); } }
public void UpdateGameAfterMove(Game update_game, int userId) { using (var db = new HeartsEntities()) { var game = db.Games.FirstOrDefault(x => x.GameId == update_game.GameId); if (game == null) { throw new CustomException("Invalid Game."); } game.Turn = update_game.Turn; game.LeadingSuit = update_game.LeadingSuit; game.HeartsPlayed = update_game.HeartsPlayed; game.SpadesPlayed = update_game.SpadesPlayed; game.Player1Hand = update_game.Player1Hand; game.Player2Hand = update_game.Player2Hand; game.Player3Hand = update_game.Player3Hand; game.Player4Hand = update_game.Player4Hand; if (game.PassOrPlay == 2) { game.Player1Stash = update_game.Player1Stash; game.Player2Stash = update_game.Player2Stash; game.Player3Stash = update_game.Player3Stash; game.Player4Stash = update_game.Player4Stash; game.Player1Score = update_game.Player1Score; game.Player2Score = update_game.Player2Score; game.Player3Score = update_game.Player3Score; game.Player4Score = update_game.Player4Score; game.Player1Card = update_game.Player1Card; game.Player2Card = update_game.Player2Card; game.Player3Card = update_game.Player3Card; game.Player4Card = update_game.Player4Card; } else if (game.PassOrPlay == 1) { if (userId == game.Player1) { game.Player1Trash = update_game.Player1Trash; } if (userId == game.Player2) { game.Player2Trash = update_game.Player2Trash; } if (userId == game.Player3) { game.Player3Trash = update_game.Player3Trash; } if (userId == game.Player4) { game.Player4Trash = update_game.Player4Trash; } if (game.Player1Trash != null && game.Player2Trash != null && game.Player3Trash != null && game.Player4Trash != null) { if (game.Player1Trash.Length > 1 && game.Player2Trash.Length > 1 && game.Player3Trash.Length > 1 && game.Player4Trash.Length > 1) { // Passing the trash if (game.GameRound.Value == 1) { game.Player1Hand += game.Player4Trash; game.Player2Hand += game.Player1Trash; game.Player3Hand += game.Player2Trash; game.Player4Hand += game.Player3Trash; } else if (game.GameRound.Value == 2) { game.Player4Hand += game.Player1Trash; game.Player3Hand += game.Player4Trash; game.Player2Hand += game.Player3Trash; game.Player1Hand += game.Player2Trash; } else if (game.GameRound.Value == 3) { game.Player1Hand += game.Player3Trash; game.Player3Hand += game.Player1Trash; game.Player2Hand += game.Player4Trash; game.Player4Hand += game.Player2Trash; } game.Player1Trash = null; game.Player2Trash = null; game.Player3Trash = null; game.Player4Trash = null; game.PassOrPlay = 2; } } } db.SaveChanges(); } }