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)); }); }
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); }