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