feat(ModifyDocStatusCommandBase): create abstract class to handle common properties of commands

This commit is contained in:
2025-08-25 11:16:57 +02:00
parent 811656c4ca
commit 996b544633
3 changed files with 61 additions and 36 deletions

View File

@@ -0,0 +1,52 @@
using EnvelopeGenerator.Domain;
namespace EnvelopeGenerator.Application.DocStatus.Commands;
/// <summary>
///
/// </summary>
public abstract record ModifyDocStatusCommandBase
{
/// <summary>
/// Gets or sets the ID of the associated envelope.
/// </summary>
public int EnvelopeId { get; set; }
/// <summary>
/// Gets or sets the ID of the receiver associated with this status.
/// </summary>
public int ReceiverId { get; set; }
/// <summary>
/// Gets the current status code.
/// </summary>
public Constants.DocumentStatus Status => Value is null ? Constants.DocumentStatus.Created : Constants.DocumentStatus.Signed;
/// <summary>
/// Gets or sets the display value associated with the status.
/// </summary>
public string? Value { get; set; }
/// <summary>
/// Gets timestamp when this record was added.
/// </summary>
public DateTime StatusChangedWhen { get; } = DateTime.Now;
/// <summary>
/// Gets timestamp when this record was added.
/// </summary>
public abstract DateTime? ChangedWhen { get; }
/// <summary>
/// Maps the current command to a new instance of the specified type.
/// </summary>
/// <typeparam name="TDest"></typeparam>
/// <returns></returns>
public TDest To<TDest>() where TDest : ModifyDocStatusCommandBase, new()
=> new()
{
EnvelopeId = EnvelopeId,
ReceiverId = ReceiverId,
Value = Value
};
}