Example #1
0
        /// <summary>
        /// Retrieves detailed information about a particular distribution group
        /// </summary>
        /// <param name="groupEmailAddress"></param>
        private void GetDistributionGroup(string groupEmailAddress)
        {
            ExchCmds powershell = null;

            try
            {
                // Initialize powershell session
                powershell = new ExchCmds(Config.ExchangeURI, Config.Username, Config.Password, Config.ExchangeConnectionType, Config.PrimaryDC);

                // Get the distribution group
                ExchangeGroup group = powershell.Get_DistributionGroup(groupEmailAddress);

                // Clear fields
                hfModifiedOwners.Value = string.Empty;
                hfModifiedMembership.Value = string.Empty;
                hfRemovedOwners.Value = string.Empty;
                hfRemovedMembership.Value = string.Empty;

                // Populate fields
                GetDomains();
                GetMailObjects();

                // Populate information
                txtDisplayName.Text = group.DisplayName;
                txtEmailAddress.Text = group.PrimarySmtpAddress.Split('@')[0];
                ddlDomains.SelectedValue = group.PrimarySmtpAddress.Split('@')[1];
                cbGroupHidden.Checked = group.Hidden;
                hfCurrentEmailAddress.Value = group.PrimarySmtpAddress;


                //
                // Get the list of users, contacts, and groups that can be added
                //
                List<MailboxUser> groupOwners = SQLMailboxes.GetMailboxUsers(CPContext.SelectedCompanyCode);

                //
                // Find the owners
                //
                hfOriginalOwners.Value = String.Join("||", group.ManagedBy);

                if (groupOwners != null)
                {
                    List<RepeaterOwnership> owners = new List<RepeaterOwnership>();
                    foreach (string s in group.ManagedBy)
                    {
                        MailboxUser tmp = groupOwners.FirstOrDefault(m => m.CanonicalName.Equals(s, StringComparison.CurrentCultureIgnoreCase));
                        if (tmp != null)
                        {
                            owners.Add(new RepeaterOwnership()
                            {
                                DisplayName = tmp.DisplayName,
                                DistinguishedName = tmp.DistinguishedName,
                                ImageUrl = "~/img/icons/16/user.png"
                            });
                        }
                    }

                    // Order list
                    owners.OrderBy(x => x.ImageUrl).ThenBy(x => x.DisplayName);

                    repeaterOwners.DataSource = owners;
                    repeaterOwners.DataBind();
                }

                //
                // Find the members
                //
                hfOriginalMembership.Value = String.Join("||", group.Members);

                List<RepeaterOwnership> members = new List<RepeaterOwnership>();
                foreach (MailObject member in group.Members)
                {
                    if (member.ObjectType == Enumerations.ObjectType.User)
                    {
                        members.Add(new RepeaterOwnership()
                        {
                            DisplayName = member.DisplayName,
                            DistinguishedName = member.DistinguishedName,
                            ImageUrl = "~/img/icons/16/user.png"
                        });
                    }
                    else if (member.ObjectType == Enumerations.ObjectType.Group)
                    {
                        members.Add(new RepeaterOwnership()
                        {
                            DisplayName = member.DisplayName,
                            DistinguishedName = member.DistinguishedName,
                            ImageUrl = "~/img/icons/16/people.png"
                        });
                    }
                    else if (member.ObjectType == Enumerations.ObjectType.Contact)
                    {
                        members.Add(new RepeaterOwnership()
                        {
                            DisplayName = member.DisplayName,
                            DistinguishedName = member.DistinguishedName,
                            ImageUrl = "~/img/icons/16/web.png"
                        });
                    }
                }

                // Order list
                members.OrderBy(x => x.ImageUrl).ThenBy(x => x.DisplayName);

                repeaterMembers.DataSource = members;
                repeaterMembers.DataBind();

                //
                // Membership approval
                //
                switch (group.JoinRestriction.ToLower())
                {
                    case "approvalrequired":
                        rbMembershipApprovalJoinApproval.Checked = true;
                        break;
                    case "closed":
                        rbMembershipApprovalJoinClosed.Checked = true;
                        break;
                    default:
                        rbMembershipApprovalJoinOpen.Checked = true;
                        break;
                }

                switch (group.DepartRestriction.ToLower())
                {
                    case "closed":
                        rbMembershipApprovalLeaveClosed.Checked = true;
                        break;
                    default:
                        rbMembershipApprovalLeaveOpen.Checked = true;
                        break;
                }

                //
                // Delivery Management
                //
                if (group.RequireSenderAuthentication)
                    rbDeliveryManagementInsideOnly.Checked = true;
                else
                    rbDeliveryManagementInsideOutside.Checked = true;

                if (group.WhoCanSendToGroup != null)
                {
                    foreach (ListItem item in lstDeliveryManagementRestrict.Items)
                    {
                        foreach (string s in group.WhoCanSendToGroup)
                        {
                            if (s.IndexOf(item.Value, StringComparison.CurrentCultureIgnoreCase) >= 0)
                                item.Selected = true;
                        }
                    }
                }

                //
                // Message Approval
                //
                if (group.ModerationEnabled)
                    cbMustBeApprovedByAModerator.Checked = true;
                else
                    cbMustBeApprovedByAModerator.Checked = false;

                if (group.GroupModerators != null)
                {
                    foreach (ListItem item in lstGroupModerators.Items)
                    {
                        foreach (string s in group.GroupModerators)
                        {
                            if (s.IndexOf(item.Value, StringComparison.CurrentCultureIgnoreCase) >= 0)
                                item.Selected = true;
                        }
                    }
                }

                if (group.SendersNotRequiringApproval != null)
                {
                    foreach (ListItem item in lstSendersDontRequireApproval.Items)
                    {
                        foreach (string s in group.SendersNotRequiringApproval)
                        {
                            if (s.IndexOf(item.Value, StringComparison.CurrentCultureIgnoreCase) >= 0)
                                item.Selected = true;
                        }
                    }
                }

                //
                // Last section
                //
                switch (group.SendModerationNotifications.ToLower())
                {
                    case "always":
                        rbMessageApprovalNotifyAll.Checked = true;
                        break;
                    case "internal":
                        rbMessageApprovalNotifyInternal.Checked = true;
                        break;
                    default:
                        rbMessageApprovalNotifyNone.Checked = true;
                        break;
                }

                // Show and hide correct panels
                panelGroupDelete.Visible = false;
                panelGroupList.Visible = false;
                panelNewEditGroup.Visible = true;
            }
            catch (Exception ex)
            {
                notification1.SetMessage(controls.notification.MessageType.Error, "Error getting distribution group: " + ex.Message);
            }
            finally
            {
                if (powershell != null)
                    powershell.Dispose();
            }
        }