using DigitalData.Core.Abstractions; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace EnvelopeGenerator.Domain.Entities { [Table("TBSIG_ENVELOPE_RECEIVER", Schema = "dbo")] public class EnvelopeReceiverBase : IUnique<(int Envelope, int Receiver)> { [Key] [Column("ENVELOPE_ID")] public int EnvelopeId { get; set; } [Key] [Column("RECEIVER_ID")] public int ReceiverId { get; set; } [Required] [Column("SEQUENCE")] public int Sequence { get; set; } [Column("NAME", TypeName = "nvarchar(128)")] public string? Name { get; set; } [Column("JOB_TITLE", TypeName = "nvarchar(128)")] public string? JobTitle { get; set; } [Column("COMPANY_NAME", TypeName = "nvarchar(128)")] public string? CompanyName { get; set; } [Column("PRIVATE_MESSAGE", TypeName = "nvarchar(max)")] public string? PrivateMessage { get; set; } [Column("ACCESS_CODE", TypeName = "nvarchar(64)")] public string? AccessCode { get; set; } [Required] [Column("ADDED_WHEN", TypeName = "datetime")] public DateTime AddedWhen { get; set; } [Column("CHANGED_WHEN", TypeName = "datetime")] public DateTime? ChangedWhen { get; set; } [Column("PHONE_NUMBER")] [StringLength(20)] [RegularExpression(@"^\+[0-9]+$", ErrorMessage = "Phone number must start with '+' followed by digits.")] public string? PhoneNumber { get; set; } [NotMapped] public (int Envelope, int Receiver) Id => (Envelope: EnvelopeId, Receiver: ReceiverId); [NotMapped] public bool HasPhoneNumber => PhoneNumber is not null; } }