Exemple #1
0
        public TournamentType(ITournamentCategoryRepository tournamentCategoryRepository,
                              IBracketRepository bracketRepository,
                              IUserRepository userRepository)
        {
            Name        = "Tournament";
            Description = "Represents a tournament.";

            Field(_ => _.ID).Name("id").Description("The tournament ID.");
            Field(_ => _.Name).Name("name").Description("The tournament name.");

            Field <TournamentCategoryType>(
                "category",
                Description = "The tournament's category.",
                resolve: context => {
                var parent = context.Source;
                return(tournamentCategoryRepository.GetTournamentCategoryByID(parent.CategoryID));
            });

            Field <ListGraphType <BracketType> >(
                "brackets",
                Description = "Kategoriye ait urunler",
                resolve: context => {
                var parent = context.Source;
                return(bracketRepository.GetBrackets(_ => _.TournamentID == parent.ID));
            });

            Field <UserType>(
                "admin",
                Description = "Kategoriye ait urunler",
                resolve: context => {
                var parent = context.Source;
                return(userRepository.GetUserByID(parent.AdministratorID));
            });
        }
Exemple #2
0
        private Bracket UpdateBracket(Bracket bracket, bool finished,
                                      int bracketId,
                                      IBracketRepository bracketRepository,
                                      IScoreRepository scoreRepository,
                                      ITeamRepository teamRepository)
        {
            if (!bracket.Finished)
            {
                bracket.Finished = finished;
                bracketRepository.UpdateBracket(bracket);
            }
            var brackets    = (List <Bracket>)bracketRepository.GetBrackets(_ => _.TournamentID == bracket.TournamentID);
            var notFinished = brackets.Where(b => b.Finished == false).ToList();

            if (brackets.Any() && !notFinished.Any())
            {
                var lowestLevel = brackets.OrderBy(b => b.Level).First().Level;
                if (lowestLevel > 0)
                {
                    var filteredBrackets = brackets.Where(b => b.Level == lowestLevel).ToList();
                    for (var index = 0; index + 1 < filteredBrackets.Count; index += 2)
                    {
                        var newBracket = new Bracket()
                        {
                            Level        = lowestLevel - 1,
                            Finished     = false,
                            TournamentID = bracket.TournamentID
                        };
                        var createdBracket = bracketRepository.InsertBracket(newBracket);

                        var bracketA        = filteredBrackets[index];
                        var bracketB        = filteredBrackets[index + 1];
                        var winnerAID       = FindWinnerID(bracketA.ID, scoreRepository);
                        var winnerBID       = FindWinnerID(bracketB.ID, scoreRepository);
                        var winnerIDs       = new int[] { winnerAID, winnerBID };
                        var teamsPerBracket = 2;
                        for (var x = 0; x < teamsPerBracket; x++)
                        {
                            var newScore = new Score()
                            {
                                BracketID = createdBracket.ID,
                                TeamID    = winnerIDs[x],
                                Value     = 0
                            };
                            scoreRepository.InsertScore(newScore);
                        }
                    }
                }
            }

            ConnectionHub.SendToAll(UPDATE);

            var scores = (List <Score>)scoreRepository.GetScores(_ => _.BracketID == bracketId);
            var score1 = scores[0];
            var score2 = scores[1];
            var team1  = teamRepository.GetTeamByID(score1.TeamID);
            var team2  = teamRepository.GetTeamByID(score2.TeamID);

            var body = string.Format("{0} ({1}) - ({2}) {3}", team1.Name, score1.Value, score2.Value, team2.Name);

            var notification = new Notification()
            {
                Title  = "A bracket was finished!",
                Body   = body,
                Params = { bracket.TournamentID.ToString() }
            };

            PushHub.Send(notification);

            return(bracket);
        }