This commit is contained in:
Vashchuk Nikita 2022-02-15 12:42:47 +03:00
parent 631dcdc2e8
commit 41d994ca32
3 changed files with 28 additions and 28 deletions

View File

@ -1039,11 +1039,10 @@ namespace ASC.Data.Storage.S3
private async Task<IEnumerable<S3Object>> GetS3ObjectsAsync(string domain, string path = "", bool recycle = false) private async Task<IEnumerable<S3Object>> GetS3ObjectsAsync(string domain, string path = "", bool recycle = false)
{ {
path = MakePath(domain, path) + '/'; path = MakePath(domain, path) + '/';
var tmp = await GetS3ObjectsByPathAsync(domain, path); var s30Objects = await GetS3ObjectsByPathAsync(domain, path);
var obj = tmp.ToList(); if (string.IsNullOrEmpty(_recycleDir) || !recycle) return s30Objects;
if (string.IsNullOrEmpty(_recycleDir) || !recycle) return obj; s30Objects.Concat(await GetS3ObjectsByPathAsync(domain, GetRecyclePath(path)));
obj.AddRange(await GetS3ObjectsByPathAsync(domain, GetRecyclePath(path))); return s30Objects;
return obj;
} }

View File

@ -353,7 +353,7 @@ namespace ASC.Web.Files.Services.WCFService
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/xml"); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/xml");
return response; return response;
} }
public async Task<List<FileEntry>> GetItemsAsync<TId>(IEnumerable<TId> filesId, IEnumerable<TId> foldersId, FilterType filter, bool subjectGroup, string subjectID, string search) public async Task<List<FileEntry>> GetItemsAsync<TId>(IEnumerable<TId> filesId, IEnumerable<TId> foldersId, FilterType filter, bool subjectGroup, string subjectID, string search)
{ {
var subjectId = string.IsNullOrEmpty(subjectID) ? Guid.Empty : new Guid(subjectID); var subjectId = string.IsNullOrEmpty(subjectID) ? Guid.Empty : new Guid(subjectID);
@ -558,7 +558,7 @@ namespace ASC.Web.Files.Services.WCFService
result = result.OfType<File<T>>().Where(f => previewedType.Contains(FileUtility.GetFileTypeByFileName(f.Title))); result = result.OfType<File<T>>().Where(f => previewedType.Contains(FileUtility.GetFileTypeByFileName(f.Title)));
return new List<File<T>>(result); return new List<File<T>>(result);
} }
public async Task<File<T>> CreateNewFileAsync<TTemplate>(FileModel<T, TTemplate> fileWrapper, bool enableExternalExt = false) public async Task<File<T>> CreateNewFileAsync<TTemplate>(FileModel<T, TTemplate> fileWrapper, bool enableExternalExt = false)
{ {
@ -957,7 +957,7 @@ namespace ASC.Web.Files.Services.WCFService
return new KeyValuePair<File<T>, List<File<T>>>(file, await GetFileHistoryAsync(fileId)); return new KeyValuePair<File<T>, List<File<T>>>(file, await GetFileHistoryAsync(fileId));
} }
public async Task<File<T>> LockFileAsync(T fileId, bool lockfile) public async Task<File<T>> LockFileAsync(T fileId, bool lockfile)
{ {
var tagDao = GetTagDao(); var tagDao = GetTagDao();
@ -1437,7 +1437,7 @@ namespace ASC.Web.Files.Services.WCFService
return (checkedFiles, checkedFolders); return (checkedFiles, checkedFolders);
} }
private async Task<(List<TFrom>, List<TFrom>)> MoveOrCopyFilesCheckAsync<TFrom, TTo>(IEnumerable<TFrom> filesId, IEnumerable<TFrom> foldersId, TTo destFolderId) private async Task<(List<TFrom>, List<TFrom>)> MoveOrCopyFilesCheckAsync<TFrom, TTo>(IEnumerable<TFrom> filesId, IEnumerable<TFrom> foldersId, TTo destFolderId)
{ {
var checkedFiles = new List<TFrom>(); var checkedFiles = new List<TFrom>();
@ -1464,24 +1464,22 @@ namespace ASC.Web.Files.Services.WCFService
var folders = folderDao.GetFoldersAsync(foldersId); var folders = folderDao.GetFoldersAsync(foldersId);
var foldersProject = folders.Where(folder => folder.FolderType == FolderType.BUNCH); var foldersProject = folders.Where(folder => folder.FolderType == FolderType.BUNCH);
if (await foldersProject.CountAsync() > 0) var toSubfolders = destFolderDao.GetFoldersAsync(toFolder.ID);
await foreach (var folderProject in foldersProject)
{ {
var toSubfolders = await destFolderDao.GetFoldersAsync(toFolder.ID).ToListAsync(); var toSub = await toSubfolders.FirstOrDefaultAsync(to => Equals(to.Title, folderProject.Title));
if (toSub == null) continue;
await foreach (var folderProject in foldersProject) var filesPr = fileDao.GetFilesAsync(folderProject.ID);
{ var foldersTmp = folderDao.GetFoldersAsync(folderProject.ID);
var toSub = toSubfolders.FirstOrDefault(to => Equals(to.Title, folderProject.Title)); var foldersPr = foldersTmp.Select(d => d.ID).ToListAsync();
if (toSub == null) continue;
var filesPr = await fileDao.GetFilesAsync(folderProject.ID); var (cFiles, cFolders) = await MoveOrCopyFilesCheckAsync(await filesPr, await foldersPr, toSub.ID);
var foldersTmp = await folderDao.GetFoldersAsync(folderProject.ID).ToListAsync(); checkedFiles.AddRange(cFiles);
var foldersPr = foldersTmp.Select(d => d.ID); checkedFolders.AddRange(cFolders);
var (cFiles, cFolders) = await MoveOrCopyFilesCheckAsync(filesPr, foldersPr, toSub.ID);
checkedFiles.AddRange(cFiles);
checkedFolders.AddRange(cFolders);
}
} }
try try
{ {
foreach (var pair in await folderDao.CanMoveOrCopyAsync(foldersId.ToArray(), toFolder.ID)) foreach (var pair in await folderDao.CanMoveOrCopyAsync(foldersId.ToArray(), toFolder.ID))
@ -1592,7 +1590,7 @@ namespace ASC.Web.Files.Services.WCFService
results = FileConverter.GetStatusAsync(files); results = FileConverter.GetStatusAsync(files);
} }
await foreach(var res in results) await foreach (var res in results)
{ {
yield return res; yield return res;
} }
@ -2177,7 +2175,7 @@ namespace ASC.Web.Files.Services.WCFService
//ErrorIf(!accounts.Any(), FilesCommonResource.ErrorMassage_MailAccountNotFound); //ErrorIf(!accounts.Any(), FilesCommonResource.ErrorMassage_MailAccountNotFound);
//return new List<string>(accounts); //return new List<string>(accounts);
} }
public async IAsyncEnumerable<FileEntry> ChangeOwnerAsync(IEnumerable<T> foldersId, IEnumerable<T> filesId, Guid userId) public async IAsyncEnumerable<FileEntry> ChangeOwnerAsync(IEnumerable<T> foldersId, IEnumerable<T> filesId, Guid userId)
{ {
@ -2261,7 +2259,7 @@ namespace ASC.Web.Files.Services.WCFService
entries.Append(newFile); entries.Append(newFile);
} }
await foreach(var entrie in entries) await foreach (var entrie in entries)
{ {
yield return entrie; yield return entrie;
} }

View File

@ -357,8 +357,9 @@ namespace ASC.Web.Files.Utils
T folderID; T folderID;
int valueNew; int valueNew;
var userFolderId = await internalFolderDao.GetFolderIDUserAsync(false, userID); var userFolderIdTask = internalFolderDao.GetFolderIDUserAsync(false, userID);
var privacyFolderId = await internalFolderDao.GetFolderIDPrivacyAsync(false, userID); var privacyFolderIdTask = internalFolderDao.GetFolderIDPrivacyAsync(false, userID);
var userFolderId = await userFolderIdTask;
var removeTags = new List<Tag>(); var removeTags = new List<Tag>();
@ -392,6 +393,8 @@ namespace ASC.Web.Files.Utils
removeTags.AddRange(listTags); removeTags.AddRange(listTags);
} }
var privacyFolderId = await privacyFolderIdTask;
var parentFolders = await folderDao.GetParentFoldersAsync(folderID); var parentFolders = await folderDao.GetParentFoldersAsync(folderID);
parentFolders.Reverse(); parentFolders.Reverse();