From e2afbc5a62c5295a504d75e98ad54038aa2e5452 Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 9 Feb 2026 15:11:42 +0100 Subject: [PATCH] Add audit interfaces and fields to domain entities Introduced interfaces for audit fields (AddedWhen, ChangedWhen, ChangedWho, AddedWho) and updated domain entities to implement them. Adjusted properties for consistency and nullability. Updated MappingProfile to map audit fields between DTOs and entities. Improves auditability and standardization across the domain model. --- .../Common/Dto/MappingProfile.cs | 8 +++---- EnvelopeGenerator.Domain/Entities/Document.cs | 19 +++++++++------ .../Entities/DocumentStatus.cs | 15 ++++++++---- .../Entities/ElementAnnotation.cs | 13 +++++----- .../Entities/EmailTemplate.cs | 11 +++++---- EnvelopeGenerator.Domain/Entities/Envelope.cs | 24 +++++++++---------- .../Entities/EnvelopeReceiver.cs | 16 ++++++------- .../Entities/EnvelopeReceiverReadOnly.cs | 17 +++++-------- EnvelopeGenerator.Domain/Entities/History.cs | 14 ++++------- EnvelopeGenerator.Domain/Entities/Receiver.cs | 9 +++---- .../Entities/Signature.cs | 16 ++++++------- .../Interfaces/IHasAddedWhen.cs | 11 +++++++++ .../Interfaces/IHasAddedWho.cs | 11 +++++++++ .../Interfaces/IHasChangedWhen.cs | 11 +++++++++ .../Interfaces/IHasChangedWho.cs | 11 +++++++++ 15 files changed, 128 insertions(+), 78 deletions(-) create mode 100644 EnvelopeGenerator.Domain/Interfaces/IHasAddedWhen.cs create mode 100644 EnvelopeGenerator.Domain/Interfaces/IHasAddedWho.cs create mode 100644 EnvelopeGenerator.Domain/Interfaces/IHasChangedWhen.cs create mode 100644 EnvelopeGenerator.Domain/Interfaces/IHasChangedWho.cs diff --git a/EnvelopeGenerator.Application/Common/Dto/MappingProfile.cs b/EnvelopeGenerator.Application/Common/Dto/MappingProfile.cs index 59d278e7..40ad5f7e 100644 --- a/EnvelopeGenerator.Application/Common/Dto/MappingProfile.cs +++ b/EnvelopeGenerator.Application/Common/Dto/MappingProfile.cs @@ -28,8 +28,8 @@ public class MappingProfile : Profile CreateMap(); CreateMap(); CreateMap(); - CreateMap(); - CreateMap(); + CreateMap().ForMember(dest => dest.ActionDate, opt => opt.MapFrom(src => src.ChangedWhen)); + CreateMap().ForMember(dest => dest.ActionDate, opt => opt.MapFrom(src => src.ChangedWhen)); CreateMap(); CreateMap(); CreateMap(); @@ -44,8 +44,8 @@ public class MappingProfile : Profile CreateMap(); CreateMap(); CreateMap(); - CreateMap(); - CreateMap(); + CreateMap().ForMember(dest => dest.ChangedWhen, opt => opt.MapFrom(src => src.ActionDate)); + CreateMap().ForMember(dest => dest.ChangedWhen, opt => opt.MapFrom(src => src.ActionDate)); CreateMap(); CreateMap(); CreateMap().ForMember(rcv => rcv.EnvelopeReceivers, rcvReadDto => rcvReadDto.Ignore()); diff --git a/EnvelopeGenerator.Domain/Entities/Document.cs b/EnvelopeGenerator.Domain/Entities/Document.cs index db4f02d7..f481ede1 100644 --- a/EnvelopeGenerator.Domain/Entities/Document.cs +++ b/EnvelopeGenerator.Domain/Entities/Document.cs @@ -1,4 +1,5 @@ -using EnvelopeGenerator.Domain.Interfaces; +using System; +using EnvelopeGenerator.Domain.Interfaces; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; #if NETFRAMEWORK @@ -11,11 +12,11 @@ namespace EnvelopeGenerator.Domain.Entities #if NET ; #elif NETFRAMEWORK - { +{ #endif [Table("TBSIG_ENVELOPE_DOCUMENT", Schema = "dbo")] -public class Document : IHasEnvelope +public class Document : IHasEnvelope, IHasAddedWhen { public Document() { @@ -36,9 +37,13 @@ public class Document : IHasEnvelope = 0; #endif + [Required] + [Column("ADDED_WHEN", TypeName = "datetime")] + public DateTime AddedWhen { get; set; } + [Column("BYTE_DATA", TypeName = "varbinary(max)")] public byte[] -#if NET +#if nullable ? #endif ByteData { get; set; } @@ -52,21 +57,21 @@ public class Document : IHasEnvelope [Column("FILENAME_ORIGINAL", TypeName = "nvarchar(256)")] public string -#if NET +#if nullable ? #endif FileNameOriginal { get; set; } #endregion public virtual List -#if NET +#if nullable ? #endif Elements { get; set; } [ForeignKey("EnvelopeId")] public virtual Envelope -#if NET +#if nullable ? #endif Envelope { get; set; } diff --git a/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs b/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs index d1b11c2c..7d8c817b 100644 --- a/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs +++ b/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs @@ -1,21 +1,21 @@ -using System.ComponentModel.DataAnnotations; +using System; +using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using DigitalData.Core.Abstractions.Interfaces; using EnvelopeGenerator.Domain.Interfaces; #if NETFRAMEWORK -using System; #endif namespace EnvelopeGenerator.Domain.Entities #if NET ; #elif NETFRAMEWORK - { +{ #endif [Table("TBSIG_DOCUMENT_STATUS", Schema = "dbo")] -public class DocumentStatus : IHasEnvelope, IHasReceiver, IEntity +public class DocumentStatus : IHasEnvelope, IHasReceiver, IEntity, IHasAddedWhen, IHasChangedWhen { public DocumentStatus() { @@ -42,6 +42,13 @@ public class DocumentStatus : IHasEnvelope, IHasReceiver, IEntity [Column("STATUS")] public Constants.DocumentStatus Status { get; set; } + [Required] + [Column("ADDED_WHEN", TypeName = "datetime")] + public DateTime AddedWhen { get; set; } + + [Column("CHANGED_WHEN", TypeName = "datetime")] + public DateTime? ChangedWhen { get; set; } + [Column("VALUE", TypeName = "nvarchar(max)")] public string Value { get; set; } diff --git a/EnvelopeGenerator.Domain/Entities/ElementAnnotation.cs b/EnvelopeGenerator.Domain/Entities/ElementAnnotation.cs index 6e064556..7361a3a9 100644 --- a/EnvelopeGenerator.Domain/Entities/ElementAnnotation.cs +++ b/EnvelopeGenerator.Domain/Entities/ElementAnnotation.cs @@ -1,18 +1,19 @@ -using System.ComponentModel.DataAnnotations; +using System; +using EnvelopeGenerator.Domain.Interfaces; +using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; #if NETFRAMEWORK -using System; #endif namespace EnvelopeGenerator.Domain.Entities #if NET ; #elif NETFRAMEWORK - { +{ #endif [Table("TBSIG_DOCUMENT_RECEIVER_ELEMENT_ANNOTATION")] -public class ElementAnnotation +public class ElementAnnotation : IHasAddedWhen, IHasChangedWhen, IHasChangedWho { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] @@ -74,14 +75,14 @@ public class ElementAnnotation [Column("CHANGED_WHO", TypeName = "nvarchar(100)")] [StringLength(100)] public string -#if NET +#if nullable ? #endif ChangedWho { get; set; } [ForeignKey("ElementId")] public virtual Signature -#if NET +#if nullable ? #endif Element { get; set; } diff --git a/EnvelopeGenerator.Domain/Entities/EmailTemplate.cs b/EnvelopeGenerator.Domain/Entities/EmailTemplate.cs index 06409561..2a5b2a6a 100644 --- a/EnvelopeGenerator.Domain/Entities/EmailTemplate.cs +++ b/EnvelopeGenerator.Domain/Entities/EmailTemplate.cs @@ -1,20 +1,21 @@ -using DigitalData.Core.Abstractions.Interfaces; +using System; +using DigitalData.Core.Abstractions.Interfaces; +using EnvelopeGenerator.Domain.Interfaces; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; #if NETFRAMEWORK -using System; #endif namespace EnvelopeGenerator.Domain.Entities #if NET ; #elif NETFRAMEWORK - { +{ #endif [Table("TBSIG_EMAIL_TEMPLATE", Schema = "dbo")] -public class EmailTemplate : IEntity +public class EmailTemplate : IEntity, IHasAddedWhen, IHasChangedWhen { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] @@ -36,7 +37,7 @@ public class EmailTemplate : IEntity public DateTime AddedWhen { get; set; } [Column("CHANGED_WHEN", TypeName = "datetime")] - public DateTime ChangedWhen { get; set; } + public DateTime? ChangedWhen { get; set; } } #if NETFRAMEWORK diff --git a/EnvelopeGenerator.Domain/Entities/Envelope.cs b/EnvelopeGenerator.Domain/Entities/Envelope.cs index fadf40e9..8d1a9a11 100644 --- a/EnvelopeGenerator.Domain/Entities/Envelope.cs +++ b/EnvelopeGenerator.Domain/Entities/Envelope.cs @@ -1,11 +1,12 @@ -using DigitalData.UserManager.Domain.Entities; +using System; +using EnvelopeGenerator.Domain.Interfaces; +using DigitalData.UserManager.Domain.Entities; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using EnvelopeGenerator.Domain.Constants; using Newtonsoft.Json; #if NETFRAMEWORK -using System; using System.Collections.Generic; using System.Linq; #endif @@ -14,11 +15,11 @@ namespace EnvelopeGenerator.Domain.Entities #if NET ; #elif NETFRAMEWORK - { +{ #endif [Table("TBSIG_ENVELOPE", Schema = "dbo")] -public class Envelope +public class Envelope : IHasAddedWhen, IHasChangedWhen { public Envelope() { @@ -77,7 +78,7 @@ public class Envelope [Column("TITLE", TypeName = "nvarchar(128)")] public string -#if NET +#if nullable ? #endif Title { get; set; } @@ -142,15 +143,14 @@ public class Envelope [NotMapped] [Column("DOC_RESULT")] public byte[] -#if NET +#if nullable ? #endif - DocResult - { get; set; } + DocResult { get; set; } [ForeignKey("EnvelopeTypeId")] public virtual EnvelopeType -#if NET +#if nullable ? #endif Type { get; set; } @@ -164,19 +164,19 @@ public class Envelope #endif public List -#if NET +#if nullable ? #endif Documents { get; set; } public List -#if NET +#if nullable ? #endif Histories { get; set; } public List -#if NET +#if nullable ? #endif EnvelopeReceivers { get; set; } diff --git a/EnvelopeGenerator.Domain/Entities/EnvelopeReceiver.cs b/EnvelopeGenerator.Domain/Entities/EnvelopeReceiver.cs index 9674b96a..92c85362 100644 --- a/EnvelopeGenerator.Domain/Entities/EnvelopeReceiver.cs +++ b/EnvelopeGenerator.Domain/Entities/EnvelopeReceiver.cs @@ -1,21 +1,21 @@ -using System.ComponentModel.DataAnnotations; +using System; +using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using DigitalData.Core.Abstractions.Interfaces; using EnvelopeGenerator.Domain.Interfaces; #if NETFRAMEWORK -using System; #endif namespace EnvelopeGenerator.Domain.Entities #if NET ; #elif NETFRAMEWORK - { +{ #endif [Table("TBSIG_ENVELOPE_RECEIVER", Schema = "dbo")] -public class EnvelopeReceiver : IHasEnvelope, IHasReceiver, IEntity +public class EnvelopeReceiver : IHasEnvelope, IHasReceiver, IEntity, IHasAddedWhen, IHasChangedWhen { public EnvelopeReceiver() { @@ -42,7 +42,7 @@ public class EnvelopeReceiver : IHasEnvelope, IHasReceiver, IEntity [Column("COMPANY_NAME", TypeName = "nvarchar(128)")] public string -#if NET +#if nullable ? #endif CompanyName { get; set; } @@ -58,7 +58,7 @@ public class EnvelopeReceiver : IHasEnvelope, IHasReceiver, IEntity public DateTime AddedWhen { get; set; } [Column("CHANGED_WHEN", TypeName = "datetime")] - public DateTime ChangedWhen { get; set; } + public DateTime? ChangedWhen { get; set; } [Column("PHONE_NUMBER")] [StringLength(20)] @@ -73,14 +73,14 @@ public class EnvelopeReceiver : IHasEnvelope, IHasReceiver, IEntity [ForeignKey("EnvelopeId")] public Envelope -#if NET +#if nullable ? #endif Envelope { get; set; } [ForeignKey("ReceiverId")] public Receiver -#if NET +#if nullable ? #endif Receiver { get; set; } diff --git a/EnvelopeGenerator.Domain/Entities/EnvelopeReceiverReadOnly.cs b/EnvelopeGenerator.Domain/Entities/EnvelopeReceiverReadOnly.cs index bec835d1..0beb5331 100644 --- a/EnvelopeGenerator.Domain/Entities/EnvelopeReceiverReadOnly.cs +++ b/EnvelopeGenerator.Domain/Entities/EnvelopeReceiverReadOnly.cs @@ -1,14 +1,13 @@ -using System.ComponentModel.DataAnnotations.Schema; +using System; +using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations; +using EnvelopeGenerator.Domain.Interfaces; using DigitalData.EmailProfilerDispatcher.Abstraction.Attributes; -#if NETFRAMEWORK -using System; -#endif namespace EnvelopeGenerator.Domain.Entities { [Table("TBSIG_ENVELOPE_RECEIVER_READ_ONLY")] - public class EnvelopeReceiverReadOnly + public class EnvelopeReceiverReadOnly : IHasAddedWhen, IHasChangedWhen, IHasAddedWho { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] @@ -42,16 +41,12 @@ namespace EnvelopeGenerator.Domain.Entities [Column("ADDED_WHEN")] [Required] - public DateTime -#if NET - ? -#endif - AddedWhen { get; set; } + public DateTime AddedWhen { get; set; } [Column("CHANGED_WHO")] [StringLength(100)] public string -#if NET +#if nullable ? #endif ChangedWho { get; set; } diff --git a/EnvelopeGenerator.Domain/Entities/History.cs b/EnvelopeGenerator.Domain/Entities/History.cs index 68654b21..1ee01d93 100644 --- a/EnvelopeGenerator.Domain/Entities/History.cs +++ b/EnvelopeGenerator.Domain/Entities/History.cs @@ -1,24 +1,20 @@ -using DigitalData.UserManager.Domain.Entities; +using System; +using DigitalData.UserManager.Domain.Entities; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using EnvelopeGenerator.Domain.Interfaces; using EnvelopeGenerator.Domain.Constants; using DigitalData.Core.Abstractions.Interfaces; - -#if NETFRAMEWORK -using System; -#endif - namespace EnvelopeGenerator.Domain.Entities #if NET ; #elif NETFRAMEWORK - { +{ #endif [Table("TBSIG_ENVELOPE_HISTORY", Schema = "dbo")] -public class History : IHasEnvelope, IHasReceiver, IEntity +public class History : IHasEnvelope, IHasReceiver, IEntity, IHasAddedWhen, IHasChangedWhen { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] @@ -43,7 +39,7 @@ public class History : IHasEnvelope, IHasReceiver, IEntity public DateTime AddedWhen { get; set; } [Column("ACTION_DATE", TypeName = "datetime")] - public DateTime? ActionDate { get; set; } = DateTime.Now; + public DateTime? ChangedWhen { get; set; } [Column("COMMENT", TypeName = "nvarchar(max)")] public string diff --git a/EnvelopeGenerator.Domain/Entities/Receiver.cs b/EnvelopeGenerator.Domain/Entities/Receiver.cs index d5e276f3..e1ecaacd 100644 --- a/EnvelopeGenerator.Domain/Entities/Receiver.cs +++ b/EnvelopeGenerator.Domain/Entities/Receiver.cs @@ -1,8 +1,9 @@ -using System.ComponentModel.DataAnnotations; +using System; +using EnvelopeGenerator.Domain.Interfaces; +using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Drawing; #if NETFRAMEWORK -using System; using System.Collections.Generic; #endif @@ -10,11 +11,11 @@ namespace EnvelopeGenerator.Domain.Entities #if NET ; #elif NETFRAMEWORK - { +{ #endif [Table("TBSIG_RECEIVER", Schema = "dbo")] -public class Receiver +public class Receiver : IHasAddedWhen { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] diff --git a/EnvelopeGenerator.Domain/Entities/Signature.cs b/EnvelopeGenerator.Domain/Entities/Signature.cs index 992e346d..e3c77b18 100644 --- a/EnvelopeGenerator.Domain/Entities/Signature.cs +++ b/EnvelopeGenerator.Domain/Entities/Signature.cs @@ -1,9 +1,9 @@ -using EnvelopeGenerator.Domain.Interfaces; +using System; +using EnvelopeGenerator.Domain.Interfaces; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; #if NETFRAMEWORK -using System; using System.Collections.Generic; #endif @@ -11,11 +11,11 @@ namespace EnvelopeGenerator.Domain.Entities #if NET ; #elif NETFRAMEWORK - { +{ #endif [Table("TBSIG_DOCUMENT_RECEIVER_ELEMENT", Schema = "dbo")] -public class Signature : ISignature, IHasReceiver +public class Signature : ISignature, IHasReceiver, IHasAddedWhen, IHasChangedWhen, IHasChangedWho { public Signature() { @@ -92,14 +92,14 @@ public class Signature : ISignature, IHasReceiver [Required] [Column("ADDED_WHEN", TypeName = "datetime")] [DefaultValue("GETDATE()")] - public DateTime? AddedWhen { get; set; } + public DateTime AddedWhen { get; set; } [Column("CHANGED_WHEN", TypeName = "datetime")] public DateTime? ChangedWhen { get; set; } [Column("CHANGED_WHO", TypeName = "nvarchar(100)")] public string -#if NET +#if nullable ? #endif ChangedWho { get; set; } @@ -109,13 +109,13 @@ public class Signature : ISignature, IHasReceiver [ForeignKey("ReceiverId")] public virtual Receiver -#if NET +#if nullable ? #endif Receiver { get; set; } public virtual IEnumerable -#if NET +#if nullable ? #endif Annotations { get; set; } diff --git a/EnvelopeGenerator.Domain/Interfaces/IHasAddedWhen.cs b/EnvelopeGenerator.Domain/Interfaces/IHasAddedWhen.cs new file mode 100644 index 00000000..8bd581f8 --- /dev/null +++ b/EnvelopeGenerator.Domain/Interfaces/IHasAddedWhen.cs @@ -0,0 +1,11 @@ +#if NETFRAMEWORK +using System; +#endif + +namespace EnvelopeGenerator.Domain.Interfaces +{ + public interface IHasAddedWhen + { + DateTime AddedWhen { get; set; } + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Domain/Interfaces/IHasAddedWho.cs b/EnvelopeGenerator.Domain/Interfaces/IHasAddedWho.cs new file mode 100644 index 00000000..23018845 --- /dev/null +++ b/EnvelopeGenerator.Domain/Interfaces/IHasAddedWho.cs @@ -0,0 +1,11 @@ +#if NETFRAMEWORK +using System; +#endif + +namespace EnvelopeGenerator.Domain.Interfaces +{ + public interface IHasAddedWho + { + string AddedWho { get; set; } + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Domain/Interfaces/IHasChangedWhen.cs b/EnvelopeGenerator.Domain/Interfaces/IHasChangedWhen.cs new file mode 100644 index 00000000..6ba428a5 --- /dev/null +++ b/EnvelopeGenerator.Domain/Interfaces/IHasChangedWhen.cs @@ -0,0 +1,11 @@ +#if NETFRAMEWORK +using System; +#endif + +namespace EnvelopeGenerator.Domain.Interfaces +{ + public interface IHasChangedWhen + { + DateTime? ChangedWhen { get; set; } + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Domain/Interfaces/IHasChangedWho.cs b/EnvelopeGenerator.Domain/Interfaces/IHasChangedWho.cs new file mode 100644 index 00000000..2d4110d0 --- /dev/null +++ b/EnvelopeGenerator.Domain/Interfaces/IHasChangedWho.cs @@ -0,0 +1,11 @@ +namespace EnvelopeGenerator.Domain.Interfaces +{ + public interface IHasChangedWho + { + string +#if nullable + ? +#endif + ChangedWho { get; set; } + } +} \ No newline at end of file