示例#1
0
                public void CreateNew()
                {
                    var player = new TournamentUser();

                    team.Players.Add(player);
                    flow.Add(new PlayerRow(team, player));
                }
示例#2
0
                    public PlayerRow(TournamentTeam team, TournamentUser user)
                    {
                        this.user = user;

                        Margin = new MarginPadding(10);

                        RelativeSizeAxes = Axes.X;
                        AutoSizeAxes     = Axes.Y;

                        Masking      = true;
                        CornerRadius = 5;

                        InternalChildren = new Drawable[]
                        {
                            new Box
                            {
                                Colour           = OsuColour.Gray(0.2f),
                                RelativeSizeAxes = Axes.Both,
                            },
                            new FillFlowContainer
                            {
                                Margin  = new MarginPadding(5),
                                Padding = new MarginPadding {
                                    Right = 160
                                },
                                Spacing      = new Vector2(5),
                                Direction    = FillDirection.Horizontal,
                                AutoSizeAxes = Axes.Both,
                                Children     = new Drawable[]
                                {
                                    new SettingsNumberBox
                                    {
                                        LabelText        = "User ID",
                                        RelativeSizeAxes = Axes.None,
                                        Width            = 200,
                                        Current          = playerId,
                                    },
                                    drawableContainer = new Container
                                    {
                                        Size = new Vector2(100, 70),
                                    },
                                }
                            },
                            new DangerousSettingsButton
                            {
                                Anchor           = Anchor.CentreRight,
                                Origin           = Anchor.CentreRight,
                                RelativeSizeAxes = Axes.None,
                                Width            = 150,
                                Text             = "Delete Player",
                                Action           = () =>
                                {
                                    Expire();
                                    team.Players.Remove(user);
                                },
                            }
                        };
                    }
示例#3
0
        public void PopulatePlayer(TournamentUser user, Action success = null, Action failure = null, bool immediate = false)
        {
            var req = new GetUserRequest(user.OnlineID, ladder.Ruleset.Value);

            if (immediate)
            {
                API.Perform(req);
                populate();
            }
            else
            {
                req.Success += res => { populate(); };
                req.Failure += _ =>
                {
                    user.OnlineID = 1;
                    failure?.Invoke();
                };

                API.Queue(req);
            }

            void populate()
            {
                var res = req.Response;

                if (res == null)
                {
                    return;
                }

                user.OnlineID = res.Id;

                user.Username = res.Username;
                user.CoverUrl = res.CoverUrl;
                user.Country  = res.Country;
                user.Rank     = res.Statistics?.GlobalRank;

                success?.Invoke();
            }
        }
        public async Task <TournamentUser> AddUser(AddUserToTournamentDto addUser)
        {
            var Tournament = await _context.Tournaments.FirstOrDefaultAsync(x => x.TournamentId == addUser.TournamentId);

            if (Tournament.PlayerCount < 5)
            {
                var checkTournamentUser = await _context.TournamentUsers.FirstOrDefaultAsync(x => x.UserID == addUser.PersonJoiningTournament && x.TournamentID == addUser.TournamentId);

                if (checkTournamentUser == null)
                {
                    var TournamentUser = new TournamentUser
                    {
                        UserID       = addUser.PersonJoiningTournament,
                        TournamentID = Tournament.TournamentId
                    };
                    await _context.TournamentUsers.AddAsync(TournamentUser);

                    await _context.SaveChangesAsync();

                    return(TournamentUser);
                }
            }
            return(null);
        }
示例#5
0
        public async Task <IActionResult> IndividualRegistration(int tournamentId, string applicationId)
        {
            /* Create a new instance of a TournamentUser */
            TournamentUser tu = new TournamentUser();

            /* Sets it's properties */
            tu.User = await userManager.FindByIdAsync(applicationId);

            tu.Tournament = await db.Tournament.
                            Include(s => s.SportType).
                            Include(r => r.RegisterType).
                            Include(t => t.TournamentType).
                            Include(g => g.GenderType).
                            FirstOrDefaultAsync(t => t.TournamentId == tournamentId);

            tu.Joined = DateTime.Now;

            /* Save the new instance to the database */
            db.TournamentUser.Add(tu);
            db.SaveChanges();

            /* Redirect to userprofile */
            return(RedirectToAction(nameof(UserProfileController.ShowUserProfile), "UserProfile", new { Message = MessageStatus.IndividualRegistrationSuccess }));
        }
