Include create date in audit item (#17447)
This commit is contained in:
@@ -7,6 +7,21 @@ public sealed class AuditItem : EntityBase, IAuditItem
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="AuditItem" /> class.
|
||||
/// </summary>
|
||||
public AuditItem(int objectId, AuditType type, int userId, string? entityType, DateTime createDate, string? comment = null, string? parameters = null)
|
||||
{
|
||||
DisableChangeTracking();
|
||||
|
||||
Id = objectId;
|
||||
Comment = comment;
|
||||
AuditType = type;
|
||||
UserId = userId;
|
||||
EntityType = entityType;
|
||||
Parameters = parameters;
|
||||
CreateDate = createDate;
|
||||
|
||||
EnableChangeTracking();
|
||||
}
|
||||
|
||||
public AuditItem(int objectId, AuditType type, int userId, string? entityType, string? comment = null, string? parameters = null)
|
||||
{
|
||||
DisableChangeTracking();
|
||||
|
||||
@@ -29,7 +29,7 @@ internal class AuditRepository : EntityRepositoryBase<int, IAuditItem>, IAuditRe
|
||||
|
||||
List<LogDto>? dtos = Database.Fetch<LogDto>(sql);
|
||||
|
||||
return dtos.Select(x => new AuditItem(x.NodeId, Enum<AuditType>.Parse(x.Header), x.UserId ?? Constants.Security.UnknownUserId, x.EntityType, x.Comment, x.Parameters)).ToList();
|
||||
return dtos.Select(x => new AuditItem(x.NodeId, Enum<AuditType>.Parse(x.Header), x.UserId ?? Constants.Security.UnknownUserId, x.EntityType, x.Datestamp, x.Comment, x.Parameters)).ToList();
|
||||
}
|
||||
|
||||
public void CleanLogs(int maximumAgeOfLogsInMinutes)
|
||||
@@ -104,7 +104,7 @@ internal class AuditRepository : EntityRepositoryBase<int, IAuditItem>, IAuditRe
|
||||
totalRecords = page.TotalItems;
|
||||
|
||||
var items = page.Items.Select(
|
||||
dto => new AuditItem(dto.NodeId, Enum<AuditType>.ParseOrNull(dto.Header) ?? AuditType.Custom, dto.UserId ?? Constants.Security.UnknownUserId, dto.EntityType, dto.Comment, dto.Parameters)).ToList();
|
||||
dto => new AuditItem(dto.NodeId, Enum<AuditType>.ParseOrNull(dto.Header) ?? AuditType.Custom, dto.UserId ?? Constants.Security.UnknownUserId, dto.EntityType, dto.Datestamp, dto.Comment, dto.Parameters)).ToList();
|
||||
|
||||
// map the DateStamp
|
||||
for (var i = 0; i < items.Count; i++)
|
||||
@@ -144,12 +144,12 @@ internal class AuditRepository : EntityRepositoryBase<int, IAuditItem>, IAuditRe
|
||||
protected override IAuditItem? PerformGet(int id)
|
||||
{
|
||||
Sql<ISqlContext> sql = GetBaseQuery(false);
|
||||
sql.Where(GetBaseWhereClause(), new { Id = id });
|
||||
sql.Where(GetBaseWhereClause(), new { id = id });
|
||||
|
||||
LogDto? dto = Database.First<LogDto>(sql);
|
||||
return dto == null
|
||||
? null
|
||||
: new AuditItem(dto.NodeId, Enum<AuditType>.Parse(dto.Header), dto.UserId ?? Constants.Security.UnknownUserId, dto.EntityType, dto.Comment, dto.Parameters);
|
||||
: new AuditItem(dto.NodeId, Enum<AuditType>.Parse(dto.Header), dto.UserId ?? Constants.Security.UnknownUserId, dto.EntityType, dto.Datestamp, dto.Comment, dto.Parameters);
|
||||
}
|
||||
|
||||
protected override IEnumerable<IAuditItem> PerformGetAll(params int[]? ids) => throw new NotImplementedException();
|
||||
@@ -162,7 +162,7 @@ internal class AuditRepository : EntityRepositoryBase<int, IAuditItem>, IAuditRe
|
||||
|
||||
List<LogDto>? dtos = Database.Fetch<LogDto>(sql);
|
||||
|
||||
return dtos.Select(x => new AuditItem(x.NodeId, Enum<AuditType>.Parse(x.Header), x.UserId ?? Constants.Security.UnknownUserId, x.EntityType, x.Comment, x.Parameters)).ToList();
|
||||
return dtos.Select(x => new AuditItem(x.NodeId, Enum<AuditType>.Parse(x.Header), x.UserId ?? Constants.Security.UnknownUserId, x.EntityType, x.Datestamp, x.Comment, x.Parameters)).ToList();
|
||||
}
|
||||
|
||||
protected override Sql<ISqlContext> GetBaseQuery(bool isCount)
|
||||
@@ -184,7 +184,7 @@ internal class AuditRepository : EntityRepositoryBase<int, IAuditItem>, IAuditRe
|
||||
return sql;
|
||||
}
|
||||
|
||||
protected override string GetBaseWhereClause() => "id = @id";
|
||||
protected override string GetBaseWhereClause() => "umbracoLog.id = @id";
|
||||
|
||||
protected override IEnumerable<string> GetDeleteClauses() => throw new NotImplementedException();
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// Copyright (c) Umbraco.
|
||||
// See LICENSE for more details.
|
||||
|
||||
using System.Linq;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Persistence.Repositories;
|
||||
using Umbraco.Cms.Infrastructure.Persistence;
|
||||
using Umbraco.Cms.Infrastructure.Persistence.Dtos;
|
||||
using Umbraco.Cms.Infrastructure.Persistence.Repositories.Implement;
|
||||
@@ -24,6 +24,10 @@ public class AuditRepositoryTest : UmbracoIntegrationTest
|
||||
|
||||
private ILogger<AuditRepository> _logger;
|
||||
|
||||
private IAuditRepository AuditRepository => GetRequiredService<IAuditRepository>();
|
||||
|
||||
private IAuditItem GetAuditItem(int id) => new AuditItem(id, AuditType.System, -1, UmbracoObjectTypes.Document.GetName(), "This is a System audit trail");
|
||||
|
||||
[Test]
|
||||
public void Can_Add_Audit_Entry()
|
||||
{
|
||||
@@ -40,6 +44,38 @@ public class AuditRepositoryTest : UmbracoIntegrationTest
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Has_Create_Date_When_Get_By_Id()
|
||||
{
|
||||
using var scope = ScopeProvider.CreateScope();
|
||||
|
||||
AuditRepository.Save(GetAuditItem(1));
|
||||
var auditEntry = AuditRepository.Get(1);
|
||||
Assert.That(auditEntry.CreateDate, Is.Not.EqualTo(default(DateTime)));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Has_Create_Date_When_Get_By_Query()
|
||||
{
|
||||
using var scope = ScopeProvider.CreateScope();
|
||||
|
||||
AuditRepository.Save(GetAuditItem(1));
|
||||
var auditEntry = AuditRepository.Get(AuditType.System, ScopeProvider.CreateQuery<IAuditItem>().Where(x => x.Id == 1)).FirstOrDefault();
|
||||
Assert.That(auditEntry, Is.Not.Null);
|
||||
Assert.That(auditEntry.CreateDate, Is.Not.EqualTo(default(DateTime)));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Has_Create_Date_When_Get_By_Paged_Query()
|
||||
{
|
||||
using var scope = ScopeProvider.CreateScope();
|
||||
|
||||
AuditRepository.Save(GetAuditItem(1));
|
||||
var auditEntry = AuditRepository.GetPagedResultsByQuery(ScopeProvider.CreateQuery<IAuditItem>().Where(x => x.Id == 1),0, 10, out long total, Direction.Ascending, null, null).FirstOrDefault();
|
||||
Assert.That(auditEntry, Is.Not.Null);
|
||||
Assert.That(auditEntry.CreateDate, Is.Not.EqualTo(default(DateTime)));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_Paged_Items()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user