Optimization

This commit is contained in:
pavelbannov 2020-05-07 14:02:29 +03:00
parent eab3a9b2bd
commit 7bf739fe09
6 changed files with 109 additions and 69 deletions

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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;
}

View File

@ -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)
{

View File

@ -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; }