Merge branch 'develop' into feature/file-folder-selectors

This commit is contained in:
Alexey Safronov 2021-08-20 17:35:31 +03:00 committed by GitHub
commit 61528fb9c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 74 additions and 125 deletions

View File

@ -87,39 +87,9 @@ namespace ASC.Common.Logging
// break; // break;
case 20101: case 20101:
var keyValuePairs = state as IEnumerable<KeyValuePair<string, object>>; var keyValuePairs = state as IEnumerable<KeyValuePair<string, object>>;
string commandText = null; CustomLogger.DebugWithProps("", keyValuePairs);
string parameters = null;
string elapsed = null;
foreach (var kvp in keyValuePairs)
{
commandText = GetParam(kvp, "commandText", commandText);
parameters = GetParam(kvp, "parameters", parameters);
elapsed = GetParam(kvp, "elapsed", elapsed);
}
if (!string.IsNullOrEmpty(commandText))
{
CustomLogger.DebugWithProps("",
new KeyValuePair<string, object>("duration", elapsed ?? ""),
new KeyValuePair<string, object>("sql", RemoveWhiteSpaces(commandText)),
new KeyValuePair<string, object>("sqlParams", parameters ?? "")
);
}
static string GetParam(KeyValuePair<string, object> keyValuePair, string key, string currentVal)
{
return keyValuePair.Key == key ? keyValuePair.Value.ToString() : currentVal;
}
break; break;
} }
} }
private string RemoveWhiteSpaces(string str)
{
return !string.IsNullOrEmpty(str) ?
str.Replace(Environment.NewLine, " ").Replace("\n", "").Replace("\r", "").Replace("\t", " ") :
string.Empty;
}
} }
} }

View File

