using System; using System.Collections.Generic; using System.Text.Json.Serialization; using System.ComponentModel.DataAnnotations.Schema; using vendorApproverBackend.Enums; namespace vendorApproverBackend.Entities { [Table("vendor_request_letters")] public class VendorRequestLetter { [Column("Id")] public long Id { get; set; } [Column("Status")] public LetterRequestStatus Status { get; set; } = LetterRequestStatus.DRAFT; [Column("SubmissionDate")] public DateTime? SubmissionDate { get; set; } = DateTime.UtcNow; [JsonIgnore] public virtual ICollection Clarifications { get; set; } = new List(); [Column("ApprovalDate")] public DateTime? ApprovalDate { get; set; } [Column("FullName")] public string? FullName { get; set; } [Column("ShortName")] public string? ShortName { get; set; } [Column("DateEstablished")] public DateTime? DateEstablished { get; set; } [Column("OriginCountry")] public string? OriginCountry { get; set; } [Column("VendorGpsCoordinates")] public string? VendorGpsCoordinates { get; set; } [Column("VendorWebsite")] public string? VendorWebsite { get; set; } [Column("OfficeLocation")] public string? OfficeLocation { get; set; } [Column("GccCountryName")] public string? GccCountryName { get; set; } [Column("OtherCountryName")] public string? OtherCountryName { get; set; } [Column("OmanStreet")] public string? OmanStreet { get; set; } [Column("OmanPoBox")] public string? OmanPoBox { get; set; } [Column("OmanTel")] public string? OmanTel { get; set; } [Column("OmanFax")] public string? OmanFax { get; set; } [Column("HqStreet")] public string? HqStreet { get; set; } [Column("HqPoBox")] public string? HqPoBox { get; set; } [Column("HqTel")] public string? HqTel { get; set; } [Column("HqFax")] public string? HqFax { get; set; } [Column("HqEmail")] public string? HqEmail { get; set; } [Column("FactoryStreet")] public string? FactoryStreet { get; set; } [Column("FactoryPoBox")] public string? FactoryPoBox { get; set; } [Column("FactoryTel")] public string? FactoryTel { get; set; } [Column("FactoryFax")] public string? FactoryFax { get; set; } [Column("FactoryEmail")] public string? FactoryEmail { get; set; } [Column("SalesStreet")] public string? SalesStreet { get; set; } [Column("SalesPoBox")] public string? SalesPoBox { get; set; } [Column("SalesTel")] public string? SalesTel { get; set; } [Column("SalesFax")] public string? SalesFax { get; set; } [Column("SalesEmail")] public string? SalesEmail { get; set; } public long? RequestFileId { get; set; } public List LocalOwners { get; set; } = new(); [Column("IsBranchInOman")] public bool? IsBranchInOman { get; set; } [Column("board_of_directors", TypeName = "jsonb")] public List BoardOfDirectors { get; set; } = new(); [Column("AgentNames")] public string? AgentNames { get; set; } [Column("CommercialRegNumber")] public string? CommercialRegNumber { get; set; } [Column("AgentContactPerson")] public string? AgentContactPerson { get; set; } [Column("AgentDesignation")] public string? AgentDesignation { get; set; } [Column("RegisteredHeadOffice")] public string? RegisteredHeadOffice { get; set; } [Column("GpsCoordinates")] public string? GpsCoordinates { get; set; } [Column("AgentTel")] public string? AgentTel { get; set; } [Column("AgentFax")] public string? AgentFax { get; set; } [Column("AgentEmail")] public string? AgentEmail { get; set; } [Column("AgentWebsite")] public string? AgentWebsite { get; set; } [Column("contact_persons", TypeName = "jsonb")] public List ContactPersons { get; set; } = new(); [Column("authorized_signatories", TypeName = "jsonb")] public List AuthorizedSignatories { get; set; } = new(); [Column("OfficialAgencySubmitted")] public string? OfficialAgencySubmitted { get; set; } [Column("AuthorizedPersonsSubmitted")] public string? AuthorizedPersonsSubmitted { get; set; } [Column("certificates_and_licenses", TypeName = "jsonb")] public CertificatesAndLicenses? CertificatesAndLicenses { get; set; } [Column("associated_companies", TypeName = "jsonb")] public List AssociatedCompanies { get; set; } = new(); [Column("VendorId")] public long VendorId { get; set; } [JsonIgnore] public Vendor Vendor { get; set; } public List LetterProducts { get; set; } = new(); [Column("AssignedToManager")] public bool? AssignedToManager { get; set; } = false; [Column("created_pq_request_id")] public long? CreatedPqRequestId { get; set; } } [Table("letter_products")] public class LetterProducts { [Column("Id")] public long Id { get; set; } [Column("Category")] public string? Category { get; set; } [Column("Subcategory")] public string? Subcategory { get; set; } [Column("ProductName")] public string? ProductName { get; set; } [Column("ProductCity")] public string? ProductCity { get; set; } [Column("ProductCountry")] public string? ProductCountry { get; set; } [Column("ProductType")] public string? ProductType { get; set; } [Column("ProductDesc")] public string? ProductDesc { get; set; } [Column("Status")] public LetterProductStatus Status { get; set; } = LetterProductStatus.PENDING; [Column("ManagerComment", TypeName = "text")] public string? ManagerComment { get; set; } [Column("AdminComment", TypeName = "text")] public string? AdminComment { get; set; } [Column("RejectionReason", TypeName = "text")] public string? RejectionReason { get; set; } [Column("VendorRequestLetterId")] public long VendorRequestLetterId { get; set; } [JsonIgnore] public VendorRequestLetter VendorRequestLetter { get; set; } } }