using DigitalData.Core.Abstractions;
using DigitalData.UserManager.Application.DTOs.User;
using EnvelopeGenerator.Application.DTOs.Receiver;
using static EnvelopeGenerator.CommonServices.Constants;
namespace EnvelopeGenerator.Application.DTOs.EnvelopeHistory;
///
/// Data Transfer Object representing the history of an envelope, including status, sender, receiver, and related metadata.
///
public record EnvelopeHistoryDto : IUnique
{
///
/// Unique identifier for the envelope history entry.
///
public long Id { get; set; }
///
/// Identifier of the associated envelope.
///
public int EnvelopeId { get; set; }
///
/// Reference string for the user related to this history entry.
///
public string UserReference { get; set; }
///
/// Status code of the envelope at this history point.
///
public int Status { get; set; }
///
/// Human-readable name of the status.
///
public string? StatusName { get; set; }
///
/// Date and time when this history entry was added.
///
public DateTime AddedWhen { get; set; }
///
/// Date and time when an action was performed, if applicable.
///
public DateTime? ActionDate { get; set; }
///
/// Information about the sender associated with this history entry.
///
public UserCreateDto? Sender { get; set; }
///
/// Information about the receiver associated with this history entry.
///
public ReceiverReadDto? Receiver { get; set; }
///
/// Type of reference for this history entry.
///
public ReferenceType ReferenceType { get; set; }
///
/// Optional comment related to this history entry.
///
public string? Comment { get; set; }
///
public override int GetHashCode()
{
return Id.GetHashCode();
}
};