Files: rename ParentFolderID to FolderId.
Optimization
This commit is contained in:
parent
2959acb262
commit
645749fbc7
@ -325,7 +325,7 @@ namespace ASC.Files.Core.Data
|
||||
var newFolder = new DbFolder
|
||||
{
|
||||
Id = 0,
|
||||
ParentId = folder.ParentFolderID,
|
||||
ParentId = folder.FolderID,
|
||||
Title = folder.Title,
|
||||
CreateOn = TenantUtil.DateTimeToUtc(folder.CreateOn),
|
||||
CreateBy = folder.CreateBy,
|
||||
@ -353,7 +353,7 @@ namespace ASC.Files.Core.Data
|
||||
|
||||
//full path to root
|
||||
var oldTree = FilesDbContext.Tree
|
||||
.Where(r => r.FolderId == folder.ParentFolderID);
|
||||
.Where(r => r.FolderId == folder.FolderID);
|
||||
|
||||
foreach (var o in oldTree)
|
||||
{
|
||||
@ -569,7 +569,7 @@ namespace ASC.Files.Core.Data
|
||||
folder.FolderType = FolderType.DEFAULT;
|
||||
|
||||
var copy = ServiceProvider.GetService<Folder<int>>();
|
||||
copy.ParentFolderID = toFolderId;
|
||||
copy.FolderID = toFolderId;
|
||||
copy.RootFolderId = toFolder.RootFolderId;
|
||||
copy.RootFolderCreator = toFolder.RootFolderCreator;
|
||||
copy.RootFolderType = toFolder.RootFolderType;
|
||||
@ -912,7 +912,7 @@ namespace ASC.Files.Core.Data
|
||||
if (createIfNotExists)
|
||||
{
|
||||
var folder = ServiceProvider.GetService<Folder<int>>();
|
||||
folder.ParentFolderID = 0;
|
||||
folder.FolderID = 0;
|
||||
switch (bunch)
|
||||
{
|
||||
case my:
|
||||
@ -1080,7 +1080,7 @@ namespace ASC.Files.Core.Data
|
||||
if (r == null) return null;
|
||||
var result = ServiceProvider.GetService<Folder<int>>();
|
||||
result.ID = r.Folder.Id;
|
||||
result.ParentFolderID = r.Folder.ParentId;
|
||||
result.FolderID = r.Folder.ParentId;
|
||||
result.Title = r.Folder.Title;
|
||||
result.CreateOn = TenantUtil.DateTimeFromUtc(r.Folder.CreateOn);
|
||||
result.CreateBy = r.Folder.CreateBy;
|
||||
@ -1132,7 +1132,7 @@ namespace ASC.Files.Core.Data
|
||||
break;
|
||||
}
|
||||
|
||||
if (result.FolderType != FolderType.DEFAULT && 0.Equals(result.ParentFolderID)) result.RootFolderType = result.FolderType;
|
||||
if (result.FolderType != FolderType.DEFAULT && 0.Equals(result.FolderID)) result.RootFolderType = result.FolderType;
|
||||
if (result.FolderType != FolderType.DEFAULT && result.RootFolderCreator == default) result.RootFolderCreator = result.CreateBy;
|
||||
if (result.FolderType != FolderType.DEFAULT && 0.Equals(result.RootFolderId)) result.RootFolderId = result.ID;
|
||||
|
||||
|
@ -77,8 +77,6 @@ namespace ASC.Files.Core
|
||||
FileConverter = fileConverter;
|
||||
}
|
||||
|
||||
public T FolderID { get; set; }
|
||||
|
||||
public int Version { get; set; }
|
||||
|
||||
[JsonPropertyName("version_group")]
|
||||
@ -242,19 +240,5 @@ namespace ASC.Files.Core
|
||||
|
||||
[NonSerialized]
|
||||
private readonly FileConverter FileConverter;
|
||||
|
||||
private T _folderIdDisplay;
|
||||
|
||||
[JsonPropertyName("folder_id")]
|
||||
public override T FolderIdDisplay
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_folderIdDisplay != null) return _folderIdDisplay;
|
||||
|
||||
return FolderID;
|
||||
}
|
||||
set { _folderIdDisplay = value; }
|
||||
}
|
||||
}
|
||||
}
|
@ -129,13 +129,22 @@ namespace ASC.Files.Core
|
||||
{
|
||||
}
|
||||
|
||||
public T ID { get; set; }
|
||||
public T ID { get; set; }
|
||||
|
||||
public T FolderID { get; set; }
|
||||
|
||||
private T _folderIdDisplay;
|
||||
|
||||
[JsonPropertyName("folder_id")]
|
||||
public abstract T FolderIdDisplay
|
||||
public T FolderIdDisplay
|
||||
{
|
||||
get;
|
||||
set;
|
||||
get
|
||||
{
|
||||
if (_folderIdDisplay != null) return _folderIdDisplay;
|
||||
|
||||
return FolderID;
|
||||
}
|
||||
set { _folderIdDisplay = value; }
|
||||
}
|
||||
|
||||
public T RootFolderId { get; set; }
|
||||
|
@ -68,8 +68,6 @@ namespace ASC.Files.Core
|
||||
{
|
||||
public FolderType FolderType { get; set; }
|
||||
|
||||
public T ParentFolderID { get; set; }
|
||||
|
||||
public int TotalFiles { get; set; }
|
||||
|
||||
public int TotalSubFolders { get; set; }
|
||||
@ -86,19 +84,6 @@ namespace ASC.Files.Core
|
||||
set { NewForMe = Convert.ToInt32(value); }
|
||||
}
|
||||
|
||||
private T _folderIdDisplay;
|
||||
|
||||
public override T FolderIdDisplay
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_folderIdDisplay != null) return _folderIdDisplay;
|
||||
|
||||
return ParentFolderID;
|
||||
}
|
||||
set { _folderIdDisplay = value; }
|
||||
}
|
||||
|
||||
public Folder(Global global)
|
||||
: base(global)
|
||||
{
|
||||
|
@ -300,8 +300,8 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
var prevVisible = breadCrumbs.ElementAtOrDefault(breadCrumbs.Count() - 2);
|
||||
if (prevVisible != null)
|
||||
{
|
||||
if (prevVisible is Folder<string> f1) parent.ParentFolderID = (T)Convert.ChangeType(f1.ID, typeof(T));
|
||||
if (prevVisible is Folder<int> f2) parent.ParentFolderID = (T)Convert.ChangeType(f2.ID, typeof(T));
|
||||
if (prevVisible is Folder<string> f1) parent.FolderID = (T)Convert.ChangeType(f1.ID, typeof(T));
|
||||
if (prevVisible is Folder<int> f2) parent.FolderID = (T)Convert.ChangeType(f2.ID, typeof(T));
|
||||
}
|
||||
|
||||
parent.Shareable = FileSharing.CanSetAccess(parent)
|
||||
@ -398,7 +398,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
{
|
||||
var newFolder = ServiceProvider.GetService<Folder<T>>();
|
||||
newFolder.Title = title;
|
||||
newFolder.ParentFolderID = parent.ID;
|
||||
newFolder.FolderID = parent.ID;
|
||||
|
||||
var folderId = folderDao.SaveFolder(newFolder);
|
||||
var folder = folderDao.GetFolder(folderId);
|
||||
@ -446,7 +446,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
|
||||
if (folder.RootFolderType == FolderType.USER
|
||||
&& !Equals(folder.RootFolderCreator, AuthContext.CurrentAccount.ID)
|
||||
&& !FileSecurity.CanRead(folderDao.GetFolder(folder.ParentFolderID)))
|
||||
&& !FileSecurity.CanRead(folderDao.GetFolder(folder.FolderID)))
|
||||
{
|
||||
folder.FolderIdDisplay = GlobalFolderHelper.GetFolderShare<T>();
|
||||
}
|
||||
@ -1556,7 +1556,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
var folderIdToMy = folderDao.GetFolderIDUser(true, userTo.ID);
|
||||
var newFolder = ServiceProvider.GetService<Folder<T>>();
|
||||
newFolder.Title = string.Format(CustomNamingPeople.Substitute<FilesCommonResource>("TitleDeletedUserFolder"), userFrom.DisplayUserName(false, DisplayUserSettingsHelper));
|
||||
newFolder.ParentFolderID = folderIdToMy;
|
||||
newFolder.FolderID = folderIdToMy;
|
||||
|
||||
var newFolderTo = folderDao.SaveFolder(newFolder);
|
||||
|
||||
|
@ -110,6 +110,11 @@ namespace ASC.Files.Core.Security
|
||||
public List<Tuple<FileEntry<T>, bool>> CanRead<T>(IEnumerable<FileEntry<T>> entry, Guid userId)
|
||||
{
|
||||
return Can(entry, userId, FilesSecurityActions.Read);
|
||||
}
|
||||
|
||||
public List<Tuple<FileEntry<T>, bool>> CanRead<T>(IEnumerable<FileEntry<T>> entry)
|
||||
{
|
||||
return Can(entry, AuthContext.CurrentAccount.ID, FilesSecurityActions.Read);
|
||||
}
|
||||
|
||||
public bool CanRead<T>(FileEntry<T> entry, Guid userId)
|
||||
|
@ -128,7 +128,7 @@ namespace ASC.Files.Thirdparty.Box
|
||||
var folder = GetFolder();
|
||||
|
||||
folder.ID = MakeId(boxFolder.Id);
|
||||
folder.ParentFolderID = isRoot ? null : MakeId(GetParentFolderId(boxFolder));
|
||||
folder.FolderID = isRoot ? null : MakeId(GetParentFolderId(boxFolder));
|
||||
folder.CreateOn = isRoot ? ProviderInfo.CreateOn : (boxFolder.CreatedAt ?? default);
|
||||
folder.ModifiedOn = isRoot ? ProviderInfo.CreateOn : (boxFolder.ModifiedAt ?? default);
|
||||
|
||||
|
@ -184,9 +184,9 @@ namespace ASC.Files.Thirdparty.Box
|
||||
return RenameFolder(folder, folder.Title);
|
||||
}
|
||||
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var boxFolderId = MakeBoxId(folder.ParentFolderID);
|
||||
var boxFolderId = MakeBoxId(folder.FolderID);
|
||||
|
||||
folder.Title = GetAvailableTitle(folder.Title, boxFolderId, IsExist);
|
||||
|
||||
|
@ -111,7 +111,7 @@ namespace ASC.Files.Core.Thirdparty
|
||||
|
||||
var toFolder1 = ServiceProvider.GetService<Folder<TTo>>();
|
||||
toFolder1.Title = fromFolder.Title;
|
||||
toFolder1.ParentFolderID = toConverter(toRootFolderId);
|
||||
toFolder1.FolderID = toConverter(toRootFolderId);
|
||||
|
||||
var toFolder = toFolderDao.GetFolder(fromFolder.Title, toConverter(toRootFolderId));
|
||||
var toFolderId = toFolder != null
|
||||
|
@ -123,7 +123,7 @@ namespace ASC.Files.Thirdparty.Dropbox
|
||||
var folder = GetFolder();
|
||||
|
||||
folder.ID = MakeId(dropboxFolder);
|
||||
folder.ParentFolderID = isRoot ? null : MakeId(GetParentFolderPath(dropboxFolder));
|
||||
folder.FolderID = isRoot ? null : MakeId(GetParentFolderPath(dropboxFolder));
|
||||
folder.CreateOn = isRoot ? ProviderInfo.CreateOn : default;
|
||||
folder.ModifiedOn = isRoot ? ProviderInfo.CreateOn : default;
|
||||
folder.Title = MakeFolderTitle(dropboxFolder);
|
||||
|
@ -185,9 +185,9 @@ namespace ASC.Files.Thirdparty.Dropbox
|
||||
return RenameFolder(folder, folder.Title);
|
||||
}
|
||||
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var dropboxFolderPath = MakeDropboxPath(folder.ParentFolderID);
|
||||
var dropboxFolderPath = MakeDropboxPath(folder.FolderID);
|
||||
|
||||
folder.Title = GetAvailableTitle(folder.Title, dropboxFolderPath, IsExist);
|
||||
|
||||
|
@ -137,7 +137,7 @@ namespace ASC.Files.Thirdparty.GoogleDrive
|
||||
var folder = GetFolder();
|
||||
|
||||
folder.ID = MakeId(driveEntry);
|
||||
folder.ParentFolderID = isRoot ? null : MakeId(GetParentDriveId(driveEntry));
|
||||
folder.FolderID = isRoot ? null : MakeId(GetParentDriveId(driveEntry));
|
||||
folder.CreateOn = isRoot ? ProviderInfo.CreateOn : (driveEntry.CreatedTime ?? default);
|
||||
folder.ModifiedOn = isRoot ? ProviderInfo.CreateOn : (driveEntry.ModifiedTime ?? default);
|
||||
|
||||
|
@ -181,9 +181,9 @@ namespace ASC.Files.Thirdparty.GoogleDrive
|
||||
return RenameFolder(folder, folder.Title);
|
||||
}
|
||||
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var driveFolderId = MakeDriveId(folder.ParentFolderID);
|
||||
var driveFolderId = MakeDriveId(folder.FolderID);
|
||||
|
||||
var driveFolder = ProviderInfo.Storage.InsertEntry(null, folder.Title, driveFolderId, true);
|
||||
|
||||
|
@ -280,7 +280,7 @@ namespace ASC.Files.Thirdparty
|
||||
|
||||
InitFileEntryError(folder, entry);
|
||||
|
||||
folder.ParentFolderID = null;
|
||||
folder.FolderID = null;
|
||||
|
||||
return folder;
|
||||
}
|
||||
|
@ -123,7 +123,7 @@ namespace ASC.Files.Thirdparty.OneDrive
|
||||
var folder = GetFolder();
|
||||
|
||||
folder.ID = MakeId(isRoot ? string.Empty : onedriveFolder.Id);
|
||||
folder.ParentFolderID = isRoot ? null : MakeId(GetParentFolderId(onedriveFolder));
|
||||
folder.FolderID = isRoot ? null : MakeId(GetParentFolderId(onedriveFolder));
|
||||
folder.CreateOn = isRoot ? ProviderInfo.CreateOn : (onedriveFolder.CreatedDateTime.HasValue ? TenantUtil.DateTimeFromUtc(onedriveFolder.CreatedDateTime.Value.DateTime) : default);
|
||||
folder.ModifiedOn = isRoot ? ProviderInfo.CreateOn : (onedriveFolder.LastModifiedDateTime.HasValue ? TenantUtil.DateTimeFromUtc(onedriveFolder.LastModifiedDateTime.Value.DateTime) : default);
|
||||
|
||||
|
@ -181,9 +181,9 @@ namespace ASC.Files.Thirdparty.OneDrive
|
||||
return RenameFolder(folder, folder.Title);
|
||||
}
|
||||
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var onedriveFolderId = MakeOneDriveId(folder.ParentFolderID);
|
||||
var onedriveFolderId = MakeOneDriveId(folder.FolderID);
|
||||
|
||||
folder.Title = GetAvailableTitle(folder.Title, onedriveFolderId, IsExist);
|
||||
|
||||
|
@ -156,14 +156,14 @@ filterType, subjectGroup, subjectID, searchText, searchSubfolders, checkShare);
|
||||
folder.ID = folderId;
|
||||
return newFolderId;
|
||||
}
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var folderId = folder.ParentFolderID;
|
||||
var folderId = folder.FolderID;
|
||||
var selector = GetSelector(folderId);
|
||||
folder.ParentFolderID = selector.ConvertId(folderId);
|
||||
folder.FolderID = selector.ConvertId(folderId);
|
||||
var folderDao = selector.GetFolderDao(folderId);
|
||||
var newFolderId = folderDao.SaveFolder(folder);
|
||||
folder.ParentFolderID = folderId;
|
||||
folder.FolderID = folderId;
|
||||
return newFolderId;
|
||||
|
||||
}
|
||||
@ -277,7 +277,7 @@ filterType, subjectGroup, subjectID, searchText, searchSubfolders, checkShare);
|
||||
var folderId = folder.ID;
|
||||
var selector = GetSelector(folderId);
|
||||
folder.ID = selector.ConvertId(folderId);
|
||||
folder.ParentFolderID = selector.ConvertId(folder.ParentFolderID);
|
||||
folder.FolderID = selector.ConvertId(folder.FolderID);
|
||||
var folderDao = selector.GetFolderDao(folderId);
|
||||
return folderDao.RenameFolder(folder, newTitle);
|
||||
}
|
||||
|
@ -183,9 +183,9 @@ namespace ASC.Files.Thirdparty.SharePoint
|
||||
return ProviderInfo.ToFolder(savedfolder).ID;
|
||||
}
|
||||
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var parentFolder = ProviderInfo.GetFolderById(folder.ParentFolderID);
|
||||
var parentFolder = ProviderInfo.GetFolderById(folder.FolderID);
|
||||
|
||||
folder.Title = GetAvailableTitle(folder.Title, parentFolder, IsExist);
|
||||
|
||||
|
@ -500,7 +500,7 @@ namespace ASC.Files.Thirdparty.SharePoint
|
||||
if (folder is SharePointFolderErrorEntry errorFolder)
|
||||
{
|
||||
result.ID = MakeId(errorFolder.ID);
|
||||
result.ParentFolderID = null;
|
||||
result.FolderID = null;
|
||||
result.CreateBy = Owner;
|
||||
result.CreateOn = DateTime.UtcNow;
|
||||
result.FolderType = FolderType.DEFAULT;
|
||||
@ -523,7 +523,7 @@ namespace ASC.Files.Thirdparty.SharePoint
|
||||
var isRoot = folder.ServerRelativeUrl == SpRootFolderId;
|
||||
|
||||
result.ID = MakeId(isRoot ? "" : folder.ServerRelativeUrl);
|
||||
result.ParentFolderID = isRoot ? null : MakeId(GetParentFolderId(folder.ServerRelativeUrl));
|
||||
result.FolderID = isRoot ? null : MakeId(GetParentFolderId(folder.ServerRelativeUrl));
|
||||
result.CreateBy = Owner;
|
||||
result.CreateOn = CreateOn;
|
||||
result.FolderType = FolderType.DEFAULT;
|
||||
|
@ -281,7 +281,7 @@ namespace ASC.Files.Thirdparty.Sharpbox
|
||||
var folder = GetFolder();
|
||||
|
||||
folder.ID = MakeId(fsEntry);
|
||||
folder.ParentFolderID = isRoot ? null : MakeId(fsEntry.Parent);
|
||||
folder.FolderID = isRoot ? null : MakeId(fsEntry.Parent);
|
||||
folder.CreateOn = isRoot ? ProviderInfo.CreateOn : fsEntry.Modified;
|
||||
folder.ModifiedOn = isRoot ? ProviderInfo.CreateOn : fsEntry.Modified;
|
||||
folder.RootFolderId = MakeId(RootFolder());
|
||||
|
@ -186,9 +186,9 @@ namespace ASC.Files.Thirdparty.Sharpbox
|
||||
var savedfolder = ProviderInfo.Storage.CreateFolder(MakePath(folder.ID));
|
||||
return MakeId(savedfolder);
|
||||
}
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var parentFolder = GetFolderById(folder.ParentFolderID);
|
||||
var parentFolder = GetFolderById(folder.FolderID);
|
||||
|
||||
folder.Title = GetAvailableTitle(folder.Title, parentFolder, IsExist);
|
||||
|
||||
@ -390,7 +390,7 @@ namespace ASC.Files.Thirdparty.Sharpbox
|
||||
}
|
||||
else
|
||||
{
|
||||
var parentFolder = GetFolderById(folder.ParentFolderID);
|
||||
var parentFolder = GetFolderById(folder.FolderID);
|
||||
newTitle = GetAvailableTitle(newTitle, parentFolder, IsExist);
|
||||
|
||||
//rename folder
|
||||
|
@ -566,7 +566,7 @@ namespace ASC.Web.Files.Classes
|
||||
{
|
||||
var folder = ServiceProvider.GetService<Folder<T>>();
|
||||
folder.Title = folderName;
|
||||
folder.ParentFolderID = folderId;
|
||||
folder.FolderID = folderId;
|
||||
|
||||
var subFolderId = folderDao.SaveFolder(folder);
|
||||
|
||||
|
@ -199,7 +199,7 @@ namespace ASC.Api.Documents
|
||||
{
|
||||
var folderDao = DaoFactory.GetFolderDao<T>();
|
||||
return folderDao.GetFolders(folders.ToArray())
|
||||
.Select(FolderWrapperHelper.Get)
|
||||
.Select(r => FolderWrapperHelper.Get(r))
|
||||
.Cast<FileEntryWrapper>();
|
||||
}
|
||||
|
||||
@ -207,7 +207,7 @@ namespace ASC.Api.Documents
|
||||
{
|
||||
var fileDao = DaoFactory.GetFileDao<T>();
|
||||
return fileDao.GetFiles(files.ToArray())
|
||||
.Select(FilesWrapperHelper.Get)
|
||||
.Select(r => FilesWrapperHelper.Get(r))
|
||||
.Cast<FileEntryWrapper>();
|
||||
}
|
||||
}
|
||||
|
@ -25,8 +25,10 @@
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
|
||||
using System.Linq;
|
||||
|
||||
using ASC.Api.Core;
|
||||
using ASC.Api.Utils;
|
||||
using ASC.Common;
|
||||
@ -171,47 +173,68 @@ namespace ASC.Api.Documents
|
||||
FileUtility = fileUtility;
|
||||
}
|
||||
|
||||
public FileWrapper<T> Get<T>(File<T> file)
|
||||
public FileWrapper<T> Get<T>(File<T> file, List<Tuple<FileEntry<T>, bool>> folders = null)
|
||||
{
|
||||
var result = Get<FileWrapper<T>, T>(file);
|
||||
var result = GetFileWrapper(file);
|
||||
|
||||
result.FolderId = file.FolderID;
|
||||
if (file.RootFolderType == FolderType.USER
|
||||
&& !Equals(file.RootFolderCreator, AuthContext.CurrentAccount.ID))
|
||||
{
|
||||
result.RootFolderType = FolderType.SHARE;
|
||||
var folderDao = DaoFactory.GetFolderDao<T>();
|
||||
var parentFolder = folderDao.GetFolder(file.FolderID);
|
||||
if (!FileSecurity.CanRead(parentFolder))
|
||||
{
|
||||
result.FolderId = GlobalFolderHelper.GetFolderShare<T>();
|
||||
var folderDao = DaoFactory.GetFolderDao<T>();
|
||||
FileEntry<T> parentFolder;
|
||||
|
||||
if(folders != null)
|
||||
{
|
||||
var folderWithRight = folders.FirstOrDefault(f => f.Item1.ID.Equals(file.FolderID));
|
||||
if (folderWithRight == null || !folderWithRight.Item2)
|
||||
{
|
||||
result.FolderId = GlobalFolderHelper.GetFolderShare<T>();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
parentFolder = folderDao.GetFolder(file.FolderID);
|
||||
if (!FileSecurity.CanRead(parentFolder))
|
||||
{
|
||||
result.FolderId = GlobalFolderHelper.GetFolderShare<T>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
result.FileExst = FileUtility.GetFileExtension(file.Title);
|
||||
result.FileType = FileUtility.GetFileTypeByExtention(result.FileExst);
|
||||
|
||||
result.Version = file.Version;
|
||||
result.VersionGroup = file.VersionGroup;
|
||||
result.ContentLength = file.ContentLengthString;
|
||||
result.FileStatus = file.FileStatus;
|
||||
result.PureContentLength = file.ContentLength.NullIfDefault();
|
||||
result.Comment = file.Comment;
|
||||
return result;
|
||||
}
|
||||
|
||||
private FileWrapper<T> GetFileWrapper<T>(File<T> file)
|
||||
{
|
||||
var result = Get<FileWrapper<T>, T>(file);
|
||||
|
||||
result.FileExst = FileUtility.GetFileExtension(file.Title);
|
||||
result.FileType = FileUtility.GetFileTypeByExtention(result.FileExst);
|
||||
result.Version = file.Version;
|
||||
result.VersionGroup = file.VersionGroup;
|
||||
result.ContentLength = file.ContentLengthString;
|
||||
result.FileStatus = file.FileStatus;
|
||||
result.PureContentLength = file.ContentLength.NullIfDefault();
|
||||
result.Comment = file.Comment;
|
||||
result.Encrypted = file.Encrypted.NullIfDefault();
|
||||
result.Locked = file.Locked.NullIfDefault();
|
||||
result.LockedBy = file.LockedBy;
|
||||
|
||||
try
|
||||
{
|
||||
result.ViewUrl = CommonLinkUtility.GetFullAbsolutePath(file.DownloadUrl);
|
||||
|
||||
result.WebUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, file.Title, file.ID));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//Don't catch anything here because of httpcontext
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
try
|
||||
{
|
||||
result.ViewUrl = CommonLinkUtility.GetFullAbsolutePath(file.DownloadUrl);
|
||||
|
||||
result.WebUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, file.Title, file.ID));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//Don't catch anything here because of httpcontext
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
@ -32,6 +32,7 @@ using System.Text.Json.Serialization;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Files.Core;
|
||||
using ASC.Files.Core.Security;
|
||||
using ASC.Web.Files.Services.WCFService;
|
||||
|
||||
namespace ASC.Api.Documents
|
||||
@ -104,20 +105,29 @@ namespace ASC.Api.Documents
|
||||
|
||||
[Scope]
|
||||
public class FolderContentWrapperHelper
|
||||
{
|
||||
{
|
||||
private FileSecurity FileSecurity { get; }
|
||||
private IDaoFactory DaoFactory { get; }
|
||||
private FileWrapperHelper FileWrapperHelper { get; }
|
||||
private FolderWrapperHelper FolderWrapperHelper { get; }
|
||||
|
||||
public FolderContentWrapperHelper(
|
||||
public FolderContentWrapperHelper(
|
||||
FileSecurity fileSecurity,
|
||||
IDaoFactory daoFactory,
|
||||
FileWrapperHelper fileWrapperHelper,
|
||||
FolderWrapperHelper folderWrapperHelper)
|
||||
{
|
||||
{
|
||||
FileSecurity = fileSecurity;
|
||||
DaoFactory = daoFactory;
|
||||
FileWrapperHelper = fileWrapperHelper;
|
||||
FolderWrapperHelper = folderWrapperHelper;
|
||||
}
|
||||
|
||||
public FolderContentWrapper<T> Get<T>(DataWrapper<T> folderItems, int startIndex)
|
||||
{
|
||||
{
|
||||
var foldersIntWithRights = GetFoldersIntWithRights<int>();
|
||||
var foldersStringWithRights = GetFoldersIntWithRights<string>();
|
||||
|
||||
var result = new FolderContentWrapper<T>
|
||||
{
|
||||
Files = folderItems.Entries
|
||||
@ -127,11 +137,11 @@ namespace ASC.Api.Documents
|
||||
FileEntryWrapper wrapper = null;
|
||||
if (r is File<int> fol1)
|
||||
{
|
||||
wrapper = FileWrapperHelper.Get(fol1);
|
||||
wrapper = FileWrapperHelper.Get(fol1, foldersIntWithRights);
|
||||
}
|
||||
if (r is File<string> fol2)
|
||||
{
|
||||
wrapper = FileWrapperHelper.Get(fol2);
|
||||
wrapper = FileWrapperHelper.Get(fol2, foldersStringWithRights);
|
||||
}
|
||||
|
||||
return wrapper;
|
||||
@ -145,11 +155,11 @@ namespace ASC.Api.Documents
|
||||
FileEntryWrapper wrapper = null;
|
||||
if (r is Folder<int> fol1)
|
||||
{
|
||||
wrapper = FolderWrapperHelper.Get(fol1);
|
||||
wrapper = FolderWrapperHelper.Get(fol1, foldersIntWithRights);
|
||||
}
|
||||
if (r is Folder<string> fol2)
|
||||
{
|
||||
wrapper = FolderWrapperHelper.Get(fol2);
|
||||
wrapper = FolderWrapperHelper.Get(fol2, foldersStringWithRights);
|
||||
}
|
||||
|
||||
return wrapper;
|
||||
@ -164,7 +174,15 @@ namespace ASC.Api.Documents
|
||||
result.Total = folderItems.Total;
|
||||
result.New = folderItems.New;
|
||||
|
||||
return result;
|
||||
return result;
|
||||
|
||||
|
||||
List<Tuple<FileEntry<T1>, bool>> GetFoldersIntWithRights<T1>()
|
||||
{
|
||||
var folderDao = DaoFactory.GetFolderDao<T1>();
|
||||
var folders = folderDao.GetFolders(folderItems.Entries.OfType<FileEntry<T1>>().Select(r => r.FolderID).ToArray());
|
||||
return FileSecurity.CanRead(folders);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,9 @@
|
||||
|
||||
|
||||
using System;
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
using ASC.Api.Core;
|
||||
using ASC.Api.Utils;
|
||||
using ASC.Common;
|
||||
@ -113,27 +115,49 @@ namespace ASC.Api.Documents
|
||||
GlobalFolderHelper = globalFolderHelper;
|
||||
}
|
||||
|
||||
public FolderWrapper<T> Get<T>(Folder<T> folder)
|
||||
public FolderWrapper<T> Get<T>(Folder<T> folder, List<Tuple<FileEntry<T>, bool>> folders = null)
|
||||
{
|
||||
var result = Get<FolderWrapper<T>, T>(folder);
|
||||
result.ParentId = folder.ParentFolderID;
|
||||
var result = GetFolderWrapper(folder);
|
||||
|
||||
result.ParentId = folder.FolderID;
|
||||
|
||||
if (folder.RootFolderType == FolderType.USER
|
||||
&& !Equals(folder.RootFolderCreator, AuthContext.CurrentAccount.ID))
|
||||
{
|
||||
result.RootFolderType = FolderType.SHARE;
|
||||
|
||||
var folderDao = DaoFactory.GetFolderDao<T>();
|
||||
var parentFolder = folderDao.GetFolder(folder.ParentFolderID);
|
||||
if (!FileSecurity.CanRead(parentFolder))
|
||||
result.ParentId = GlobalFolderHelper.GetFolderShare<T>();
|
||||
var folderDao = DaoFactory.GetFolderDao<T>();
|
||||
FileEntry<T> parentFolder;
|
||||
|
||||
if (folders != null)
|
||||
{
|
||||
var folderWithRight = folders.FirstOrDefault(f => f.Item1.ID.Equals(folder.FolderID));
|
||||
if (folderWithRight == null || !folderWithRight.Item2)
|
||||
{
|
||||
result.ParentId = GlobalFolderHelper.GetFolderShare<T>();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
parentFolder = folderDao.GetFolder(folder.FolderID);
|
||||
if (!FileSecurity.CanRead(parentFolder))
|
||||
{
|
||||
result.ParentId = GlobalFolderHelper.GetFolderShare<T>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private FolderWrapper<T> GetFolderWrapper<T>(Folder<T> folder)
|
||||
{
|
||||
var result = Get<FolderWrapper<T>, T>(folder);
|
||||
result.FilesCount = folder.TotalFiles;
|
||||
result.FoldersCount = folder.TotalSubFolders;
|
||||
result.IsShareable = folder.Shareable.NullIfDefault();
|
||||
result.New = folder.NewForMe;
|
||||
|
||||
return result;
|
||||
result.New = folder.NewForMe;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
@ -199,7 +199,7 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
{
|
||||
Error = FilesCommonResource.ErrorMassage_SecurityException_MoveFolder;
|
||||
}
|
||||
else if (!Equals((folder.ParentFolderID ?? default).ToString(), toFolderId.ToString()) || _resolveType == FileConflictResolveType.Duplicate)
|
||||
else if (!Equals((folder.FolderID ?? default).ToString(), toFolderId.ToString()) || _resolveType == FileConflictResolveType.Duplicate)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -697,7 +697,7 @@ namespace ASC.Web.Files.Utils
|
||||
//Fake folder. Don't send request to third party
|
||||
var folder = ServiceProvider.GetService<Folder<string>>();
|
||||
|
||||
folder.ParentFolderID = parentFolderId;
|
||||
folder.FolderID = parentFolderId;
|
||||
|
||||
folder.ID = providerInfo.RootFolderId;
|
||||
folder.CreateBy = providerInfo.Owner;
|
||||
|
@ -569,7 +569,7 @@ namespace ASC.Web.Files.Utils
|
||||
var parentId =
|
||||
entry.FileEntryType == FileEntryType.File
|
||||
? ((File<T>)entry).FolderID
|
||||
: ((Folder<T>)entry).ParentFolderID;
|
||||
: ((Folder<T>)entry).FolderID;
|
||||
|
||||
var parentEntry = entryTags.Keys.FirstOrDefault(entryCountTag => Equals(entryCountTag.ID, parentId));
|
||||
if (parentEntry != null)
|
||||
|
@ -213,7 +213,7 @@ namespace ASC.Web.Files.Utils
|
||||
{
|
||||
var newFolder = ServiceProvider.GetService<Folder<T>>();
|
||||
newFolder.Title = subFolderTitle;
|
||||
newFolder.ParentFolderID = folderId;
|
||||
newFolder.FolderID = folderId;
|
||||
|
||||
folderId = folderDao.SaveFolder(newFolder);
|
||||
|
||||
|
@ -1799,7 +1799,7 @@ namespace ASC.Api.Documents
|
||||
public IEnumerable<FolderWrapper<string>> GetCommonThirdPartyFolders()
|
||||
{
|
||||
var parent = FileStorageServiceInt.GetFolder(GlobalFolderHelper.FolderCommon);
|
||||
return EntryManager.GetThirpartyFolders(parent).Select(FolderWrapperHelper.Get).ToList();
|
||||
return EntryManager.GetThirpartyFolders(parent).Select(r => FolderWrapperHelper.Get(r)).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -489,13 +489,13 @@ namespace ASC.Files.Helpers
|
||||
public IEnumerable<FileWrapper<T>> GetFileVersionInfo(T fileId)
|
||||
{
|
||||
var files = FileStorageService.GetFileHistory(fileId);
|
||||
return files.Select(FileWrapperHelper.Get);
|
||||
return files.Select(r=> FileWrapperHelper.Get(r));
|
||||
}
|
||||
|
||||
public IEnumerable<FileWrapper<T>> ChangeHistory(T fileId, int version, bool continueVersion)
|
||||
{
|
||||
var history = FileStorageService.CompleteVersion(fileId, version, continueVersion).Value;
|
||||
return history.Select(FileWrapperHelper.Get);
|
||||
return history.Select(r=> FileWrapperHelper.Get(r));
|
||||
}
|
||||
|
||||
public FileWrapper<T> LockFile(T fileId, bool lockFile)
|
||||
|
@ -87,10 +87,10 @@ namespace ASC.Files.Service.Core
|
||||
.Where(f => f.Item1.RootFolderType != FolderType.TRASH && f.Item1.RootFolderType != FolderType.BUNCH)
|
||||
.ToList();
|
||||
|
||||
var parentFolderIDs = folders.Select(r => r.Item1.ParentFolderID).ToArray();
|
||||
var parentFolderIDs = folders.Select(r => r.Item1.FolderID).ToArray();
|
||||
var parentFolders = FolderDao.GetFolders(parentFolderIDs, checkShare: false);
|
||||
|
||||
return folders.Select(f => new Tuple<Feed.Aggregator.Feed, object>(ToFeed(f, parentFolders.FirstOrDefault(r => r.ID.Equals(f.Item1.ParentFolderID))), f));
|
||||
return folders.Select(f => new Tuple<Feed.Aggregator.Feed, object>(ToFeed(f, parentFolders.FirstOrDefault(r => r.ID.Equals(f.Item1.FolderID))), f));
|
||||
}
|
||||
|
||||
private Feed.Aggregator.Feed ToFeed((Folder<int>, SmallShareRecord) tuple, Folder<int> rootFolder)
|
||||
@ -109,12 +109,12 @@ namespace ASC.Files.Service.Core
|
||||
Module = Name,
|
||||
Title = folder.Title,
|
||||
ExtraLocation = rootFolder.FolderType == FolderType.DEFAULT ? rootFolder.Title : string.Empty,
|
||||
ExtraLocationUrl = rootFolder.FolderType == FolderType.DEFAULT ? FilesLinkUtility.GetFileRedirectPreviewUrl(folder.ParentFolderID, false) : string.Empty,
|
||||
ExtraLocationUrl = rootFolder.FolderType == FolderType.DEFAULT ? FilesLinkUtility.GetFileRedirectPreviewUrl(folder.FolderID, false) : string.Empty,
|
||||
Keywords = string.Format("{0}", folder.Title),
|
||||
HasPreview = false,
|
||||
CanComment = false,
|
||||
Target = shareRecord.ShareTo,
|
||||
GroupId = GetGroupId(sharedFolderItem, shareRecord.ShareBy, folder.ParentFolderID.ToString())
|
||||
GroupId = GetGroupId(sharedFolderItem, shareRecord.ShareBy, folder.FolderID.ToString())
|
||||
};
|
||||
|
||||
return feed;
|
||||
@ -129,12 +129,12 @@ namespace ASC.Files.Service.Core
|
||||
Module = Name,
|
||||
Title = folder.Title,
|
||||
ExtraLocation = rootFolder.FolderType == FolderType.DEFAULT ? rootFolder.Title : string.Empty,
|
||||
ExtraLocationUrl = rootFolder.FolderType == FolderType.DEFAULT ? FilesLinkUtility.GetFileRedirectPreviewUrl(folder.ParentFolderID, false) : string.Empty,
|
||||
ExtraLocationUrl = rootFolder.FolderType == FolderType.DEFAULT ? FilesLinkUtility.GetFileRedirectPreviewUrl(folder.FolderID, false) : string.Empty,
|
||||
Keywords = string.Format("{0}", folder.Title),
|
||||
HasPreview = false,
|
||||
CanComment = false,
|
||||
Target = null,
|
||||
GroupId = GetGroupId(folderItem, folder.CreateBy, folder.ParentFolderID.ToString())
|
||||
GroupId = GetGroupId(folderItem, folder.CreateBy, folder.FolderID.ToString())
|
||||
};
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user