proposal-system/api/src/ProposalSystem.Domain/Entities/Proposal.cs

61 lines
1.8 KiB
C#
Raw Normal View History

namespace ProposalSystem.Domain.Entities;
public enum ProposalStatus
{
Draft,
InReview,
Approved,
Sent,
Revised
}
public enum ServiceCategory
{
HVAC,
Plumbing,
Electrical,
General,
Renovation
}
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 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>();
}