diff --git a/EnvelopeGenerator.Application/DocStatus/Commands/CreateDocStatusCommand.cs b/EnvelopeGenerator.Application/DocStatus/Commands/CreateDocStatusCommand.cs
index 01b5d0a9..e8f78240 100644
--- a/EnvelopeGenerator.Application/DocStatus/Commands/CreateDocStatusCommand.cs
+++ b/EnvelopeGenerator.Application/DocStatus/Commands/CreateDocStatusCommand.cs
@@ -8,12 +8,22 @@ namespace EnvelopeGenerator.Application.DocStatus.Commands;
///
///
///
-public record CreateDocStatusCommand : ModifyDocStatusCommandBase, IRequest
+public record CreateDocStatusCommand : IRequest
{
///
- /// Gets timestamp when this record was added. Returns the StatusChangedWhen value.
+ ///
///
- public DateTime AddedWhen => StatusChangedWhen;
+ public int EnvelopeId { get; set; }
+
+ ///
+ ///
+ ///
+ public int ReceiverId { get; set; }
+
+ ///
+ /// Gets or sets the display value associated with the status.
+ ///
+ public string? Value { get; set; }
}
///
diff --git a/EnvelopeGenerator.Application/DocStatus/Commands/ModifyDocStatusCommandBase.cs b/EnvelopeGenerator.Application/DocStatus/Commands/ModifyDocStatusCommandBase.cs
index 259cb500..683e57e8 100644
--- a/EnvelopeGenerator.Application/DocStatus/Commands/ModifyDocStatusCommandBase.cs
+++ b/EnvelopeGenerator.Application/DocStatus/Commands/ModifyDocStatusCommandBase.cs
@@ -1,5 +1,4 @@
using EnvelopeGenerator.Application.Common.Query;
-using EnvelopeGenerator.Domain.Constants;
namespace EnvelopeGenerator.Application.DocStatus.Commands;
@@ -11,32 +10,17 @@ public record ModifyDocStatusCommandBase : EnvelopeReceiverQueryBase
///
///
///
- public int? EnvelopeId => Envelope.Id;
+ public virtual int EnvelopeId { get; set; }
///
///
///
- public int? ReceiverId => Receiver.Id;
-
- ///
- ///
- ///
- public override ReceiverQueryBase Receiver { get => base.Receiver; set => base.Receiver = value; }
-
- ///
- /// Gets the current status code.
- ///
- public DocumentStatus Status => Value is null ? DocumentStatus.Created : DocumentStatus.Signed;
+ public virtual int ReceiverId { get; set; }
///
/// Gets or sets the display value associated with the status.
///
- public string? Value { get; set; }
-
- ///
- /// Gets timestamp when this record was added.
- ///
- public DateTime StatusChangedWhen { get; } = DateTime.Now;
+ public virtual string? Value { get; set; }
///
/// Maps the current command to a new instance of the specified type.
diff --git a/EnvelopeGenerator.Application/DocStatus/Commands/UpdateDocStatusCommand.cs b/EnvelopeGenerator.Application/DocStatus/Commands/UpdateDocStatusCommand.cs
index f6c3b57f..dcdd8b18 100644
--- a/EnvelopeGenerator.Application/DocStatus/Commands/UpdateDocStatusCommand.cs
+++ b/EnvelopeGenerator.Application/DocStatus/Commands/UpdateDocStatusCommand.cs
@@ -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;
///
///
///
-public record UpdateDocStatusCommand : ModifyDocStatusCommandBase
+///
+public record DocStatusUpdateDto(string? Value);
+
+///
+///
+///
+public record UpdateDocStatusCommand : UpdateCommand
{
///
- /// Gets timestamp when this record was added. Returns the StatusChangedWhen value.
+ ///
///
- public DateTime? ChangedWhen => StatusChangedWhen;
+ public int EnvelopeId { get; set; }
+
+ ///
+ ///
+ ///
+ public int ReceiverId { get; set; }
+
+ ///
+ /// Gets or sets the display value associated with the status.
+ ///
+ public string? Value { get; set; }
+
+ ///
+ ///
+ ///
+ ///
+ public override Expression> BuildQueryExpression()
+ {
+ return ds => ds.EnvelopeId == EnvelopeId && ds.ReceiverId == ReceiverId;
+ }
}
\ No newline at end of file
diff --git a/EnvelopeGenerator.Application/DocStatus/MappingProfile.cs b/EnvelopeGenerator.Application/DocStatus/MappingProfile.cs
index e1474d7e..bfa86dd5 100644
--- a/EnvelopeGenerator.Application/DocStatus/MappingProfile.cs
+++ b/EnvelopeGenerator.Application/DocStatus/MappingProfile.cs
@@ -18,11 +18,16 @@ public class MappingProfile : Profile
CreateMap()
.ForMember(dest => dest.Envelope, 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();
CreateMap()
.ForMember(dest => dest.Envelope, opt => opt.Ignore())
.ForMember(dest => dest.Receiver, opt => opt.Ignore())
+ .ForMember(dest => dest.StatusChangedWhen, opt => opt.MapFrom(src => DateTime.UtcNow))
.MapChangedWhen();
}
}
\ No newline at end of file
diff --git a/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs b/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs
index c61bb4cd..3bec79c7 100644
--- a/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs
+++ b/EnvelopeGenerator.Domain/Entities/DocumentStatus.cs
@@ -35,6 +35,10 @@ namespace EnvelopeGenerator.Domain.Entities
[Column("STATUS")]
public Constants.DocumentStatus Status { get; set; }
+ [Required]
+ [Column("STATUS_CHANGED_WHEN", TypeName = "datetime")]
+ public DateTime? StatusChangedWhen { get; set; }
+
[Required]
[Column("ADDED_WHEN", TypeName = "datetime")]
public DateTime AddedWhen { get; set; }