proposal-system/api/src/ProposalSystem.Domain/Entities/Proposal.cs
Adam Moussa 9b502045dd Add site search, PO number, service category Other, and form enhancements
- Structured manual site entry with 5 separate address fields
- Site search via Autocomplete with server-side filtering
- Added PO number field to proposal form and AddPoNumber migration
- Added Other to ServiceCategory enum with custom category text input
- Label consistency: "Work Order #" → "Work Order Number", "PO Number"
- Top row reflow to 3-column layout (4/4/4)
- Dev PDF generation script for local testing
2026-05-27 18:17:48 -04:00

62 lines
1.8 KiB
C#

namespace ProposalSystem.Domain.Entities;
public enum ProposalStatus
{
Draft,
InReview,
Approved,
Sent,
Revised
}
public enum ServiceCategory
{
HVAC,
Plumbing,
Electrical,
General,
Renovation,
Other
}
public enum Priority
{
Standard,
Urgent,
Emergency
}
public class Proposal
{
public Guid Id { get; set; }
public string ProposalNumber { get; set; } = string.Empty;
public string WorkOrderNumber { get; set; } = string.Empty;
public string? PoNumber { get; set; }
public string CustomerName { get; set; } = string.Empty;
public string CustomerAddress { get; set; } = string.Empty;
public string ScopeOfWork { get; set; } = string.Empty;
public string? RefinedScope { get; set; }
public ServiceCategory ServiceCategory { get; set; }
public Priority Priority { get; set; }
public ProposalStatus Status { get; set; }
public decimal TotalBidAmount { get; set; }
public decimal? VendorTotalCost { get; set; }
public string Notes { get; set; } = string.Empty;
public Guid SubmittedById { get; set; }
public DateTime SubmittedAt { get; set; }
public Guid? AssignedAdminId { get; set; }
public Guid? ApprovedById { get; set; }
public DateTime? ApprovedAt { get; set; }
public DateTime? SentAt { get; set; }
public int CurrentRevision { get; set; } = 1;
public Guid? ParentProposalId { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
public User? SubmittedBy { get; set; }
public User? AssignedAdmin { get; set; }
public User? ApprovedBy { get; set; }
public Proposal? ParentProposal { get; set; }
public ICollection<LineItem> LineItems { get; set; } = new List<LineItem>();
public ICollection<VendorProposal> VendorProposals { get; set; } = new List<VendorProposal>();
}