@ -54,8 +54,7 @@ namespace ASC.Common.Logging
void Trace(object message); void Trace(object message);
void TraceFormat(string message, object arg0); void TraceFormat(string message, object arg0);
void DebugWithProps(string message, params KeyValuePair<string, object>[] props); void DebugWithProps(string message, IEnumerable<KeyValuePair<string, object>> props);
void DebugWithProps(string message, KeyValuePair<string, object> prop1, KeyValuePair<string, object> prop2, KeyValuePair<string, object> prop3);
void Debug(object message); void Debug(object message);
void Debug(object message, Exception exception); void Debug(object message, Exception exception);
void DebugFormat(string format, params object[] args); void DebugFormat(string format, params object[] args);
@ -186,7 +185,7 @@ namespace ASC.Common.Logging
if (IsDebugEnabled) loger.DebugFormat(provider, format, args); if (IsDebugEnabled) loger.DebugFormat(provider, format, args);
} }
public void DebugWithProps(string message, params KeyValuePair<string, object>[] props) public void DebugWithProps(string message, IEnumerable<KeyValuePair<string, object>> props)
{ {
if (!IsDebugEnabled) return; if (!IsDebugEnabled) return;
@ -509,7 +508,7 @@ namespace ASC.Common.Logging
if (IsDebugEnabled) Loger.Debug(provider, format, args); if (IsDebugEnabled) Loger.Debug(provider, format, args);
} }
public void DebugWithProps(string message, params KeyValuePair<string, object>[] props) public void DebugWithProps(string message, IEnumerable<KeyValuePair<string, object>> props)
{ {
if (!IsDebugEnabled) return; if (!IsDebugEnabled) return;
@ -522,29 +521,6 @@ namespace ASC.Common.Logging
Loger.Log(theEvent); Loger.Log(theEvent);
} }
public void DebugWithProps(string message, KeyValuePair<string, object> prop1, KeyValuePair<string, object> prop2, KeyValuePair<string, object> prop3)
{
if (!IsDebugEnabled) return;
var theEvent = new LogEventInfo
{
Message = message,
LoggerName = Name,
Level = LogLevel.Debug
};
AddProp(prop1);
AddProp(prop2);
AddProp(prop3);
Loger.Log(theEvent);
void AddProp(KeyValuePair<string, object> p)
{
theEvent.Properties[p.Key] = p.Value;
}
}
public void Info(object message) public void Info(object message)
{ {
@ -723,7 +699,7 @@ namespace ASC.Common.Logging
{ {
} }
public void DebugWithProps(string message, params KeyValuePair<string, object>[] props) public void DebugWithProps(string message, IEnumerable<KeyValuePair<string, object>> props)
{ {
} }
@ -865,10 +841,6 @@ namespace ASC.Common.Logging
public void FatalFormat(IFormatProvider provider, string format, params object[] args) public void FatalFormat(IFormatProvider provider, string format, params object[] args)
{ {
}
public void DebugWithProps(string message, KeyValuePair<string, object> prop1, KeyValuePair<string, object> prop2, KeyValuePair<string, object> prop3)
{
} }
public void Configure(string name) public void Configure(string name)

View File

@ -186,10 +186,9 @@ namespace ASC.Core.Data
var defaultData = Serialize(def); var defaultData = Serialize(def);
var tr = WebstudioDbContext.Database.BeginTransaction();
if (data.SequenceEqual(defaultData)) if (data.SequenceEqual(defaultData))
{ {
using var tr = WebstudioDbContext.Database.BeginTransaction();
// remove default settings // remove default settings
var s = WebstudioDbContext.WebstudioSettings var s = WebstudioDbContext.WebstudioSettings
.Where(r => r.Id == settings.ID) .Where(r => r.Id == settings.ID)
@ -200,7 +199,10 @@ namespace ASC.Core.Data
if (s != null) if (s != null)
{ {
WebstudioDbContext.WebstudioSettings.Remove(s); WebstudioDbContext.WebstudioSettings.Remove(s);
} }
WebstudioDbContext.SaveChanges();
tr.Commit();
} }
else else
{ {
@ -212,12 +214,11 @@ namespace ASC.Core.Data
Data = data Data = data
}; };
WebstudioDbContext.AddOrUpdate(r => r.WebstudioSettings, s); WebstudioDbContext.AddOrUpdate(r => r.WebstudioSettings, s);
WebstudioDbContext.SaveChanges();
} }
WebstudioDbContext.SaveChanges();
tr.Commit();
DbSettingsManagerCache.Remove(key); DbSettingsManagerCache.Remove(key);
Cache.Insert(key, settings, expirationTimeout); Cache.Insert(key, settings, expirationTimeout);

View File

@ -252,8 +252,7 @@ namespace ASC.Core.Data
.Where(r => r.Alias == domain || r.MappedDomain == domain) .Where(r => r.Alias == domain || r.MappedDomain == domain)
.OrderBy(a => a.Status == TenantStatus.Restoring ? TenantStatus.Active : a.Status) .OrderBy(a => a.Status == TenantStatus.Restoring ? TenantStatus.Active : a.Status)
.ThenByDescending(a => a.Status == TenantStatus.Restoring ? 0 : a.Id) .ThenByDescending(a => a.Status == TenantStatus.Restoring ? 0 : a.Id)
.Select(FromDbTenantToTenant) .Select(FromDbTenantToTenant)
.Take(1)
.FirstOrDefault(); .FirstOrDefault();
} }

View File

@ -335,7 +335,7 @@ namespace ASC.Core.Data
q = q.Where(r => r.LastModified >= from); q = q.Where(r => r.LastModified >= from);
} }
return q.Select(FromUserGroupToUserGroupRef).ToDictionary(r => r.CreateKey(), r => r); return q.Select(FromUserGroupToUserGroupRef).AsEnumerable().ToDictionary(r => r.CreateKey(), r => r);
} }
public DateTime GetUserPasswordStamp(int tenant, Guid id) public DateTime GetUserPasswordStamp(int tenant, Guid id)
@ -364,6 +364,7 @@ namespace ASC.Core.Data
{ {
return GetUserQuery(tenant, from) return GetUserQuery(tenant, from)
.Select(FromUserToUserInfo) .Select(FromUserToUserInfo)
.AsEnumerable()
.ToDictionary(r => r.ID, r => r); .ToDictionary(r => r.ID, r => r);
} }

