public static async Task SaveRemoveFromTeam(string serviceUrl, string teamId, string tenantId) { await MeetupBotDataProvider.SaveTeamInstallStatus(new TeamInstallInfo() { ServiceUrl = serviceUrl, TeamId = teamId, TenantId = tenantId }, false); }
public static async Task <int> MakePairsAndNotify() { // Recall all the teams where we have been added // For each team where I have been added: // Pull the roster of each team where I have been added // Remove the members who have opted out of pairs // Match each member with someone else // Save this pair // Now notify each pair found in 1:1 and ask them to reach out to the other person // When contacting the user in 1:1, give them the button to opt-out. var teams = MeetupBotDataProvider.GetInstalledTeams(); var countPairsNotified = 0; var maxPairUpsPerTeam = Convert.ToInt32(CloudConfigurationManager.GetSetting("MaxPairUpsPerTeam")); foreach (var team in teams) { try { var optInStatuses = await MeetupBotDataProvider.GetUserOptInStatusesAsync(team.TenantId); var optedInUsers = await GetOptedInUsers(team, optInStatuses); var teamName = await GetTeamNameAsync(team.ServiceUrl, team.TeamId); foreach (var pair in MakePairs(optedInUsers, optInStatuses).Take(maxPairUpsPerTeam)) { await NotifyPair(team.ServiceUrl, team.TenantId, teamName, pair); await MeetupBotDataProvider.StorePairup(team.TenantId, optInStatuses, pair.Item1.ObjectId, pair.Item2.ObjectId); countPairsNotified++; } } catch (UnauthorizedAccessException uae) { System.Diagnostics.Trace.TraceError($"Failed to process a team: {team.ToString()} due to error {uae.ToString()}"); } } System.Diagnostics.Trace.TraceInformation($"{countPairsNotified} pairs notified"); return(countPairsNotified); }
private static async Task <List <ChannelAccount> > GetOptedInUsers(TeamInstallInfo teamInfo) { var optedInUsers = new List <ChannelAccount>(); var members = await GetTeamMembers(teamInfo.ServiceUrl, teamInfo.TeamId, teamInfo.TenantId); foreach (var member in members) { var optInStatus = MeetupBotDataProvider.GetUserOptInStatus(teamInfo.TenantId, member.ObjectId); if (optInStatus == null || optInStatus.OptedIn) { optedInUsers.Add(member); } } return(optedInUsers); }
public static async Task OptInUser(string tenantId, string userId, string serviceUrl) { await MeetupBotDataProvider.SetUserOptInStatus(tenantId, userId, true, serviceUrl); }