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