2026-04-20 13:25:56 -04:00
|
|
|
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; }
|
2026-08-11 08:58:19 -03:00
|
|
|
|
|
|
|
|
// 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; }
|
2026-04-20 13:25:56 -04:00
|
|
|
}
|
|
|
|
|
}
|