Browse Source

Merge pull request #6117 from abpframework/cotur/audit-logging

Fix AuditLogging MongoDb Repository
pull/6122/head
Halil İbrahim Kalkan 6 years ago
committed by GitHub
parent
commit
c4b1d0eee0
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 71
      modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/MongoAuditLogRepository.cs

71
modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB/Volo/Abp/AuditLogging/MongoDB/MongoAuditLogRepository.cs

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