private async Task CreateTeamAndChannels(string token, NewTeamDetails teamDetails, string teamId) { if (teamId != null) { // Note: Channle Info is not supported in Application context yet. //foreach (var channelName in teamDetails.ChannelNames) //{ // var channelId = await CreateChannel(token, teamId, channelName, channelName); // if (String.IsNullOrEmpty(channelId)) // Console.WriteLine($"Failed to create '{channelName}' channel in '{teamDetails.TeamName}' team."); //} // Add users: foreach (var memberEmailId in teamDetails.MemberEmails) { var result = await AddUserToTeam(token, teamId, memberEmailId); if (!result) { Console.WriteLine($"Failed to add {memberEmailId} to {teamDetails.TeamName}. Check if user is already part of this team."); } } Console.WriteLine($"Channels, Members Added successfully for '{teamDetails.TeamName}' team."); } else { Console.WriteLine($"Failed to create team due to internal error. Please try again later."); } }
public static List <NewTeamDetails> GetAddTeamDetails(string strFilePath) { var teamDetailsList = new List <NewTeamDetails>(); try { using (var stream = File.Open(strFilePath, FileMode.Open, FileAccess.Read)) { using (var reader = ExcelReaderFactory.CreateReader(stream)) { // 2. Use the AsDataSet extension method var result = reader.AsDataSet(); var table = result.Tables[0]; //get first table from Dataset table.Rows.RemoveAt(0); // Remvoe Excel Titles foreach (DataRow row in table.Rows) { // Skip the first row... NewTeamDetails teamDetails = new NewTeamDetails(); teamDetails.TeamName = row[0].ToString(); teamDetails.ChannelNames = row[1].ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(channel => channel.Trim()).ToList(); teamDetails.MemberEmails = row[2].ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(user => user.Trim()).ToList(); teamDetailsList.Add(teamDetails); } // The result of each spreadsheet is in result.Tables } } } catch (Exception) { // Send null if exception occurred. teamDetailsList = null; } return(teamDetailsList); }
public async Task CreateNewTeam(NewTeamDetails teamDetails, string token) { var groupId = await CreateGroupAsyn(token, teamDetails.TeamName, teamDetails.OwnerEmailId); if (IsValidGuid(groupId)) { Console.WriteLine($"O365 Group is created for {teamDetails.TeamName}."); // Sometimes Team creation fails due to internal error. Added rety mechanism. var retryCount = 4; string teamId = null; do { teamId = await CreateTeamAsyn(token, groupId); if (IsValidGuid(teamId)) { Console.WriteLine($"Microsoft Teams team is created for {teamDetails.TeamName}."); break; } else { teamId = null; } retryCount--; await Task.Delay(5000); } while (retryCount > 0); await CreateTeamAndChannels(token, teamDetails, teamId); } }
public static List <NewTeamDetails> GetAddTeamDetails(string strFilePath, string domainName) { var teamDetailsList = new List <NewTeamDetails>(); try { using (var stream = File.Open(strFilePath, FileMode.Open, FileAccess.Read)) { using (var reader = ExcelReaderFactory.CreateReader(stream)) { // 2. Use the AsDataSet extension method var result = reader.AsDataSet(); var table = result.Tables[0]; //get first table from Dataset table.Rows.RemoveAt(0); // Remove Excel Titles foreach (DataRow row in table.Rows) { // Skip the first row... NewTeamDetails teamDetails = new NewTeamDetails(); teamDetails.TeamName = row[0].ToString(); teamDetails.ChannelNames = row[1].ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries). Select(channel => channel.Trim()).ToList(); //if(UserEmailId[1].Contains()) var allmembers = row[2].ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries). Select(user => user.Trim().ToLower()).ToList(); //Checking Domain Name teamDetails.MemberEmails = allmembers.Where(g => g.Contains(domainName)).ToList(); teamDetails.GuestEmails = allmembers.Except(teamDetails.MemberEmails).ToList(); // Delete empty entries teamDetails.ChannelNames = teamDetails.ChannelNames.Where(m => !string.IsNullOrWhiteSpace(m)).Distinct().ToList(); teamDetails.MemberEmails = teamDetails.MemberEmails.Where(m => !string.IsNullOrWhiteSpace(m)).Distinct().ToList(); teamDetails.GuestEmails = teamDetails.GuestEmails.Where(m => !string.IsNullOrWhiteSpace(m)).Distinct().ToList(); teamDetailsList.Add(teamDetails); } // The result of each spreadsheet is in result.Tables } } } catch (Exception) { // Send null if exception occurred. teamDetailsList = null; } return(teamDetailsList); }
private async Task CreateTeamAndChannels(IDialogContext context, string token, NewTeamDetails teamDetails, string teamId) { if (teamId != null) { foreach (var channelName in teamDetails.ChannelNames) { var channelId = await CreateChannel(token, teamId, channelName, channelName); if (String.IsNullOrEmpty(channelId)) { await context.PostAsync($"Failed to create '{channelName}' channel in '{teamDetails.TeamName}' team."); } } // Add users: foreach (var memberEmailId in teamDetails.MemberEmails) { var result = await AddUserToTeam(token, teamId, memberEmailId); if (!result) { await context.PostAsync($"Failed to add {memberEmailId} to {teamDetails.TeamName}. Check if user is already part of this team."); } } await context.PostAsync($"Channels, Members Added successfully for '{teamDetails.TeamName}' team."); } else { await context.PostAsync($"Failed to create team due to internal error. Please try again later."); } }