示例#6
0
        public void Update(SqlTransaction t)
        {
            if (!game.IsRated)
            {
                return;
            }

            //Get both players datat
            UserGameType whiteUserData;
            UserGameType blackUserData;

            if (game.WhiteChessTypeID == 3)
            {
                whiteUserData = UserGameType.GetUserCentaurGameRating(game.Cxt, game.WhiteChessTypeID, game.GameTypeID, game.WhiteUserID);
            }
            else
            {
                whiteUserData = UserGameType.GetUserGameRating(game.Cxt, game.WhiteChessTypeID, game.GameTypeID, game.WhiteUserID);
            }
            if (game.BlackChessTypeID == 3)
            {
                blackUserData = UserGameType.GetUserCentaurGameRating(game.Cxt, game.BlackChessTypeID, game.GameTypeID, game.BlackUserID);
            }
            else
            {
                blackUserData = UserGameType.GetUserGameRating(game.Cxt, game.BlackChessTypeID, game.GameTypeID, game.BlackUserID);
            }

            //Calculate Wining Probablity of both players
            double eResultWhite = 0;
            double eResultBlack = 0;

            RatingWinProbablity winProbablity = RatingWinProbablities.Instance.GetRatingWinProbablity(game.EloWhiteBefore, game.EloBlackBefore);

            if (game.EloWhiteBefore >= game.EloBlackBefore)
            {
                eResultWhite = winProbablity.StrongerPlayer;
                eResultBlack = winProbablity.WeakerPlayer;
            }
            else
            {
                eResultBlack = winProbablity.StrongerPlayer;
                eResultWhite = winProbablity.WeakerPlayer;
            }

            //Calculate K-Factor -> Calculate Rating -> Save Rating -> Calculate Ranking -> Save Ranking
            switch (game.GameResultIDE)
            {
            case GameResultE.WhiteWin:
                whiteUserData = CalculateRating(whiteUserData, 1, eResultWhite, game.WhiteUserID, t);
                blackUserData = CalculateRating(blackUserData, 0, eResultBlack, game.BlackUserID, t);
                break;

            case GameResultE.WhiteLose:
                whiteUserData = CalculateRating(whiteUserData, 0, eResultWhite, game.WhiteUserID, t);
                blackUserData = CalculateRating(blackUserData, 1, eResultBlack, game.BlackUserID, t);
                break;

            case GameResultE.Draw:
                whiteUserData = CalculateRating(whiteUserData, 0.5, eResultWhite, game.WhiteUserID, t);
                blackUserData = CalculateRating(blackUserData, 0.5, eResultBlack, game.BlackUserID, t);
                break;
            }

            //***********************************************************************

            if (Game.IsTournamentMatch)
            {
                TournamentUser.UpdateUsersEloAfter(t, Game.TournamentMatch.WhiteUserID, Game.TournamentMatch.BlackUserID, whiteUserData.EloRating, blackUserData.EloRating, Game.TournamentMatch.TournamentID);
            }
        }
示例#7
0
        public async Task <IActionResult> TeamRegistration(int tournamentId, int teamId, string applicationId)
        {
            /* Create a new instance of a TournamentUser */
            TournamentTeam tt = new TournamentTeam();

            /* Sets it's properties */
            /* Set the team */
            tt.Team = await db.Team.Include(a => a.User).FirstOrDefaultAsync(t => t.TeamId == teamId);

            /* Set the tournament */
            tt.Tournament = await db.Tournament.
                            Include(s => s.SportType).
                            Include(r => r.RegisterType).
                            Include(t => t.TournamentType).
                            Include(g => g.GenderType).
                            FirstOrDefaultAsync(t => t.TournamentId == tournamentId);

            /* Set time when team joined tournament */
            tt.TeamJoined = DateTime.Now;

            /* If the user allready has a team registrated in the tournament we replace it with the new selected team */
            var result = db.TournamentTeam.Include(u => u.Tournament).Include(t => t.Team).ThenInclude(p => p.User).Where(t => t.Tournament.TournamentId == tournamentId && t.Team.User.Id == applicationId).FirstOrDefault();

            if (result != null)
            {
                /* We remove the earlier tournamentusers (because the number of members can be different on the different team) */
                /* Get the previous teamusers */
                var PreviousTeamId    = result.Team.TeamId;
                var PreviousTeamUsers = db.TeamUser.Include(u => u.User).Where(t => t.Team.TeamId == PreviousTeamId).ToList();
                /* Remove the tournamentusers */
                for (int i = 0; i < PreviousTeamUsers.Count; i++)
                {
                    /* Get a tournamentuser and remove it */
                    var PreviousTournamentUser = db.TournamentUser.Include(u => u.User).Include(u => u.Tournament).Where(t => t.User.Id == PreviousTeamUsers.ElementAt(i).User.Id).Where(t => t.Tournament.TournamentId == tournamentId).FirstOrDefault();
                    if (PreviousTournamentUser != null)
                    {
                        db.TournamentUser.Remove(PreviousTournamentUser);
                        db.SaveChanges();
                    }
                }
                /* Change the existing tournament team properties in the tournament team table */
                result.Team       = tt.Team;
                result.TeamJoined = DateTime.Now;
                result.Tournament = tt.Tournament;
                db.SaveChanges();
                /* Save the new team members to the tournament user table */
                var NewTeamUsers = db.TeamUser.Include(u => u.User).Where(t => t.Team.TeamId == teamId).ToList();
                /* Add each of the tournamentusers to the table */
                for (int i = 0; i < NewTeamUsers.Count; i++)
                {
                    TournamentUser TournamentUser = new TournamentUser();

                    var NewTeamUser = NewTeamUsers.ElementAt(i);

                    TournamentUser.User       = NewTeamUser.User;
                    TournamentUser.Tournament = tt.Tournament;
                    TournamentUser.Joined     = DateTime.Now;

                    db.TournamentUser.Add(TournamentUser);
                    db.SaveChanges();
                }
            }
            else /* The contactperson/user has not registrated a team in the tournament yet */
            {
                /* Save the team members to the tournament user table */
                var NewTeamUsers = db.TeamUser.Include(u => u.User).Where(t => t.Team.TeamId == teamId).ToList();
                /* Add the new tournamentusers */
                for (int i = 0; i < NewTeamUsers.Count; i++)
                {
                    TournamentUser TournamentUser = new TournamentUser();

                    var NewTeamUser = NewTeamUsers.ElementAt(i);

                    TournamentUser.User       = NewTeamUser.User;
                    TournamentUser.Tournament = tt.Tournament;
                    TournamentUser.Joined     = DateTime.Now;

                    db.TournamentUser.Add(TournamentUser);
                    db.SaveChanges();
                }
                /* Add the new tournament team to the tournament team table */
                db.TournamentTeam.Add(tt);
                db.SaveChanges();
            }
            /* Redirect to userprofile */
            return(RedirectToAction(nameof(UserProfileController.ShowUserProfile), "UserProfile", new { Message = MessageStatus.TeamRegistrationSuccess }));
        }