View File

@ -29,6 +29,7 @@ namespace ASC.Core.Common.EF
internal ConnectionStringSettings ConnectionStringSettings { get; set; } internal ConnectionStringSettings ConnectionStringSettings { get; set; }
protected internal Provider Provider { get; set; } protected internal Provider Provider { get; set; }
public static ServerVersion ServerVersion = ServerVersion.Parse("8.0.25");
protected virtual Dictionary<Provider, Func<BaseDbContext>> ProviderContext protected virtual Dictionary<Provider, Func<BaseDbContext>> ProviderContext
{ {
get { return null; } get { return null; }
@ -61,7 +62,7 @@ namespace ASC.Core.Common.EF
switch (Provider) switch (Provider)
{ {
case Provider.MySql: case Provider.MySql:
optionsBuilder.UseMySql(ConnectionStringSettings.ConnectionString, ServerVersion.Parse("8.0.25"), r=> optionsBuilder.UseMySql(ConnectionStringSettings.ConnectionString, ServerVersion, r=>
{ {
if (!string.IsNullOrEmpty(MigrateAssembly)) if (!string.IsNullOrEmpty(MigrateAssembly))
{ {

View File

@ -2,12 +2,12 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net5.0</TargetFramework>
<NoWarn>NU1701</NoWarn>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>none</DebugType> <DebugType>none</DebugType>
<DebugSymbols>false</DebugSymbols> <DebugSymbols>false</DebugSymbols>
<NoWarn>1701;1702;NU1701</NoWarn>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -8,6 +8,7 @@
<Copyright>(c) Ascensio System SIA. All rights reserved</Copyright> <Copyright>(c) Ascensio System SIA. All rights reserved</Copyright>
<RazorCompileOnBuild>false</RazorCompileOnBuild> <RazorCompileOnBuild>false</RazorCompileOnBuild>
<GenerateMvcApplicationPartsAssemblyAttributes>false</GenerateMvcApplicationPartsAssemblyAttributes> <GenerateMvcApplicationPartsAssemblyAttributes>false</GenerateMvcApplicationPartsAssemblyAttributes>
<NoWarn>NU1701</NoWarn>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -436,25 +436,25 @@ namespace ASC.ElasticSearch
} }
} }
public async Task<bool> IndexAsync(T data, bool immediately = true) public Task<bool> IndexAsync(T data, bool immediately = true)
{ {
var t = ServiceProvider.GetService<T>(); var t = ServiceProvider.GetService<T>();
if (!await SupportAsync(t)) return false; if (!Support(t)) return Task.FromResult(false);
return await Queue(() => Indexer.Index(data, immediately)); return Queue(() => Indexer.Index(data, immediately));
} }
public async Task<bool> UpdateAsync(T data, bool immediately = true, params Expression<Func<T, object>>[] fields) public Task<bool> UpdateAsync(T data, bool immediately = true, params Expression<Func<T, object>>[] fields)
{ {
var t = ServiceProvider.GetService<T>(); var t = ServiceProvider.GetService<T>();
if (!await SupportAsync(t)) return false; if (!Support(t)) return Task.FromResult(false);
return await Queue(() => Indexer.Update(data, immediately, fields)); return Queue(() => Indexer.Update(data, immediately, fields));
} }
public async Task<bool> DeleteAsync(T data, bool immediately = true) public Task<bool> DeleteAsync(T data, bool immediately = true)
{ {
var t = ServiceProvider.GetService<T>(); var t = ServiceProvider.GetService<T>();
if (!await SupportAsync(t)) return false; if (!Support(t)) return Task.FromResult(false);
return await Queue(() => Indexer.Delete(data, immediately)); return Queue(() => Indexer.Delete(data, immediately));
} }
public async Task<bool> DeleteAsync(Expression<Func<Selector<T>, Selector<T>>> expression, bool immediately = true) public async Task<bool> DeleteAsync(Expression<Func<Selector<T>, Selector<T>>> expression, bool immediately = true)

View File

@ -13,7 +13,7 @@
<targets async="true"> <targets async="true">
<default-target-parameters type="SelfCleaning" encoding="utf-8" archiveNumbering="DateAndSequence" archiveEvery="Day" enableArchiveFileCompression="true" archiveAboveSize="52428800" keepFileOpen="true" archiveDateFormat="MM-dd" layout="${date:format=yyyy-MM-dd HH\:mm\:ss,fff} ${level:uppercase=true} [${threadid}] ${logger} - ${message} ${exception:format=ToString}"/> <default-target-parameters type="SelfCleaning" encoding="utf-8" archiveNumbering="DateAndSequence" archiveEvery="Day" enableArchiveFileCompression="true" archiveAboveSize="52428800" keepFileOpen="true" archiveDateFormat="MM-dd" layout="${date:format=yyyy-MM-dd HH\:mm\:ss,fff} ${level:uppercase=true} [${threadid}] ${logger} - ${message} ${exception:format=ToString}"/>
<target name="web" type="SelfCleaning" fileName="${var:dir}${var:name}.log" /> <target name="web" type="SelfCleaning" fileName="${var:dir}${var:name}.log" />
<target name="sql" type="SelfCleaning" fileName="${var:dir}${var:name}.sql.log" layout="${date:universalTime=true:format=yyyy-MM-dd HH\:mm\:ss,fff}|${threadid}|${event-properties:item=duration}|${message}|${event-properties:item=sql}|${event-properties:item=sqlParams}"/> <target name="sql" type="SelfCleaning" fileName="${var:dir}${var:name}.sql.log" layout="${date:universalTime=true:format=yyyy-MM-dd HH\:mm\:ss,fff}|${threadid}|${event-properties:item=elapsed}|${message}|${replace:inner=${event-properties:item=commandText}:searchFor=\\r\\n|\\s:replaceWith= :regex=true}|${event-properties:item=parameters}"/>
<target name="ownFile-web" type="File" fileName="${var:dir}${var:name}.asp.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" /> <target name="ownFile-web" type="File" fileName="${var:dir}${var:name}.asp.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
</targets> </targets>

View File

@ -4,6 +4,7 @@
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework> <TargetFramework>net5.0</TargetFramework>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<NoWarn>NU1701</NoWarn>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -203,10 +203,13 @@ namespace ASC.Web.Files.Classes
{ {
set set
{ {
var setting = LoadForCurrentUser(); var setting = LoadForCurrentUser();
setting.DefaultSortedBySetting = value.SortedBy; if (setting.DefaultSortedBySetting != value.SortedBy || setting.DefaultSortedAscSetting != value.IsAsc)
setting.DefaultSortedAscSetting = value.IsAsc; {
SaveForCurrentUser(setting); setting.DefaultSortedBySetting = value.SortedBy;
setting.DefaultSortedAscSetting = value.IsAsc;
SaveForCurrentUser(setting);
}
} }
get get
{ {

View File

@ -141,17 +141,16 @@ namespace ASC.Web.Files
} }
public long GetUserSpaceUsage(Guid userId) public long GetUserSpaceUsage(Guid userId)
{ {
var tenantId = TenantManager.GetCurrentTenant().TenantId;
return FilesDbContext.Files return FilesDbContext.Files
.Join(FilesDbContext.Tree, a => a.FolderId, b => b.FolderId, (file, tree) => new { file, tree }) .Join(FilesDbContext.Tree, a => a.FolderId, b => b.FolderId, (file, tree) => new { file, tree })
.Join(FilesDbContext.BunchObjects, a => a.tree.ParentId.ToString(), b => b.LeftNode, (fileTree, bunch) => new { fileTree.file, fileTree.tree, bunch }) .Join(FilesDbContext.BunchObjects, a => a.tree.ParentId.ToString(), b => b.LeftNode, (fileTree, bunch) => new { fileTree.file, fileTree.tree, bunch })
.Where(r => r.file.TenantId == r.bunch.TenantId) .Where(r => r.file.TenantId == r.bunch.TenantId &&
.Where(r => r.file.TenantId == TenantManager.GetCurrentTenant().TenantId) r.file.TenantId == tenantId &&
.Where(r => r.file.CreateBy == userId) r.file.CreateBy == userId &&
.Where(r => r.bunch.RightNode.StartsWith("files/trash/") | r.bunch.RightNode.StartsWith("files/my/")) (r.bunch.RightNode.StartsWith("files/trash/") | r.bunch.RightNode.StartsWith("files/my/")))
.GroupBy(r => r.file.CreateBy) .Sum(r => r.file.ContentLength);
.Select(r => r.Sum(f => f.file.ContentLength))
.FirstOrDefault();
} }
} }
} }

View File

@ -98,8 +98,9 @@ namespace ASC.Files.Core.Data
protected IQueryable<T> Query<T>(DbSet<T> set) where T : class, IDbFile protected IQueryable<T> Query<T>(DbSet<T> set) where T : class, IDbFile
{ {
return set.Where(r => r.TenantId == TenantID); var tenantId = TenantID;
return set.Where(r => r.TenantId == tenantId);
} }
protected internal IQueryable<DbFile> GetFileQuery(Expression<Func<DbFile, bool>> where) protected internal IQueryable<DbFile> GetFileQuery(Expression<Func<DbFile, bool>> where)

View File

@ -134,7 +134,6 @@ namespace ASC.Files.Core.Data
var query = GetFileQuery(r => r.Id == fileId && r.CurrentVersion).AsNoTracking(); var query = GetFileQuery(r => r.Id == fileId && r.CurrentVersion).AsNoTracking();
return ToFile( return ToFile(
FromQueryWithShared(query) FromQueryWithShared(query)
.Take(1)
.SingleOrDefault()); .SingleOrDefault());
} }
@ -142,7 +141,6 @@ namespace ASC.Files.Core.Data
{ {
var query = GetFileQuery(r => r.Id == fileId && r.Version == fileVersion).AsNoTracking(); var query = GetFileQuery(r => r.Id == fileId && r.Version == fileVersion).AsNoTracking();
return ToFile(FromQueryWithShared(query) return ToFile(FromQueryWithShared(query)
.Take(1)
.SingleOrDefault()); .SingleOrDefault());
} }
@ -169,7 +167,7 @@ namespace ASC.Files.Core.Data
query = query.OrderByDescending(r => r.Version); query = query.OrderByDescending(r => r.Version);
return ToFile(FromQueryWithShared(query).Take(1).SingleOrDefault()); return ToFile(FromQueryWithShared(query).SingleOrDefault());
} }
public List<File<int>> GetFileHistory(int fileId) public List<File<int>> GetFileHistory(int fileId)
@ -548,8 +546,7 @@ namespace ASC.Files.Core.Data
if (file.CreateBy == default) file.CreateBy = AuthContext.CurrentAccount.ID; if (file.CreateBy == default) file.CreateBy = AuthContext.CurrentAccount.ID;
if (file.CreateOn == default) file.CreateOn = TenantUtil.DateTimeNow(); if (file.CreateOn == default) file.CreateOn = TenantUtil.DateTimeNow();
toUpdate = FilesDbContext.Files toUpdate = FilesDbContext.Files
.Take(1)
.FirstOrDefault(r => r.Id == file.ID && r.Version == file.Version && r.TenantId == TenantID); .FirstOrDefault(r => r.Id == file.ID && r.Version == file.Version && r.TenantId == TenantID);
toUpdate.Version = file.Version; toUpdate.Version = file.Version;
@ -627,7 +624,6 @@ namespace ASC.Files.Core.Data
|| file.Version <= 1) return; || file.Version <= 1) return;
var toDelete = Query(FilesDbContext.Files) var toDelete = Query(FilesDbContext.Files)
.Take(1)
.FirstOrDefault(r => r.Id == file.ID && r.Version == file.Version); .FirstOrDefault(r => r.Id == file.ID && r.Version == file.Version);
if (toDelete != null) if (toDelete != null)
@ -637,7 +633,6 @@ namespace ASC.Files.Core.Data
FilesDbContext.SaveChanges(); FilesDbContext.SaveChanges();
var toUpdate = Query(FilesDbContext.Files) var toUpdate = Query(FilesDbContext.Files)
.Take(1)
.FirstOrDefault(r => r.Id == file.ID && r.Version == file.Version - 1); .FirstOrDefault(r => r.Id == file.ID && r.Version == file.Version - 1);
toUpdate.CurrentVersion = true; toUpdate.CurrentVersion = true;
@ -871,7 +866,6 @@ namespace ASC.Files.Core.Data
var toUpdate = Query(FilesDbContext.Files) var toUpdate = Query(FilesDbContext.Files)
.Where(r => r.Id == file.ID) .Where(r => r.Id == file.ID)
.Where(r => r.CurrentVersion) .Where(r => r.CurrentVersion)
.Take(1)
.FirstOrDefault(); .FirstOrDefault();
toUpdate.Title = newTitle; toUpdate.Title = newTitle;
@ -893,7 +887,6 @@ namespace ASC.Files.Core.Data
var toUpdate = Query(FilesDbContext.Files) var toUpdate = Query(FilesDbContext.Files)
.Where(r => r.Id == fileId) .Where(r => r.Id == fileId)
.Where(r => r.Version == fileVersion) .Where(r => r.Version == fileVersion)
.Take(1)
.FirstOrDefault(); .FirstOrDefault();
toUpdate.Comment = comment; toUpdate.Comment = comment;
@ -926,7 +919,6 @@ namespace ASC.Files.Core.Data
.Where(r => r.Id == fileId) .Where(r => r.Id == fileId)
.Where(r => r.Version == fileVersion) .Where(r => r.Version == fileVersion)
.Select(r => r.VersionGroup) .Select(r => r.VersionGroup)
.Take(1)
.FirstOrDefault(); .FirstOrDefault();
var toUpdate = Query(FilesDbContext.Files) var toUpdate = Query(FilesDbContext.Files)

