コード例 #1
0
        private async Task LoadNewestParticipants()
        {
            foreach (var tourn in Database.Tournaments)
            {
                var challongeTournament = await ChallongeTournaments.getTournament(tourn.ShortName);

                var participants = await challongeTournament.GetParticipants();

                foreach (var chalPart in participants)
                {
                    var participant = await Database.Participants.FindAsync(chalPart.id.ID);

                    bool exist = participant != null;
                    if (chalPart.active && !exist)
                    {
                        Database.Participants.Add(Participant.CreateParticipant(chalPart));
                        OnNewParticipantRegistered?.Invoke(this, new OnNewParticipantRegisteredEventArgs(chalPart, challongeTournament));
                        Console.WriteLine($"New participant added: {chalPart.name}");
                    }
                    else if (!chalPart.active && exist)
                    {
                        //Database.Participants.Remove(participant);
                    }
                }
            }
            await Database.SaveChangesAsync();
        }
コード例 #2
0
        private async Task AnnounceNewMatches()
        {
            foreach (var match in Database.Matches.Where(x => !x.Announced))
            {
                var challongeTournament = await ChallongeTournaments.getTournament(match.Tournament.ShortName);

                var challongeMatch = await ChallongeMatches.GetMatch(match.Tournament.ChallongeIDWithSubdomain, match.ID);

                if (!challongeMatch.MatchMarkedAsActive)
                {
                    continue;
                }

                var team1 = await Database.Participants.FindAsync(ParticipantIDCache.Instance.GetParticipantID(challongeMatch.player1_id.Value));

                var team2 = await Database.Participants.FindAsync(ParticipantIDCache.Instance.GetParticipantID(challongeMatch.player2_id.Value));

                var args = new OnNewMatchStartedArgs
                {
                    Match            = challongeMatch,
                    Tournament       = challongeTournament,
                    Team1DiscordName = team1?.DiscordMentionName,
                    Team1SeatNum     = team1?.SeatNum,
                    Team2DiscordName = team2?.DiscordMentionName,
                    Team2SeatNum     = team2?.SeatNum
                };
                OnNewMatchStarted?.Invoke(this, args);

                match.Announced = true;
            }
            await Database.SaveChangesAsync();
        }
コード例 #3
0
        private ChallongeClient(string apiKey, string subdomain, DateTime createdAfterDate)
        {
            var config = new ChallongeConfig(apiKey);

            Caller = new ChallongeHTTPClientAPICaller(config);
            ChallongeTournaments = new ChallongeTournaments(Caller, subdomain);
            ChallongeMatches     = new ChallongeMatches(Caller);

            CreatedAfterDate = createdAfterDate;

            LoaderTimer = new Timer(e => LoadNewestData());
            Database    = new DiscordChallongeDatabase();
        }
コード例 #4
0
        private async Task LoadNewestTournaments()
        {
            var tournaments = await ChallongeTournaments.GetTournamentsCreatedAfter(CreatedAfterDate);

            foreach (ITournament tournament in tournaments)
            {
                if (await Database.Tournaments.FindAsync(tournament.TournamentID) == null)
                {
                    Database.Tournaments.Add(Tournament.CreateTournament(tournament));
                    Console.WriteLine($"New tournament added: {tournament.Name}");
                }
            }
            await Database.SaveChangesAsync();
        }
コード例 #5
0
        private async Task LoadNewestMatches()
        {
            foreach (var tourn in Database.Tournaments)
            {
                var challongeTournament = await ChallongeTournaments.getTournament(tourn.ShortName);

                var matches = await challongeTournament.GetAllOpenMatches();

                foreach (var chalMatch in matches)
                {
                    if (await Database.Matches.FindAsync(chalMatch.id) == null)
                    {
                        Database.Matches.Add(Match.CreateMatch(chalMatch));
                        Console.WriteLine($"New match added: {chalMatch.id} for {challongeTournament.Name}");
                    }
                }
            }
            await Database.SaveChangesAsync();
        }
コード例 #6
0
        private async Task AnnounceNewTournaments()
        {
            foreach (var tourn in Database.Tournaments.Where(x => !x.Announced || !x.CheckInOpen))
            {
                var challongeTournament = await ChallongeTournaments.getTournament(tourn.ShortName);

                var args = new OnTournamentStartedEventArgs(challongeTournament);

                if (!tourn.Announced)
                {
                    OnTournamentStarted?.Invoke(this, args);
                    tourn.Announced = true;
                }
                if (challongeTournament.CheckInStartedTime.HasValue && !tourn.CheckInOpen)
                {
                    OnTournamentCheckInOpened?.Invoke(this, args);
                    tourn.CheckInOpen = true;
                }
            }
            await Database.SaveChangesAsync();
        }