public ActionResult Register(string username, string email, string password, string password2) { Regex.Replace(username, @"\s+", ""); //Removes all white spaces. List <string> ErrorMsgList = checkRegisterInputFaults(username, email, password, password2); if (ErrorMsgList.Count == 0) { using (ArenaStarsContext context = new ArenaStarsContext()) { User newUser = new User() { Username = username, Password = password, Email = email, SignUpDate = DateTime.Now, IsAdmin = false, IsTerminated = false, LastLoggedIn = DateTime.Now, ProfilePic = "/Images/Profile/ProfilePicture_Default.jpg", BackgroundPic = "/Images/Profile/ProfileBackground_Default.jpg", Country = "World", Rank = Models.User.RankEnum.Unranked }; Session["isLoggedIn"] = true; Session["username"] = username; context.Users.Add(newUser); context.SaveChanges(); } } return(Json(new { errorList = ErrorMsgList }, JsonRequestBehavior.DenyGet)); }
public void WhitelistPlayers(ArenaStars.Models.Game _game) { try { ArenaStarsContext db = new ArenaStarsContext(); var findGame = from x in db.Games where x.Id == _game.Id select x; Models.Game g = findGame.FirstOrDefault(); User playerA = g.Participants.FirstOrDefault(); User playerB = g.Participants.LastOrDefault(); //Add players to the whitelist string playerAID = "\"" + playerA.SteamId + "\""; string playerBID = "\"" + playerB.SteamId + "\""; QueryMaster.GameServer.Server server = ServerQuery.GetServerInstance(EngineType.Source, "217.78.24.8", 28892); if (server.GetControl("lol")) { server.Rcon.SendCommand("sm_whitelist_add " + playerAID); server.Rcon.SendCommand("sm_whitelist_add " + playerBID); } } catch (Exception ex) { using (StreamWriter writer = new StreamWriter(errorsPath, true)) { writer.WriteLine("Message :" + ex.Message + "<br/>" + Environment.NewLine + "StackTrace :" + ex.StackTrace + Environment.NewLine + "Innerexception :" + ex.InnerException + "" + Environment.NewLine + "Date :" + DateTime.Now.ToString()); writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine); } } }
public ActionResult Index() { //Active state css ViewBags ViewBag.BanlistSelected = "activeNav"; //List<User> getAllBannedUsers = new List<Models.User>(); List <ViewUser> users = new List <ViewUser>(); using (ArenaStarsContext context = new ArenaStarsContext()) { var getAllBannedUsers = (from u in context.Users where u.IsTerminated == true orderby u.BanFrom descending select u).ToList(); foreach (User user in getAllBannedUsers) { DateTime banFrom = user.BanFrom.Value; DateTime banTo = user.BanTo.Value; DateTime startDate = user.SignUpDate.Value; DateTime today = DateTime.Now; TimeSpan difference = banTo - banFrom; TimeSpan difference2 = today - startDate; var banDays = difference.TotalDays; var memberDays = difference2.TotalDays; users.Add(new ViewUser() { Username = user.Username, Rank = user.Rank, ProfilePic = user.ProfilePic, BanExpires = banDays, DaysAsMember = memberDays, BanFrom = user.BanFrom.Value, BanTo = user.BanTo.Value, BanReason = user.BanReason }); } ViewBag.BannedUsers = users; } return(View()); }
private List <string> checkLoginInputFaults(string username, string password) { List <string> errorMsgList = new List <string>(); //Kollar ifall det finns en användare med angivna username och password. //Uppdatera last logged in date. //Checks if inputs are empty, null or whitespace if (string.IsNullOrWhiteSpace(username)) { errorMsgList.Add("Username field is empty!"); } //Checks if password is empty, null or whitespace if (string.IsNullOrWhiteSpace(password)) { errorMsgList.Add("Password field is empty!"); } if (errorMsgList.Count == 0) { using (ArenaStarsContext context = new ArenaStarsContext()) { var findUser = from u in context.Users where username.ToLower() == u.Username.ToLower() && password == u.Password select u; if (findUser.Count() == 0) { errorMsgList.Add("There is no user with given username and password combination"); } else { User u = findUser.FirstOrDefault(); u.LastLoggedIn = DateTime.Now; Session["username"] = u.Username; Session["isAdmin"] = u.IsAdmin; Session["profilePictureUrl"] = u.ProfilePic; } } } return(errorMsgList); }
public ActionResult GetTournaments(int shown, string username) { List <object> tournaments = new List <object>(); int numberToDisplay = 5; //Maybe(probably) make it parameter using (ArenaStarsContext context = new ArenaStarsContext()) { var findUser = from u in context.Users where username.ToLower() == u.Username.ToLower() select u; User user = findUser.FirstOrDefault(); for (int i = shown; i < shown + numberToDisplay && i < user.Tournaments.Count; i++) { var newTournament = new { CheckInDate = user.Tournaments[i].CheckInDate.ToString(), CreatedDate = user.Tournaments[i].CreatedDate.ToString(), StartDate = user.Tournaments[i].StartDate.ToString(), HasEnded = user.Tournaments[i].HasEnded, Id = user.Tournaments[i].Id, IsLive = user.Tournaments[i].IsLive, MaxRank = user.Tournaments[i].MaxRank.ToString(), MinRank = user.Tournaments[i].MinRank.ToString(), Name = user.Tournaments[i].Name, PlayerLimit = user.Tournaments[i].PlayerLimit, TrophyPic = user.Tournaments[i].TrophyPic, Type = user.Tournaments[i].Type.ToString(), ParticipantsCount = user.Tournaments[i].Participants.Count }; tournaments.Add(newTournament); } } return(Json(new { tournamentList = tournaments }, JsonRequestBehavior.DenyGet)); }
public ActionResult Index() { List <ViewUser> users = new List <ViewUser>(); using (ArenaStarsContext context = new ArenaStarsContext()) { var topPlayers = from p in context.Users orderby p.Elo descending where p.IsTerminated != true select p; foreach (User user in topPlayers) { DateTime startDate = user.SignUpDate.Value; DateTime today = DateTime.Now; TimeSpan difference = today - startDate; var days = difference.TotalDays; users.Add(new ViewUser() { Username = user.Username, Rank = user.Rank, Elo = user.Elo, ProfilePic = user.ProfilePic, Country = user.Country, DaysAsMember = days }); } ViewBag.TopPlayers = users; } //Active state css ViewBags ViewBag.LeaderboardSelected = "activeNav"; return(View()); }
public ActionResult GetGames(int shown, string username) { List <object> games = new List <object>(); int numberToDisplay = 10; //Maybe(probably) make it parameter using (ArenaStarsContext context = new ArenaStarsContext()) { var findUser = from u in context.Users where username.ToLower() == u.Username.ToLower() select u; User user = findUser.FirstOrDefault(); var finishedGames = user.Games.Where(g => g.HasEnded == true).ToList(); for (int i = shown; i < shown + numberToDisplay && i < finishedGames.Count(); i++) { var newGame = new { Id = finishedGames[i].Id, Map = finishedGames[i].Map, ParticipantOne = finishedGames[i].Participants.FirstOrDefault().Username, ParticipantTwo = finishedGames[i].Participants.LastOrDefault().Username, Type = finishedGames[i].Type.ToString(), Winner = finishedGames[i].Winner.Username, PlayedDate = finishedGames[i].PlayedDate.ToString(), Kills = finishedGames[i].GameStats.FirstOrDefault().Kills, Deaths = finishedGames[i].GameStats.FirstOrDefault().Deaths, hasEnded = finishedGames[i].HasEnded }; games.Add(newGame); } } return(Json(new { gameList = games }, JsonRequestBehavior.DenyGet)); }
public new ActionResult Profile(string username) { User user = new Models.User(); int gamesCount = 0; string lastFiveGamesScore = ""; int placeInCountry = 0; int placeInWorld = 0; double winPercentage = 0; using (ArenaStarsContext context = new ArenaStarsContext()) { var findUser = from u in context.Users where username.ToLower() == u.Username.ToLower() select u; if (findUser.Count() == 0) { context.Dispose(); return(RedirectToAction("/UserNotFound", "User")); } user = findUser.FirstOrDefault(); gamesCount = user.Games.Where(g => g.HasEnded == true).Count(); List <Game> lastFiveGames = user.Games.Take(5).Where(g => g.HasEnded == true).ToList(); foreach (Game game in lastFiveGames) { if (game.Winner.Username == user.Username) { lastFiveGamesScore += "W"; } else { lastFiveGamesScore += "L"; } } while (lastFiveGamesScore.Length < 5) { lastFiveGamesScore += "-"; } List <string> getAllUsersCountry = (from u in context.Users where u.Country == user.Country select u.Username).ToList(); var getAllUsersWorld = from u in context.Users select u.Username; for (int i = 0; i < getAllUsersCountry.Count(); i++) { if (getAllUsersCountry.ElementAt(i) == user.Username) { placeInCountry = i + 1; break; } } int f = 0; foreach (string u in getAllUsersWorld) { if (u == user.Username) { placeInWorld = f + 1; break; } f++; } double tempWins = 0.0; foreach (Game game in user.Games) { if (game.Winner.Username == user.Username) { tempWins++; } } winPercentage = (tempWins / user.Games.Count) * 100; } ViewBag.ProfileSelected = "activeNav"; ViewBag.ProfileNavSelected = "activeNav"; // TODO: Ge placeInCountry & placeInWorld riktiga värden. ViewUser viewUser = new ViewUser() { Id = user.Id, Username = user.Username, Email = user.Email, SteamId = user.SteamId, Firstname = user.Firstname, Lastname = user.Lastname, Country = user.Country, Bio = user.Bio, SignUpDate = user.SignUpDate, LastLoggedIn = user.LastLoggedIn, IsAdmin = user.IsAdmin, Rank = user.Rank, Level = user.Level, Elo = user.Elo, IsTerminated = user.IsTerminated, BanReason = user.BanReason, BanFrom = user.BanFrom, BanTo = user.BanTo, ProfilePic = user.ProfilePic, BackgroundPic = user.BackgroundPic, GamesCount = gamesCount, LastFiveGamesScore = lastFiveGamesScore, placeInCountry = placeInCountry, placeInWorld = placeInWorld, winPercentage = winPercentage }; return(View(viewUser)); }
private List <string> checkRegisterInputFaults(string username, string email, string password, string password2) { List <string> errorMsgList = new List <string>(); //Checks empty or whitespace if (string.IsNullOrWhiteSpace(username)) { errorMsgList.Add("Username cannot be empty!"); } if (string.IsNullOrWhiteSpace(email)) { errorMsgList.Add("E-mail cannot be empty!"); } if (string.IsNullOrWhiteSpace(password)) { errorMsgList.Add("Password cannot be empty!"); } //Checks lengths if (username.Length < 3 || username.Length > 30) { errorMsgList.Add("Username must be between 3 and 30 characters."); } if (password.Length < 6 || password.Length > 30) { errorMsgList.Add("Password must be between 6 and 30 characters."); } //Checks if passwords match if (password2 != password) { errorMsgList.Add("Given passwords do not match!"); } //Regex check string pattern = @"^(?("")("".+?(?<!\\)""@)|(([0-9A-Za-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9A-Za-z])@))" + @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9A-Za-z][-\w]*[0-9A-Za-z]*\.)+[A-Za-z0-9][\-a-z0-9]{0,22}[A-Za-z0-9]))$"; if (!Regex.IsMatch(email, pattern)) { errorMsgList.Add("Given email address is not valid!"); } using (ArenaStarsContext context = new ArenaStarsContext()) { var checkUserExists = from u in context.Users where username.ToLower() == u.Username.ToLower() select u; var checkEmailExists = from u in context.Users where email.ToLower() == u.Email.ToLower() select u; //Checks if user with same username exists if (checkUserExists.Count() > 0) { errorMsgList.Add("Given username is taken!"); } //Checks if user with same email exists if (checkEmailExists.Count() > 0) { errorMsgList.Add("Given email is taken!"); } } return(errorMsgList); }
public ActionResult Settings() { if ((bool)Session["isLoggedIn"] == true) { string uname = Session["username"].ToString(); using (ArenaStarsContext context = new ArenaStarsContext()) { string inputFirstname = Request["inputFirstname"]; string inputLastname = Request["inputLastname"]; string inputCountry = Request["inputCountry"]; string inputSteamId = Request["inputSteamId"]; string inputBio = Request["inputBio"]; string inputProfilePic = Request["inputProfilePic"]; string inputBackgroundPic = Request["inputBackgroundPic"]; var getUser = from u in context.Users where u.Username.ToLower() == uname.ToLower() select u; User you = getUser.FirstOrDefault(); #region Input checks if (string.IsNullOrEmpty(inputFirstname) == false) { you.Firstname = inputFirstname; } if (string.IsNullOrEmpty(inputLastname) == false) { you.Lastname = inputLastname; } if (string.IsNullOrEmpty(inputCountry) == false) { you.Country = inputCountry; } if (string.IsNullOrEmpty(inputSteamId) == false) { you.SteamId = inputSteamId; } if (string.IsNullOrEmpty(inputBio) == false) { you.Bio = inputBio; } if (string.IsNullOrEmpty(inputProfilePic) == false) { you.ProfilePic = inputProfilePic; } if (string.IsNullOrEmpty(inputBackgroundPic) == false) { you.BackgroundPic = inputBackgroundPic; } #endregion context.SaveChanges(); } using (ArenaStarsContext context = new ArenaStarsContext()) { //Set viewbag values var getUser = from u in context.Users where u.Username.ToLower() == uname.ToLower() select u; User you = getUser.FirstOrDefault(); ViewBag.Firstname = you.Firstname; ViewBag.Lastname = you.Lastname; ViewBag.Country = you.Country; ViewBag.SteamId = you.SteamId; ViewBag.Bio = you.Bio; ViewBag.ProfilePic = you.ProfilePic; ViewBag.BackgroundPic = you.BackgroundPic; Session["profilePictureUrl"] = you.ProfilePic; } } else { return(RedirectToAction("/Index", "Home")); } return(View()); }
public void SaveStatsAndGame(ArenaStars.Models.Game _game) { try { using (ArenaStarsContext db = new ArenaStarsContext()) { var findGame = from x in db.Games where x.Id == _game.Id select x; ArenaStars.Models.Game g = findGame.FirstOrDefault(); User playerA = g.Participants.FirstOrDefault(); User playerB = g.Participants.LastOrDefault(); QueryMaster.GameServer.Server server = ServerQuery.GetServerInstance(EngineType.Source, "217.78.24.8", 28892); ServerInfo info = server.GetInfo(); string playerAName = "\"" + playerA.Username; string playerASteamID = playerA.SteamId; int playerAKills = 0; int playerADeaths = 0; int playerAHSCount = 0; string playerBName = "\"" + playerB.Username; string playerBSteamID = playerB.SteamId; int playerBKills = 0; int playerBDeaths = 0; int playerBHSCount = 0; //Spagetthi for getting kills,deaths etc.. //Reads every line in Logs.txt and calculates foreach (var line in File.ReadAllLines(logsPath)) { if (line.StartsWith(playerAName) && line.Contains("killed")) { playerAKills++; if (line.Contains("headshot")) { playerAHSCount++; } } if (line.StartsWith(playerBName) && line.Contains("killed")) { playerBKills++; if (line.Contains("headshot")) { playerBHSCount++; } } } playerADeaths = playerBKills; playerBDeaths = playerAKills; GameStats gameStatsA = new GameStats(); gameStatsA.SteamId = playerASteamID; gameStatsA.Kills = playerAKills; gameStatsA.Deaths = playerADeaths; gameStatsA.HsRatio = headShotRatioConverter(playerAHSCount, playerAKills); gameStatsA.Score = 0; gameStatsA.Game = g; GameStats gameStatsB = new GameStats(); gameStatsB.SteamId = playerBSteamID; gameStatsB.Kills = playerBKills; gameStatsB.Deaths = playerBDeaths; gameStatsB.HsRatio = headShotRatioConverter(playerBHSCount, playerBKills); //ISSUES gameStatsB.Score = 0; gameStatsB.Game = g; g.Winner = getWinner(gameStatsA, gameStatsB, playerA, playerB, g); g.HasEnded = true; db.GameStats.Add(gameStatsA); db.GameStats.Add(gameStatsB); db.SaveChanges(); //Match has finished so we remove players from the whitelist and restart map. string playerAID = "\"" + playerA.SteamId + "\""; string playerBID = "\"" + playerB.SteamId + "\""; if (server.GetControl("lol")) { server.Rcon.SendCommand("sm_whitelist_remove " + playerAID); server.Rcon.SendCommand("sm_whitelist_remove " + playerBID); server.Rcon.SendCommand("sm_kick @all"); server.Rcon.SendCommand("changelevel aim_map"); server.Rcon.SendCommand("warmup"); } } } catch (Exception ex) { using (StreamWriter writer = new StreamWriter(errorsPath, true)) { writer.WriteLine("Message :" + ex.Message + "<br/>" + Environment.NewLine + "StackTrace :" + ex.StackTrace + Environment.NewLine + "Innerexception :" + ex.InnerException + "" + Environment.NewLine + "Date :" + DateTime.Now.ToString()); writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine); } } }