Merge Commit

This commit is contained in:
robvde 2013-10-20 09:26:33 +04:00
commit 9247943323
24 changed files with 946 additions and 225 deletions

View file

@ -47,6 +47,7 @@ using System.Linq;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
namespace WebsitePanel.EnterpriseServer
{
@ -304,21 +305,6 @@ namespace WebsitePanel.EnterpriseServer
if (OrganizationIdentifierExists(organizationId))
return BusinessErrorCodes.ERROR_ORG_ID_EXISTS;
// load user info
UserInfo user = PackageController.GetPackageOwner(packageId);
// get letter settings
UserSettings settings = UserController.GetUserSettings(user.UserId, UserSettings.EXCHANGE_POLICY);
bool enableDefaultGroup = true;
try
{
// parse settings
string[] parts = settings["OrgPolicy"].Split(';');
enableDefaultGroup = Convert.ToBoolean(parts[0]) && Convert.ToBoolean(parts[1]);
}
catch { /* skip */ }
// Create Organization Unit
int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.HostedOrganizations);
@ -326,7 +312,7 @@ namespace WebsitePanel.EnterpriseServer
Organization org = null;
if (!orgProxy.OrganizationExists(organizationId))
{
org = orgProxy.CreateOrganization(organizationId, enableDefaultGroup);
org = orgProxy.CreateOrganization(organizationId);
}
else
return BusinessErrorCodes.ERROR_ORG_ID_EXISTS;
@ -386,12 +372,40 @@ namespace WebsitePanel.EnterpriseServer
// register domain
DataProvider.AddExchangeOrganizationDomain(itemId, domainId, true);
if (enableDefaultGroup)
//add to exchangeAcounts
AddAccount(itemId, ExchangeAccountType.DefaultSecurityGroup, org.GroupName,
org.GroupName, null, false,
0, org.GroupName, null, 0, null);
// load user info
UserInfo user = PackageController.GetPackageOwner(packageId);
// get letter settings
UserSettings settings = UserController.GetUserSettings(user.UserId, UserSettings.EXCHANGE_POLICY);
bool enableAdditionalGroup = false;
try
{
//add to exchangeAcounts
AddAccount(itemId, ExchangeAccountType.DefaultSecurityGroup, org.GroupName,
org.GroupName, null, false,
0, org.GroupName, null, 0, null);
// parse settings
enableAdditionalGroup = Utils.ParseBool(settings["OrgPolicy"], false);
}
catch { /* skip */ }
if (enableAdditionalGroup)
{
foreach (AdditionalGroup additionalGroup in GetAdditionalGroups(settings.UserId))
{
string additionalGroupName = BuildAccountNameWithOrgId(org.OrganizationId, additionalGroup.GroupName.Replace(" ", ""), org.ServiceId);
if (orgProxy.CreateSecurityGroup(org.OrganizationId, additionalGroupName) == 0)
{
OrganizationSecurityGroup retSecurityGroup = orgProxy.GetSecurityGroupGeneralSettings(additionalGroupName, org.OrganizationId);
AddAccount(itemId, ExchangeAccountType.SecurityGroup, additionalGroupName,
additionalGroup.GroupName, null, false, 0, retSecurityGroup.SAMAccountName, null, 0, null);
}
}
}
// register organization domain service item
@ -1359,9 +1373,7 @@ namespace WebsitePanel.EnterpriseServer
TaskManager.Write("accountName :" + sAMAccountName);
TaskManager.Write("upn :" + upn);
bool enableDefaultGroup = !string.IsNullOrEmpty(org.SecurityGroup);
if (orgProxy.CreateUser(org.OrganizationId, sAMAccountName, displayName, upn, password, enabled, enableDefaultGroup) == 0)
if (orgProxy.CreateUser(org.OrganizationId, sAMAccountName, displayName, upn, password, enabled) == 0)
{
accountName = sAMAccountName;
OrganizationUser retUser = orgProxy.GetUserGeneralSettings(sAMAccountName, org.OrganizationId);
@ -1522,7 +1534,7 @@ namespace WebsitePanel.EnterpriseServer
/// <param name="name"> The name. </param>
/// <param name="serviceId"> The service identifier. </param>
/// <returns> The account name with organization Id. </returns>
private static string BuildAccountNameWithOrgId(string orgId, string name, int serviceId)
public static string BuildAccountNameWithOrgId(string orgId, string name, int serviceId)
{
name = ((orgId.Length + name.Length) > 19 && name.Length > 9) ? name.Substring(0, (19 - orgId.Length) < 10 ? 10 : 19 - orgId.Length) : name;
@ -2236,6 +2248,45 @@ namespace WebsitePanel.EnterpriseServer
mailboxManagerActions.ToString(), samAccountName, CryptoUtils.Encrypt(accountPassword), mailboxPlanId, (string.IsNullOrEmpty(subscriberNumber) ? null : subscriberNumber.Trim()));
}
#region Additional Default Groups
public static List<AdditionalGroup> GetAdditionalGroups(int userId)
{
List<AdditionalGroup> additionalGroups = new List<AdditionalGroup>();
IDataReader reader = DataProvider.GetAdditionalGroups(userId);
while (reader.Read())
{
additionalGroups.Add(new AdditionalGroup
{
GroupId = (int)reader["ID"],
GroupName = (string)reader["GroupName"]
});
}
reader.Close();
return additionalGroups;
}
public static void UpdateAdditionalGroup(int groupId, string groupName)
{
DataProvider.UpdateAdditionalGroup(groupId, groupName);
}
public static void DeleteAdditionalGroup(int groupId)
{
DataProvider.DeleteAdditionalGroup(groupId);
}
public static int AddAdditionalGroup(int userId, string groupName)
{
return DataProvider.AddAdditionalGroup(userId, groupName);
}
#endregion
public static int CreateSecurityGroup(int itemId, string displayName)
{
if (string.IsNullOrEmpty(displayName))