using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace Data.SeaHavenIndustries { public class DispatchUpliftRequest : FullAuditEntity { public int DispatchId { get; set; } [ForeignKey(nameof(DispatchId))] public virtual Dispatch? Dispatch { get; set; } [Column(TypeName = "decimal(18,2)")] public decimal? CurrentNTE { get; set; } [Column(TypeName = "decimal(18,2)")] public decimal RequestedNTE { get; set; } public string? VendorReason { get; set; } [Required] [MaxLength(20)] public string Status { get; set; } = "Pending"; public int RequiredTier { get; set; } public string? RequestedByVendorName { get; set; } public DateTime? DecidedAt { get; set; } public string? DecidedByUserId { get; set; } public string? DecisionNote { get; set; } // SH-101: supporting evidence, idempotency, lifecycle, concurrency. public int? EvidenceDocumentId { get; set; } [ForeignKey(nameof(EvidenceDocumentId))] public virtual VendorCompletionDocument? EvidenceDocument { get; set; } [MaxLength(100)] public string? RequestKey { get; set; } public DateTime? ExpiresAt { get; set; } public DateTime? InitialNotificationSentAt { get; set; } public DateTime? EscalatedAt { get; set; } [Required] [MaxLength(20)] public string NotificationStatus { get; set; } = "Pending"; [MaxLength(500)] public string? NotificationError { get; set; } [Timestamp] public byte[]? RowVersion { get; set; } } }