Merge branch 'develop' into feature/file-folder-selectors
This commit is contained in:
commit
61528fb9c2
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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))
|
||||||
{
|
{
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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)
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
@ -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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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); }
|
||||||
|
@ -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)
|
||||||
|
@ -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}"; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user