Dao: any replaced with containts
This commit is contained in:
parent
4a1260e828
commit
334c766052
@ -174,7 +174,7 @@ namespace ASC.Files.Core.Data
|
|||||||
{
|
{
|
||||||
if (fileIds == null || !fileIds.Any()) return new List<File<int>>();
|
if (fileIds == null || !fileIds.Any()) return new List<File<int>>();
|
||||||
|
|
||||||
var query = GetFileQuery(r => fileIds.Any(a => a == r.Id) && r.CurrentVersion)
|
var query = GetFileQuery(r => fileIds.Contains(r.Id) && r.CurrentVersion)
|
||||||
.AsNoTracking();
|
.AsNoTracking();
|
||||||
|
|
||||||
return FromQueryWithShared(query).Select(ToFile).ToList();
|
return FromQueryWithShared(query).Select(ToFile).ToList();
|
||||||
@ -184,7 +184,7 @@ namespace ASC.Files.Core.Data
|
|||||||
{
|
{
|
||||||
if (fileIds == null || !fileIds.Any() || filterType == FilterType.FoldersOnly) return new List<File<int>>();
|
if (fileIds == null || !fileIds.Any() || filterType == FilterType.FoldersOnly) return new List<File<int>>();
|
||||||
|
|
||||||
var query = GetFileQuery(r => fileIds.Any(a => a == r.Id) && r.CurrentVersion).AsNoTracking();
|
var query = GetFileQuery(r => fileIds.Contains(r.Id) && r.CurrentVersion).AsNoTracking();
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(searchText))
|
if (!string.IsNullOrEmpty(searchText))
|
||||||
{
|
{
|
||||||
@ -192,7 +192,7 @@ namespace ASC.Files.Core.Data
|
|||||||
|
|
||||||
if (FactoryIndexer.TrySelectIds(s => func(s).In(r => r.Id, fileIds.ToArray()), out var searchIds))
|
if (FactoryIndexer.TrySelectIds(s => func(s).In(r => r.Id, fileIds.ToArray()), out var searchIds))
|
||||||
{
|
{
|
||||||
query = query.Where(r => searchIds.Any(b => b == r.Id));
|
query = query.Where(r => searchIds.Contains(r.Id));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -205,7 +205,7 @@ namespace ASC.Files.Core.Data
|
|||||||
if (subjectGroup)
|
if (subjectGroup)
|
||||||
{
|
{
|
||||||
var users = UserManager.GetUsersByGroup(subjectID).Select(u => u.ID).ToArray();
|
var users = UserManager.GetUsersByGroup(subjectID).Select(u => u.ID).ToArray();
|
||||||
query = query.Where(r => users.Any(b => b == r.CreateBy));
|
query = query.Where(r => users.Contains(r.CreateBy));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -274,7 +274,7 @@ namespace ASC.Files.Core.Data
|
|||||||
|
|
||||||
if (FactoryIndexer.TrySelectIds(expression, out var searchIds))
|
if (FactoryIndexer.TrySelectIds(expression, out var searchIds))
|
||||||
{
|
{
|
||||||
q = q.Where(r => searchIds.Any(a => a == r.Id));
|
q = q.Where(r => searchIds.Contains(r.Id));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -296,7 +296,7 @@ namespace ASC.Files.Core.Data
|
|||||||
if (subjectGroup)
|
if (subjectGroup)
|
||||||
{
|
{
|
||||||
var users = UserManager.GetUsersByGroup(subjectID).Select(u => u.ID).ToArray();
|
var users = UserManager.GetUsersByGroup(subjectID).Select(u => u.ID).ToArray();
|
||||||
q = q.Where(r => users.Any(a => a == r.CreateBy));
|
q = q.Where(r => users.Contains(r.CreateBy));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -445,7 +445,7 @@ namespace ASC.Files.Core.Data
|
|||||||
if (parentFoldersIds.Any())
|
if (parentFoldersIds.Any())
|
||||||
{
|
{
|
||||||
var folderToUpdate = FilesDbContext.Folders
|
var folderToUpdate = FilesDbContext.Folders
|
||||||
.Where(r => parentFoldersIds.Any(a => a == r.Id));
|
.Where(r => parentFoldersIds.Contains(r.Id));
|
||||||
|
|
||||||
foreach (var f in folderToUpdate)
|
foreach (var f in folderToUpdate)
|
||||||
{
|
{
|
||||||
@ -569,7 +569,7 @@ namespace ASC.Files.Core.Data
|
|||||||
if (parentFoldersIds.Any())
|
if (parentFoldersIds.Any())
|
||||||
{
|
{
|
||||||
var folderToUpdate = FilesDbContext.Folders
|
var folderToUpdate = FilesDbContext.Folders
|
||||||
.Where(r => parentFoldersIds.Any(a => a == r.Id));
|
.Where(r => parentFoldersIds.Contains(r.Id));
|
||||||
|
|
||||||
foreach (var f in folderToUpdate)
|
foreach (var f in folderToUpdate)
|
||||||
{
|
{
|
||||||
@ -669,7 +669,7 @@ namespace ASC.Files.Core.Data
|
|||||||
FilesDbContext.RemoveRange(toDeleteFiles);
|
FilesDbContext.RemoveRange(toDeleteFiles);
|
||||||
|
|
||||||
var tagsToRemove = Query(FilesDbContext.Tag)
|
var tagsToRemove = Query(FilesDbContext.Tag)
|
||||||
.Where(r => !Query(FilesDbContext.TagLink).Where(a => a.TagId == r.Id).Any());
|
.Where(r => !Query(FilesDbContext.TagLink).Any(a => a.TagId == r.Id));
|
||||||
|
|
||||||
FilesDbContext.Tag.RemoveRange(tagsToRemove);
|
FilesDbContext.Tag.RemoveRange(tagsToRemove);
|
||||||
|
|
||||||
@ -1027,7 +1027,7 @@ namespace ASC.Files.Core.Data
|
|||||||
{
|
{
|
||||||
var toUpdate = Query(FilesDbContext.Files)
|
var toUpdate = Query(FilesDbContext.Files)
|
||||||
.Where(r => r.CurrentVersion)
|
.Where(r => r.CurrentVersion)
|
||||||
.Where(r => fileIds.Any(a => a == r.Id));
|
.Where(r => fileIds.Contains(r.Id));
|
||||||
|
|
||||||
foreach (var f in toUpdate)
|
foreach (var f in toUpdate)
|
||||||
{
|
{
|
||||||
@ -1044,7 +1044,7 @@ namespace ASC.Files.Core.Data
|
|||||||
var q = GetFileQuery(r => r.CurrentVersion)
|
var q = GetFileQuery(r => r.CurrentVersion)
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Join(FilesDbContext.Tree, a => a.FolderId, t => t.FolderId, (file, tree) => new { file, tree })
|
.Join(FilesDbContext.Tree, a => a.FolderId, t => t.FolderId, (file, tree) => new { file, tree })
|
||||||
.Where(r => parentIds.Any(a => a == r.tree.ParentId))
|
.Where(r => parentIds.Contains(r.tree.ParentId))
|
||||||
.Select(r => r.file);
|
.Select(r => r.file);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(searchText))
|
if (!string.IsNullOrEmpty(searchText))
|
||||||
@ -1053,7 +1053,7 @@ namespace ASC.Files.Core.Data
|
|||||||
|
|
||||||
if (FactoryIndexer.TrySelectIds(s => func(s), out var searchIds))
|
if (FactoryIndexer.TrySelectIds(s => func(s), out var searchIds))
|
||||||
{
|
{
|
||||||
q = q.Where(r => searchIds.Any(b => b == r.Id));
|
q = q.Where(r => searchIds.Contains(r.Id));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1066,7 +1066,7 @@ namespace ASC.Files.Core.Data
|
|||||||
if (subjectGroup)
|
if (subjectGroup)
|
||||||
{
|
{
|
||||||
var users = UserManager.GetUsersByGroup(subjectID).Select(u => u.ID).ToArray();
|
var users = UserManager.GetUsersByGroup(subjectID).Select(u => u.ID).ToArray();
|
||||||
q = q.Where(r => users.Any(u => u == r.CreateBy));
|
q = q.Where(r => users.Contains(r.CreateBy));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1099,7 +1099,7 @@ namespace ASC.Files.Core.Data
|
|||||||
{
|
{
|
||||||
if (FactoryIndexer.TrySelectIds(s => s.MatchAll(searchText), out var ids))
|
if (FactoryIndexer.TrySelectIds(s => s.MatchAll(searchText), out var ids))
|
||||||
{
|
{
|
||||||
var query = GetFileQuery(r => r.CurrentVersion && ids.Any(i => i == r.Id)).AsNoTracking();
|
var query = GetFileQuery(r => r.CurrentVersion && ids.Contains(r.Id)).AsNoTracking();
|
||||||
return FromQueryWithShared(query).Select(ToFile)
|
return FromQueryWithShared(query).Select(ToFile)
|
||||||
.Where(
|
.Where(
|
||||||
f =>
|
f =>
|
||||||
|
@ -149,7 +149,7 @@ namespace ASC.Files.Core.Data
|
|||||||
.Distinct();
|
.Distinct();
|
||||||
|
|
||||||
var q = FilesDbContext.Tree.AsNoTracking()
|
var q = FilesDbContext.Tree.AsNoTracking()
|
||||||
.Where(r => subq.Any(q => q == r.FolderId))
|
.Where(r => subq.Contains(r.FolderId))
|
||||||
.OrderByDescending(r => r.Level)
|
.OrderByDescending(r => r.Level)
|
||||||
.Select(r => r.ParentId)
|
.Select(r => r.ParentId)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
@ -187,7 +187,7 @@ namespace ASC.Files.Core.Data
|
|||||||
{
|
{
|
||||||
if (FactoryIndexer.TrySelectIds(s => s.MatchAll(searchText), out var searchIds))
|
if (FactoryIndexer.TrySelectIds(s => s.MatchAll(searchText), out var searchIds))
|
||||||
{
|
{
|
||||||
q = q.Where(r => searchIds.Any(a => a == r.Id));
|
q = q.Where(r => searchIds.Contains(r.Id));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -208,7 +208,7 @@ namespace ASC.Files.Core.Data
|
|||||||
if (subjectGroup)
|
if (subjectGroup)
|
||||||
{
|
{
|
||||||
var users = UserManager.GetUsersByGroup(subjectID).Select(u => u.ID).ToArray();
|
var users = UserManager.GetUsersByGroup(subjectID).Select(u => u.ID).ToArray();
|
||||||
q = q.Where(r => users.Any(a => a == r.CreateBy));
|
q = q.Where(r => users.Contains(r.CreateBy));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -227,14 +227,14 @@ namespace ASC.Files.Core.Data
|
|||||||
|| filterType == FilterType.ArchiveOnly || filterType == FilterType.MediaOnly)
|
|| filterType == FilterType.ArchiveOnly || filterType == FilterType.MediaOnly)
|
||||||
return new List<Folder<int>>();
|
return new List<Folder<int>>();
|
||||||
|
|
||||||
var q = GetFolderQuery(r => folderIds.Any(q => q == r.Id)).AsNoTracking();
|
var q = GetFolderQuery(r => folderIds.Contains(r.Id)).AsNoTracking();
|
||||||
|
|
||||||
if (searchSubfolders)
|
if (searchSubfolders)
|
||||||
{
|
{
|
||||||
q = GetFolderQuery()
|
q = GetFolderQuery()
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Join(FilesDbContext.Tree, r => r.Id, a => a.FolderId, (folder, tree) => new { folder, tree })
|
.Join(FilesDbContext.Tree, r => r.Id, a => a.FolderId, (folder, tree) => new { folder, tree })
|
||||||
.Where(r => folderIds.Any(q => q == r.tree.ParentId))
|
.Where(r => folderIds.Contains(r.tree.ParentId))
|
||||||
.Select(r => r.folder);
|
.Select(r => r.folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,7 +246,7 @@ namespace ASC.Files.Core.Data
|
|||||||
: s.MatchAll(searchText).In(r => r.Id, folderIds.ToArray()),
|
: s.MatchAll(searchText).In(r => r.Id, folderIds.ToArray()),
|
||||||
out var searchIds))
|
out var searchIds))
|
||||||
{
|
{
|
||||||
q = q.Where(r => searchIds.Any(a => a == r.Id));
|
q = q.Where(r => searchIds.Contains(r.Id));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -260,7 +260,7 @@ namespace ASC.Files.Core.Data
|
|||||||
if (subjectGroup)
|
if (subjectGroup)
|
||||||
{
|
{
|
||||||
var users = UserManager.GetUsersByGroup(subjectID.Value).Select(u => u.ID).ToArray();
|
var users = UserManager.GetUsersByGroup(subjectID.Value).Select(u => u.ID).ToArray();
|
||||||
q = q.Where(r => users.Any(a => a == r.CreateBy));
|
q = q.Where(r => users.Contains(r.CreateBy));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -388,8 +388,7 @@ namespace ASC.Files.Core.Data
|
|||||||
private bool IsExist(int folderId)
|
private bool IsExist(int folderId)
|
||||||
{
|
{
|
||||||
return Query(FilesDbContext.Folders).AsNoTracking()
|
return Query(FilesDbContext.Folders).AsNoTracking()
|
||||||
.Where(r => r.Id == folderId)
|
.Any(r => r.Id == folderId);
|
||||||
.Any();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteFolder(int id)
|
public void DeleteFolder(int id)
|
||||||
@ -410,7 +409,7 @@ namespace ASC.Files.Core.Data
|
|||||||
.Select(r => r.ParentId)
|
.Select(r => r.ParentId)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
|
||||||
var folderToDelete = Query(FilesDbContext.Folders).Where(r => subfolders.Any(a => r.Id == a));
|
var folderToDelete = Query(FilesDbContext.Folders).Where(r => subfolders.Contains(r.Id));
|
||||||
FilesDbContext.Folders.RemoveRange(folderToDelete);
|
FilesDbContext.Folders.RemoveRange(folderToDelete);
|
||||||
|
|
||||||
foreach (var f in folderToDelete)
|
foreach (var f in folderToDelete)
|
||||||
@ -418,22 +417,22 @@ namespace ASC.Files.Core.Data
|
|||||||
FactoryIndexer.DeleteAsync(f);
|
FactoryIndexer.DeleteAsync(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
var treeToDelete = FilesDbContext.Tree.Where(r => subfolders.Any(a => r.FolderId == a));
|
var treeToDelete = FilesDbContext.Tree.Where(r => subfolders.Contains(r.FolderId));
|
||||||
FilesDbContext.Tree.RemoveRange(treeToDelete);
|
FilesDbContext.Tree.RemoveRange(treeToDelete);
|
||||||
|
|
||||||
var subfoldersStrings = subfolders.Select(r => r.ToString()).ToList();
|
var subfoldersStrings = subfolders.Select(r => r.ToString()).ToList();
|
||||||
var linkToDelete = Query(FilesDbContext.TagLink)
|
var linkToDelete = Query(FilesDbContext.TagLink)
|
||||||
.Where(r => subfoldersStrings.Any(a => r.EntryId == a))
|
.Where(r => subfoldersStrings.Contains(r.EntryId))
|
||||||
.Where(r => r.EntryType == FileEntryType.Folder);
|
.Where(r => r.EntryType == FileEntryType.Folder);
|
||||||
FilesDbContext.TagLink.RemoveRange(linkToDelete);
|
FilesDbContext.TagLink.RemoveRange(linkToDelete);
|
||||||
|
|
||||||
var tagsToRemove = Query(FilesDbContext.Tag)
|
var tagsToRemove = Query(FilesDbContext.Tag)
|
||||||
.Where(r => !Query(FilesDbContext.TagLink).Where(a => a.TagId == r.Id).Any());
|
.Where(r => !Query(FilesDbContext.TagLink).Any(a => a.TagId == r.Id));
|
||||||
|
|
||||||
FilesDbContext.Tag.RemoveRange(tagsToRemove);
|
FilesDbContext.Tag.RemoveRange(tagsToRemove);
|
||||||
|
|
||||||
var securityToDelete = Query(FilesDbContext.Security)
|
var securityToDelete = Query(FilesDbContext.Security)
|
||||||
.Where(r => subfoldersStrings.Any(a => r.EntryId == a))
|
.Where(r => subfoldersStrings.Contains(r.EntryId))
|
||||||
.Where(r => r.EntryType == FileEntryType.Folder);
|
.Where(r => r.EntryType == FileEntryType.Folder);
|
||||||
|
|
||||||
FilesDbContext.Security.RemoveRange(securityToDelete);
|
FilesDbContext.Security.RemoveRange(securityToDelete);
|
||||||
@ -499,7 +498,7 @@ namespace ASC.Files.Core.Data
|
|||||||
.ToDictionary(r => r.FolderId, r => r.Level);
|
.ToDictionary(r => r.FolderId, r => r.Level);
|
||||||
|
|
||||||
var toDelete = FilesDbContext.Tree
|
var toDelete = FilesDbContext.Tree
|
||||||
.Where(r => subfolders.Keys.Any(a => a == r.FolderId) && !subfolders.Keys.Any(a => a == r.ParentId));
|
.Where(r => subfolders.Keys.Contains(r.FolderId) && !subfolders.Keys.Contains(r.ParentId));
|
||||||
|
|
||||||
FilesDbContext.Tree.RemoveRange(toDelete);
|
FilesDbContext.Tree.RemoveRange(toDelete);
|
||||||
FilesDbContext.SaveChanges();
|
FilesDbContext.SaveChanges();
|
||||||
@ -622,9 +621,7 @@ namespace ASC.Files.Core.Data
|
|||||||
{
|
{
|
||||||
var exists = FilesDbContext.Tree
|
var exists = FilesDbContext.Tree
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Where(r => r.ParentId == folderId)
|
.Any(r => r.ParentId == folderId && r.FolderId == to);
|
||||||
.Where(r => r.FolderId == to)
|
|
||||||
.Any();
|
|
||||||
|
|
||||||
if (exists)
|
if (exists)
|
||||||
{
|
{
|
||||||
@ -710,8 +707,7 @@ namespace ASC.Files.Core.Data
|
|||||||
var count = Query(FilesDbContext.Files)
|
var count = Query(FilesDbContext.Files)
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Distinct()
|
.Distinct()
|
||||||
.Where(r => FilesDbContext.Tree.Where(r => r.ParentId == folderId).Select(r => r.FolderId).Any(b => b == r.FolderId))
|
.Count(r => FilesDbContext.Tree.Where(r => r.ParentId == folderId).Select(r => r.FolderId).Contains(r.FolderId));
|
||||||
.Count();
|
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
@ -759,7 +755,7 @@ namespace ASC.Files.Core.Data
|
|||||||
private void RecalculateFoldersCount(int id)
|
private void RecalculateFoldersCount(int id)
|
||||||
{
|
{
|
||||||
var toUpdate = Query(FilesDbContext.Folders)
|
var toUpdate = Query(FilesDbContext.Folders)
|
||||||
.Where(r => FilesDbContext.Tree.Where(a => a.FolderId == id).Select(a => a.ParentId).Any(a => a == r.Id))
|
.Where(r => FilesDbContext.Tree.Where(a => a.FolderId == id).Select(a => a.ParentId).Contains(r.Id))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
foreach (var f in toUpdate)
|
foreach (var f in toUpdate)
|
||||||
@ -776,7 +772,7 @@ namespace ASC.Files.Core.Data
|
|||||||
public void ReassignFolders(int[] folderIds, Guid newOwnerId)
|
public void ReassignFolders(int[] folderIds, Guid newOwnerId)
|
||||||
{
|
{
|
||||||
var toUpdate = Query(FilesDbContext.Folders)
|
var toUpdate = Query(FilesDbContext.Folders)
|
||||||
.Where(r => folderIds.Any(a => r.Id == a));
|
.Where(r => folderIds.Contains(r.Id));
|
||||||
|
|
||||||
foreach (var f in toUpdate)
|
foreach (var f in toUpdate)
|
||||||
{
|
{
|
||||||
@ -800,7 +796,7 @@ namespace ASC.Files.Core.Data
|
|||||||
|
|
||||||
if (FactoryIndexer.TrySelectIds(s => s.MatchAll(text), out var ids))
|
if (FactoryIndexer.TrySelectIds(s => s.MatchAll(text), out var ids))
|
||||||
{
|
{
|
||||||
var q1 = GetFolderQuery(r => ids.Any(a => r.Id == a));
|
var q1 = GetFolderQuery(r => ids.Contains(r.Id));
|
||||||
return FromQueryWithShared(q1).Select(ToFolder).ToList();
|
return FromQueryWithShared(q1).Select(ToFolder).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1043,17 +1039,13 @@ namespace ASC.Files.Core.Data
|
|||||||
Folder = r,
|
Folder = r,
|
||||||
Root = FilesDbContext.Folders
|
Root = FilesDbContext.Folders
|
||||||
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
|
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
|
||||||
.Where(x => x.folder.TenantId == r.TenantId)
|
.Where(x => x.folder.TenantId == r.TenantId && x.tree.FolderId == r.ParentId)
|
||||||
.Where(x => x.tree.FolderId == r.ParentId)
|
|
||||||
.OrderByDescending(r => r.tree.Level)
|
.OrderByDescending(r => r.tree.Level)
|
||||||
.Select(r => r.folder)
|
.Select(r => r.folder)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
.FirstOrDefault(),
|
.FirstOrDefault(),
|
||||||
Shared = FilesDbContext.Security
|
Shared = FilesDbContext.Security
|
||||||
.Where(x => x.TenantId == TenantID)
|
.Any(x => x.TenantId == TenantID && x.EntryType == FileEntryType.Folder && x.EntryId == r.Id.ToString())
|
||||||
.Where(r => r.EntryType == FileEntryType.Folder)
|
|
||||||
.Where(x => x.EntryId == r.Id.ToString())
|
|
||||||
.Any()
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,9 +93,8 @@ namespace ASC.Files.Core.Data
|
|||||||
public bool IsShared(object entryId, FileEntryType type)
|
public bool IsShared(object entryId, FileEntryType type)
|
||||||
{
|
{
|
||||||
return Query(FilesDbContext.Security)
|
return Query(FilesDbContext.Security)
|
||||||
.Where(r => r.EntryId == MappingID(entryId).ToString())
|
.Any(r => r.EntryId == MappingID(entryId).ToString() &&
|
||||||
.Where(r => r.EntryType == type)
|
r.EntryType == type);
|
||||||
.Any();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetShare(FileShareRecord r)
|
public void SetShare(FileShareRecord r)
|
||||||
@ -119,7 +118,7 @@ namespace ASC.Files.Core.Data
|
|||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
folders.AddRange(foldersInt.Select(folderInt => folderInt.ToString()));
|
folders.AddRange(foldersInt.Select(folderInt => folderInt.ToString()));
|
||||||
files.AddRange(Query(FilesDbContext.Files).Where(r => foldersInt.Any(a => a == r.FolderId)).Select(r => r.Id.ToString()));
|
files.AddRange(Query(FilesDbContext.Files).Where(r => foldersInt.Contains(r.FolderId)).Select(r => r.Id.ToString()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -127,10 +126,10 @@ namespace ASC.Files.Core.Data
|
|||||||
}
|
}
|
||||||
|
|
||||||
var toDelete = FilesDbContext.Security
|
var toDelete = FilesDbContext.Security
|
||||||
.Where(a => a.TenantId == r.Tenant)
|
.Where(a => a.TenantId == r.Tenant &&
|
||||||
.Where(a => folders.Any(b => b == a.EntryId))
|
folders.Contains(a.EntryId) &&
|
||||||
.Where(a => a.EntryType == FileEntryType.Folder)
|
a.EntryType == FileEntryType.Folder &&
|
||||||
.Where(a => a.Subject == r.Subject);
|
a.Subject == r.Subject);
|
||||||
|
|
||||||
FilesDbContext.Security.RemoveRange(toDelete);
|
FilesDbContext.Security.RemoveRange(toDelete);
|
||||||
FilesDbContext.SaveChanges();
|
FilesDbContext.SaveChanges();
|
||||||
@ -144,10 +143,10 @@ namespace ASC.Files.Core.Data
|
|||||||
if (0 < files.Count)
|
if (0 < files.Count)
|
||||||
{
|
{
|
||||||
var toDelete = FilesDbContext.Security
|
var toDelete = FilesDbContext.Security
|
||||||
.Where(a => a.TenantId == r.Tenant)
|
.Where(a => a.TenantId == r.Tenant &&
|
||||||
.Where(a => files.Any(b => b == a.EntryId))
|
files.Contains(a.EntryId) &&
|
||||||
.Where(a => a.EntryType == FileEntryType.File)
|
a.EntryType == FileEntryType.File &&
|
||||||
.Where(a => a.Subject == r.Subject);
|
a.Subject == r.Subject);
|
||||||
|
|
||||||
FilesDbContext.Security.RemoveRange(toDelete);
|
FilesDbContext.Security.RemoveRange(toDelete);
|
||||||
FilesDbContext.SaveChanges();
|
FilesDbContext.SaveChanges();
|
||||||
@ -175,7 +174,7 @@ namespace ASC.Files.Core.Data
|
|||||||
|
|
||||||
public IEnumerable<FileShareRecord> GetShares(IEnumerable<Guid> subjects)
|
public IEnumerable<FileShareRecord> GetShares(IEnumerable<Guid> subjects)
|
||||||
{
|
{
|
||||||
var q = GetQuery(r => subjects.Any(a => r.Subject == a));
|
var q = GetQuery(r => subjects.Contains(r.Subject));
|
||||||
return FromQuery(q);
|
return FromQuery(q);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,11 +209,11 @@ namespace ASC.Files.Core.Data
|
|||||||
{
|
{
|
||||||
var result = new List<FileShareRecord>();
|
var result = new List<FileShareRecord>();
|
||||||
|
|
||||||
var q = GetQuery(r => folders.Any(a => a == r.EntryId) && r.EntryType == FileEntryType.Folder);
|
var q = GetQuery(r => folders.Contains(r.EntryId) && r.EntryType == FileEntryType.Folder);
|
||||||
|
|
||||||
if (files.Any())
|
if (files.Any())
|
||||||
{
|
{
|
||||||
q = q.Union(GetQuery(r => files.Any(q => q == r.EntryId) && r.EntryType == FileEntryType.File));
|
q = q.Union(GetQuery(r => files.Contains(r.EntryId) && r.EntryType == FileEntryType.File));
|
||||||
}
|
}
|
||||||
|
|
||||||
result.AddRange(FromQuery(q));
|
result.AddRange(FromQuery(q));
|
||||||
@ -281,13 +280,13 @@ namespace ASC.Files.Core.Data
|
|||||||
{
|
{
|
||||||
var q = Query(FilesDbContext.Security)
|
var q = Query(FilesDbContext.Security)
|
||||||
.Join(FilesDbContext.Tree, r => r.EntryId, a => a.ParentId.ToString(), (security, tree) => new SecurityTreeRecord { DbFilesSecurity = security, DbFolderTree = tree })
|
.Join(FilesDbContext.Tree, r => r.EntryId, a => a.ParentId.ToString(), (security, tree) => new SecurityTreeRecord { DbFilesSecurity = security, DbFolderTree = tree })
|
||||||
.Where(r => folders.Any(f => f == r.DbFolderTree.FolderId))
|
.Where(r => folders.Contains(r.DbFolderTree.FolderId) &&
|
||||||
.Where(r => r.DbFilesSecurity.EntryType == FileEntryType.Folder)
|
r.DbFilesSecurity.EntryType == FileEntryType.Folder)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
if (0 < files.Count)
|
if (0 < files.Count)
|
||||||
{
|
{
|
||||||
var q1 = GetQuery(r => files.Any(f => f == r.EntryId) && r.EntryType == FileEntryType.File)
|
var q1 = GetQuery(r => files.Contains(r.EntryId) && r.EntryType == FileEntryType.File)
|
||||||
.Select(r => new SecurityTreeRecord { DbFilesSecurity = r })
|
.Select(r => new SecurityTreeRecord { DbFilesSecurity = r })
|
||||||
.ToList();
|
.ToList();
|
||||||
q = q.Union(q1).ToList();
|
q = q.Union(q1).ToList();
|
||||||
|
@ -97,8 +97,8 @@ namespace ASC.Files.Core.Data
|
|||||||
.Join(FilesDbContext.TagLink, r => r.Id, l => l.TagId, (tag, link) => new TagLinkData { Tag = tag, Link = link })
|
.Join(FilesDbContext.TagLink, r => r.Id, l => l.TagId, (tag, link) => new TagLinkData { Tag = tag, Link = link })
|
||||||
.Where(r => r.Link.TenantId == r.Tag.TenantId)
|
.Where(r => r.Link.TenantId == r.Tag.TenantId)
|
||||||
.Where(r => r.Tag.Flag == tagType)
|
.Where(r => r.Tag.Flag == tagType)
|
||||||
.Where(r => r.Link.EntryType == FileEntryType.File && filesId.Any(f => r.Link.EntryId == f)
|
.Where(r => r.Link.EntryType == FileEntryType.File && filesId.Contains(r.Link.EntryId)
|
||||||
|| r.Link.EntryType == FileEntryType.Folder && foldersId.Any(f => r.Link.EntryId == f));
|
|| r.Link.EntryType == FileEntryType.Folder && foldersId.Contains(r.Link.EntryId));
|
||||||
|
|
||||||
if (subject != Guid.Empty)
|
if (subject != Guid.Empty)
|
||||||
{
|
{
|
||||||
@ -168,7 +168,7 @@ namespace ASC.Files.Core.Data
|
|||||||
.Join(FilesDbContext.TagLink, r => r.Id, l => l.TagId, (tag, link) => new TagLinkData { Tag = tag, Link = link })
|
.Join(FilesDbContext.TagLink, r => r.Id, l => l.TagId, (tag, link) => new TagLinkData { Tag = tag, Link = link })
|
||||||
.Where(r => r.Link.TenantId == r.Tag.TenantId)
|
.Where(r => r.Link.TenantId == r.Tag.TenantId)
|
||||||
.Where(r => r.Tag.Owner == Guid.Empty)
|
.Where(r => r.Tag.Owner == Guid.Empty)
|
||||||
.Where(r => names.Any(n => r.Tag.Name == n))
|
.Where(r => names.Contains(r.Tag.Name))
|
||||||
.Where(r => r.Tag.Flag == tagType);
|
.Where(r => r.Tag.Flag == tagType);
|
||||||
|
|
||||||
return FromQuery(q);
|
return FromQuery(q);
|
||||||
@ -271,7 +271,7 @@ namespace ASC.Files.Core.Data
|
|||||||
FilesDbContext.SaveChanges();
|
FilesDbContext.SaveChanges();
|
||||||
|
|
||||||
var tagsToRemove = Query(FilesDbContext.Tag)
|
var tagsToRemove = Query(FilesDbContext.Tag)
|
||||||
.Where(r => !Query(FilesDbContext.TagLink).Where(a => a.TagId == r.Id).Any());
|
.Where(r => !Query(FilesDbContext.TagLink).Any(a => a.TagId == r.Id));
|
||||||
|
|
||||||
FilesDbContext.Tag.RemoveRange(tagsToRemove);
|
FilesDbContext.Tag.RemoveRange(tagsToRemove);
|
||||||
FilesDbContext.SaveChanges();
|
FilesDbContext.SaveChanges();
|
||||||
@ -470,7 +470,7 @@ namespace ASC.Files.Core.Data
|
|||||||
.Where(r => r.Tag.Flag == TagType.New)
|
.Where(r => r.Tag.Flag == TagType.New)
|
||||||
.Where(x => x.Link.EntryId != null)
|
.Where(x => x.Link.EntryId != null)
|
||||||
//.Where(r => tags.Any(t => t.TenantId == r.Link.TenantId && t.EntryId == r.Link.EntryId && t.EntryType == (int)r.Link.EntryType)); ;
|
//.Where(r => tags.Any(t => t.TenantId == r.Link.TenantId && t.EntryId == r.Link.EntryId && t.EntryType == (int)r.Link.EntryType)); ;
|
||||||
.Where(r => entryIds.Any(t => t == r.Link.EntryId) && entryTypes.Contains((int)r.Link.EntryType));
|
.Where(r => entryIds.Contains(r.Link.EntryId) && entryTypes.Contains((int)r.Link.EntryType));
|
||||||
|
|
||||||
if (subject != Guid.Empty)
|
if (subject != Guid.Empty)
|
||||||
{
|
{
|
||||||
@ -514,24 +514,18 @@ namespace ASC.Files.Core.Data
|
|||||||
var shareQuery =
|
var shareQuery =
|
||||||
new Func<IQueryable<TagLinkData>>(() => getBaseSqlQuery().Where(
|
new Func<IQueryable<TagLinkData>>(() => getBaseSqlQuery().Where(
|
||||||
r => FilesDbContext.Security
|
r => FilesDbContext.Security
|
||||||
.Where(a => a.TenantId == TenantID)
|
.Any(a => a.TenantId == TenantID && a.EntryId == r.Link.EntryId && a.EntryType == r.Link.EntryType)));
|
||||||
.Where(a => a.EntryId == r.Link.EntryId)
|
|
||||||
.Where(a => a.EntryType == r.Link.EntryType)
|
|
||||||
.Any()));
|
|
||||||
|
|
||||||
var tmpShareFileTags =
|
var tmpShareFileTags =
|
||||||
shareQuery()
|
shareQuery()
|
||||||
.Join(FilesDbContext.Files, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, f => f.Id, (tagLink, file) => new { tagLink, file })
|
.Join(FilesDbContext.Files, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, f => f.Id, (tagLink, file) => new { tagLink, file })
|
||||||
.Where(r => r.file.TenantId == TenantID)
|
.Where(r => r.file.TenantId == TenantID && r.file.CreateBy != subject && r.tagLink.Link.EntryType == FileEntryType.File)
|
||||||
.Where(r => r.file.CreateBy != subject)
|
|
||||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.File)
|
|
||||||
.Select(r => new
|
.Select(r => new
|
||||||
{
|
{
|
||||||
r.tagLink,
|
r.tagLink,
|
||||||
root = FilesDbContext.Folders
|
root = FilesDbContext.Folders
|
||||||
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
|
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
|
||||||
.Where(x => x.folder.TenantId == TenantID)
|
.Where(x => x.folder.TenantId == TenantID && x.tree.FolderId == r.file.FolderId)
|
||||||
.Where(x => x.tree.FolderId == r.file.FolderId)
|
|
||||||
.OrderByDescending(r => r.tree.Level)
|
.OrderByDescending(r => r.tree.Level)
|
||||||
.Select(r => r.folder)
|
.Select(r => r.folder)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -546,9 +540,7 @@ namespace ASC.Files.Core.Data
|
|||||||
var tmpShareFolderTags =
|
var tmpShareFolderTags =
|
||||||
shareQuery()
|
shareQuery()
|
||||||
.Join(FilesDbContext.Folders, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, f => f.Id, (tagLink, folder) => new { tagLink, folder })
|
.Join(FilesDbContext.Folders, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, f => f.Id, (tagLink, folder) => new { tagLink, folder })
|
||||||
.Where(r => r.folder.TenantId == TenantID)
|
.Where(r => r.folder.TenantId == TenantID && r.folder.CreateBy != subject && r.tagLink.Link.EntryType == FileEntryType.Folder)
|
||||||
.Where(r => r.folder.CreateBy != subject)
|
|
||||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.Folder)
|
|
||||||
.Select(r => new
|
.Select(r => new
|
||||||
{
|
{
|
||||||
r.tagLink,
|
r.tagLink,
|
||||||
@ -571,15 +563,14 @@ namespace ASC.Files.Core.Data
|
|||||||
.Join(FilesDbContext.ThirdpartyIdMapping, r => r.Link.EntryId, r => r.HashId, (tagLink, mapping) => new { tagLink, mapping })
|
.Join(FilesDbContext.ThirdpartyIdMapping, r => r.Link.EntryId, r => r.HashId, (tagLink, mapping) => new { tagLink, mapping })
|
||||||
.Where(r => r.mapping.TenantId == r.tagLink.Link.TenantId)
|
.Where(r => r.mapping.TenantId == r.tagLink.Link.TenantId)
|
||||||
.Join(FilesDbContext.ThirdpartyAccount, r => r.mapping.TenantId, r => r.TenantId, (tagLinkMapping, account) => new { tagLinkMapping.tagLink, tagLinkMapping.mapping, account })
|
.Join(FilesDbContext.ThirdpartyAccount, r => r.mapping.TenantId, r => r.TenantId, (tagLinkMapping, account) => new { tagLinkMapping.tagLink, tagLinkMapping.mapping, account })
|
||||||
.Where(r => r.account.UserId != subject)
|
.Where(r => r.account.UserId != subject &&
|
||||||
.Where(r => r.account.FolderType == FolderType.USER)
|
r.account.FolderType == FolderType.USER &&
|
||||||
.Where(r =>
|
(r.mapping.Id.StartsWith("sbox-" + r.account.Id) ||
|
||||||
r.mapping.Id.StartsWith("sbox-" + r.account.Id) ||
|
|
||||||
r.mapping.Id.StartsWith("box-" + r.account.Id) ||
|
r.mapping.Id.StartsWith("box-" + r.account.Id) ||
|
||||||
r.mapping.Id.StartsWith("dropbox-" + r.account.Id) ||
|
r.mapping.Id.StartsWith("dropbox-" + r.account.Id) ||
|
||||||
r.mapping.Id.StartsWith("spoint-" + r.account.Id) ||
|
r.mapping.Id.StartsWith("spoint-" + r.account.Id) ||
|
||||||
r.mapping.Id.StartsWith("drive-" + r.account.Id) ||
|
r.mapping.Id.StartsWith("drive-" + r.account.Id) ||
|
||||||
r.mapping.Id.StartsWith("onedrive-" + r.account.Id)
|
r.mapping.Id.StartsWith("onedrive-" + r.account.Id))
|
||||||
)
|
)
|
||||||
.Select(r => r.tagLink);
|
.Select(r => r.tagLink);
|
||||||
|
|
||||||
@ -590,24 +581,22 @@ namespace ASC.Files.Core.Data
|
|||||||
var shareQuery =
|
var shareQuery =
|
||||||
new Func<IQueryable<TagLinkData>>(() => getBaseSqlQuery().Where(
|
new Func<IQueryable<TagLinkData>>(() => getBaseSqlQuery().Where(
|
||||||
r => FilesDbContext.Security
|
r => FilesDbContext.Security
|
||||||
.Where(a => a.TenantId == TenantID)
|
.Any(a => a.TenantId == TenantID &&
|
||||||
.Where(a => a.EntryId == r.Link.EntryId)
|
a.EntryId == r.Link.EntryId &&
|
||||||
.Where(a => a.EntryType == r.Link.EntryType)
|
a.EntryType == r.Link.EntryType)));
|
||||||
.Any()));
|
|
||||||
|
|
||||||
var tmpShareFileTags =
|
var tmpShareFileTags =
|
||||||
shareQuery()
|
shareQuery()
|
||||||
.Join(FilesDbContext.Files, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, f => f.Id, (tagLink, file) => new { tagLink, file })
|
.Join(FilesDbContext.Files, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, f => f.Id, (tagLink, file) => new { tagLink, file })
|
||||||
.Where(r => r.file.TenantId == TenantID)
|
.Where(r => r.file.TenantId == TenantID &&
|
||||||
.Where(r => r.file.CreateBy != subject)
|
r.file.CreateBy != subject &&
|
||||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.File)
|
r.tagLink.Link.EntryType == FileEntryType.File)
|
||||||
.Select(r => new
|
.Select(r => new
|
||||||
{
|
{
|
||||||
r.tagLink,
|
r.tagLink,
|
||||||
root = FilesDbContext.Folders
|
root = FilesDbContext.Folders
|
||||||
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
|
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
|
||||||
.Where(x => x.folder.TenantId == TenantID)
|
.Where(x => x.folder.TenantId == TenantID && x.tree.FolderId == r.file.FolderId)
|
||||||
.Where(x => x.tree.FolderId == r.file.FolderId)
|
|
||||||
.OrderByDescending(r => r.tree.Level)
|
.OrderByDescending(r => r.tree.Level)
|
||||||
.Select(r => r.folder)
|
.Select(r => r.folder)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -622,16 +611,15 @@ namespace ASC.Files.Core.Data
|
|||||||
var tmpShareFolderTags =
|
var tmpShareFolderTags =
|
||||||
shareQuery()
|
shareQuery()
|
||||||
.Join(FilesDbContext.Folders, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, f => f.Id, (tagLink, folder) => new { tagLink, folder })
|
.Join(FilesDbContext.Folders, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, f => f.Id, (tagLink, folder) => new { tagLink, folder })
|
||||||
.Where(r => r.folder.TenantId == TenantID)
|
.Where(r => r.folder.TenantId == TenantID
|
||||||
.Where(r => r.folder.CreateBy != subject)
|
&& r.folder.CreateBy != subject
|
||||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.Folder)
|
&& r.tagLink.Link.EntryType == FileEntryType.Folder)
|
||||||
.Select(r => new
|
.Select(r => new
|
||||||
{
|
{
|
||||||
r.tagLink,
|
r.tagLink,
|
||||||
root = FilesDbContext.Folders
|
root = FilesDbContext.Folders
|
||||||
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
|
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
|
||||||
.Where(x => x.folder.TenantId == TenantID)
|
.Where(x => x.folder.TenantId == TenantID && x.tree.FolderId == r.folder.ParentId)
|
||||||
.Where(x => x.tree.FolderId == r.folder.ParentId)
|
|
||||||
.OrderByDescending(r => r.tree.Level)
|
.OrderByDescending(r => r.tree.Level)
|
||||||
.Select(r => r.folder)
|
.Select(r => r.folder)
|
||||||
.Take(1)
|
.Take(1)
|
||||||
@ -646,9 +634,9 @@ namespace ASC.Files.Core.Data
|
|||||||
{
|
{
|
||||||
var q = getBaseSqlQuery()
|
var q = getBaseSqlQuery()
|
||||||
.Join(FilesDbContext.BunchObjects, r => r.Link.TenantId, r => r.TenantId, (tagLink, bunch) => new { tagLink, bunch })
|
.Join(FilesDbContext.BunchObjects, r => r.Link.TenantId, r => r.TenantId, (tagLink, bunch) => new { tagLink, bunch })
|
||||||
.Where(r => r.bunch.LeftNode == r.tagLink.Link.EntryId)
|
.Where(r => r.bunch.LeftNode == r.tagLink.Link.EntryId &&
|
||||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.Folder)
|
r.tagLink.Link.EntryType == FileEntryType.Folder &&
|
||||||
.Where(r => r.bunch.RightNode.StartsWith("projects/project/"))
|
r.bunch.RightNode.StartsWith("projects/project/"))
|
||||||
.Select(r => r.tagLink);
|
.Select(r => r.tagLink);
|
||||||
tempTags = tempTags.Concat(FromQuery(q));
|
tempTags = tempTags.Concat(FromQuery(q));
|
||||||
}
|
}
|
||||||
@ -664,7 +652,7 @@ namespace ASC.Files.Core.Data
|
|||||||
var monitorFolderIdsInt = monitorFolderIds.Select(r => Convert.ToInt32(r)).ToList();
|
var monitorFolderIdsInt = monitorFolderIds.Select(r => Convert.ToInt32(r)).ToList();
|
||||||
var subFoldersSqlQuery =
|
var subFoldersSqlQuery =
|
||||||
FilesDbContext.Tree
|
FilesDbContext.Tree
|
||||||
.Where(r => monitorFolderIdsInt.Any(a => r.ParentId == a));
|
.Where(r => monitorFolderIdsInt.Contains(r.ParentId));
|
||||||
|
|
||||||
if (!deepSearch)
|
if (!deepSearch)
|
||||||
{
|
{
|
||||||
@ -676,7 +664,7 @@ namespace ASC.Files.Core.Data
|
|||||||
var monitorFolderIdsStrings = monitorFolderIds.Select(r => r.ToString()).ToList();
|
var monitorFolderIdsStrings = monitorFolderIds.Select(r => r.ToString()).ToList();
|
||||||
|
|
||||||
var newTagsForFolders = getBaseSqlQuery()
|
var newTagsForFolders = getBaseSqlQuery()
|
||||||
.Where(r => monitorFolderIdsStrings.Any(a => r.Link.EntryId == a))
|
.Where(r => monitorFolderIdsStrings.Contains(r.Link.EntryId))
|
||||||
.Where(r => r.Link.EntryType == FileEntryType.Folder);
|
.Where(r => r.Link.EntryType == FileEntryType.Folder);
|
||||||
|
|
||||||
result.AddRange(FromQuery(newTagsForFolders));
|
result.AddRange(FromQuery(newTagsForFolders));
|
||||||
@ -689,7 +677,7 @@ namespace ASC.Files.Core.Data
|
|||||||
getBaseSqlQuery()
|
getBaseSqlQuery()
|
||||||
.Join(FilesDbContext.Files, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, r => r.Id, (tagLink, file) => new { tagLink, file })
|
.Join(FilesDbContext.Files, r => Regex.IsMatch(r.Link.EntryId, "^[0-9]+$") ? Convert.ToInt32(r.Link.EntryId) : -1, r => r.Id, (tagLink, file) => new { tagLink, file })
|
||||||
.Where(r => r.file.TenantId == r.tagLink.Link.TenantId)
|
.Where(r => r.file.TenantId == r.tagLink.Link.TenantId)
|
||||||
.Where(r => where.Any(a => r.file.FolderId.ToString() == a))
|
.Where(r => where.Contains(r.file.FolderId.ToString()))
|
||||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.File)
|
.Where(r => r.tagLink.Link.EntryType == FileEntryType.File)
|
||||||
.Select(r => r.tagLink);
|
.Select(r => r.tagLink);
|
||||||
|
|
||||||
@ -718,10 +706,10 @@ namespace ASC.Files.Core.Data
|
|||||||
|
|
||||||
var newTagsForSBox = getBaseSqlQuery()
|
var newTagsForSBox = getBaseSqlQuery()
|
||||||
.Join(FilesDbContext.ThirdpartyIdMapping, r => r.Link.EntryId, r => r.HashId, (tagLink, mapping) => new { tagLink, mapping })
|
.Join(FilesDbContext.ThirdpartyIdMapping, r => r.Link.EntryId, r => r.HashId, (tagLink, mapping) => new { tagLink, mapping })
|
||||||
.Where(r => r.mapping.TenantId == TenantID)
|
.Where(r => r.mapping.TenantId == TenantID &&
|
||||||
.Where(r => thirdpartyFolderIds.Any(a => r.mapping.Id == a))
|
thirdpartyFolderIds.Contains(r.mapping.Id) &&
|
||||||
.Where(r => r.tagLink.Tag.Owner == subject)
|
r.tagLink.Tag.Owner == subject &&
|
||||||
.Where(r => r.tagLink.Link.EntryType == FileEntryType.Folder)
|
r.tagLink.Link.EntryType == FileEntryType.Folder)
|
||||||
.Select(r => r.tagLink);
|
.Select(r => r.tagLink);
|
||||||
|
|
||||||
result.AddRange(FromQuery(newTagsForSBox));
|
result.AddRange(FromQuery(newTagsForSBox));
|
||||||
|
Loading…
Reference in New Issue
Block a user