mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-10-01 23:13:22 +00:00
The uplift detail modal needs the work order's assigned dispatcher, the requesting vendor's technician and the scheduled date. They now resolve from the same effective work order and vendor as the existing queue row, so the modal no longer depends on a separate work-order fetch that account-scoped staff cannot read.
175 lines
7.3 KiB
C#
175 lines
7.3 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; }
|
|
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; }
|
|
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; }
|
|
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; }
|
|
}
|
|
}
|