diff --git a/products/ASC.Files/Core/Core/Dao/TeamlabDao/TagDao.cs b/products/ASC.Files/Core/Core/Dao/TeamlabDao/TagDao.cs index 77d85f2246..a507466396 100644 --- a/products/ASC.Files/Core/Core/Dao/TeamlabDao/TagDao.cs +++ b/products/ASC.Files/Core/Core/Dao/TeamlabDao/TagDao.cs @@ -780,6 +780,26 @@ internal class TagDao : AbstractDao, ITagDao .Distinct() ); + static readonly Func> _newTagsThirdpartyRoomsQuery = + Microsoft.EntityFrameworkCore.EF.CompileAsyncQuery((FilesDbContext ctx, int tenantId, Guid subject) => + ctx.Tag + .AsNoTracking() + .Where(r => r.TenantId == tenantId) + .Where(r => subject == Guid.Empty || r.Owner == subject) + .Where(r => r.Type == TagType.New) + .Join(ctx.TagLink, r => r.Id, l => l.TagId, (tag, link) => new TagLinkData + { + Tag = tag, + Link = link + }) + .Where(r => r.Link.TenantId == r.Tag.TenantId) + .Join(ctx.ThirdpartyIdMapping, r => r.Link.EntryId, r => r.HashId, (tagLink, mapping) => new { tagLink, mapping }) + .Where(r => r.mapping.TenantId == tenantId && r.tagLink.Tag.Owner == subject && r.tagLink.Link.EntryType == FileEntryType.Folder) + .Join(ctx.ThirdpartyAccount, r => r.mapping.Id, r => r.FolderId, (tagLinkData, account) => new { tagLinkData, account }) + .Where(r => r.tagLinkData.mapping.Id == r.account.FolderId && r.account.RootFolderType == FolderType.VirtualRooms) + .Select(r => r.tagLinkData.tagLink).Distinct() + ); + static readonly Func, bool, IAsyncEnumerable> _getFolderQuery = Microsoft.EntityFrameworkCore.EF.CompileAsyncQuery((FilesDbContext ctx, List monitorFolderIdsInt, bool deepSearch) => ctx.Tree .AsNoTracking() @@ -930,6 +950,10 @@ internal class TagDao : AbstractDao, ITagDao result = result.Concat(FromQueryAsync(_newTagsForSBoxQuery(FilesDbContext, tenantId, subject, thirdpartyFolderIds))); } } + if (parentFolder.FolderType == FolderType.VirtualRooms) + { + result = result.Concat(FromQueryAsync(_newTagsThirdpartyRoomsQuery(FilesDbContext, tenantId, subject))); + } await foreach (var e in result) {