From 66d53eff82a08135dead685c33057ed73942462c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 1 Jun 2020 01:37:34 +0300 Subject: [PATCH] Implemented extension methods to ignore all audited properties for automapper. --- .../AutoMapperExpressionExtensions.cs | 34 +++++++++++++++++++ .../AutoMapperExpressionExtensions_Tests.cs | 20 ++++++++--- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs index d231562389..1c1448b116 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs +++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs @@ -59,5 +59,39 @@ namespace Volo.Abp.AutoMapper .IgnoreCreationAuditedObjectProperties() .IgnoreModificationAuditedObjectProperties(); } + + public static IMappingExpression IgnoreSoftDeleteProperties( + this IMappingExpression mappingExpression) + where TDestination : ISoftDelete + { + return mappingExpression.Ignore(x => x.IsDeleted); + } + + public static IMappingExpression IgnoreHasDeletionTimeProperties( + this IMappingExpression mappingExpression) + where TDestination : IHasDeletionTime + { + return mappingExpression + .IgnoreSoftDeleteProperties() + .Ignore(x => x.DeletionTime); + } + + public static IMappingExpression IgnoreDeletionAuditedObjectProperties( + this IMappingExpression mappingExpression) + where TDestination : IDeletionAuditedObject + { + return mappingExpression + .IgnoreHasDeletionTimeProperties() + .Ignore(x => x.DeleterId); + } + + public static IMappingExpression IgnoreFullAuditedObjectProperties( + this IMappingExpression mappingExpression) + where TDestination : IFullAuditedObject + { + return mappingExpression + .IgnoreAuditedObjectProperties() + .IgnoreDeletionAuditedObjectProperties(); + } } } diff --git a/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs b/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs index 81c101a5d2..8c7325978f 100644 --- a/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs +++ b/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs @@ -37,7 +37,7 @@ namespace Volo.Abp.AutoMapper var mapper = CreateMapper( cfg => cfg .CreateMap() - .IgnoreAuditedObjectProperties() + .IgnoreFullAuditedObjectProperties() ); var obj2 = mapper.Map( @@ -46,7 +46,10 @@ namespace Volo.Abp.AutoMapper CreationTime = DateTime.Now, CreatorId = Guid.NewGuid(), LastModificationTime = DateTime.Now, - LastModifierId = Guid.NewGuid() + LastModifierId = Guid.NewGuid(), + DeleterId = Guid.NewGuid(), + DeletionTime = DateTime.Now, + IsDeleted = true } ); @@ -54,6 +57,9 @@ namespace Volo.Abp.AutoMapper obj2.CreatorId.ShouldBeNull(); obj2.LastModificationTime.ShouldBe(default); obj2.LastModifierId.ShouldBeNull(); + obj2.DeleterId.ShouldBeNull(); + obj2.DeletionTime.ShouldBeNull(); + obj2.IsDeleted.ShouldBeFalse(); } private static IMapper CreateMapper(Action configure) @@ -76,20 +82,26 @@ namespace Volo.Abp.AutoMapper public string Value3 { get; set; } } - public class SimpleClassAudited1 : IAuditedObject + public class SimpleClassAudited1 : IFullAuditedObject { public DateTime CreationTime { get; set; } public Guid? CreatorId { get; set; } public DateTime? LastModificationTime { get; set; } public Guid? LastModifierId { get; set; } + public bool IsDeleted { get; set; } + public DateTime? DeletionTime { get; set; } + public Guid? DeleterId { get; set; } } - public class SimpleClassAudited2 : IAuditedObject + public class SimpleClassAudited2 : IFullAuditedObject { public DateTime CreationTime { get; set; } public Guid? CreatorId { get; set; } public DateTime? LastModificationTime { get; set; } public Guid? LastModifierId { get; set; } + public bool IsDeleted { get; set; } + public DateTime? DeletionTime { get; set; } + public Guid? DeleterId { get; set; } } } } \ No newline at end of file