View File

@ -413,23 +413,24 @@ namespace ASC.Files.Core.Data
if (tag == null) return; if (tag == null) return;
var id = Query(FilesDbContext.Tag) var id = Query(FilesDbContext.Tag)
.Where(r => r.Name == tag.TagName) .Where(r => r.Name == tag.TagName &&
.Where(r => r.Owner == tag.Owner) r.Owner == tag.Owner &&
.Where(r => r.Flag == tag.TagType) r.Flag == tag.TagType)
.Select(r => r.Id) .Select(r => r.Id)
.FirstOrDefault(); .FirstOrDefault();
if (id != 0) if (id != 0)
{ {
var entryId = MappingID(tag.EntryId).ToString();
var toDelete = Query(FilesDbContext.TagLink) var toDelete = Query(FilesDbContext.TagLink)
.Where(r => r.TagId == id) .Where(r => r.TagId == id &&
.Where(r => r.EntryId == MappingID(tag.EntryId).ToString()) r.EntryId == entryId &&
.Where(r => r.EntryType == tag.EntryType); r.EntryType == tag.EntryType);
FilesDbContext.TagLink.RemoveRange(toDelete); FilesDbContext.TagLink.RemoveRange(toDelete);
FilesDbContext.SaveChanges(); FilesDbContext.SaveChanges();
var count = Query(FilesDbContext.TagLink).Where(r => r.TagId == id).Count(); var count = Query(FilesDbContext.TagLink).Count(r => r.TagId == id);
if (count == 0) if (count == 0)
{ {
var tagToDelete = Query(FilesDbContext.Tag).Where(r => r.Id == id); var tagToDelete = Query(FilesDbContext.Tag).Where(r => r.Id == id);
@ -749,7 +750,7 @@ namespace ASC.Files.Core.Data
EntryType = r.Link.EntryType EntryType = r.Link.EntryType
} }
}) })
.ToList() .AsEnumerable()
.Select(ToTag) .Select(ToTag)
.ToList(); .ToList();
} }

