mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 04:53:11 +00:00
A vendor could withdraw (or cancel) an uplift a dispatcher raised from the work order. Withdraw and its cancel alias now refuse requests with createdby set, using the portal's not-found response, and the portal read model reports RaisedByVendor so the portal can hide Revise and Withdraw on those requests.
182 lines
7.8 KiB
C#
182 lines
7.8 KiB
C#
namespace Data.SeaHavenIndustries
|
|
{
|
|
public class VendorDispatchSummaryData
|
|
{
|
|
public int Id { get; set; }
|
|
public string? DispatchNumber { get; set; }
|
|
public string? PONumber { get; set; }
|
|
public string? Status { get; set; }
|
|
public decimal? NTEAmount { get; set; }
|
|
public DateTime? ScheduledDate { get; set; }
|
|
public DateTime? CompletedDate { get; set; }
|
|
public DateTime? DispatchedAt { get; set; }
|
|
public DateTime? AcknowledgedAt { get; set; }
|
|
public string? WorkOrderTitle { get; set; }
|
|
public string? InternalWONumber { get; set; }
|
|
public string? LocationName { get; set; }
|
|
public string? LocationCity { get; set; }
|
|
public string? LocationState { get; set; }
|
|
}
|
|
|
|
public class PortalChecklistItemData
|
|
{
|
|
public int Id { get; set; }
|
|
public string? ItemText { get; set; }
|
|
public bool IsCompleted { get; set; }
|
|
public string? CompletedBy { get; set; }
|
|
public DateTime? CompletedAt { get; set; }
|
|
}
|
|
|
|
public class PortalSignoffData
|
|
{
|
|
public int Id { get; set; }
|
|
public string? SignoffType { get; set; }
|
|
public string? Name { get; set; }
|
|
public string? SignatureMethod { get; set; }
|
|
public DateTime? SignedAt { get; set; }
|
|
}
|
|
|
|
public class PortalUpliftData
|
|
{
|
|
public int Id { get; set; }
|
|
public decimal? CurrentNTE { get; set; }
|
|
public decimal RequestedNTE { get; set; }
|
|
public string? VendorReason { get; set; }
|
|
public string? Status { get; set; }
|
|
public int RequiredTier { get; set; }
|
|
public string? RequestedByVendorName { get; set; }
|
|
// True when the vendor raised the request in the portal; false when it was raised
|
|
// from the work order. Only vendor-raised requests are revisable or withdrawable.
|
|
public bool RaisedByVendor { get; set; }
|
|
public DateTime? CreatedDate { get; set; }
|
|
public DateTime? DecidedAt { get; set; }
|
|
public string? DecisionNote { get; set; }
|
|
public string? DecidedByFirstName { get; set; }
|
|
public string? DecidedByLastName { get; set; }
|
|
// SH-101 additions
|
|
public int? EvidenceDocumentId { get; set; }
|
|
public string? EvidenceFileName { get; set; }
|
|
public string? EvidenceContentType { get; set; }
|
|
public long? EvidenceSizeBytes { get; set; }
|
|
public DateTime? ExpiresAt { get; set; }
|
|
public string? NotificationStatus { get; set; }
|
|
public string? NotificationError { get; set; }
|
|
public bool EvidenceScanPassed { get; set; }
|
|
}
|
|
|
|
public class PortalCommentData
|
|
{
|
|
public int Id { get; set; }
|
|
public string? Commenttext { get; set; }
|
|
public string? Commenter { get; set; }
|
|
public string? CommentType { get; set; }
|
|
public DateTime? CreatedDate { get; set; }
|
|
public string? UserId { get; set; }
|
|
public string? UserFirstName { get; set; }
|
|
public string? UserLastName { get; set; }
|
|
}
|
|
|
|
public class UpliftListItemData
|
|
{
|
|
public int Id { get; set; }
|
|
public int DispatchId { get; set; }
|
|
public string? DispatchNumber { get; set; }
|
|
public string? PONumber { get; set; }
|
|
public int? WorkOrderId { get; set; }
|
|
public string? VendorCompanyName { get; set; }
|
|
// Approval queue read contract: flattened work-order context.
|
|
public string? WorkOrderNumber { get; set; }
|
|
public string? WorkOrderSiteCode { get; set; }
|
|
public string? WorkOrderService { get; set; }
|
|
// SH-209: detail modal context, resolved from the same effective work order
|
|
// and the requesting dispatch's vendor.
|
|
public DateTime? WorkOrderScheduledDate { get; set; }
|
|
public string? WorkOrderDispatcherFirstName { get; set; }
|
|
public string? WorkOrderDispatcherLastName { get; set; }
|
|
public string? TechnicianName { get; set; }
|
|
public bool WorkOrderClosed { get; set; }
|
|
public int AttachmentCount { get; set; }
|
|
public string? RequestedByVendorName { get; set; }
|
|
public string? RequestedByFirstName { get; set; }
|
|
public string? RequestedByLastName { get; set; }
|
|
public string? DecidedByFirstName { get; set; }
|
|
public string? DecidedByLastName { get; set; }
|
|
public decimal? CurrentNTE { get; set; }
|
|
public decimal RequestedNTE { get; set; }
|
|
/// <summary>The requested NTE increase; see UpliftAmount in SeaHaven.DataServices.</summary>
|
|
public decimal Amount { get; set; }
|
|
public string? VendorReason { get; set; }
|
|
public int RequiredTier { get; set; }
|
|
public string? Status { get; set; }
|
|
public DateTime? CreatedDate { get; set; }
|
|
public DateTime? DecidedAt { get; set; }
|
|
public string? DecisionNote { get; set; }
|
|
// SH-101 additions
|
|
public int? EvidenceDocumentId { get; set; }
|
|
public string? EvidenceFileName { get; set; }
|
|
public string? EvidenceContentType { get; set; }
|
|
public long? EvidenceSizeBytes { get; set; }
|
|
public DateTime? ExpiresAt { get; set; }
|
|
public string? NotificationStatus { get; set; }
|
|
public string? NotificationError { get; set; }
|
|
}
|
|
|
|
public class UpliftForWorkOrderData : UpliftForDispatchData
|
|
{
|
|
public string? CreatedByUserId { get; set; }
|
|
}
|
|
|
|
public class UpliftForDispatchData
|
|
{
|
|
public int Id { get; set; }
|
|
public int DispatchId { get; set; }
|
|
public decimal? CurrentNTE { get; set; }
|
|
public decimal RequestedNTE { get; set; }
|
|
/// <summary>The requested NTE increase; see UpliftAmount in SeaHaven.DataServices.</summary>
|
|
public decimal Amount { get; set; }
|
|
public string? VendorReason { get; set; }
|
|
public string? Status { get; set; }
|
|
public int RequiredTier { get; set; }
|
|
public string? RequestedByVendorName { get; set; }
|
|
public DateTime? CreatedDate { get; set; }
|
|
public DateTime? DecidedAt { get; set; }
|
|
public string? DecisionNote { get; set; }
|
|
public string? DecidedByFirstName { get; set; }
|
|
public string? DecidedByLastName { get; set; }
|
|
// SH-101 additions
|
|
public int? EvidenceDocumentId { get; set; }
|
|
public DateTime? ExpiresAt { get; set; }
|
|
public string? NotificationStatus { get; set; }
|
|
public string? NotificationError { get; set; }
|
|
public string? EvidenceFileName { get; set; }
|
|
public string? EvidenceContentType { get; set; }
|
|
public long? EvidenceSizeBytes { get; set; }
|
|
public bool EvidenceScanPassed { get; set; }
|
|
}
|
|
|
|
// Approval queue read contract: per-work-order exposure totals. Approved exposure is
|
|
// the sum of uplift amounts that were auto-approved or admin-approved on the work
|
|
// order; pending, rejected, cancelled/withdrawn, and revoked requests are excluded.
|
|
public class WorkOrderUpliftExposureData
|
|
{
|
|
public int WorkOrderId { get; set; }
|
|
public decimal AutoApprovedTotal { get; set; }
|
|
public decimal AdminApprovedTotal { get; set; }
|
|
}
|
|
|
|
// SH-101: internal evidence-download projection. Server-side join enforces that the
|
|
// returned document is the one linked to this specific uplift request and dispatch.
|
|
public class UpliftEvidenceDownloadData
|
|
{
|
|
public int Id { get; set; }
|
|
public int DispatchId { get; set; }
|
|
public int VendorId { get; set; }
|
|
public int RequiredTier { get; set; }
|
|
public int? EvidenceDocumentId { get; set; }
|
|
public string? StoredFileName { get; set; }
|
|
public string? OriginalFileName { get; set; }
|
|
public string? ContentType { get; set; }
|
|
public string? Purpose { get; set; }
|
|
public string? ScanStatus { get; set; }
|
|
}
|
|
}
|