diff --git a/common/ASC.Common/ASC.Common.csproj b/common/ASC.Common/ASC.Common.csproj
index 27543bf4ce..789486810d 100644
--- a/common/ASC.Common/ASC.Common.csproj
+++ b/common/ASC.Common/ASC.Common.csproj
@@ -61,7 +61,6 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
-->
-
diff --git a/products/ASC.Files/Core/Core/Dao/TeamlabDao/FileDao.cs b/products/ASC.Files/Core/Core/Dao/TeamlabDao/FileDao.cs
index 51d326a2a6..2e8b3e4990 100644
--- a/products/ASC.Files/Core/Core/Dao/TeamlabDao/FileDao.cs
+++ b/products/ASC.Files/Core/Core/Dao/TeamlabDao/FileDao.cs
@@ -123,13 +123,18 @@ namespace ASC.Files.Core.Data
public File GetFile(int fileId)
{
var query = GetFileQuery(r => r.Id == fileId && r.CurrentVersion).AsNoTracking();
- return ToFile(FromQueryWithShared(query).SingleOrDefault());
+ return ToFile(
+ FromQueryWithShared(query)
+ .Take(1)
+ .SingleOrDefault());
}
public File GetFile(int fileId, int fileVersion)
{
var query = GetFileQuery(r => r.Id == fileId && r.Version == fileVersion).AsNoTracking();
- return ToFile(FromQueryWithShared(query).SingleOrDefault());
+ return ToFile(FromQueryWithShared(query)
+ .Take(1)
+ .SingleOrDefault());
}
public File GetFile(int parentId, string title)
@@ -1328,9 +1333,11 @@ namespace ASC.Files.Core.Data
.Where(x => x.tree.FolderId == r.FolderId)
.OrderByDescending(r => r.tree.Level)
.Select(r => r.folder)
+ .Take(1)
.FirstOrDefault(),
Shared =
FilesDbContext.Security
+ .Where(x=> x.TenantId == TenantID)
.Where(x => x.EntryType == FileEntryType.File)
.Where(x => x.EntryId == r.Id.ToString())
.Any()
@@ -1349,6 +1356,7 @@ namespace ASC.Files.Core.Data
.Where(x => x.tree.FolderId == r.FolderId)
.OrderByDescending(r => r.tree.Level)
.Select(r => r.folder)
+ .Take(1)
.FirstOrDefault(),
Shared = true
});
diff --git a/products/ASC.Files/Core/Core/Dao/TeamlabDao/FolderDao.cs b/products/ASC.Files/Core/Core/Dao/TeamlabDao/FolderDao.cs
index e771c42f9f..85774565b2 100644
--- a/products/ASC.Files/Core/Core/Dao/TeamlabDao/FolderDao.cs
+++ b/products/ASC.Files/Core/Core/Dao/TeamlabDao/FolderDao.cs
@@ -353,13 +353,13 @@ namespace ASC.Files.Core.Data
//full path to root
var oldTree = FilesDbContext.Tree
- .Where(r => r.FolderId == (int)folder.ParentFolderID);
+ .Where(r => r.FolderId == folder.ParentFolderID);
foreach (var o in oldTree)
{
var treeToAdd = new DbFolderTree
{
- FolderId = (int)folder.ID,
+ FolderId = folder.ID,
ParentId = o.ParentId,
Level = o.Level + 1
};
@@ -1049,7 +1049,8 @@ namespace ASC.Files.Core.Data
.Select(r => r.folder)
.Take(1)
.FirstOrDefault(),
- Shared = FilesDbContext.Security
+ Shared = FilesDbContext.Security
+ .Where(x => x.TenantId == TenantID)
.Where(r => r.EntryType == FileEntryType.Folder)
.Where(x => x.EntryId == r.Id.ToString())
.Any()
diff --git a/products/ASC.Files/Core/Core/Dao/TeamlabDao/TagDao.cs b/products/ASC.Files/Core/Core/Dao/TeamlabDao/TagDao.cs
index ab17dc56c5..8b400a7eb3 100644
--- a/products/ASC.Files/Core/Core/Dao/TeamlabDao/TagDao.cs
+++ b/products/ASC.Files/Core/Core/Dao/TeamlabDao/TagDao.cs
@@ -28,7 +28,8 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
-
+using System.Text.RegularExpressions;
+
using ASC.Common;
using ASC.Core;
using ASC.Core.Common.EF;
@@ -457,15 +458,15 @@ namespace ASC.Files.Core.Data
var shareQuery =
new Func>(() => getBaseSqlQuery().Where(
r => FilesDbContext.Security
- .Where(a => a.TenantId == r.Link.TenantId)
+ .Where(a => a.TenantId == TenantID)
.Where(a => a.EntryId == r.Link.EntryId)
.Where(a => a.EntryType == r.Link.EntryType)
.Any()));
var tmpShareFileTags =
shareQuery()
- .Join(FilesDbContext.Files, r => r.Link.EntryId, f => f.Id.ToString(), (tagLink, file) => new { tagLink, file })
- .Where(r => r.file.TenantId == r.tagLink.Link.TenantId)
+ .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)
.Select(r => new
@@ -473,10 +474,11 @@ namespace ASC.Files.Core.Data
r.tagLink,
root = FilesDbContext.Folders
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
- .Where(x => x.folder.TenantId == r.file.TenantId)
+ .Where(x => x.folder.TenantId == TenantID)
.Where(x => x.tree.FolderId == r.file.FolderId)
.OrderByDescending(r => r.tree.Level)
- .Select(r => r.folder)
+ .Select(r => r.folder)
+ .Take(1)
.FirstOrDefault()
})
.Where(r => r.root.FolderType == FolderType.USER)
@@ -487,8 +489,8 @@ namespace ASC.Files.Core.Data
var tmpShareFolderTags =
shareQuery()
- .Join(FilesDbContext.Folders, r => r.Link.EntryId, f => f.Id.ToString(), (tagLink, folder) => new { tagLink, folder })
- .Where(r => r.folder.TenantId == r.tagLink.Link.TenantId)
+ .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)
.Select(r => new
@@ -496,10 +498,11 @@ namespace ASC.Files.Core.Data
r.tagLink,
root = FilesDbContext.Folders
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
- .Where(x => x.folder.TenantId == r.folder.TenantId)
+ .Where(x => x.folder.TenantId ==TenantID)
.Where(x => x.tree.FolderId == r.folder.ParentId)
.OrderByDescending(r => r.tree.Level)
- .Select(r => r.folder)
+ .Select(r => r.folder)
+ .Take(1)
.FirstOrDefault()
})
.Where(r => r.root.FolderType == FolderType.USER)
@@ -531,15 +534,15 @@ namespace ASC.Files.Core.Data
var shareQuery =
new Func>(() => getBaseSqlQuery().Where(
r => FilesDbContext.Security
- .Where(a => a.TenantId == r.Link.TenantId)
+ .Where(a => a.TenantId == TenantID)
.Where(a => a.EntryId == r.Link.EntryId)
.Where(a => a.EntryType == r.Link.EntryType)
.Any()));
var tmpShareFileTags =
shareQuery()
- .Join(FilesDbContext.Files, r => r.Link.EntryId, f => f.Id.ToString(), (tagLink, file) => new { tagLink, file })
- .Where(r => r.file.TenantId == r.tagLink.Link.TenantId)
+ .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)
.Select(r => new
@@ -547,10 +550,11 @@ namespace ASC.Files.Core.Data
r.tagLink,
root = FilesDbContext.Folders
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
- .Where(x => x.folder.TenantId == r.file.TenantId)
+ .Where(x => x.folder.TenantId == TenantID)
.Where(x => x.tree.FolderId == r.file.FolderId)
.OrderByDescending(r => r.tree.Level)
- .Select(r => r.folder)
+ .Select(r => r.folder)
+ .Take(1)
.FirstOrDefault()
})
.Where(r => r.root.FolderType == FolderType.Privacy)
@@ -561,8 +565,8 @@ namespace ASC.Files.Core.Data
var tmpShareFolderTags =
shareQuery()
- .Join(FilesDbContext.Folders, r => r.Link.EntryId, f => f.Id.ToString(), (tagLink, folder) => new { tagLink, folder })
- .Where(r => r.folder.TenantId == r.tagLink.Link.TenantId)
+ .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)
.Select(r => new
@@ -570,10 +574,11 @@ namespace ASC.Files.Core.Data
r.tagLink,
root = FilesDbContext.Folders
.Join(FilesDbContext.Tree, a => a.Id, b => b.ParentId, (folder, tree) => new { folder, tree })
- .Where(x => x.folder.TenantId == r.folder.TenantId)
+ .Where(x => x.folder.TenantId == TenantID)
.Where(x => x.tree.FolderId == r.folder.ParentId)
.OrderByDescending(r => r.tree.Level)
.Select(r => r.folder)
+ .Take(1)
.FirstOrDefault()
})
.Where(r => r.root.FolderType == FolderType.Privacy)
@@ -626,7 +631,7 @@ namespace ASC.Files.Core.Data
var newTagsForFiles =
getBaseSqlQuery()
- .Join(FilesDbContext.Files, r => r.Link.EntryId, r => r.Id.ToString(), (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 => where.Any(a => r.file.FolderId.ToString() == a))
.Where(r => r.tagLink.Link.EntryType == FileEntryType.File)
@@ -657,7 +662,7 @@ 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 == r.tagLink.Link.TenantId)
+ .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)
@@ -672,7 +677,7 @@ namespace ASC.Files.Core.Data
protected List FromQuery(IQueryable dbFilesTags)
{
return dbFilesTags
- //.ToList()
+ .ToList()
.Select(ToTag)
.ToList();
}
diff --git a/products/ASC.Files/Core/Core/EF/DbFilesTagLink.cs b/products/ASC.Files/Core/Core/EF/DbFilesTagLink.cs
index 8aac237b2d..d31e0d3121 100644
--- a/products/ASC.Files/Core/Core/EF/DbFilesTagLink.cs
+++ b/products/ASC.Files/Core/Core/EF/DbFilesTagLink.cs
@@ -24,10 +24,10 @@ namespace ASC.Files.Core.EF
public string EntryId { get; set; }
[Column("create_by")]
- public Guid CreateBy { get; set; }
+ public Guid? CreateBy { get; set; }
[Column("create_on")]
- public DateTime CreateOn { get; set; }
+ public DateTime? CreateOn { get; set; }
[Column("tag_count")]
public int TagCount { get; set; }