View File

@ -123,7 +123,12 @@ namespace ASC.Files.Core
{ {
get => FileHelper.GetFileStatus(this, ref _status); get => FileHelper.GetFileStatus(this, ref _status);
set => _status = value; set => _status = value;
} }
public override string UniqID
{
get { return $"file_{ID}"; }
}
[JsonIgnore] [JsonIgnore]
public override string Title { get => FileHelper.GetTitle(this); } public override string Title { get => FileHelper.GetTitle(this); }

View File

@ -145,9 +145,9 @@ namespace ASC.Files.Core
public T RootFolderId { get; set; } public T RootFolderId { get; set; }
[JsonIgnore] [JsonIgnore]
public string UniqID public virtual string UniqID
{ {
get { return string.Format("{0}_{1}", GetType().Name.ToLower(), ID); } get { return $"{GetType().Name.ToLower()}_{ID}"; }
} }
public override bool Equals(object obj) public override bool Equals(object obj)

View File

@ -92,6 +92,11 @@ namespace ASC.Files.Core
public Folder(FileHelper fileHelper) : this() public Folder(FileHelper fileHelper) : this()
{ {
FileHelper = fileHelper; FileHelper = fileHelper;
}
public override string UniqID
{
get { return $"folder_{ID}"; }
} }
} }
} }

