示例#1
0
        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));
        }
示例#2
0
        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);
                }
            }
        }
示例#3
0
        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());
        }
示例#4
0
        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);
        }
示例#5
0
        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));
        }
示例#6
0
        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());
        }
示例#7
0
        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));
        }
示例#8
0
        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));
        }
示例#9
0
        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);
        }
示例#10
0
        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());
        }
示例#11
0
        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);
                }
            }
        }