|
|
@ -171,16 +171,11 @@ namespace Volo.Abp.AuditLogging.MongoDB |
|
|
{ |
|
|
{ |
|
|
var query = GetEntityChangeListQuery(auditLogId, startTime, endTime, changeType, entityId, entityTypeFullName); |
|
|
var query = GetEntityChangeListQuery(auditLogId, startTime, endTime, changeType, entityId, entityTypeFullName); |
|
|
|
|
|
|
|
|
var auditLogs = await query.As<IMongoQueryable<AuditLog>>() |
|
|
var auditLogs = await query.As<IMongoQueryable<EntityChange>>() |
|
|
.PageBy<AuditLog, IMongoQueryable<AuditLog>>(skipCount, maxResultCount) |
|
|
.PageBy<EntityChange, IMongoQueryable<EntityChange>>(skipCount, maxResultCount) |
|
|
.ToListAsync(GetCancellationToken(cancellationToken)); |
|
|
.ToListAsync(GetCancellationToken(cancellationToken)); |
|
|
|
|
|
|
|
|
// TODO: Improve this specification
|
|
|
return auditLogs.AsQueryable().OrderBy(sorting ?? "changeTime desc").ToList(); |
|
|
|
|
|
|
|
|
return auditLogs |
|
|
|
|
|
.SelectMany(x => x.EntityChanges.Where(y => |
|
|
|
|
|
IsSatisfiedEntityChange(y, auditLogId, startTime, endTime, changeType, entityId, entityTypeFullName))) |
|
|
|
|
|
.AsQueryable().OrderBy(sorting ?? "changeTime desc").ToList(); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public virtual async Task<long> GetEntityChangeCountAsync( |
|
|
public virtual async Task<long> GetEntityChangeCountAsync( |
|
|
@ -193,8 +188,8 @@ namespace Volo.Abp.AuditLogging.MongoDB |
|
|
CancellationToken cancellationToken = default) |
|
|
CancellationToken cancellationToken = default) |
|
|
{ |
|
|
{ |
|
|
var query = GetEntityChangeListQuery(auditLogId, startTime, endTime, changeType, entityId, entityTypeFullName); |
|
|
var query = GetEntityChangeListQuery(auditLogId, startTime, endTime, changeType, entityId, entityTypeFullName); |
|
|
var count = await query.As<IMongoQueryable<AuditLog>>() |
|
|
|
|
|
.LongCountAsync(GetCancellationToken(cancellationToken)); |
|
|
var count = await query.As<IMongoQueryable<EntityChange>>().LongCountAsync(GetCancellationToken(cancellationToken)); |
|
|
|
|
|
|
|
|
return count; |
|
|
return count; |
|
|
} |
|
|
} |
|
|
@ -228,7 +223,7 @@ namespace Volo.Abp.AuditLogging.MongoDB |
|
|
{EntityChange = x, UserName = auditLogs.First(y => y.Id == x.AuditLogId).UserName}).ToList(); |
|
|
{EntityChange = x, UserName = auditLogs.First(y => y.Id == x.AuditLogId).UserName}).ToList(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
protected virtual IQueryable<AuditLog> GetEntityChangeListQuery( |
|
|
protected virtual IQueryable<EntityChange> GetEntityChangeListQuery( |
|
|
Guid? auditLogId = null, |
|
|
Guid? auditLogId = null, |
|
|
DateTime? startTime = null, |
|
|
DateTime? startTime = null, |
|
|
DateTime? endTime = null, |
|
|
DateTime? endTime = null, |
|
|
@ -237,56 +232,14 @@ namespace Volo.Abp.AuditLogging.MongoDB |
|
|
string entityTypeFullName = null) |
|
|
string entityTypeFullName = null) |
|
|
{ |
|
|
{ |
|
|
return GetMongoQueryable() |
|
|
return GetMongoQueryable() |
|
|
.Where(x => x.EntityChanges != null) |
|
|
.SelectMany(x => x.EntityChanges) |
|
|
.WhereIf(auditLogId.HasValue, e => e.Id == auditLogId) |
|
|
.WhereIf(auditLogId.HasValue, e => e.Id == auditLogId) |
|
|
.WhereIf(startTime.HasValue, e => e.EntityChanges.Any(ec => ec.ChangeTime >= startTime)) |
|
|
.WhereIf(startTime.HasValue, e => e.ChangeTime >= startTime) |
|
|
.WhereIf(endTime.HasValue, e => e.EntityChanges.Any(ec => ec.ChangeTime >= endTime)) |
|
|
.WhereIf(endTime.HasValue, e => e.ChangeTime <= endTime) |
|
|
.WhereIf(changeType.HasValue, e => e.EntityChanges.Any(ec => ec.ChangeType == changeType)) |
|
|
.WhereIf(changeType.HasValue, e => e.ChangeType == changeType) |
|
|
.WhereIf(!string.IsNullOrWhiteSpace(entityId), e => e.EntityChanges.Any(ec => ec.EntityId == entityId)) |
|
|
.WhereIf(!string.IsNullOrWhiteSpace(entityId), e => e.EntityId == entityId) |
|
|
.WhereIf(!string.IsNullOrWhiteSpace(entityTypeFullName), |
|
|
.WhereIf(!string.IsNullOrWhiteSpace(entityTypeFullName), |
|
|
e => e.EntityChanges.Any(ec => ec.EntityTypeFullName.Contains(entityTypeFullName))); |
|
|
e => e.EntityTypeFullName.Contains(entityTypeFullName)); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected virtual bool IsSatisfiedEntityChange( |
|
|
|
|
|
EntityChange entityChange, |
|
|
|
|
|
Guid? auditLogId = null, |
|
|
|
|
|
DateTime? startTime = null, |
|
|
|
|
|
DateTime? endTime = null, |
|
|
|
|
|
EntityChangeType? changeType = null, |
|
|
|
|
|
string entityId = null, |
|
|
|
|
|
string entityTypeFullName = null) |
|
|
|
|
|
{ |
|
|
|
|
|
if (auditLogId != null && auditLogId != entityChange.AuditLogId) |
|
|
|
|
|
{ |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (startTime != null && startTime.Value >= entityChange.ChangeTime) |
|
|
|
|
|
{ |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (endTime != null && endTime.Value <= entityChange.ChangeTime) |
|
|
|
|
|
{ |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (changeType != null && changeType != entityChange.ChangeType) |
|
|
|
|
|
{ |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (entityId != null && entityId != entityChange.EntityId) |
|
|
|
|
|
{ |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (entityTypeFullName != null && entityChange.EntityTypeFullName.Contains(entityTypeFullName)) |
|
|
|
|
|
{ |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|