using DigitalData.Core.Abstractions; using EnvelopeGenerator.Common; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace EnvelopeGenerator.Domain.Entities { [Table("TBSIG_ENVELOPE", Schema = "dbo")] public class Envelope : IUnique { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [Column("GUID")] public int Id { get; set; } [Required] [Column("USER_ID")] public int UserId { get; set; } [Required] [Column("STATUS")] public int Status { get; set; } [NotMapped] public string StatusName => ((Constants.EnvelopeStatus)Status).ToString(); [Required] [Column("ENVELOPE_UUID", TypeName = "nvarchar(36)")] public required string Uuid { get; init; } [Required] [Column("MESSAGE", TypeName = "nvarchar(max)")] public string? Message { get; set; } [Column("EXPIRES_WHEN", TypeName = "datetime")] public DateTime? ExpiresWhen { get; set; } [Column("EXPIRES_WARNING_WHEN", TypeName = "datetime")] public DateTime? ExpiresWarningWhen { get; set; } [Required] [Column("ADDED_WHEN", TypeName = "datetime")] public DateTime AddedWhen { get; set; } [Column("CHANGED_WHEN", TypeName = "datetime")] public DateTime? ChangedWhen { get; set; } [Column("TITLE", TypeName = "nvarchar(128)")] public string? Title { get; set; } [Column("CONTRACT_TYPE")] public int? ContractType { get; set; } [Column("LANGUAGE", TypeName = "nvarchar(5)")] public required string Language { get; set; } [Column("SEND_REMINDER_EMAILS")] public bool? SendReminderEmails { get; set; } [Column("FIRST_REMINDER_DAYS")] public int? FirstReminderDays { get; set; } [Column("REMINDER_INTERVAL_DAYS")] public int? ReminderIntervalDays { get; set; } [Column("ENVELOPE_TYPE")] public int? EnvelopeTypeId { get; set; } [Column("CERTIFICATION_TYPE")] public int? CertificationType { get; set; } [Column("USE_ACCESS_CODE")] public bool? UseAccessCode { get; set; } [Column("FINAL_EMAIL_TO_CREATOR")] public int? FinalEmailToCreator { get; set; } [Column("FINAL_EMAIL_TO_RECEIVERS")] public int? FinalEmailToReceivers { get; set; } [Column("EXPIRES_WHEN_DAYS")] public int? ExpiresWhenDays { get; set; } [Column("EXPIRES_WARNING_WHEN_DAYS")] public int? ExpiresWarningWhenDays { get; set; } [Required] [Column("DMZ_MOVED")] public bool DmzMoved { get; set; } /// /// The sender of envelope /// [ForeignKey("UserId")] public DigitalData.UserManager.Domain.Entities.User? User { get; set; } [ForeignKey("EnvelopeTypeId")] public EnvelopeType? EnvelopeType { get; set; } [NotMapped] public string? EnvelopeTypeTitle => EnvelopeType?.Title; [NotMapped] public bool IsAlreadySent => Status > (int) Constants.EnvelopeStatus.EnvelopeSaved; public IEnumerable? Documents { get; set; } public IEnumerable? History { get; set; } } }