add default group for creating enterprise folder

save enterprise settings for enterprise folder
This commit is contained in:
vfedosevich 2014-02-11 21:13:00 +03:00
parent 329e9c10fe
commit 878f67013e
17 changed files with 491 additions and 174 deletions

View file

@ -3092,6 +3092,17 @@ namespace WebsitePanel.EnterpriseServer
);
}
public static IDataReader GetOrganizationGroupsByDisplayName(int itemId, string displayName)
{
return SqlHelper.ExecuteReader(
ConnectionString,
CommandType.StoredProcedure,
"GetOrganizationGroupsByDisplayName",
new SqlParameter("@ItemID", itemId),
new SqlParameter("@DisplayName", displayName)
);
}
public static IDataReader SearchOrganizationAccounts(int actorId, int itemId,
string filterColumn, string filterValue, string sortColumn, bool includeMailboxes)
{
@ -4158,7 +4169,7 @@ namespace WebsitePanel.EnterpriseServer
#region Enterprise Storage
public static int AddEntepriseFolder(int itemId, string folderName)
public static int AddEntepriseFolder(int itemId, string folderName, string locationDrive, string homeFolder, string domain)
{
SqlParameter prmId = new SqlParameter("@FolderID", SqlDbType.Int);
prmId.Direction = ParameterDirection.Output;
@ -4169,7 +4180,11 @@ namespace WebsitePanel.EnterpriseServer
"AddEnterpriseFolder",
prmId,
new SqlParameter("@ItemID", itemId),
new SqlParameter("@FolderName", folderName));
new SqlParameter("@FolderName", folderName),
new SqlParameter("@LocationDrive", locationDrive),
new SqlParameter("@HomeFolder", homeFolder),
new SqlParameter("@Domain", domain)
);
// read identity
return Convert.ToInt32(prmId.Value);
@ -4197,6 +4212,27 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@FolderQuota", folderQuota));
}
public static IDataReader GetEnterpriseFolders(int itemId)
{
return SqlHelper.ExecuteReader(
ConnectionString,
CommandType.StoredProcedure,
"GetEnterpriseFolders",
new SqlParameter("@ItemID", itemId)
);
}
public static IDataReader GetEnterpriseFolder(int itemId, string folderName)
{
return SqlHelper.ExecuteReader(
ConnectionString,
CommandType.StoredProcedure,
"GetEnterpriseFolder",
new SqlParameter("@ItemID", itemId),
new SqlParameter("@FolderName", folderName)
);
}
#endregion
}
}

View file

@ -87,12 +87,12 @@ namespace WebsitePanel.EnterpriseServer
public static ResultObject CreateFolder(int itemId)
{
return CreateFolder(itemId, string.Empty);
return CreateFolder(itemId, string.Empty, false);
}
public static ResultObject CreateFolder(int itemId, string folderName)
public static ResultObject CreateFolder(int itemId, string folderName, bool addDefaultGroup)
{
return CreateFolderInternal(itemId, folderName);
return CreateFolderInternal(itemId, folderName, addDefaultGroup);
}
public static ResultObject DeleteFolder(int itemId)
@ -354,7 +354,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(serviceId);
return es.GetFolders(org.OrganizationId);
var webDavSettings = ObjectUtils.CreateListFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolders(itemId)).ToArray();
return es.GetFolders(org.OrganizationId, webDavSettings);
}
catch (Exception ex)
{
@ -375,7 +378,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
return es.GetFolder(org.OrganizationId, folderName);
var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, folderName));
return es.GetFolder(org.OrganizationId, folderName, webDavSetting);
}
catch (Exception ex)
{
@ -396,9 +402,12 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
if (es.GetFolder(org.OrganizationId, newFolder) == null)
var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, oldFolder));
if (webDavSetting == null)
{
SystemFile folder = es.RenameFolder(org.OrganizationId, oldFolder, newFolder);
SystemFile folder = es.RenameFolder(org.OrganizationId, oldFolder, newFolder, webDavSetting);
DataProvider.UpdateEnterpriseFolder(itemId, oldFolder, newFolder, folder.FRSMQuotaGB);
@ -413,7 +422,7 @@ namespace WebsitePanel.EnterpriseServer
}
}
protected static ResultObject CreateFolderInternal(int itemId, string folderName)
protected static ResultObject CreateFolderInternal(int itemId, string folderName, bool addDefaultGroup)
{
ResultObject result = TaskManager.StartResultTask<ResultObject>("ENTERPRISE_STORAGE", "CREATE_FOLDER");
@ -430,11 +439,46 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
if (es.GetFolder(org.OrganizationId, folderName) == null)
var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, folderName));
if (webDavSetting == null)
{
int esId = PackageController.GetPackageServiceId(org.PackageId, ResourceGroups.EnterpriseStorage);
StringDictionary esSesstings = ServerController.GetServiceSettings(esId);
es.CreateFolder(org.OrganizationId, folderName);
DataProvider.AddEntepriseFolder(itemId, folderName);
DataProvider.AddEntepriseFolder(itemId, folderName, esSesstings["LocationDrive"],
esSesstings["UsersHome"], esSesstings["UsersDomain"]);
if (addDefaultGroup)
{
var groupName = string.Format("{0} Folder Users", folderName);
var accountId = ObjectUtils.CreateListFromDataReader<ExchangeAccount>(
DataProvider.GetOrganizationGroupsByDisplayName(itemId, groupName)).Select(g => g.AccountId).FirstOrDefault();
if (accountId == null)
{
accountId = OrganizationController.CreateSecurityGroup(itemId, groupName);
}
var securityGroup = OrganizationController.GetSecurityGroupGeneralSettings(itemId, accountId);
var rules = new List<WebDavFolderRule>() {
new WebDavFolderRule
{
Roles = new List<string>() { securityGroup.AccountName },
Read = true,
Write = true,
Pathes = new List<string>() { "*" }
}
};
es.SetFolderWebDavRules(org.OrganizationId, folderName, webDavSetting, rules.ToArray());
}
}
else
{
@ -519,7 +563,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
es.DeleteFolder(org.OrganizationId, folderName);
var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, folderName));
es.DeleteFolder(org.OrganizationId, folderName, webDavSetting);
DataProvider.DeleteEnterpriseFolder(itemId, folderName);
}
@ -595,7 +642,11 @@ namespace WebsitePanel.EnterpriseServer
if (CheckUsersDomainExistsInternal(itemId, org.PackageId))
{
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
List<SystemFile> folders = es.GetFolders(org.OrganizationId).Where(x => x.Name.Contains(filterValue)).ToList();
var webDavSettings = ObjectUtils.CreateListFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolders(itemId)).ToArray();
List<SystemFile> folders = es.GetFolders(org.OrganizationId, webDavSettings).Where(x => x.Name.Contains(filterValue)).ToList();
switch (sortColumn)
{
@ -720,7 +771,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
es.SetFolderWebDavRules(org.OrganizationId, folder, rules);
var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, folder));
es.SetFolderWebDavRules(org.OrganizationId, folder, webDavSetting, rules);
}
catch (Exception ex)
{
@ -754,7 +808,10 @@ namespace WebsitePanel.EnterpriseServer
EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));
return es.GetFolderWebDavRules(org.OrganizationId, folder);
var webDavSetting = ObjectUtils.FillObjectFromDataReader<WebDavSetting>(
DataProvider.GetEnterpriseFolder(itemId, folder));
return es.GetFolderWebDavRules(org.OrganizationId, folder, webDavSetting);
}
catch (Exception ex)
{