View File

@ -153,7 +153,6 @@ namespace ASC.Api.Documents
{ {
private AuthContext AuthContext { get; } private AuthContext AuthContext { get; }
private IDaoFactory DaoFactory { get; } private IDaoFactory DaoFactory { get; }
private FileSecurity FileSecurity { get; }
private GlobalFolderHelper GlobalFolderHelper { get; } private GlobalFolderHelper GlobalFolderHelper { get; }
private CommonLinkUtility CommonLinkUtility { get; } private CommonLinkUtility CommonLinkUtility { get; }
private FilesLinkUtility FilesLinkUtility { get; } private FilesLinkUtility FilesLinkUtility { get; }
@ -174,7 +173,6 @@ namespace ASC.Api.Documents
{ {
AuthContext = authContext; AuthContext = authContext;
DaoFactory = daoFactory; DaoFactory = daoFactory;
FileSecurity = fileSecurity;
GlobalFolderHelper = globalFolderHelper; GlobalFolderHelper = globalFolderHelper;
CommonLinkUtility = commonLinkUtility; CommonLinkUtility = commonLinkUtility;
FilesLinkUtility = filesLinkUtility; FilesLinkUtility = filesLinkUtility;

View File

@ -140,7 +140,6 @@ namespace ASC.Employee.Core.Controllers
) )
{ {
Log = option.Get("ASC.Api"); Log = option.Get("ASC.Api");
Log.Debug("Test");
MessageService = messageService; MessageService = messageService;
QueueWorkerReassign = queueWorkerReassign; QueueWorkerReassign = queueWorkerReassign;
QueueWorkerRemove = queueWorkerRemove; QueueWorkerRemove = queueWorkerRemove;