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.
64 lines
3.4 KiB
C#
64 lines
3.4 KiB
C#
using AutoMapper;
|
|
using EnvelopeGenerator.Application.Common.Dto.History;
|
|
using EnvelopeGenerator.Application.Common.Dto.EnvelopeReceiver;
|
|
using EnvelopeGenerator.Application.Common.Dto.EnvelopeReceiverReadOnly;
|
|
using EnvelopeGenerator.Application.Common.Dto.Messaging;
|
|
using EnvelopeGenerator.Application.Common.Dto.Receiver;
|
|
using EnvelopeGenerator.Application.Common.Extensions;
|
|
using EnvelopeGenerator.Domain.Entities;
|
|
|
|
namespace EnvelopeGenerator.Application.Common.Dto;
|
|
|
|
/// <summary>
|
|
/// Represents the AutoMapper profile configuration for mapping between
|
|
/// domain entities and data transfer objects (DTOs) used within the EnvelopeGenerator application.
|
|
/// </summary>
|
|
public class MappingProfile : Profile
|
|
{
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="MappingProfile"/> class.
|
|
/// Configures the mappings between entities and DTOs used throughout the application.
|
|
/// </summary>
|
|
public MappingProfile()
|
|
{
|
|
// Entity to DTO mappings
|
|
CreateMap<Config, ConfigDto>();
|
|
CreateMap<Signature, SignatureDto>();
|
|
CreateMap<DocumentStatus, DocumentStatusDto>();
|
|
CreateMap<EmailTemplate, EmailTemplateDto>();
|
|
CreateMap<Envelope, EnvelopeDto>();
|
|
CreateMap<Document, DocumentDto>();
|
|
CreateMap<Domain.Entities.History, HistoryDto>().ForMember(dest => dest.ActionDate, opt => opt.MapFrom(src => src.ChangedWhen));
|
|
CreateMap<Domain.Entities.History, HistoryCreateDto>().ForMember(dest => dest.ActionDate, opt => opt.MapFrom(src => src.ChangedWhen));
|
|
CreateMap<Domain.Entities.EnvelopeReceiver, EnvelopeReceiverDto>();
|
|
CreateMap<Domain.Entities.EnvelopeReceiver, EnvelopeReceiverSecretDto>();
|
|
CreateMap<EnvelopeType, EnvelopeTypeDto>();
|
|
CreateMap<Domain.Entities.Receiver, ReceiverDto>();
|
|
CreateMap<Domain.Entities.EnvelopeReceiverReadOnly, EnvelopeReceiverReadOnlyDto>();
|
|
CreateMap<ElementAnnotation, AnnotationDto>();
|
|
|
|
// DTO to Entity mappings
|
|
CreateMap<ConfigDto, Config>();
|
|
CreateMap<SignatureDto, Signature>();
|
|
CreateMap<DocumentStatusDto, DocumentStatus>();
|
|
CreateMap<EmailTemplateDto, EmailTemplate>();
|
|
CreateMap<EnvelopeDto, Envelope>();
|
|
CreateMap<DocumentDto, Document>();
|
|
CreateMap<HistoryDto, Domain.Entities.History>().ForMember(dest => dest.ChangedWhen, opt => opt.MapFrom(src => src.ActionDate));
|
|
CreateMap<HistoryCreateDto, Domain.Entities.History>().ForMember(dest => dest.ChangedWhen, opt => opt.MapFrom(src => src.ActionDate));
|
|
CreateMap<EnvelopeReceiverDto, Domain.Entities.EnvelopeReceiver>();
|
|
CreateMap<EnvelopeTypeDto, EnvelopeType>();
|
|
CreateMap<ReceiverDto, Domain.Entities.Receiver>().ForMember(rcv => rcv.EnvelopeReceivers, rcvReadDto => rcvReadDto.Ignore());
|
|
CreateMap<EnvelopeReceiverReadOnlyCreateDto, Domain.Entities.EnvelopeReceiverReadOnly>();
|
|
CreateMap<EnvelopeReceiverReadOnlyUpdateDto, Domain.Entities.EnvelopeReceiverReadOnly>();
|
|
CreateMap<AnnotationCreateDto, ElementAnnotation>()
|
|
.ForMember(dest => dest.AddedWhen, opt => opt.MapFrom(_ => DateTime.UtcNow));
|
|
|
|
// Messaging mappings
|
|
// for GTX messaging
|
|
CreateMap<GtxMessagingResponse, SmsResponse>()
|
|
.ConstructUsing(gtxRes => gtxRes.Ok()
|
|
? new SmsResponse() { Ok = true }
|
|
: new SmsResponse() { Ok = false, Errors = gtxRes });
|
|
}
|
|
} |