diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/ExchangeServerProxy.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/ExchangeServerProxy.cs index 341ae893..b074daa5 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/ExchangeServerProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Client/ExchangeServerProxy.cs @@ -26,7 +26,6 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - //------------------------------------------------------------------------------ // // This code was generated by a tool. @@ -114,6 +113,8 @@ namespace WebsitePanel.EnterpriseServer { private System.Threading.SendOrPostCallback DisableMailboxOperationCompleted; + private System.Threading.SendOrPostCallback GetMailboxAdvancedSettingsOperationCompleted; + private System.Threading.SendOrPostCallback GetMailboxGeneralSettingsOperationCompleted; private System.Threading.SendOrPostCallback SetMailboxGeneralSettingsOperationCompleted; @@ -304,6 +305,9 @@ namespace WebsitePanel.EnterpriseServer { /// public event DisableMailboxCompletedEventHandler DisableMailboxCompleted; + /// + public event GetMailboxAdvancedSettingsCompletedEventHandler GetMailboxAdvancedSettingsCompleted; + /// public event GetMailboxGeneralSettingsCompletedEventHandler GetMailboxGeneralSettingsCompleted; @@ -1775,6 +1779,50 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetMailboxAdvancedSettings", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public ExchangeMailbox GetMailboxAdvancedSettings(int itemId, int accountId) { + object[] results = this.Invoke("GetMailboxAdvancedSettings", new object[] { + itemId, + accountId}); + return ((ExchangeMailbox)(results[0])); + } + + /// + public System.IAsyncResult BeginGetMailboxAdvancedSettings(int itemId, int accountId, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetMailboxAdvancedSettings", new object[] { + itemId, + accountId}, callback, asyncState); + } + + /// + public ExchangeMailbox EndGetMailboxAdvancedSettings(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((ExchangeMailbox)(results[0])); + } + + /// + public void GetMailboxAdvancedSettingsAsync(int itemId, int accountId) { + this.GetMailboxAdvancedSettingsAsync(itemId, accountId, null); + } + + /// + public void GetMailboxAdvancedSettingsAsync(int itemId, int accountId, object userState) { + if ((this.GetMailboxAdvancedSettingsOperationCompleted == null)) { + this.GetMailboxAdvancedSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetMailboxAdvancedSettingsOperationCompleted); + } + this.InvokeAsync("GetMailboxAdvancedSettings", new object[] { + itemId, + accountId}, this.GetMailboxAdvancedSettingsOperationCompleted, userState); + } + + private void OnGetMailboxAdvancedSettingsOperationCompleted(object arg) { + if ((this.GetMailboxAdvancedSettingsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetMailboxAdvancedSettingsCompleted(this, new GetMailboxAdvancedSettingsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + /// [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetMailboxGeneralSettings", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] public ExchangeMailbox GetMailboxGeneralSettings(int itemId, int accountId) { @@ -5196,6 +5244,32 @@ namespace WebsitePanel.EnterpriseServer { } } + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + public delegate void GetMailboxAdvancedSettingsCompletedEventHandler(object sender, GetMailboxAdvancedSettingsCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetMailboxAdvancedSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetMailboxAdvancedSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public ExchangeMailbox Result { + get { + this.RaiseExceptionIfNecessary(); + return ((ExchangeMailbox)(this.results[0])); + } + } + } + /// [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] public delegate void GetMailboxGeneralSettingsCompletedEventHandler(object sender, GetMailboxGeneralSettingsCompletedEventArgs e); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esExchangeServer.asmx.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esExchangeServer.asmx.cs index d3da1430..0dc14964 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esExchangeServer.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer/esExchangeServer.asmx.cs @@ -236,12 +236,19 @@ namespace WebsitePanel.EnterpriseServer } + [WebMethod] + public ExchangeMailbox GetMailboxAdvancedSettings(int itemId, int accountId) + { + return ExchangeServerController.GetMailboxAdvancedSettings(itemId, accountId); + } + [WebMethod] public ExchangeMailbox GetMailboxGeneralSettings(int itemId, int accountId) { return ExchangeServerController.GetMailboxGeneralSettings(itemId, accountId); } + [WebMethod] public int SetMailboxGeneralSettings(int itemId, int accountId, bool hideAddressBook, bool disabled) { diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx index ee430246..0f583fb1 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -5164,4 +5164,22 @@ Enable Lync User Plans Editing + + Failed to apply plans template + + + Succesfully applied plans template + + + Failed to match plans + + + Succesfully plans matched and applied + + + Failed to apply plans template + + + Succesfully applied plans template + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SettingsExchangeMailboxPlansPolicy.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SettingsExchangeMailboxPlansPolicy.ascx.resx index 055532df..84e8e718 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SettingsExchangeMailboxPlansPolicy.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SettingsExchangeMailboxPlansPolicy.ascx.resx @@ -213,4 +213,10 @@ * + + Add Mailbox Plans Template to All Tenants + + + Match Mailbox Plan to User + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsExchangeMailboxPlansPolicy.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsExchangeMailboxPlansPolicy.ascx index 9df47609..d1150ca3 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsExchangeMailboxPlansPolicy.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsExchangeMailboxPlansPolicy.ascx @@ -2,8 +2,11 @@ <%@ Register Src="ExchangeServer/UserControls/SizeBox.ascx" TagName="SizeBox" TagPrefix="wsp" %> <%@ Register Src="ExchangeServer/UserControls/DaysBox.ascx" TagName="DaysBox" TagPrefix="wsp" %> <%@ Register Src="UserControls/CollapsiblePanel.ascx" TagName="CollapsiblePanel" TagPrefix="wsp" %> +<%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %> +<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> - + + @@ -184,5 +187,15 @@ Text="Add New Mailboxplan" CssClass="Button1" OnClick="btnAddMailboxPlan_Click" /> +
+ +
- +
+ +
+ \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsExchangeMailboxPlansPolicy.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsExchangeMailboxPlansPolicy.ascx.cs index c17886c6..7169e55a 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsExchangeMailboxPlansPolicy.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsExchangeMailboxPlansPolicy.ascx.cs @@ -238,5 +238,188 @@ namespace WebsitePanel.Portal settings[UserSettings.DEFAULT_MAILBOXPLANS] = writer.ToString(); } + + protected void btnAddMailboxPlanToOrganizations_Click(object sender, EventArgs e) + { + AddMailboxPlanToOrganizations("ServerAdmin"); + } + + private void AddMailboxPlanToOrganizations(string serverAdmin) + { + UserInfo ServerAdminInfo = ES.Services.Users.GetUserByUsername(serverAdmin); + + if (ServerAdminInfo == null) return; + + UserInfo[] UsersInfo = ES.Services.Users.GetUsers(ServerAdminInfo.UserId, true); + + try + { + foreach (UserInfo ui in UsersInfo) + { + PackageInfo[] Packages = ES.Services.Packages.GetPackages(ui.UserId); + + if ((Packages != null) & (Packages.GetLength(0) > 0)) + { + foreach (PackageInfo Package in Packages) + { + Providers.HostedSolution.Organization[] orgs = null; + + orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(Package.PackageId, false); + + if ((orgs != null) & (orgs.GetLength(0) > 0)) + { + foreach (Organization org in orgs) + { + if (!string.IsNullOrEmpty(org.GlobalAddressList)) + { + ExchangeMailboxPlan[] plans = ES.Services.ExchangeServer.GetExchangeMailboxPlans(org.Id); + + foreach (ExchangeMailboxPlan p in list) + { + if (!PlanExists(p, plans)) ES.Services.ExchangeServer.AddExchangeMailboxPlan(org.Id, p); + } + } + } + } + } + } + } + messageBox.ShowSuccessMessage("EXCHANGE_APPLYPLANTEMPLATE"); + } + catch (Exception ex) + { + messageBox.ShowErrorMessage("EXCHANGE_APPLYPLANTEMPLATE", ex); + } + } + + private bool PlanExists(ExchangeMailboxPlan plan, ExchangeMailboxPlan[] plans) + { + bool result = false; + + foreach (ExchangeMailboxPlan p in plans) + { + if (p.MailboxPlan.ToLower() == plan.MailboxPlan.ToLower()) + { + result = true; + break; + } + } + return result; + } + + protected void btnMatchMailboxPlanToUser_Click(object sender, EventArgs e) + { + MatchMailboxPlanToUser("serverAdmin"); + } + + private void MatchMailboxPlanToUser(string serverAdmin) + { + UserInfo ServerAdminInfo = ES.Services.Users.GetUserByUsername(serverAdmin); + + if (ServerAdminInfo == null) return; + + UserInfo[] UsersInfo = ES.Services.Users.GetUsers(ServerAdminInfo.UserId, true); + + try + { + foreach (UserInfo ui in UsersInfo) + { + PackageInfo[] Packages = ES.Services.Packages.GetPackages(ui.UserId); + + if ((Packages != null) & (Packages.GetLength(0) > 0)) + { + foreach (PackageInfo Package in Packages) + { + Providers.HostedSolution.Organization[] orgs = null; + + orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(Package.PackageId, false); + + if ((orgs != null) & (orgs.GetLength(0) > 0)) + { + foreach (Organization org in orgs) + { + if (!string.IsNullOrEmpty(org.GlobalAddressList)) + { + ExchangeMailboxPlan[] plans = ES.Services.ExchangeServer.GetExchangeMailboxPlans(org.Id); + + ExchangeAccount[] mailboxes = ES.Services.ExchangeServer.GetAccounts(org.Id, ExchangeAccountType.Mailbox); + + ExchangeAccount[] rooms = ES.Services.ExchangeServer.GetAccounts(org.Id, ExchangeAccountType.Room); + + ExchangeAccount[] equipment = ES.Services.ExchangeServer.GetAccounts(org.Id, ExchangeAccountType.Equipment); + + MatchExchangeAccountToPlan(org.Id, mailboxes, plans); + MatchExchangeAccountToPlan(org.Id, rooms, plans); + MatchExchangeAccountToPlan(org.Id, equipment, plans); + } + } + } + } + } + } + messageBox.ShowSuccessMessage("EXCHANGE_MATCHPLANS"); + } + catch (Exception ex) + { + messageBox.ShowErrorMessage("EXCHANGE_MATCHPLANS", ex); + } + } + + private void MatchExchangeAccountToPlan(int itemId, ExchangeAccount[] mailboxes, ExchangeMailboxPlan[] plans) + { + + foreach (ExchangeAccount a in mailboxes) + { + if (string.IsNullOrEmpty(a.MailboxPlan)) + { + ExchangeMailbox mailbox = ES.Services.ExchangeServer.GetMailboxAdvancedSettings(itemId, a.AccountId); + + if (mailbox != null) + { + List pl = new List(); + //sort a list of similar MAPI + foreach (ExchangeMailboxPlan p in plans) + { + if (p.EnableMAPI == mailbox.EnableMAPI) + pl.Add(p); + } + + //remove plans smaller than mailbox size + ExchangeMailboxPlan p3 = null; + foreach (ExchangeMailboxPlan p2 in pl) + { + if (p2.MailboxSizeMB >= (mailbox.ProhibitSendReceiveKB / 1024)) + { + if (p3 == null) + p3 = p2; + else + if ((p2.MailboxSizeMB) <= p3.MailboxSizeMB) + p3 = p2; + } + } + + // no matching plan, just match on size + if (p3 == null) + { + foreach (ExchangeMailboxPlan p in plans) + { + if (p.MailboxSizeMB >= (mailbox.ProhibitSendReceiveKB / 1024)) + { + if (p3 == null) + p3 = p; + else + if ((p.MailboxSizeMB) <= p3.MailboxSizeMB) + p3 = p; + } + } + } + + if (p3 != null) + ES.Services.ExchangeServer.SetExchangeMailboxPlan(itemId, a.AccountId, p3.MailboxPlanId); + } + } + } + } + } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsExchangeMailboxPlansPolicy.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsExchangeMailboxPlansPolicy.ascx.designer.cs index 949d2653..be8483e7 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsExchangeMailboxPlansPolicy.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsExchangeMailboxPlansPolicy.ascx.designer.cs @@ -1,32 +1,4 @@ -// Copyright (c) 2012, Outercurve Foundation. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// - Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// - Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// - Neither the name of the Outercurve Foundation nor the names of its -// contributors may be used to endorse or promote products derived from this -// software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // @@ -40,6 +12,24 @@ namespace WebsitePanel.Portal { public partial class SettingsExchangeMailboxPlansPolicy { + /// + /// asyncTasks control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks; + + /// + /// messageBox control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox; + /// /// gvMailboxPlans control. /// @@ -381,5 +371,23 @@ namespace WebsitePanel.Portal { /// To modify move field declaration from designer file to code-behind file. ///
protected global::System.Web.UI.WebControls.Button btnAddMailboxPlan; + + /// + /// btnAddMailboxPlanToOrganizations control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnAddMailboxPlanToOrganizations; + + /// + /// btnMatchMailboxPlanToUser control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnMatchMailboxPlanToUser; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx index 26602358..3ac10731 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx @@ -1,7 +1,10 @@ <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SettingsLyncUserPlansPolicy.ascx.cs" Inherits="WebsitePanel.Portal.SettingsLyncUserPlansPolicy" %> <%@ Register Src="UserControls/CollapsiblePanel.ascx" TagName="CollapsiblePanel" TagPrefix="wsp" %> +<%@ Register Src="UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %> +<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %> - + + @@ -133,5 +136,9 @@ Text="Add New plan" CssClass="Button1" OnClick="btnAddPlan_Click" /> +
+ +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx.cs index 1ff83f72..a68f007b 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx.cs @@ -256,6 +256,75 @@ namespace WebsitePanel.Portal settings[UserSettings.DEFAULT_LYNCUSERPLANS] = writer.ToString(); } + protected void btnAddPlanToOrganizations_Click(object sender, EventArgs e) + { + AddPlanToOrganizations("ServerAdmin"); + } + + + private void AddPlanToOrganizations(string serverAdmin) + { + UserInfo ServerAdminInfo = ES.Services.Users.GetUserByUsername(serverAdmin); + + if (ServerAdminInfo == null) return; + + UserInfo[] UsersInfo = ES.Services.Users.GetUsers(ServerAdminInfo.UserId, true); + + try + { + foreach (UserInfo ui in UsersInfo) + { + PackageInfo[] Packages = ES.Services.Packages.GetPackages(ui.UserId); + + if ((Packages != null) & (Packages.GetLength(0) > 0)) + { + foreach (PackageInfo Package in Packages) + { + Providers.HostedSolution.Organization[] orgs = null; + + orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(Package.PackageId, false); + + if ((orgs != null) & (orgs.GetLength(0) > 0)) + { + foreach (Organization org in orgs) + { + if (!string.IsNullOrEmpty(org.LyncTenantId)) + { + LyncUserPlan[] plans = ES.Services.Lync.GetLyncUserPlans(org.Id); + + foreach (LyncUserPlan p in list) + { + if (!PlanExists(p, plans)) ES.Services.Lync.AddLyncUserPlan(org.Id, p); + } + } + } + } + } + } + } + messageBox.ShowSuccessMessage("LYNC_APPLYPLANTEMPLATE"); + } + catch (Exception ex) + { + messageBox.ShowErrorMessage("LYNC_APPLYPLANTEMPLATE", ex); + } + } + + private bool PlanExists(LyncUserPlan plan, LyncUserPlan[] plans) + { + bool result = false; + + foreach (LyncUserPlan p in plans) + { + if (p.LyncUserPlanName.ToLower() == plan.LyncUserPlanName.ToLower()) + { + result = true; + break; + } + } + return result; + } + } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx.designer.cs index 887af2a4..813d06c8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsLyncUserPlansPolicy.ascx.designer.cs @@ -1,33 +1,4 @@ -// Copyright (c) 2012, Outercurve Foundation. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// - Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// - Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// - Neither the name of the Outercurve Foundation nor the names of its -// contributors may be used to endorse or promote products derived from this -// software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // @@ -41,6 +12,24 @@ namespace WebsitePanel.Portal { public partial class SettingsLyncUserPlansPolicy { + /// + /// asyncTasks control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.EnableAsyncTasksSupport asyncTasks; + + /// + /// messageBox control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox; + /// /// gvPlans control. /// @@ -229,5 +218,14 @@ namespace WebsitePanel.Portal { /// To modify move field declaration from designer file to code-behind file. ///
protected global::System.Web.UI.WebControls.Button btnAddPlan; + + /// + /// btnAddPlanToOrganizations control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnAddPlanToOrganizations; } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceDetails.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceDetails.ascx.cs index 35bcfb94..b4ea5185 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceDetails.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SpaceDetails.ascx.cs @@ -88,7 +88,7 @@ namespace WebsitePanel.Portal lnkEditSpaceDetails.Visible = (PanelSecurity.PackageId > 1 && !ownSpace); lnkDelete.NavigateUrl = EditUrl(PortalUtils.SPACE_ID_PARAM, PanelSecurity.PackageId.ToString(), "delete"); - if (PanelSecurity.LoggedUser.Role != UserRole.Reseller) + if (!((PanelSecurity.LoggedUser.Role == UserRole.Reseller) | (PanelSecurity.LoggedUser.Role == UserRole.Administrator))) lnkDelete.Visible = false; else lnkDelete.Visible = ((PanelSecurity.SelectedUserId != PanelSecurity.EffectiveUserId) && (PanelSecurity.PackageId > 1)); diff --git a/WebsitePanel/Sources/generate_es_proxies.bat b/WebsitePanel/Sources/generate_es_proxies.bat index d190a83a..b6a921a1 100644 --- a/WebsitePanel/Sources/generate_es_proxies.bat +++ b/WebsitePanel/Sources/generate_es_proxies.bat @@ -2,5 +2,103 @@ SET WSDL="C:\Program Files (x86)\Microsoft WSE\v3.0\Tools\WseWsdl3.exe" SET WSE_CLEAN=..\Tools\WseClean.exe SET SERVER_URL=http://localhost:9005 +REM %WSDL% %SERVER_URL%/esApplicationsInstaller.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ApplicationsInstallerProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ApplicationsInstallerProxy.cs + +REM %WSDL% %SERVER_URL%/esAuditLog.asmx /out:.\WebsitePanel.EnterpriseServer.Client\AuditLogProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\AuditLogProxy.cs + +REM %WSDL% %SERVER_URL%/esAuthentication.asmx /out:.\WebsitePanel.EnterpriseServer.Client\AuthenticationProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\AuthenticationProxy.cs + +REM %WSDL% %SERVER_URL%/esBackup.asmx /out:.\WebsitePanel.EnterpriseServer.Client\BackupProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\BackupProxy.cs + +REM %WSDL% %SERVER_URL%/esBlackBerry.asmx /out:.\WebsitePanel.EnterpriseServer.Client\BlackBerryProxy.cs /namespace:WebsitePanel.EnterpriseServer.HostedSolution /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\BlackBerryProxy.cs + +REM %WSDL% %SERVER_URL%/esComments.asmx /out:.\WebsitePanel.EnterpriseServer.Client\CommentsProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\CommentsProxy.cs + +REM %WSDL% %SERVER_URL%/esCRM.asmx /out:.\WebsitePanel.EnterpriseServer.Client\CRMProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\CRMProxy.cs + +REM %WSDL% %SERVER_URL%/esDatabaseServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\DatabaseServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\DatabaseServersProxy.cs + +REM %WSDL% %SERVER_URL%/ecServiceHandler.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ecServiceHandlerProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ecServiceHandlerProxy.cs + +REM %WSDL% %SERVER_URL%/ecStorefront.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ecStorefrontProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ecStorefrontProxy.cs + +REM %WSDL% %SERVER_URL%/ecStorehouse.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ecStorehouseProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ecStorehouseProxy.cs + %WSDL% %SERVER_URL%/esExchangeServer.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ExchangeServerProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ExchangeServerProxy.cs + +REM %WSDL% %SERVER_URL%/esExchangeHostedEdition.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ExchangeHostedEditionProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ExchangeHostedEditionProxy.cs + +REM %WSDL% %SERVER_URL%/esFiles.asmx /out:.\WebsitePanel.EnterpriseServer.Client\FilesProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\FilesProxy.cs + +REM %WSDL% %SERVER_URL%/esHostedSharePointServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\HostedSharePointServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\HostedSharePointServersProxy.cs + +REM %WSDL% %SERVER_URL%/esImport.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ImportProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ImportProxy.cs + +REM %WSDL% %SERVER_URL%/esOCS.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OCSProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OCSProxy.cs + +REM %WSDL% %SERVER_URL%/esOperatingSystems.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OperatingSystemsProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OperatingSystemsProxy.cs + +REM %WSDL% %SERVER_URL%/esOrganizations.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs /namespace:WebsitePanel.EnterpriseServer.HostedSolution /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs + +REM %WSDL% %SERVER_URL%/esPackages.asmx /out:.\WebsitePanel.EnterpriseServer.Client\PackagesProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\PackagesProxy.cs + +REM %WSDL% %SERVER_URL%/esScheduler.asmx /out:.\WebsitePanel.EnterpriseServer.Client\SchedulerProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\SchedulerProxy.cs + +REM %WSDL% %SERVER_URL%/esServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\ServersProxy.cs + +REM %WSDL% %SERVER_URL%/esSharePointServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\SharePointServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\SharePointServersProxy.cs + +REM %WSDL% %SERVER_URL%/esSystem.asmx /out:.\WebsitePanel.EnterpriseServer.Client\SystemProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\SystemProxy.cs + +REM %WSDL% %SERVER_URL%/esTasks.asmx /out:.\WebsitePanel.EnterpriseServer.Client\TasksProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\TasksProxy.cs + +REM %WSDL% %SERVER_URL%/esUsers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\UsersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\UsersProxy.cs + +REM %WSDL% %SERVER_URL%/esVirtualizationServer.asmx /out:.\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxy.cs + +REM %WSDL% %SERVER_URL%/esWebApplicationGallery.asmx /out:.\WebsitePanel.EnterpriseServer.Client\WebApplicationGalleryProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\WebApplicationGalleryProxy.cs + +REM %WSDL% %SERVER_URL%/esWebServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\WebServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\WebServersProxy.cs + +REM %WSDL% %SERVER_URL%/esVirtualizationServerForPrivateCloud.asmx /out:.\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxyForPrivateCloud.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxyForPrivateCloud.cs + +REM %WSDL% %SERVER_URL%/esLync.asmx /out:.\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient +REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\LyncProxy.cs + + + + + + + +