webdav portal root folder speed fix

This commit is contained in:
vfedosevich 2015-03-30 03:34:22 -07:00
parent c5b6c0d9f6
commit 7d075f6142
4 changed files with 147 additions and 22 deletions

View file

@ -47,7 +47,7 @@ namespace WebsitePanel.WebDav.Core.Managers
if (string.IsNullOrWhiteSpace(pathPart))
{
children = ConnectToWebDavServer().Select(x => new WebDavResource
children = GetWebDavRootItems().Select(x => new WebDavResource
{
Href = new Uri(x.Url),
ItemType = ItemType.Folder,
@ -82,10 +82,9 @@ namespace WebsitePanel.WebDav.Core.Managers
SystemFile[] items;
if (string.IsNullOrWhiteSpace(pathPart))
{
var rootItems = ConnectToWebDavServer().Select(x => x.Name).ToList();
var rootItems = GetWebDavRootItems().Select(x => x.Name).ToList();
rootItems.Insert(0, string.Empty);
items = WspContext.Services.EnterpriseStorage.SearchFiles(itemId, rootItems.ToArray(), searchValue, uesrPrincipalName, recursive);
@ -285,28 +284,11 @@ namespace WebsitePanel.WebDav.Core.Managers
}
}
private IList<SystemFile> ConnectToWebDavServer()
private IList<SystemFile> GetWebDavRootItems()
{
var rootFolders = new List<SystemFile>();
var user = WspContext.User;
var userGroups = WSP.Services.Organizations.GetSecurityGroupsByMember(user.ItemId, user.AccountId);
foreach (var folder in WSP.Services.EnterpriseStorage.GetEnterpriseFolders(WspContext.User.ItemId))
{
var permissions = WSP.Services.EnterpriseStorage.GetEnterpriseFolderPermissions(WspContext.User.ItemId, folder.Name);
foreach (var permission in permissions)
{
if ((!permission.IsGroup
&& (permission.DisplayName == user.UserName || permission.DisplayName == user.DisplayName))
|| (permission.IsGroup && userGroups.Any(x => x.DisplayName == permission.DisplayName)))
{
rootFolders.Add(folder);
break;
}
}
}
var rootFolders = WspContext.Services.EnterpriseStorage.GetUserRootFolders(user.ItemId, user.AccountId,user.UserName, user.DisplayName);
return rootFolders;
}