add new functionallity "Additional Default Groups"

This commit is contained in:
vfedosevich 2013-10-17 16:09:28 +03:00
parent b56981b1a6
commit 9d5e559604
22 changed files with 913 additions and 279 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);
@ -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))