Dao: any replaced with containts

This commit is contained in:
pavelbannov 2020-12-16 15:03:43 +03:00
parent 4a1260e828
commit 334c766052
4 changed files with 90 additions and 111 deletions

View File

@ -174,7 +174,7 @@ namespace ASC.Files.Core.Data
{
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();
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>>();
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))
{
@ -192,7 +192,7 @@ namespace ASC.Files.Core.Data
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
{
@ -205,7 +205,7 @@ namespace ASC.Files.Core.Data
if (subjectGroup)
{
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
{
@ -274,7 +274,7 @@ namespace ASC.Files.Core.Data
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
{
@ -296,7 +296,7 @@ namespace ASC.Files.Core.Data
if (subjectGroup)
{
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
{
@ -445,7 +445,7 @@ namespace ASC.Files.Core.Data
if (parentFoldersIds.Any())
{
var folderToUpdate = FilesDbContext.Folders
.Where(r => parentFoldersIds.Any(a => a == r.Id));
.Where(r => parentFoldersIds.Contains(r.Id));
foreach (var f in folderToUpdate)
{
@ -569,7 +569,7 @@ namespace ASC.Files.Core.Data
if (parentFoldersIds.Any())
{
var folderToUpdate = FilesDbContext.Folders
.Where(r => parentFoldersIds.Any(a => a == r.Id));
.Where(r => parentFoldersIds.Contains(r.Id));
foreach (var f in folderToUpdate)
{
@ -669,7 +669,7 @@ namespace ASC.Files.Core.Data
FilesDbContext.RemoveRange(toDeleteFiles);
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);
@ -1027,7 +1027,7 @@ namespace ASC.Files.Core.Data
{
var toUpdate = Query(FilesDbContext.Files)
.Where(r => r.CurrentVersion)
.Where(r => fileIds.Any(a => a == r.Id));
.Where(r => fileIds.Contains(r.Id));
foreach (var f in toUpdate)
{
@ -1044,7 +1044,7 @@ namespace ASC.Files.Core.Data
var q = GetFileQuery(r => r.CurrentVersion)
.AsNoTracking()
.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);
if (!string.IsNullOrEmpty(searchText))
@ -1053,7 +1053,7 @@ namespace ASC.Files.Core.Data
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
{
@ -1066,7 +1066,7 @@ namespace ASC.Files.Core.Data
if (subjectGroup)
{
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
{
@ -1099,7 +1099,7 @@ namespace ASC.Files.Core.Data
{
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)
.Where(
f =>

View File

@ -149,7 +149,7 @@ namespace ASC.Files.Core.Data
.Distinct();
var q = FilesDbContext.Tree.AsNoTracking()
.Where(r => subq.Any(q => q == r.FolderId))
.Where(r => subq.Contains(r.FolderId))
.OrderByDescending(r => r.Level)
.Select(r => r.ParentId)
.FirstOrDefault();
@ -187,7 +187,7 @@ namespace ASC.Files.Core.Data
{
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
{
@ -208,7 +208,7 @@ namespace ASC.Files.Core.Data
if (subjectGroup)
{
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
{
@ -227,14 +227,14 @@ namespace ASC.Files.Core.Data
|| filterType == FilterType.ArchiveOnly || filterType == FilterType.MediaOnly)
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)
{
q = GetFolderQuery()
.AsNoTracking()
.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);
}
@ -246,7 +246,7 @@ namespace ASC.Files.Core.Data
: s.MatchAll(searchText).In(r => r.Id, folderIds.ToArray()),
out var searchIds))
{
q = q.Where(r => searchIds.Any(a => a == r.Id));
q = q.Where(r => searchIds.Contains(r.Id));
}
else
{
@ -260,7 +260,7 @@ namespace ASC.Files.Core.Data
if (subjectGroup)
{
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
{
@ -388,8 +388,7 @@ namespace ASC.Files.Core.Data
private bool IsExist(int folderId)
{
return Query(FilesDbContext.Folders).AsNoTracking()
.Where(r => r.Id == folderId)
.Any();
.Any(r => r.Id == folderId);
}
public void DeleteFolder(int id)
@ -410,7 +409,7 @@ namespace ASC.Files.Core.Data
.Select(r => r.ParentId)
.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);
foreach (var f in folderToDelete)
@ -418,22 +417,22 @@ namespace ASC.Files.Core.Data
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);
var subfoldersStrings = subfolders.Select(r => r.ToString()).ToList();
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);
FilesDbContext.TagLink.RemoveRange(linkToDelete);
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);
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);
FilesDbContext.Security.RemoveRange(securityToDelete);
@ -499,7 +498,7 @@ namespace ASC.Files.Core.Data
.ToDictionary(r => r.FolderId, r => r.Level);
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.SaveChanges();
@ -622,9 +621,7 @@ namespace ASC.Files.Core.Data
{
var exists = FilesDbContext.Tree
.AsNoTracking()
.Where(r => r.ParentId == folderId)
.Where(r => r.FolderId == to)
.Any();
.Any(r => r.ParentId == folderId && r.FolderId == to);
if (exists)
{
@ -710,8 +707,7 @@ namespace ASC.Files.Core.Data
var count = Query(FilesDbContext.Files)
.AsNoTracking()
.Distinct()
.Where(r => FilesDbContext.Tree.Where(r => r.ParentId == folderId).Select(r => r.FolderId).Any(b => b == r.FolderId))
.Count();
.Count(r => FilesDbContext.Tree.Where(r => r.ParentId == folderId).Select(r => r.FolderId).Contains(r.FolderId));
return count;
}
@ -759,7 +755,7 @@ namespace ASC.Files.Core.Data
private void RecalculateFoldersCount(int id)
{
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();
foreach (var f in toUpdate)
@ -776,7 +772,7 @@ namespace ASC.Files.Core.Data
public void ReassignFolders(int[] folderIds, Guid newOwnerId)
{
var toUpdate = Query(FilesDbContext.Folders)
.Where(r => folderIds.Any(a => r.Id == a));
.Where(r => folderIds.Contains(r.Id));
foreach (var f in toUpdate)
{
@ -800,7 +796,7 @@ namespace ASC.Files.Core.Data
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();
}
@ -1043,17 +1039,13 @@ namespace ASC.Files.Core.Data
Folder = r,
Root = FilesDbContext.Folders
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
.Where(x => x.folder.TenantId == r.TenantId)
.Where(x => x.tree.FolderId == r.ParentId)
.Where(x => x.folder.TenantId == r.TenantId && x.tree.FolderId == r.ParentId)
.OrderByDescending(r => r.tree.Level)
.Select(r => r.folder)
.Take(1)
.FirstOrDefault(),
Shared = FilesDbContext.Security
.Where(x => x.TenantId == TenantID)
.Where(r => r.EntryType == FileEntryType.Folder)
.Where(x => x.EntryId == r.Id.ToString())
.Any()
.Any(x => x.TenantId == TenantID && x.EntryType == FileEntryType.Folder && x.EntryId == r.Id.ToString())
});
}

View File

@ -93,9 +93,8 @@ namespace ASC.Files.Core.Data
public bool IsShared(object entryId, FileEntryType type)
{
return Query(FilesDbContext.Security)
.Where(r => r.EntryId == MappingID(entryId).ToString())
.Where(r => r.EntryType == type)
.Any();
.Any(r => r.EntryId == MappingID(entryId).ToString() &&
r.EntryType == type);
}
public void SetShare(FileShareRecord r)
@ -119,7 +118,7 @@ namespace ASC.Files.Core.Data
.ToList();
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
{
@ -127,10 +126,10 @@ namespace ASC.Files.Core.Data
}
var toDelete = FilesDbContext.Security
.Where(a => a.TenantId == r.Tenant)
.Where(a => folders.Any(b => b == a.EntryId))
.Where(a => a.EntryType == FileEntryType.Folder)
.Where(a => a.Subject == r.Subject);
.Where(a => a.TenantId == r.Tenant &&
folders.Contains(a.EntryId) &&
a.EntryType == FileEntryType.Folder &&
a.Subject == r.Subject);
FilesDbContext.Security.RemoveRange(toDelete);
FilesDbContext.SaveChanges();
@ -144,10 +143,10 @@ namespace ASC.Files.Core.Data
if (0 < files.Count)
{
var toDelete = FilesDbContext.Security
.Where(a => a.TenantId == r.Tenant)
.Where(a => files.Any(b => b == a.EntryId))
.Where(a => a.EntryType == FileEntryType.File)
.Where(a => a.Subject == r.Subject);
.Where(a => a.TenantId == r.Tenant &&
files.Contains(a.EntryId) &&
a.EntryType == FileEntryType.File &&
a.Subject == r.Subject);
FilesDbContext.Security.RemoveRange(toDelete);
FilesDbContext.SaveChanges();
@ -175,7 +174,7 @@ namespace ASC.Files.Core.Data
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);
}
@ -210,11 +209,11 @@ namespace ASC.Files.Core.Data
{
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())
{
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));
@ -281,13 +280,13 @@ namespace ASC.Files.Core.Data
{
var q = Query(FilesDbContext.Security)
.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 => r.DbFilesSecurity.EntryType == FileEntryType.Folder)
.Where(r => folders.Contains(r.DbFolderTree.FolderId) &&
r.DbFilesSecurity.EntryType == FileEntryType.Folder)
.ToList();
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 })
.ToList();
q = q.Union(q1).ToList();

View File

@ -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 })
.Where(r => r.Link.TenantId == r.Tag.TenantId)
.Where(r => r.Tag.Flag == tagType)
.Where(r => r.Link.EntryType == FileEntryType.File && filesId.Any(f => r.Link.EntryId == f)
|| r.Link.EntryType == FileEntryType.Folder && foldersId.Any(f => r.Link.EntryId == f));
.Where(r => r.Link.EntryType == FileEntryType.File && filesId.Contains(r.Link.EntryId)
|| r.Link.EntryType == FileEntryType.Folder && foldersId.Contains(r.Link.EntryId));
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 })
.Where(r => r.Link.TenantId == r.Tag.TenantId)
.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);
return FromQuery(q);
@ -271,7 +271,7 @@ namespace ASC.Files.Core.Data
FilesDbContext.SaveChanges();
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.SaveChanges();
@ -470,7 +470,7 @@ namespace ASC.Files.Core.Data
.Where(r => r.Tag.Flag == TagType.New)
.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 => 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)
{
@ -514,24 +514,18 @@ namespace ASC.Files.Core.Data
var shareQuery =
new Func<IQueryable<TagLinkData>>(() => getBaseSqlQuery().Where(
r => FilesDbContext.Security
.Where(a => a.TenantId == TenantID)
.Where(a => a.EntryId == r.Link.EntryId)
.Where(a => a.EntryType == r.Link.EntryType)
.Any()));
.Any(a => a.TenantId == TenantID && a.EntryId == r.Link.EntryId && a.EntryType == r.Link.EntryType)));
var tmpShareFileTags =
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 })
.Where(r => r.file.TenantId == TenantID)
.Where(r => r.file.CreateBy != subject)
.Where(r => r.tagLink.Link.EntryType == FileEntryType.File)
.Where(r => r.file.TenantId == TenantID && r.file.CreateBy != subject && r.tagLink.Link.EntryType == FileEntryType.File)
.Select(r => new
{
r.tagLink,
root = FilesDbContext.Folders
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
.Where(x => x.folder.TenantId == TenantID)
.Where(x => x.tree.FolderId == r.file.FolderId)
.Where(x => x.folder.TenantId == TenantID && x.tree.FolderId == r.file.FolderId)
.OrderByDescending(r => r.tree.Level)
.Select(r => r.folder)
.Take(1)
@ -546,9 +540,7 @@ namespace ASC.Files.Core.Data
var tmpShareFolderTags =
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 })
.Where(r => r.folder.TenantId == TenantID)
.Where(r => r.folder.CreateBy != subject)
.Where(r => r.tagLink.Link.EntryType == FileEntryType.Folder)
.Where(r => r.folder.TenantId == TenantID && r.folder.CreateBy != subject && r.tagLink.Link.EntryType == FileEntryType.Folder)
.Select(r => new
{
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 })
.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 })
.Where(r => r.account.UserId != subject)
.Where(r => r.account.FolderType == FolderType.USER)
.Where(r =>
r.mapping.Id.StartsWith("sbox-" + r.account.Id) ||
r.mapping.Id.StartsWith("box-" + r.account.Id) ||
r.mapping.Id.StartsWith("dropbox-" + r.account.Id) ||
r.mapping.Id.StartsWith("spoint-" + r.account.Id) ||
r.mapping.Id.StartsWith("drive-" + r.account.Id) ||
r.mapping.Id.StartsWith("onedrive-" + r.account.Id)
.Where(r => r.account.UserId != subject &&
r.account.FolderType == FolderType.USER &&
(r.mapping.Id.StartsWith("sbox-" + r.account.Id) ||
r.mapping.Id.StartsWith("box-" + r.account.Id) ||
r.mapping.Id.StartsWith("dropbox-" + r.account.Id) ||
r.mapping.Id.StartsWith("spoint-" + r.account.Id) ||
r.mapping.Id.StartsWith("drive-" + r.account.Id) ||
r.mapping.Id.StartsWith("onedrive-" + r.account.Id))
)
.Select(r => r.tagLink);
@ -590,24 +581,22 @@ namespace ASC.Files.Core.Data
var shareQuery =
new Func<IQueryable<TagLinkData>>(() => getBaseSqlQuery().Where(
r => FilesDbContext.Security
.Where(a => a.TenantId == TenantID)
.Where(a => a.EntryId == r.Link.EntryId)
.Where(a => a.EntryType == r.Link.EntryType)
.Any()));
.Any(a => a.TenantId == TenantID &&
a.EntryId == r.Link.EntryId &&
a.EntryType == r.Link.EntryType)));
var tmpShareFileTags =
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 })
.Where(r => r.file.TenantId == TenantID)
.Where(r => r.file.CreateBy != subject)
.Where(r => r.tagLink.Link.EntryType == FileEntryType.File)
.Where(r => r.file.TenantId == TenantID &&
r.file.CreateBy != subject &&
r.tagLink.Link.EntryType == FileEntryType.File)
.Select(r => new
{
r.tagLink,
root = FilesDbContext.Folders
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
.Where(x => x.folder.TenantId == TenantID)
.Where(x => x.tree.FolderId == r.file.FolderId)
.Where(x => x.folder.TenantId == TenantID && x.tree.FolderId == r.file.FolderId)
.OrderByDescending(r => r.tree.Level)
.Select(r => r.folder)
.Take(1)
@ -622,16 +611,15 @@ namespace ASC.Files.Core.Data
var tmpShareFolderTags =
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 })
.Where(r => r.folder.TenantId == TenantID)
.Where(r => r.folder.CreateBy != subject)
.Where(r => r.tagLink.Link.EntryType == FileEntryType.Folder)
.Where(r => r.folder.TenantId == TenantID
&& r.folder.CreateBy != subject
&& r.tagLink.Link.EntryType == FileEntryType.Folder)
.Select(r => new
{
r.tagLink,
root = FilesDbContext.Folders
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
.Where(x => x.folder.TenantId == TenantID)
.Where(x => x.tree.FolderId == r.folder.ParentId)
.Where(x => x.folder.TenantId == TenantID && x.tree.FolderId == r.folder.ParentId)
.OrderByDescending(r => r.tree.Level)
.Select(r => r.folder)
.Take(1)
@ -646,9 +634,9 @@ namespace ASC.Files.Core.Data
{
var q = getBaseSqlQuery()
.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.tagLink.Link.EntryType == FileEntryType.Folder)
.Where(r => r.bunch.RightNode.StartsWith("projects/project/"))
.Where(r => r.bunch.LeftNode == r.tagLink.Link.EntryId &&
r.tagLink.Link.EntryType == FileEntryType.Folder &&
r.bunch.RightNode.StartsWith("projects/project/"))
.Select(r => r.tagLink);
tempTags = tempTags.Concat(FromQuery(q));
}
@ -664,7 +652,7 @@ namespace ASC.Files.Core.Data
var monitorFolderIdsInt = monitorFolderIds.Select(r => Convert.ToInt32(r)).ToList();
var subFoldersSqlQuery =
FilesDbContext.Tree
.Where(r => monitorFolderIdsInt.Any(a => r.ParentId == a));
.Where(r => monitorFolderIdsInt.Contains(r.ParentId));
if (!deepSearch)
{
@ -676,7 +664,7 @@ namespace ASC.Files.Core.Data
var monitorFolderIdsStrings = monitorFolderIds.Select(r => r.ToString()).ToList();
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);
result.AddRange(FromQuery(newTagsForFolders));
@ -689,7 +677,7 @@ namespace ASC.Files.Core.Data
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 })
.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)
.Select(r => r.tagLink);
@ -718,10 +706,10 @@ namespace ASC.Files.Core.Data
var newTagsForSBox = getBaseSqlQuery()
.Join(FilesDbContext.ThirdpartyIdMapping, r => r.Link.EntryId, r => r.HashId, (tagLink, mapping) => new { tagLink, mapping })
.Where(r => r.mapping.TenantId == TenantID)
.Where(r => thirdpartyFolderIds.Any(a => r.mapping.Id == a))
.Where(r => r.tagLink.Tag.Owner == subject)
.Where(r => r.tagLink.Link.EntryType == FileEntryType.Folder)
.Where(r => r.mapping.TenantId == TenantID &&
thirdpartyFolderIds.Contains(r.mapping.Id) &&
r.tagLink.Tag.Owner == subject &&
r.tagLink.Link.EntryType == FileEntryType.Folder)
.Select(r => r.tagLink);
result.AddRange(FromQuery(newTagsForSBox));