Check OrgId policy while adding hosted organization
if "Automated Hosted Organization" checked on.
This commit is contained in:
parent
306e3147eb
commit
252d518537
4 changed files with 138 additions and 3 deletions
|
@ -63,6 +63,8 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
[System.Xml.Serialization.XmlIncludeAttribute(typeof(ServiceProviderItem))]
|
||||
public partial class esOrganizations : Microsoft.Web.Services3.WebServicesClientProtocol {
|
||||
|
||||
private System.Threading.SendOrPostCallback CheckOrgIdExistsOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback CreateOrganizationOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetRawOrganizationsPagedOperationCompleted;
|
||||
|
@ -118,6 +120,9 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
this.Url = "http://localhost:9002/esOrganizations.asmx";
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public event CheckOrgIdExistsCompletedEventHandler CheckOrgIdExistsCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event CreateOrganizationCompletedEventHandler CreateOrganizationCompleted;
|
||||
|
||||
|
@ -193,6 +198,55 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
/// <remarks/>
|
||||
public event GetPasswordPolicyCompletedEventHandler GetPasswordPolicyCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CheckOrgIdExists", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public bool CheckOrgIdExists(string orgId)
|
||||
{
|
||||
object[] results = this.Invoke("CheckOrgIdExists", new object[] {
|
||||
orgId});
|
||||
return ((bool)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginCheckOrgIdExists(string orgId, System.AsyncCallback callback, object asyncState)
|
||||
{
|
||||
return this.BeginInvoke("CheckOrgIdExists", new object[] {
|
||||
orgId}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public bool EndCheckOrgIdExists(System.IAsyncResult asyncResult)
|
||||
{
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((bool)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void CheckOrgIdExistsAsync(string orgId)
|
||||
{
|
||||
this.CheckOrgIdExistsAsync(orgId, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void CheckOrgIdExistsAsync(string orgId, object userState)
|
||||
{
|
||||
if ((this.CheckOrgIdExistsOperationCompleted == null))
|
||||
{
|
||||
this.CheckOrgIdExistsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckOrgIdExistsOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("CheckOrgIdExists", new object[] {
|
||||
orgId}, this.CheckOrgIdExistsOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnCheckOrgIdExistsOperationCompleted(object arg)
|
||||
{
|
||||
if ((this.CheckOrgIdExistsCompleted != null))
|
||||
{
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.CheckOrgIdExistsCompleted(this, new CheckOrgIdExistsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CreateOrganization", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public int CreateOrganization(int packageId, string organizationID, string organizationName, string domainName) {
|
||||
|
@ -204,6 +258,8 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
return ((int)(results[0]));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginCreateOrganization(int packageId, string organizationID, string organizationName, string domainName, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("CreateOrganization", new object[] {
|
||||
|
@ -1586,6 +1642,36 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.17929")]
|
||||
public delegate void CheckOrgIdExistsCompletedEventHandler(object sender, CheckOrgIdExistsCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.17929")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class CheckOrgIdExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
|
||||
{
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal CheckOrgIdExistsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState)
|
||||
{
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public bool Result
|
||||
{
|
||||
get
|
||||
{
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((bool)(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void CreateOrganizationCompletedEventHandler(object sender, CreateOrganizationCompletedEventArgs e);
|
||||
|
|
|
@ -265,7 +265,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return itemId;
|
||||
}
|
||||
|
||||
private static bool OrganizationIdentifierExists(string organizationId)
|
||||
public static bool OrganizationIdentifierExists(string organizationId)
|
||||
{
|
||||
return DataProvider.ExchangeOrganizationExists(organizationId);
|
||||
}
|
||||
|
|
|
@ -45,6 +45,12 @@ namespace WebsitePanel.EnterpriseServer
|
|||
{
|
||||
#region Organizations
|
||||
|
||||
[WebMethod]
|
||||
public bool CheckOrgIdExists(string orgId)
|
||||
{
|
||||
return OrganizationController.OrganizationIdentifierExists(orgId);
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public int CreateOrganization(int packageId, string organizationID, string organizationName, string domainName)
|
||||
{
|
||||
|
|
|
@ -27,8 +27,11 @@
|
|||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
|
||||
namespace WebsitePanel.Portal
|
||||
{
|
||||
|
@ -176,8 +179,15 @@ namespace WebsitePanel.Portal
|
|||
{
|
||||
if (user.Role != UserRole.Reseller)
|
||||
{
|
||||
UserSettings settings = ES.Services.Users.GetUserSettings(user.UserId, UserSettings.EXCHANGE_POLICY);
|
||||
string orgId = domainName.ToLower();
|
||||
|
||||
ES.Services.Organizations.CreateOrganization(result.Result, domainName.ToLower(), domainName.ToLower(), domainName.ToLower());
|
||||
if (settings != null && settings["OrgIdPolicy"] != null)
|
||||
{
|
||||
orgId = GetOrgId(settings["OrgIdPolicy"], domainName, result.Result);
|
||||
}
|
||||
|
||||
ES.Services.Organizations.CreateOrganization(result.Result, orgId, domainName.ToLower(), domainName.ToLower());
|
||||
|
||||
if (result.Result < 0)
|
||||
{
|
||||
|
@ -199,6 +209,39 @@ namespace WebsitePanel.Portal
|
|||
Response.Redirect(PortalUtils.GetSpaceHomePageUrl(result.Result));
|
||||
}
|
||||
|
||||
private string GetOrgId(string orgIdPolicy, string domainName, int packageId)
|
||||
{
|
||||
string[] values = orgIdPolicy.Split(';');
|
||||
|
||||
if (values.Length > 1 && Convert.ToBoolean(values[0]))
|
||||
{
|
||||
try
|
||||
{
|
||||
int maxLength = Convert.ToInt32(values[1]);
|
||||
|
||||
if (domainName.Length > maxLength)
|
||||
{
|
||||
domainName = domainName.Substring(0, maxLength);
|
||||
string orgId = domainName;
|
||||
int counter = 0;
|
||||
|
||||
while (ES.Services.Organizations.CheckOrgIdExists(orgId))
|
||||
{
|
||||
counter++;
|
||||
orgId = maxLength > 3 ? string.Format("{0}{1}", orgId.Substring(0, orgId.Length - 3), counter.ToString("d3")) : counter.ToString("d3");
|
||||
}
|
||||
|
||||
return orgId;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
return domainName;
|
||||
}
|
||||
|
||||
protected void ddlPlans_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
BindHostingPlan();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue