Update MongoAuditLogRepository.cs

Co-Authored-By: maliming <6908465+maliming@users.noreply.github.com>
pull/6117/head
Ahmet 5 years ago
parent 19bf713ca1
commit 6fa7c0952e

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

Loading…
Cancel
Save