This commit is contained in:
vfedosevich 2015-02-25 04:27:52 -08:00
commit 84877d8c13
80 changed files with 6526 additions and 58 deletions

View file

@ -1197,6 +1197,24 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@itemName", itemName));
}
public static int GetServiceItemsCountByNameAndServiceId(int actorId, int serviceId, string groupName,
string itemName, string itemTypeName)
{
int res = 0;
object obj = SqlHelper.ExecuteScalar(ConnectionString, CommandType.StoredProcedure,
ObjectQualifier + "GetServiceItemsCountByNameAndServiceId",
new SqlParameter("@ActorID", actorId),
new SqlParameter("@ServiceId", serviceId),
new SqlParameter("@ItemName", itemName),
new SqlParameter("@GroupName", groupName),
new SqlParameter("@ItemTypeName", itemTypeName));
if (!int.TryParse(obj.ToString(), out res)) return -1;
return res;
}
public static int AddServiceItem(int actorId, int serviceId, int packageId, string itemName,
string itemTypeName, string xmlProperties)
{

View file

@ -125,8 +125,8 @@ namespace WebsitePanel.EnterpriseServer
if (serviceId == 0)
return BusinessErrorCodes.ERROR_MSSQL_RESOURCE_UNAVAILABLE;
// check package items
if (PackageController.GetPackageItemByName(item.PackageId, groupName, item.Name, typeof(SqlDatabase)) != null)
// check service items
if (PackageController.GetServiceItemsCountByNameAndServiceId(serviceId, groupName, item.Name, typeof(SqlDatabase)) > 0)
return BusinessErrorCodes.ERROR_MSSQL_DATABASES_PACKAGE_ITEM_EXISTS;
// place log record

View file

@ -137,7 +137,6 @@ namespace WebsitePanel.EnterpriseServer
return domainResult;
// create service item
item.Enabled = true;
item.MaxMailboxSize = GetMaxMailBoxSize(item.PackageId, item);
// add service item
@ -159,7 +158,11 @@ namespace WebsitePanel.EnterpriseServer
{
return BusinessErrorCodes.ERROR_MAIL_LICENSE_DOMAIN_QUOTA;
}
if (ex.Message != null && ex.Message.Contains("The maximum number of users for the server has been reached"))
if (ex.Message.Contains("Password doesn't meet complexity"))
{
return BusinessErrorCodes.ERROR_MAIL_ACCOUNT_PASSWORD_NOT_COMPLEXITY;
}
if (ex.Message.Contains("The maximum number of users for the server has been reached"))
{
return BusinessErrorCodes.ERROR_MAIL_LICENSE_USERS_QUOTA;
}
@ -203,7 +206,6 @@ namespace WebsitePanel.EnterpriseServer
MailServer mail = new MailServer();
ServiceProviderProxy.Init(mail, origItem.ServiceId);
item.Name = origItem.Name;
item.Enabled = true;
item.MaxMailboxSize = GetMaxMailBoxSize(origItem.PackageId, item);
@ -224,6 +226,11 @@ namespace WebsitePanel.EnterpriseServer
}
catch (Exception ex)
{
if (ex.Message.Contains("Password doesn't meet complexity"))
{
return BusinessErrorCodes.ERROR_MAIL_ACCOUNT_PASSWORD_NOT_COMPLEXITY;
}
throw TaskManager.WriteError(ex);
}
finally

View file

