private void updatePointWinner(string player, char p) { using (var ctx = new fourinrowDB_RoniShoseov_EilonOsherContext()) { var UserWin = (from u in ctx.Users where u.UserName == player select u).FirstOrDefault(); var WinGamePoint = (from g in ctx.SingleGames where g.Player1_UserName == player & g.Status == true select g).FirstOrDefault(); if (checkInCol(p)) { UserWin.Points += 1100; poin = 1100; } else { UserWin.Points += 1000; poin = 1000; } UserWin.NumOfGames += 1; UserWin.NumOfWins += 1; WinGamePoint.Winner = player; WinGamePoint.GamePoint = poin; WinGamePoint.Status = false; ctx.SaveChanges(); } }
public void Register(string name, string pass) { using (var ctx = new fourinrowDB_RoniShoseov_EilonOsherContext()) { var IsExists = (from u in ctx.Users where u.UserName == name select u).FirstOrDefault(); if (IsExists != null) { ConnectedFault userNameTaken = new ConnectedFault { Details = name + " is taken, please pick another." }; throw new FaultException <ConnectedFault>(userNameTaken); } User newUser = new User { UserName = name, HashedPassword = pass, NumOfGames = 0, NumOfLosses = 0, NumOfWins = 0, Points = 0 }; ctx.Users.Add(newUser); ctx.SaveChanges(); ICallback regCallback = OperationContext.Current.GetCallbackChannel <ICallback>(); updateAllClinetToUpdateList(name); avilableClinets.Add(name, regCallback); } }
public List <string> gameDataBetween(string Player1, string Player2) { using (var ctx = new fourinrowDB_RoniShoseov_EilonOsherContext()) { List <string> dataBetween = new List <string>(); var match = (from g in ctx.SingleGames where (((g.Player1_UserName == Player1 && g.Player2_UserName == Player2) || (g.Player1_UserName == Player2 && g.Player2_UserName == Player1)) && g.Status == false) select g).ToList(); if (match.Count == 0) { return(dataBetween); } dataBetween.Add(percentageOfWins(match, Player1).ToString()); dataBetween.Add(percentageOfWins(match, Player2).ToString()); foreach (var game in match) { dataBetween.Add( $"Game ID: {game.Id.ToString()}\n" + $"Date: {game.Date.ToString()}\n" + $"Players: {game.Player1_UserName} vs. {game.Player2_UserName}\n" + $"♛{game.Winner} WON! With {game.GamePoint.ToString()} points!\n" + $"▁ ▂ ღ(¯`◕‿◕´¯)(¯`◕‿◕´¯)ღ ▂ ▁" ); } return(dataBetween); } }
public List <string> createPlayerData() { using (var ctx = new fourinrowDB_RoniShoseov_EilonOsherContext()) { var userData = (from u in ctx.Users select u.UserName).ToList(); return(userData); } }
private void updatePointLose(string player, char p) { using (var ctx = new fourinrowDB_RoniShoseov_EilonOsherContext()) { var UserLose = (from u in ctx.Users where u.UserName == player select u).FirstOrDefault(); if (checkInCol(p)) { UserLose.Points += 100; } UserLose.Points += (10 * cntSquare(p)); UserLose.NumOfGames += 1; UserLose.NumOfLosses += 1; ctx.SaveChanges(); } }
public Dictionary <string, string> userData(string name) { using (var ctx = new fourinrowDB_RoniShoseov_EilonOsherContext()) { Dictionary <string, string> userData = new Dictionary <string, string>(); var userStats = (from u in ctx.Users where u.UserName == name select u).FirstOrDefault(); if (userStats == null) { return(userData); } userData.Add("User", userStats.UserName); userData.Add("Games", userStats.NumOfGames.ToString()); userData.Add("Wins", userStats.NumOfWins.ToString()); userData.Add("Losses", userStats.NumOfLosses.ToString()); userData.Add("Points", userStats.Points.ToString()); return(userData); } }
public List <string> getSortedList(string sortBy) { using (var ctx = new fourinrowDB_RoniShoseov_EilonOsherContext()) { switch (sortBy) { case "Username": var byUsername = (from u in ctx.Users orderby u.UserName ascending select u.UserName).ToList(); return(byUsername); case "Number of Games": var byNumOfGames = (from u in ctx.Users orderby u.NumOfGames descending select u).ToList(); return(resultToString(byNumOfGames, sortBy)); case "Number of Wins": var byNumOfWins = (from u in ctx.Users orderby u.NumOfWins descending select u).ToList(); return(resultToString(byNumOfWins, sortBy)); case "Number of Losses": var byNumOfLooses = (from u in ctx.Users orderby u.NumOfLosses descending select u).ToList(); return(resultToString(byNumOfLooses, sortBy)); case "Number of Points": var byNumOfPoints = (from u in ctx.Users orderby u.Points descending select u).ToList(); return(resultToString(byNumOfPoints, sortBy)); default: return(null); } } }
public List <string> liveGamesList() { using (var ctx = new fourinrowDB_RoniShoseov_EilonOsherContext()) { List <string> liveGamesData = new List <string>(); var LiveGames = (from g in ctx.SingleGames where g.Status == true select g).ToList(); if (LiveGames.Count == 0) { return(liveGamesData); } foreach (var game in LiveGames) { liveGamesData.Add( $"Start Time: {game.Date.ToString()}\n" + $"Players: {game.Player1_UserName} vs. {game.Player2_UserName}\n" ); } return(liveGamesData); } }
public void SingIn(string user, string pass) { if (avilableClinets.ContainsKey(user)) { ConnectedFault userExsists = new ConnectedFault { Details = "User name " + user + " already exists. Try something else" }; throw new FaultException <ConnectedFault>(userExsists); } using (var ctx = new fourinrowDB_RoniShoseov_EilonOsherContext()) { var findUser = (from u in ctx.Users where u.UserName == user select u).FirstOrDefault(); if (findUser == null) { UnregisteredUser userNotExsists = new UnregisteredUser { Details = user + "does not exist in the database. Please register." }; throw new FaultException <UnregisteredUser>(userNotExsists); } else if (pass != findUser.HashedPassword) { WrongPassword userWrongPassword = new WrongPassword { Details = "Wrong password entered, please try again" }; throw new FaultException <WrongPassword>(userWrongPassword); } else { ICallback singIncallback = OperationContext.Current.GetCallbackChannel <ICallback>(); updateAllClinetToUpdateList(user); avilableClinets.Add(user, singIncallback); } } }
public void Disconnect(string player) { //remove from avilable clinet avilableClinets.Remove(player); //if is exit from game remove the game if (this.games.ContainsKey(player)) { this.games.Remove(player); } //notify all other client that is disconnected foreach (var callBack in avilableClinets.Values) { Thread updateOtherPlayerThread = new Thread(() => { callBack.OtherPlayerDisconnected(player); } ); updateOtherPlayerThread.Start(); } using (var ctx = new fourinrowDB_RoniShoseov_EilonOsherContext()) { List <string> PlayerGames = new List <string>(); var UpdatStatus = (from g in ctx.SingleGames where g.Player1_UserName == player || g.Player2_UserName == player & g.Status == true select g).ToList(); if (PlayerGames.Count == 0) { return; } foreach (var ga in UpdatStatus) { ga.Status = false; ctx.SaveChanges(); } ctx.SaveChanges(); } }
public List <string> gamesHistory() { List <string> gamesHistory = new List <string>(); using (var ctx = new fourinrowDB_RoniShoseov_EilonOsherContext()) { var GamesHistory = (from g in ctx.SingleGames where g.GamePoint != 0 && g.Status == false select g).ToList(); foreach (var game in GamesHistory) { gamesHistory.Add( $"Game ID: {game.Id.ToString()}\n" + $"Date: {game.Date.ToString()}\n" + $"Players: {game.Player1_UserName} vs. {game.Player2_UserName}\n" + $"♛{game.Winner} WON! With {game.GamePoint.ToString()} points!\n" + $"▁ ▂ ღ(¯`◕‿◕´¯)(¯`◕‿◕´¯)ღ ▂ ▁" ); } return(gamesHistory); } }
public void StartGameBetweenPlayers(string p1, string p2) { this.avilableClinets[p2].StartGameUser(p1); GameZone gameZone = new GameZone(p1, p2, this.avilableClinets[p1], this.avilableClinets[p2]); games.Add(p1, gameZone); games.Add(p2, gameZone); using (var ctx = new fourinrowDB_RoniShoseov_EilonOsherContext()) { DateTime localTime = DateTime.Now; SingleGame newGame = new SingleGame { Date = localTime, Player1_UserName = p1, Player2_UserName = p2, GamePoint = 0, Status = true }; ctx.SingleGames.Add(newGame); ctx.SaveChanges(); } updateAllOtherUserToUpdateList(p1, p2); }