Merge branch 'refactor/api-unification' into origin/bugfix/history-inconsistency

This commit is contained in:
2026-02-27 11:21:10 +01:00
5 changed files with 56 additions and 26 deletions

View File

@@ -8,12 +8,22 @@ namespace EnvelopeGenerator.Application.DocStatus.Commands;
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public record CreateDocStatusCommand : ModifyDocStatusCommandBase, IRequest<DocumentStatus> public record CreateDocStatusCommand : IRequest<DocumentStatus>
{ {
/// <summary> /// <summary>
/// Gets timestamp when this record was added. Returns the StatusChangedWhen value. ///
/// </summary> /// </summary>
public DateTime AddedWhen => StatusChangedWhen; public int EnvelopeId { get; set; }
/// <summary>
///
/// </summary>
public int ReceiverId { get; set; }
/// <summary>
/// Gets or sets the display value associated with the status.
/// </summary>
public string? Value { get; set; }
} }
/// <summary> /// <summary>

View File

@@ -1,5 +1,4 @@
using EnvelopeGenerator.Application.Common.Query; using EnvelopeGenerator.Application.Common.Query;
using EnvelopeGenerator.Domain.Constants;
namespace EnvelopeGenerator.Application.DocStatus.Commands; namespace EnvelopeGenerator.Application.DocStatus.Commands;
@@ -11,32 +10,17 @@ public record ModifyDocStatusCommandBase : EnvelopeReceiverQueryBase
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public int? EnvelopeId => Envelope.Id; public virtual int EnvelopeId { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public int? ReceiverId => Receiver.Id; public virtual int ReceiverId { get; set; }
/// <summary>
///
/// </summary>
public override ReceiverQueryBase Receiver { get => base.Receiver; set => base.Receiver = value; }
/// <summary>
/// Gets the current status code.
/// </summary>
public DocumentStatus Status => Value is null ? DocumentStatus.Created : DocumentStatus.Signed;
/// <summary> /// <summary>
/// Gets or sets the display value associated with the status. /// Gets or sets the display value associated with the status.
/// </summary> /// </summary>
public string? Value { get; set; } public virtual string? Value { get; set; }
/// <summary>
/// Gets timestamp when this record was added.
/// </summary>
public DateTime StatusChangedWhen { get; } = DateTime.Now;
/// <summary> /// <summary>
/// Maps the current command to a new instance of the specified type. /// Maps the current command to a new instance of the specified type.

View File

@@ -1,14 +1,41 @@
using EnvelopeGenerator.Domain; using EnvelopeGenerator.Application.Common.Commands;
using EnvelopeGenerator.Domain.Entities;
using System.Linq.Expressions;
namespace EnvelopeGenerator.Application.DocStatus.Commands; namespace EnvelopeGenerator.Application.DocStatus.Commands;
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public record UpdateDocStatusCommand : ModifyDocStatusCommandBase /// <param name="Value"></param>
public record DocStatusUpdateDto(string? Value);
/// <summary>
///
/// </summary>
public record UpdateDocStatusCommand : UpdateCommand<DocStatusUpdateDto, DocumentStatus>
{ {
/// <summary> /// <summary>
/// Gets timestamp when this record was added. Returns the StatusChangedWhen value. ///
/// </summary> /// </summary>
public DateTime? ChangedWhen => StatusChangedWhen; public int EnvelopeId { get; set; }
/// <summary>
///
/// </summary>
public int ReceiverId { get; set; }
/// <summary>
/// Gets or sets the display value associated with the status.
/// </summary>
public string? Value { get; set; }
/// <summary>
///
/// </summary>
/// <returns></returns>
public override Expression<Func<DocumentStatus, bool>> BuildQueryExpression()
{
return ds => ds.EnvelopeId == EnvelopeId && ds.ReceiverId == ReceiverId;
}
} }

View File

@@ -18,11 +18,16 @@ public class MappingProfile : Profile
CreateMap<CreateDocStatusCommand, DocumentStatus>() CreateMap<CreateDocStatusCommand, DocumentStatus>()
.ForMember(dest => dest.Envelope, opt => opt.Ignore()) .ForMember(dest => dest.Envelope, opt => opt.Ignore())
.ForMember(dest => dest.Receiver, opt => opt.Ignore()) .ForMember(dest => dest.Receiver, opt => opt.Ignore())
.ForMember(dest => dest.Status, opt => opt.MapFrom(
src => src.Value == null
? Domain.Constants.DocumentStatus.Created
: Domain.Constants.DocumentStatus.Signed))
.MapAddedWhen(); .MapAddedWhen();
CreateMap<UpdateDocStatusCommand, DocumentStatus>() CreateMap<UpdateDocStatusCommand, DocumentStatus>()
.ForMember(dest => dest.Envelope, opt => opt.Ignore()) .ForMember(dest => dest.Envelope, opt => opt.Ignore())
.ForMember(dest => dest.Receiver, opt => opt.Ignore()) .ForMember(dest => dest.Receiver, opt => opt.Ignore())
.ForMember(dest => dest.StatusChangedWhen, opt => opt.MapFrom(src => DateTime.UtcNow))
.MapChangedWhen(); .MapChangedWhen();
} }
} }

View File

@@ -35,6 +35,10 @@ namespace EnvelopeGenerator.Domain.Entities
[Column("STATUS")] [Column("STATUS")]
public Constants.DocumentStatus Status { get; set; } public Constants.DocumentStatus Status { get; set; }
[Required]
[Column("STATUS_CHANGED_WHEN", TypeName = "datetime")]
public DateTime? StatusChangedWhen { get; set; }
[Required] [Required]
[Column("ADDED_WHEN", TypeName = "datetime")] [Column("ADDED_WHEN", TypeName = "datetime")]
public DateTime AddedWhen { get; set; } public DateTime AddedWhen { get; set; }