@ -1380,6 +1380,14 @@ namespace WebsitePanel.EnterpriseServer
return CreateServiceItem(dvItem[0], dsItem.Tables[1].DefaultView);
}
public static int GetServiceItemsCountByNameAndServiceId(int serviceId, string groupName, string itemName, Type itemType)
{
string itemTypeName = ObjectUtils.GetTypeFullName(itemType);
return DataProvider.GetServiceItemsCountByNameAndServiceId(SecurityContext.User.UserId,
serviceId, groupName, itemName, itemTypeName);
}
public static bool CheckServiceItemExists(string itemName, Type itemType)
{
return CheckServiceItemExists(itemName, null, itemType);

View file

@ -168,9 +168,9 @@ namespace WebsitePanel.EnterpriseServer
return RemoveRdsServerFromCollectionInternal(itemId, rdsServer, rdsCollection);
}
public static ResultObject RemoveRdsServerFromOrganization(int rdsServerId)
public static ResultObject RemoveRdsServerFromOrganization(int itemId, int rdsServerId)
{
return RemoveRdsServerFromOrganizationInternal(rdsServerId);
return RemoveRdsServerFromOrganizationInternal(itemId, rdsServerId);
}
public static ResultObject UpdateRdsServer(RdsServer rdsServer)
@ -268,6 +268,16 @@ namespace WebsitePanel.EnterpriseServer
return RestartRdsServerInternal(itemId, fqdnName);
}
public static List<OrganizationUser> GetRdsCollectionLocalAdmins(int collectionId)
{
return GetRdsCollectionLocalAdminsInternal(collectionId);
}
public static ResultObject SaveRdsCollectionLocalAdmins(OrganizationUser[] users, int collectionId)
{
return SaveRdsCollectionLocalAdminsInternal(users, collectionId);
}
private static RdsCollection GetRdsCollectionInternal(int collectionId)
{
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
@ -300,6 +310,66 @@ namespace WebsitePanel.EnterpriseServer
return collection;
}
private static List<OrganizationUser> GetRdsCollectionLocalAdminsInternal(int collectionId)
{
var result = new List<OrganizationUser>();
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
var servers = ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByCollectionId(collection.Id)).ToList();
Organization org = OrganizationController.GetOrganization(collection.ItemId);
if (org == null)
{
return result;
}
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
var organizationUsers = OrganizationController.GetOrganizationUsersPaged(collection.ItemId, null, null, null, 0, Int32.MaxValue).PageUsers;
var organizationAdmins = rds.GetRdsCollectionLocalAdmins(servers.First().FqdName);
return organizationUsers.Where(o => organizationAdmins.Select(a => a.ToLower()).Contains(o.DomainUserName.ToLower())).ToList();
}
private static ResultObject SaveRdsCollectionLocalAdminsInternal(OrganizationUser[] users, int collectionId)
{
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "SAVE_LOCAL_ADMINS");
try
{
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
Organization org = OrganizationController.GetOrganization(collection.ItemId);
if (org == null)
{
result.IsSuccess = false;
result.AddError("", new NullReferenceException("Organization not found"));
return result;
}
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
var servers = ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByCollectionId(collection.Id)).ToList();
rds.SaveRdsCollectionLocalAdmins(users, servers.Select(s => s.FqdName).ToArray());
}
catch (Exception ex)
{
throw TaskManager.WriteError(ex);
}
finally
{
if (!result.IsSuccess)
{
TaskManager.CompleteResultTask(result);
}
else
{
TaskManager.CompleteResultTask();
}
}
return result;
}
private static RdsCollectionSettings GetRdsCollectionSettingsInternal(int collectionId)
{
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
@ -960,11 +1030,12 @@ namespace WebsitePanel.EnterpriseServer
rds.AddSessionHostFeatureToServer(rdsServer.FqdName);
}
rds.MoveRdsServerToTenantOU(rdsServer.FqdName, org.OrganizationId);
DataProvider.AddRDSServerToOrganization(itemId, serverId);
}
catch (Exception ex)
{
result.AddError("REMOTE_DESKTOP_SERVICES_ADD_RDS_SERVER_TO_ORGANIZATION", ex);
throw TaskManager.WriteError(ex);
}
finally
{
@ -981,17 +1052,29 @@ namespace WebsitePanel.EnterpriseServer
return result;
}
private static ResultObject RemoveRdsServerFromOrganizationInternal(int rdsServerId)
private static ResultObject RemoveRdsServerFromOrganizationInternal(int itemId, int rdsServerId)
{
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "REMOVE_RDS_SERVER_FROM_ORGANIZATION");
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "REMOVE_RDS_SERVER_FROM_ORGANIZATION");
try
{
Organization org = OrganizationController.GetOrganization(itemId);
if (org == null)
{
result.IsSuccess = false;
result.AddError("", new NullReferenceException("Organization not found"));
return result;
}
var rdsServer = ObjectUtils.FillObjectFromDataReader<RdsServer>(DataProvider.GetRDSServerById(rdsServerId));
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
rds.RemoveRdsServerFromTenantOU(rdsServer.FqdName, org.OrganizationId);
DataProvider.RemoveRDSServerFromOrganization(rdsServerId);
}
catch (Exception ex)
{
result.AddError("REMOTE_DESKTOP_SERVICES_REMOVE_RDS_SERVER_FROM_ORGANIZATION", ex);
throw TaskManager.WriteError(ex);
}
finally
{
@ -1542,7 +1625,7 @@ namespace WebsitePanel.EnterpriseServer
foreach (var server in servers)
{
RemoveRdsServerFromOrganization(server.Id);
RemoveRdsServerFromOrganization(itemId, server.Id);
}
}
catch (Exception ex)