diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 895dc713..d3e28219 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -2102,7 +2102,7 @@ AS RETURN @Result END - +GO @@ -2173,6 +2173,12 @@ exec sp_executesql @sql, N'@ItemID int, @IncludeMailboxes int, @IncludeContacts RETURN GO + +IF EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'SearchExchangeAccountsByTypes') +DROP PROCEDURE [dbo].[SearchExchangeAccountsByTypes] +GO + + CREATE PROCEDURE [dbo].[SearchExchangeAccountsByTypes] ( @ActorID int, diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Common/ObjectUtils.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Common/ObjectUtils.cs index 4359ca98..eabcbf15 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Common/ObjectUtils.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Common/ObjectUtils.cs @@ -188,6 +188,22 @@ namespace WebsitePanel.EnterpriseServer // get type properties PropertyInfo[] props = GetTypeProperties(type); + // leave only a property from the DataReader + DataTable readerSchema = reader.GetSchemaTable(); + if (readerSchema != null) + { + List propslist = new List(); + foreach (DataRow field in readerSchema.Rows) + { + string columnName = System.Convert.ToString(field["ColumnName"]); + + foreach (PropertyInfo prop in props) + if (columnName.ToLower() == prop.Name.ToLower()) + propslist.Add(prop); + } + props = propslist.ToArray(); + } + // iterate through reader while (reader.Read()) { diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs index 7a8f6762..b3a6199a 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs @@ -2034,6 +2034,10 @@ namespace WebsitePanel.EnterpriseServer DataProvider.SearchOrganizationAccounts(SecurityContext.User.UserId, itemId, filterColumn, filterValue, sortColumn, includeMailboxes)); + return Tmpaccounts; + + // on large lists is very slow + /* List Accounts = new List(); foreach (OrganizationUser user in Tmpaccounts.ToArray()) @@ -2042,6 +2046,7 @@ namespace WebsitePanel.EnterpriseServer } return Accounts; + */ } public static int GetAccountIdByUserPrincipalName(int itemId, string userPrincipalName) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs index b6dc0c92..27b223eb 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/HostedSolution/ActiveDirectoryUtils.cs @@ -46,7 +46,12 @@ namespace WebsitePanel.Providers.HostedSolution public static string[] GetGroupObjects(string group, string objectType) { - List rets = new List(); + return GetGroupObjects(group, objectType, null); + } + + public static string[] GetGroupObjects(string group, string objectType, DirectoryEntry entry) + { + List rets = new List(); DirectorySearcher deSearch = new DirectorySearcher { @@ -54,6 +59,11 @@ namespace WebsitePanel.Providers.HostedSolution "(&(objectClass=" + objectType + "))" }; + if (entry != null) + { + deSearch.SearchRoot = entry; + } + SearchResultCollection srcObjects = deSearch.FindAll(); foreach (SearchResult srcObject in srcObjects) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs index 9d7760a8..09089959 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.HostedSolution/OrganizationProvider.cs @@ -918,8 +918,11 @@ namespace WebsitePanel.Providers.HostedSolution throw new ArgumentNullException("groupName"); string path = GetGroupPath(organizationId, groupName); + string organizationPath = GetOrganizationPath(organizationId); DirectoryEntry entry = ActiveDirectoryUtils.GetADObject(path); + DirectoryEntry organizationEntry = ActiveDirectoryUtils.GetADObject(organizationPath); + OrganizationSecurityGroup securityGroup = new OrganizationSecurityGroup(); @@ -930,7 +933,7 @@ namespace WebsitePanel.Providers.HostedSolution List members = new List(); - foreach (string userPath in ActiveDirectoryUtils.GetGroupObjects(groupName, "user")) + foreach (string userPath in ActiveDirectoryUtils.GetGroupObjects(groupName, "user", organizationEntry)) { OrganizationUser tmpUser = GetUser(userPath); @@ -941,7 +944,7 @@ namespace WebsitePanel.Providers.HostedSolution }); } - foreach (string groupPath in ActiveDirectoryUtils.GetGroupObjects(groupName, "group")) + foreach (string groupPath in ActiveDirectoryUtils.GetGroupObjects(groupName, "group", organizationEntry)) { DirectoryEntry groupEntry = ActiveDirectoryUtils.GetADObject(groupPath); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSecurityGroupGeneralSettings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSecurityGroupGeneralSettings.ascx.cs index 1c0d244b..7ebfe3f9 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSecurityGroupGeneralSettings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSecurityGroupGeneralSettings.ascx.cs @@ -76,6 +76,7 @@ namespace WebsitePanel.Portal.ExchangeServer members.Enabled = false; btnSave.Visible = false; + tabs.IsDefault = true; } } catch (Exception ex) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSecurityGroupMemberOf.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSecurityGroupMemberOf.ascx.cs index 92ccfc77..9b7fc8fa 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSecurityGroupMemberOf.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/OrganizationSecurityGroupMemberOf.ascx.cs @@ -51,7 +51,6 @@ namespace WebsitePanel.Portal.HostedSolution { // get settings OrganizationSecurityGroup group = ES.Services.Organizations.GetSecurityGroupGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID); - //OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID); litDisplayName.Text = group.DisplayName; diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/MailboxSelector.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/MailboxSelector.ascx.cs index 561d897c..655d8c20 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/MailboxSelector.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/MailboxSelector.ascx.cs @@ -104,6 +104,10 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls chkIncludeLists.Visible = DistributionListsEnabled; chkIncludeLists.Checked = DistributionListsEnabled; } + + // increase timeout + ScriptManager scriptMngr = ScriptManager.GetCurrent(this.Page); + scriptMngr.AsyncPostBackTimeout = 300; } private void BindSelectedAccount(ExchangeAccount account) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/SecurityGroupTabs.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/SecurityGroupTabs.ascx.cs index 9e83947b..51c698f7 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/SecurityGroupTabs.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/SecurityGroupTabs.ascx.cs @@ -44,6 +44,13 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls set { selectedTab = value; } } + private bool isDefault = false; + public bool IsDefault + { + get { return isDefault; } + set { isDefault = value; } + } + protected void Page_Load(object sender, EventArgs e) { BindTabs(); @@ -53,7 +60,10 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls { List tabsList = new List(); tabsList.Add(CreateTab("secur_group_settings", "Tab.Settings")); - tabsList.Add(CreateTab("secur_group_memberof", "Tab.MemberOf")); + if (!isDefault) + { + tabsList.Add(CreateTab("secur_group_memberof", "Tab.MemberOf")); + } PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserSelector.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserSelector.ascx.cs index da7d0b53..7407ff8f 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserSelector.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ExchangeServer/UserControls/UserSelector.ascx.cs @@ -151,7 +151,9 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls protected void Page_Load(object sender, EventArgs e) { - + // increase timeout + ScriptManager scriptMngr = ScriptManager.GetCurrent(this.Page); + scriptMngr.AsyncPostBackTimeout = 300; } private void BindSelectedAccount(OrganizationUser account) @@ -288,6 +290,8 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls if (e.CommandName == "SelectAccount") { string[] parts = e.CommandArgument.ToString().Split('|'); + + /* OrganizationUser account = new OrganizationUser(); account.AccountName = parts[0]; account.DisplayName = parts[1]; @@ -295,6 +299,11 @@ namespace WebsitePanel.Portal.ExchangeServer.UserControls account.AccountId = Utils.ParseInt(parts[3]); account.SamAccountName = parts[4]; account.SubscriberNumber = parts[5]; + */ + + int AccountId = Utils.ParseInt(parts[3]); + + OrganizationUser account = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, AccountId); // set account BindSelectedAccount(account); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncAddLyncUserPlan.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncAddLyncUserPlan.ascx.cs index 236327ec..119ebfdd 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncAddLyncUserPlan.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncAddLyncUserPlan.ascx.cs @@ -42,12 +42,10 @@ namespace WebsitePanel.Portal.Lync { protected void Page_Load(object sender, EventArgs e) { - PackageContext cntx = null; + PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); if (!IsPostBack) { - cntx = ES.Services.Packages.GetPackageContext(PanelSecurity.PackageId); - string[] archivePolicy = ES.Services.Lync.GetPolicyList(PanelRequest.ItemID, LyncPolicyType.Archiving, null); if (archivePolicy != null) { @@ -95,22 +93,15 @@ namespace WebsitePanel.Portal.Lync */ chkRemoteUserAccess.Checked = plan.RemoteUserAccess; - chkAllowOrganizeMeetingsWithExternalAnonymous.Checked = plan.AllowOrganizeMeetingsWithExternalAnonymous; - ddTelephony.SelectedIndex = plan.Telephony; + Utils.SelectListItem(ddTelephony, plan.Telephony); tbServerURI.Text = plan.ServerURI; - locTitle.Text = plan.LyncUserPlanName; - this.DisableControls = true; - - string planArchivePolicy = ""; - if (plan.ArchivePolicy != null) planArchivePolicy = plan.ArchivePolicy; - string planTelephonyDialPlanPolicy = ""; - if (plan.TelephonyDialPlanPolicy != null) planTelephonyDialPlanPolicy = plan.TelephonyDialPlanPolicy; - string planTelephonyVoicePolicy = ""; - if (plan.TelephonyVoicePolicy != null) planTelephonyVoicePolicy = plan.TelephonyVoicePolicy; + string planArchivePolicy = ""; if (plan.ArchivePolicy != null) planArchivePolicy = plan.ArchivePolicy; + string planTelephonyDialPlanPolicy = ""; if (plan.TelephonyDialPlanPolicy != null) planTelephonyDialPlanPolicy = plan.TelephonyDialPlanPolicy; + string planTelephonyVoicePolicy = ""; if (plan.TelephonyVoicePolicy != null) planTelephonyVoicePolicy = plan.TelephonyVoicePolicy; ddArchivingPolicy.Items.Clear(); ddArchivingPolicy.Items.Add(new System.Web.UI.WebControls.ListItem(planArchivePolicy.Replace("Tag:", ""), planArchivePolicy)); @@ -119,12 +110,16 @@ namespace WebsitePanel.Portal.Lync ddTelephonyVoicePolicy.Items.Clear(); ddTelephonyVoicePolicy.Items.Add(new System.Web.UI.WebControls.ListItem(planTelephonyVoicePolicy.Replace("Tag:", ""), planTelephonyVoicePolicy)); + locTitle.Text = plan.LyncUserPlanName; + this.DisableControls = true; } else { chkIM.Checked = true; chkIM.Enabled = false; + // chkNone.Checked = true; because not used + if (cntx != null) { foreach (QuotaValueInfo quota in cntx.QuotasArray) @@ -139,10 +134,6 @@ namespace WebsitePanel.Portal.Lync chkConferencing.Checked = Convert.ToBoolean(quota.QuotaAllocatedValue); chkConferencing.Enabled = Convert.ToBoolean(quota.QuotaAllocatedValue); break; - case 375: - chkEnterpriseVoice.Checked = Convert.ToBoolean(quota.QuotaAllocatedValue); - chkEnterpriseVoice.Enabled = Convert.ToBoolean(quota.QuotaAllocatedValue); - break; } } } @@ -151,32 +142,29 @@ namespace WebsitePanel.Portal.Lync } } + bool enterpriseVoiceQuota = Utils.CheckQouta(Quotas.LYNC_ENTERPRISEVOICE, cntx); + + PlanFeaturesTelephony.Visible = enterpriseVoiceQuota; + secPlanFeaturesTelephony.Visible = enterpriseVoiceQuota; + if (!enterpriseVoiceQuota) Utils.SelectListItem(ddTelephony, "0"); + + bool enterpriseVoice = enterpriseVoiceQuota && (ddTelephony.SelectedValue == "2"); + chkEnterpriseVoice.Enabled = false; - chkEnterpriseVoice.Checked = false; + chkEnterpriseVoice.Checked = enterpriseVoice; + pnEnterpriseVoice.Visible = enterpriseVoice; - pnEnterpriseVoice.Visible = false; - pnServerURI.Visible = false; - - switch (ddTelephony.SelectedIndex) + switch (ddTelephony.SelectedValue) { - case 1: - break; - case 2: - pnEnterpriseVoice.Visible = true; - chkEnterpriseVoice.Checked = true; - break; - case 3: + case "3": + case "4": pnServerURI.Visible = true; - break; - case 4: - pnServerURI.Visible = true; - break; - + break; + default: + pnServerURI.Visible = false; + break; } - cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); - PlanFeaturesTelephony.Visible = Utils.CheckQouta(Quotas.LYNC_ENTERPRISEVOICE, cntx); - secPlanFeaturesTelephony.Visible = PlanFeaturesTelephony.Visible; } @@ -220,6 +208,8 @@ namespace WebsitePanel.Portal.Lync { try { + PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); + Providers.HostedSolution.LyncUserPlan plan = new Providers.HostedSolution.LyncUserPlan(); plan.LyncUserPlanName = txtPlan.Text; plan.IsDefault = false; @@ -229,8 +219,10 @@ namespace WebsitePanel.Portal.Lync plan.Federation = chkFederation.Checked; plan.Conferencing = chkConferencing.Checked; + bool enterpriseVoiceQuota = Utils.CheckQouta(Quotas.LYNC_ENTERPRISEVOICE, cntx); + bool enterpriseVoice = enterpriseVoiceQuota && (ddTelephony.SelectedValue == "2"); - plan.EnterpriseVoice = chkEnterpriseVoice.Checked; + plan.EnterpriseVoice = enterpriseVoice; plan.VoicePolicy = LyncVoicePolicyType.None; @@ -259,7 +251,9 @@ namespace WebsitePanel.Portal.Lync plan.AllowOrganizeMeetingsWithExternalAnonymous = chkAllowOrganizeMeetingsWithExternalAnonymous.Checked; - plan.Telephony = ddTelephony.SelectedIndex; + int telephonyId = -1; + int.TryParse(ddTelephony.SelectedValue, out telephonyId); + plan.Telephony = telephonyId; plan.ServerURI = tbServerURI.Text; diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx.cs index ddbd98ec..9b0e6655 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncCreateUser.ascx.cs @@ -75,21 +75,24 @@ namespace WebsitePanel.Portal.Lync protected void Page_PreRender(object sender, EventArgs e) { - bool EnterpriseVoice = false; + PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); + bool enterpriseVoiceQuota = Utils.CheckQouta(Quotas.LYNC_ENTERPRISEVOICE, cntx); + + bool enterpriseVoice = false; WebsitePanel.Providers.HostedSolution.LyncUserPlan plan = planSelector.plan; if (plan != null) - EnterpriseVoice = plan.EnterpriseVoice; + enterpriseVoice = plan.EnterpriseVoice && enterpriseVoiceQuota && (ddlPhoneNumber.Items.Count > 0); - pnEnterpriseVoice.Visible = EnterpriseVoice && (ddlPhoneNumber.Items.Count>0); + pnEnterpriseVoice.Visible = enterpriseVoice; - if (!EnterpriseVoice) + if (!enterpriseVoice) { ddlPhoneNumber.Text = ""; tbPin.Text = ""; } - if (EnterpriseVoice) + if (enterpriseVoice) { string[] pinPolicy = ES.Services.Lync.GetPolicyList(PanelRequest.ItemID, LyncPolicyType.Pin, "MinPasswordLength"); if (pinPolicy != null) @@ -115,9 +118,15 @@ namespace WebsitePanel.Portal.Lync if (res.IsSuccess && res.ErrorCodes.Count == 0) { + PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); + bool enterpriseVoiceQuota = Utils.CheckQouta(Quotas.LYNC_ENTERPRISEVOICE, cntx); + + string lineUri = ""; + if (enterpriseVoiceQuota) lineUri = ddlPhoneNumber.SelectedItem.Text + ":" + tbPin.Text; + //#1 LyncUser lyncUser = ES.Services.Lync.GetLyncUserGeneralSettings(PanelRequest.ItemID, accountId); - ES.Services.Lync.SetLyncUserGeneralSettings(PanelRequest.ItemID, accountId, lyncUser.SipAddress, ddlPhoneNumber.SelectedItem.Text + ":" + tbPin.Text); + ES.Services.Lync.SetLyncUserGeneralSettings(PanelRequest.ItemID, accountId, lyncUser.SipAddress, lineUri); Response.Redirect(EditUrl("AccountID", accountId.ToString(), "edit_lync_user", "SpaceID=" + PanelSecurity.PackageId, diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx.cs index 14651246..b92a3b37 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/Lync/LyncEditUser.ascx.cs @@ -70,21 +70,24 @@ namespace WebsitePanel.Portal.Lync protected void Page_PreRender(object sender, EventArgs e) { - bool EnterpriseVoice = false; + PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); + bool enterpriseVoiceQuota = Utils.CheckQouta(Quotas.LYNC_ENTERPRISEVOICE, cntx); + + bool enterpriseVoice = false; WebsitePanel.Providers.HostedSolution.LyncUserPlan plan = planSelector.plan; if (plan != null) - EnterpriseVoice = plan.EnterpriseVoice; + enterpriseVoice = plan.EnterpriseVoice && enterpriseVoiceQuota && (ddlPhoneNumber.Items.Count > 0); - pnEnterpriseVoice.Visible = EnterpriseVoice && (ddlPhoneNumber.Items.Count>0); + pnEnterpriseVoice.Visible = enterpriseVoice; - if (!EnterpriseVoice) + if (!enterpriseVoice) { ddlPhoneNumber.Text = ""; tbPin.Text = ""; } - if (EnterpriseVoice) + if (enterpriseVoice) { string[] pinPolicy = ES.Services.Lync.GetPolicyList(PanelRequest.ItemID, LyncPolicyType.Pin, "MinPasswordLength"); if (pinPolicy != null) @@ -123,10 +126,16 @@ namespace WebsitePanel.Portal.Lync return; try { + PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); + bool enterpriseVoiceQuota = Utils.CheckQouta(Quotas.LYNC_ENTERPRISEVOICE, cntx); + + string lineUri = ""; + if (enterpriseVoiceQuota) lineUri = ddlPhoneNumber.SelectedItem.Text + ":" + tbPin.Text; + LyncUserResult res = ES.Services.Lync.SetUserLyncPlan(PanelRequest.ItemID, PanelRequest.AccountID, Convert.ToInt32(planSelector.planId)); if (res.IsSuccess && res.ErrorCodes.Count == 0) { - res = ES.Services.Lync.SetLyncUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID, lyncUserSettings.sipAddress, ddlPhoneNumber.SelectedItem.Text + ":" + tbPin.Text); + res = ES.Services.Lync.SetLyncUserGeneralSettings(PanelRequest.ItemID, PanelRequest.AccountID, lyncUserSettings.sipAddress, lineUri); } if (res.IsSuccess && res.ErrorCodes.Count == 0) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/PhoneNumbersAddPhoneNumber.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/PhoneNumbersAddPhoneNumber.ascx.cs index f050f67c..a6271ed6 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/PhoneNumbersAddPhoneNumber.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/PhoneNumbersAddPhoneNumber.ascx.cs @@ -30,6 +30,7 @@ using System; using System.Data; using System.Configuration; using System.Collections; +using System.Collections.Generic; using System.Web; using System.Web.Security; using System.Web.UI; @@ -73,7 +74,15 @@ namespace WebsitePanel.Portal { try { - ddlServer.DataSource = ES.Services.Servers.GetServers(); + ServerInfo[] allServers = ES.Services.Servers.GetServers(); + List servers = new List(); + foreach(ServerInfo server in allServers) + { + ServiceInfo[] service = ES.Services.Servers.GetServicesByServerIdGroupName(server.ServerId, ResourceGroups.Lync); + if (service.Length>0) servers.Add(server); + } + + ddlServer.DataSource = servers; ddlServer.DataBind(); } catch (Exception ex) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/PhoneNumbersEditPhoneNumber.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/PhoneNumbersEditPhoneNumber.ascx.cs index c056895d..97eb87ff 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/PhoneNumbersEditPhoneNumber.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/PhoneNumbersEditPhoneNumber.ascx.cs @@ -30,6 +30,7 @@ using System; using System.Data; using System.Configuration; using System.Collections; +using System.Collections.Generic; using System.Web; using System.Web.Security; using System.Web.UI; @@ -96,7 +97,16 @@ namespace WebsitePanel.Portal private void BindServers() { - ddlServer.DataSource = ES.Services.Servers.GetServers(); + ServerInfo[] allServers = ES.Services.Servers.GetServers(); + List servers = new List(); + foreach (ServerInfo server in allServers) + { + ServiceInfo[] service = ES.Services.Servers.GetServicesByServerIdGroupName(server.ServerId, ResourceGroups.Lync); + if (service.Length > 0) servers.Add(server); + } + + ddlServer.DataSource = servers; + ddlServer.DataBind(); ddlServer.Items.Insert(0, new ListItem(GetLocalizedString("Text.NotAssigned"), "")); } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/SearchBox.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/SearchBox.ascx.cs index e3a06bb8..a021d867 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/SearchBox.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserControls/SearchBox.ascx.cs @@ -79,5 +79,11 @@ namespace WebsitePanel.Portal { ddlFilterColumn.Items.Add(new ListItem(columnTitle, columnName)); } + + public override void Focus() + { + base.Focus(); + txtFilterValue.Focus(); + } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomers.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomers.ascx.cs index 6c8337c1..4227131e 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomers.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomers.ascx.cs @@ -67,8 +67,11 @@ namespace WebsitePanel.Portal gvUsers.Sort("Username", System.Web.UI.WebControls.SortDirection.Ascending); + } - } + + searchBox.Focus(); + } public string GetUserHomePageUrl(int userId) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomersSummary.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomersSummary.ascx.cs index 95f1afe8..37ce14b1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomersSummary.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserCustomersSummary.ascx.cs @@ -44,6 +44,9 @@ namespace WebsitePanel.Portal this.ContainerControl.Visible = (PanelSecurity.SelectedUser.Role != UserRole.User); lnkAllCustomers.NavigateUrl = NavigatePageURL(PortalUtils.GetUserCustomersPageId(), PortalUtils.USER_ID_PARAM, PanelSecurity.SelectedUserId.ToString()); + + if (!IsPostBack) + txtFilterValue.Focus(); } private void BindGroupings()