Optimization
This commit is contained in:
parent
eab3a9b2bd
commit
7bf739fe09
@ -143,14 +143,16 @@ namespace ASC.Core.Data
|
||||
WebstudioDbContext = dbContextManager.Value;
|
||||
}
|
||||
|
||||
private int tenantID;
|
||||
private int TenantID
|
||||
{
|
||||
get { return TenantManager.GetCurrentTenant().TenantId; }
|
||||
get { return tenantID != 0 ? tenantID : (tenantID = TenantManager.GetCurrentTenant().TenantId); }
|
||||
}
|
||||
//
|
||||
private Guid? currentUserID;
|
||||
private Guid CurrentUserID
|
||||
{
|
||||
get { return AuthContext.CurrentAccount.ID; }
|
||||
get { return (currentUserID ?? (currentUserID = AuthContext.CurrentAccount.ID)).Value; }
|
||||
}
|
||||
|
||||
public bool SaveSettings<T>(T settings, int tenantId) where T : ISettings
|
||||
|
@ -74,10 +74,17 @@ namespace ASC.Core.Tenants
|
||||
TimeZoneConverter = timeZoneConverter;
|
||||
}
|
||||
|
||||
|
||||
private TimeZoneInfo timeZoneInfo;
|
||||
private TimeZoneInfo TimeZoneInfo
|
||||
{
|
||||
get
|
||||
{
|
||||
return timeZoneInfo ?? (timeZoneInfo = TimeZoneConverter.GetTimeZone(TenantManager.GetCurrentTenant().TimeZone));
|
||||
}
|
||||
}
|
||||
public DateTime DateTimeFromUtc(DateTime utc)
|
||||
{
|
||||
return DateTimeFromUtc(TimeZoneConverter.GetTimeZone(TenantManager.GetCurrentTenant().TimeZone), utc);
|
||||
return DateTimeFromUtc(TimeZoneInfo, utc);
|
||||
}
|
||||
|
||||
public DateTime DateTimeFromUtc(string timeZone, DateTime utc)
|
||||
@ -103,7 +110,7 @@ namespace ASC.Core.Tenants
|
||||
|
||||
public DateTime DateTimeToUtc(DateTime local)
|
||||
{
|
||||
return DateTimeToUtc(TimeZoneConverter.GetTimeZone(TenantManager.GetCurrentTenant().TimeZone), local);
|
||||
return DateTimeToUtc(TimeZoneInfo, local);
|
||||
}
|
||||
|
||||
public static DateTime DateTimeToUtc(TimeZoneInfo timeZone, DateTime local)
|
||||
@ -126,7 +133,7 @@ namespace ASC.Core.Tenants
|
||||
|
||||
public DateTime DateTimeNow()
|
||||
{
|
||||
return DateTimeNow(TimeZoneConverter.GetTimeZone(TenantManager.GetCurrentTenant().TimeZone));
|
||||
return DateTimeNow(TimeZoneInfo);
|
||||
}
|
||||
|
||||
public static DateTime DateTimeNow(TimeZoneInfo timeZone)
|
||||
|
@ -282,12 +282,12 @@ namespace ASC.Files.Core.Security
|
||||
|
||||
public IEnumerable<File<T>> FilterRead<T>(IEnumerable<File<T>> entries)
|
||||
{
|
||||
return Filter(entries.Cast<FileEntry<T>>(), FilesSecurityActions.Read, AuthContext.CurrentAccount.ID).Cast<File<T>>();
|
||||
return Filter(entries, FilesSecurityActions.Read, AuthContext.CurrentAccount.ID).Cast<File<T>>();
|
||||
}
|
||||
|
||||
public IEnumerable<Folder<T>> FilterRead<T>(IEnumerable<Folder<T>> entries)
|
||||
{
|
||||
return Filter(entries.Cast<FileEntry<T>>(), FilesSecurityActions.Read, AuthContext.CurrentAccount.ID).Cast<Folder<T>>();
|
||||
return Filter(entries, FilesSecurityActions.Read, AuthContext.CurrentAccount.ID).Cast<Folder<T>>();
|
||||
}
|
||||
|
||||
public IEnumerable<File<T>> FilterEdit<T>(IEnumerable<File<T>> entries)
|
||||
|
@ -375,9 +375,10 @@ namespace ASC.Web.Files.Utils
|
||||
folders = fileSecurity.FilterRead(folders).ToList();
|
||||
entries = entries.Concat(folders);
|
||||
|
||||
var files = DaoFactory.GetFileDao<T>().GetFiles(parent.ID, orderBy, filter, subjectGroup, subjectId, searchText, searchInContent, withSubfolders);
|
||||
files = fileSecurity.FilterRead(files).ToList();
|
||||
entries = entries.Concat(files);
|
||||
|
||||
var files = DaoFactory.GetFileDao<T>()
|
||||
.GetFiles(parent.ID, orderBy, filter, subjectGroup, subjectId, searchText, searchInContent, withSubfolders);
|
||||
entries = entries.Concat(fileSecurity.FilterRead(files));
|
||||
|
||||
if (filter == FilterType.None || filter == FilterType.FoldersOnly)
|
||||
{
|
||||
@ -397,7 +398,7 @@ namespace ASC.Web.Files.Utils
|
||||
if (0 < count) entries = entries.Take(count);
|
||||
}
|
||||
|
||||
entries = FileMarker.SetTagsNew<T>(parent, entries);
|
||||
entries = FileMarker.SetTagsNew(parent, entries);
|
||||
|
||||
//sorting after marking
|
||||
if (orderBy.SortedBy == SortedByType.New)
|
||||
@ -409,8 +410,7 @@ namespace ASC.Web.Files.Utils
|
||||
if (0 < count) entries = entries.Take(count);
|
||||
}
|
||||
|
||||
SetFileStatus(entries.OfType<File<T>>().Where(r => r != null && r.ID != null && r.FileEntryType == FileEntryType.File).Select(r => r as File<T>).ToList());
|
||||
|
||||
SetFileStatus(entries.OfType<File<T>>().Where(r => r != null && r.ID != null && r.FileEntryType == FileEntryType.File).ToList());
|
||||
return entries;
|
||||
}
|
||||
|
||||
|
@ -56,14 +56,14 @@ namespace ASC.Web.Files.Utils
|
||||
}
|
||||
|
||||
|
||||
public static Guid Add(Guid userId, object fileId)
|
||||
public static Guid Add<T>(Guid userId, T fileId)
|
||||
{
|
||||
var tabId = Guid.NewGuid();
|
||||
ProlongEditing(fileId, tabId, userId);
|
||||
return tabId;
|
||||
}
|
||||
|
||||
public static bool ProlongEditing(object fileId, Guid tabId, Guid userId, bool editingAlone = false)
|
||||
public static bool ProlongEditing<T>(T fileId, Guid tabId, Guid userId, bool editingAlone = false)
|
||||
{
|
||||
var checkRight = true;
|
||||
var tracker = GetTracker(fileId);
|
||||
@ -89,7 +89,7 @@ namespace ASC.Web.Files.Utils
|
||||
return checkRight;
|
||||
}
|
||||
|
||||
public static void Remove(object fileId, Guid tabId = default, Guid userId = default)
|
||||
public static void Remove<T>(T fileId, Guid tabId = default, Guid userId = default)
|
||||
{
|
||||
var tracker = GetTracker(fileId);
|
||||
if (tracker != null)
|
||||
@ -117,7 +117,7 @@ namespace ASC.Web.Files.Utils
|
||||
SetTracker(fileId, null);
|
||||
}
|
||||
|
||||
public static void RemoveAllOther(Guid userId, object fileId)
|
||||
public static void RemoveAllOther<T>(Guid userId, T fileId)
|
||||
{
|
||||
var tracker = GetTracker(fileId);
|
||||
if (tracker != null)
|
||||
@ -138,32 +138,6 @@ namespace ASC.Web.Files.Utils
|
||||
SetTracker(fileId, null);
|
||||
}
|
||||
|
||||
public static bool IsEditing(object fileId)
|
||||
{
|
||||
var tracker = GetTracker(fileId);
|
||||
if (tracker != null)
|
||||
{
|
||||
var listForRemove = tracker._editingBy
|
||||
.Where(e => !e.Value.NewScheme && (DateTime.UtcNow - e.Value.TrackTime).Duration() > TrackTimeout)
|
||||
.ToList();
|
||||
foreach (var editTab in listForRemove)
|
||||
{
|
||||
tracker._editingBy.Remove(editTab.Key);
|
||||
}
|
||||
|
||||
if (tracker._editingBy.Count == 0)
|
||||
{
|
||||
SetTracker(fileId, null);
|
||||
return false;
|
||||
}
|
||||
|
||||
SetTracker(fileId, tracker);
|
||||
return true;
|
||||
}
|
||||
SetTracker(fileId, null);
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool IsEditing<T>(T fileId)
|
||||
{
|
||||
var tracker = GetTracker(fileId);
|
||||
@ -189,13 +163,13 @@ namespace ASC.Web.Files.Utils
|
||||
SetTracker(fileId, null);
|
||||
return false;
|
||||
}
|
||||
public static bool IsEditingAlone(object fileId)
|
||||
public static bool IsEditingAlone<T>(T fileId)
|
||||
{
|
||||
var tracker = GetTracker(fileId);
|
||||
return tracker != null && tracker._editingBy.Count == 1 && tracker._editingBy.FirstOrDefault().Value.EditingAlone;
|
||||
}
|
||||
|
||||
public static void ChangeRight(object fileId, Guid userId, bool check)
|
||||
public static void ChangeRight<T>(T fileId, Guid userId, bool check)
|
||||
{
|
||||
var tracker = GetTracker(fileId);
|
||||
if (tracker != null)
|
||||
@ -218,24 +192,24 @@ namespace ASC.Web.Files.Utils
|
||||
}
|
||||
}
|
||||
|
||||
public static List<Guid> GetEditingBy(object fileId)
|
||||
public static List<Guid> GetEditingBy<T>(T fileId)
|
||||
{
|
||||
var tracker = GetTracker(fileId);
|
||||
return tracker != null && IsEditing(fileId) ? tracker._editingBy.Values.Select(i => i.UserId).Distinct().ToList() : new List<Guid>();
|
||||
}
|
||||
|
||||
private static FileTracker GetTracker(object fileId)
|
||||
private static FileTracker GetTracker<T>(T fileId)
|
||||
{
|
||||
if (fileId != null)
|
||||
if (!fileId.Equals(default(T)))
|
||||
{
|
||||
return cache.Get<FileTracker>(TRACKER + fileId);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static void SetTracker(object fileId, FileTracker tracker)
|
||||
private static void SetTracker<T>(T fileId, FileTracker tracker)
|
||||
{
|
||||
if (fileId != null)
|
||||
if (!fileId.Equals(default(T)))
|
||||
{
|
||||
if (tracker != null)
|
||||
{
|
||||
|
@ -154,7 +154,7 @@ namespace ASC.Web.Core.Files
|
||||
|
||||
public bool CanIndex(string fileName)
|
||||
{
|
||||
return extsIndexing.Contains(GetFileExtension(fileName), StringComparer.CurrentCultureIgnoreCase);
|
||||
return ExtsIndexing.Contains(GetFileExtension(fileName), StringComparer.CurrentCultureIgnoreCase);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -213,51 +213,108 @@ namespace ASC.Web.Core.Files
|
||||
}
|
||||
}
|
||||
|
||||
private List<string> extsWebPreviewed { get => (Configuration.GetSection("files:docservice:viewed-docs").Get<string[]>() ?? new string[] { }).ToList(); }
|
||||
private List<string> extsWebEdited { get => (Configuration.GetSection("files:docservice:edited-docs").Get<string[]>() ?? new string[] { }).ToList(); }
|
||||
private List<string> extsWebReviewed { get => (Configuration.GetSection("files:docservice:reviewed-docs").Get<string[]>() ?? new string[] { }).ToList(); }
|
||||
private List<string> extsWebRestrictedEditing { get => (Configuration.GetSection("files:docservice:formfilling-docs").Get<string[]>() ?? new string[] { }).ToList(); }
|
||||
private List<string> extsWebCommented { get => (Configuration.GetSection("files:docservice:commented-docs").Get<string[]>() ?? new string[] { }).ToList(); }
|
||||
private List<string> extsMustConvert { get => (Configuration.GetSection("files:docservice:convert-docs").Get<string[]>() ?? new string[] { }).ToList(); }
|
||||
private List<string> extsIndexing { get => (Configuration.GetSection("files:index").Get<string[]>() ?? new string[] { }).ToList(); }
|
||||
private List<string> extsIndexing;
|
||||
private List<string> ExtsIndexing { get => extsIndexing ?? (extsIndexing = (Configuration.GetSection("files:index").Get<string[]>() ?? new string[] { }).ToList()); }
|
||||
|
||||
public List<string> ExtsImagePreviewed { get => (Configuration.GetSection("files:viewed-images").Get<string[]>() ?? new string[] { }).ToList(); }
|
||||
private List<string> extsImagePreviewed;
|
||||
public List<string> ExtsImagePreviewed { get => extsImagePreviewed ?? (extsImagePreviewed = (Configuration.GetSection("files:viewed-images").Get<string[]>() ?? new string[] { }).ToList()); }
|
||||
|
||||
public List<string> ExtsMediaPreviewed { get => (Configuration.GetSection("files:viewed-media").Get<string[]>() ?? new string[] { }).ToList(); }
|
||||
private List<string> extsMediaPreviewed;
|
||||
public List<string> ExtsMediaPreviewed { get => extsMediaPreviewed ?? (extsMediaPreviewed = (Configuration.GetSection("files:viewed-media").Get<string[]>() ?? new string[] { }).ToList()); }
|
||||
|
||||
private List<string> extsWebPreviewed;
|
||||
public List<string> ExtsWebPreviewed
|
||||
{
|
||||
get { return string.IsNullOrEmpty(FilesLinkUtility.DocServiceApiUrl) ? new List<string>() : extsWebPreviewed; }
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(FilesLinkUtility.DocServiceApiUrl))
|
||||
{
|
||||
return new List<string>();
|
||||
}
|
||||
|
||||
return extsWebPreviewed ?? (extsWebPreviewed = (Configuration.GetSection("files:docservice:viewed-docs").Get<string[]>() ?? new string[] { }).ToList());
|
||||
}
|
||||
}
|
||||
|
||||
private List<string> extsWebEdited;
|
||||
public List<string> ExtsWebEdited
|
||||
{
|
||||
get { return string.IsNullOrEmpty(FilesLinkUtility.DocServiceApiUrl) ? new List<string>() : extsWebEdited; }
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(FilesLinkUtility.DocServiceApiUrl))
|
||||
{
|
||||
return new List<string>();
|
||||
}
|
||||
|
||||
return extsWebEdited ?? (extsWebEdited = (Configuration.GetSection("files:docservice:edited-docs").Get<string[]>() ?? new string[] { }).ToList());
|
||||
}
|
||||
}
|
||||
|
||||
public List<string> ExtsWebEncrypt { get => (Configuration.GetSection("files:docservice:encrypted-docs").Get<string[]>() ?? new string[] { }).ToList(); }
|
||||
public List<string> extsWebEncrypt;
|
||||
public List<string> ExtsWebEncrypt { get => extsWebEncrypt ?? (extsWebEncrypt = (Configuration.GetSection("files:docservice:encrypted-docs").Get<string[]>() ?? new string[] { }).ToList()); }
|
||||
|
||||
private List<string> extsWebReviewed;
|
||||
public List<string> ExtsWebReviewed
|
||||
{
|
||||
get { return string.IsNullOrEmpty(FilesLinkUtility.DocServiceApiUrl) ? new List<string>() : extsWebReviewed; }
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(FilesLinkUtility.DocServiceApiUrl))
|
||||
{
|
||||
return new List<string>();
|
||||
}
|
||||
|
||||
return extsWebReviewed ?? (extsWebReviewed = (Configuration.GetSection("files:docservice:reviewed-docs").Get<string[]>() ?? new string[] { }).ToList());
|
||||
}
|
||||
}
|
||||
|
||||
private List<string> extsWebRestrictedEditing;
|
||||
public List<string> ExtsWebRestrictedEditing
|
||||
{
|
||||
get { return string.IsNullOrEmpty(FilesLinkUtility.DocServiceApiUrl) ? new List<string>() : extsWebRestrictedEditing; }
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(FilesLinkUtility.DocServiceApiUrl))
|
||||
{
|
||||
return new List<string>();
|
||||
}
|
||||
|
||||
return extsWebRestrictedEditing ?? (extsWebRestrictedEditing = (Configuration.GetSection("files:docservice:formfilling-docs").Get<string[]>() ?? new string[] { }).ToList());
|
||||
}
|
||||
}
|
||||
|
||||
private List<string> extsWebCommented;
|
||||
public List<string> ExtsWebCommented
|
||||
{
|
||||
get { return string.IsNullOrEmpty(FilesLinkUtility.DocServiceApiUrl) ? new List<string>() : extsWebCommented; }
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(FilesLinkUtility.DocServiceApiUrl))
|
||||
{
|
||||
return new List<string>();
|
||||
}
|
||||
|
||||
return extsWebCommented ?? (extsWebCommented = (Configuration.GetSection("files:docservice:commented-docs").Get<string[]>() ?? new string[] { }).ToList());
|
||||
}
|
||||
}
|
||||
|
||||
private List<string> extsMustConvert;
|
||||
public List<string> ExtsMustConvert
|
||||
{
|
||||
get { return string.IsNullOrEmpty(FilesLinkUtility.DocServiceConverterUrl) ? new List<string>() : extsMustConvert; }
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(FilesLinkUtility.DocServiceConverterUrl))
|
||||
{
|
||||
return new List<string>();
|
||||
}
|
||||
|
||||
return extsMustConvert ?? (extsMustConvert = (Configuration.GetSection("files:docservice:convert-docs").Get<string[]>() ?? new string[] { }).ToList());
|
||||
}
|
||||
}
|
||||
|
||||
private List<string> extsCoAuthoring;
|
||||
public List<string> ExtsCoAuthoring
|
||||
{
|
||||
get => extsCoAuthoring ?? (extsCoAuthoring = (Configuration.GetSection("files:docservice:coauthor-docs").Get<string[]>() ?? new string[] { }).ToList());
|
||||
}
|
||||
|
||||
public List<string> ExtsCoAuthoring { get => (Configuration.GetSection("files:docservice:coauthor-docs").Get<string[]>() ?? new string[] { }).ToList(); }
|
||||
public IConfiguration Configuration { get; }
|
||||
public FilesLinkUtility FilesLinkUtility { get; }
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user