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.");
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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.");
            }
        }