using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; using vendorApproverBackend.Enums; using vendorApproverBackend.Dtos; namespace vendorApproverBackend.Entities { [Table("request_renews")] public class RequestRenew { [Column("id")] public long Id { get; set; } [Column("request_number")] public int RequestNumber { get; set; } [Column("renewal_date")] public DateTime? RenewalDate { get; set; } [Column("status")] public RequestRenewStatus Status { get; set; } [Column("renewal_step")] public RenewalStep RenewalStep { get; set; } = RenewalStep.CERTIFICATE_EXPIRY; [Column("inspection_required")] public bool InspectionRequired { get; set; } [Column("comments")] public string Comments { get; set; } [Column("renew_comment")] public string? RenewComment { get; set; } [Column("timestmp")] public DateTime Timestamp { get; set; } = DateTime.UtcNow; // Existing Relationships public virtual FileModel ExpiredProductCertificateFile { get; set; } [Column("expired_cert_file_id")] [ForeignKey("ExpiredProductCertificateFile")] public long? ExpiredProductCertificateFileId { get; set; } public string? ExpiredProductCertificateRemark { get; set; } public virtual FileModel ReferenceOrdersFile { get; set; } [Column("ref_orders_file_id")] [ForeignKey("ReferenceOrdersFile")] public long? ReferenceOrdersFileId { get; set; } public string? ReferenceOrdersRemark { get; set; } public virtual FileModel ApprovedDesignFile { get; set; } [Column("approved_design_file_id")] [ForeignKey("ApprovedDesignFile")] public long? ApprovedDesignFileId { get; set; } public string? ApprovedDesignRemark { get; set; } public virtual FileModel UpdateTDSFile { get; set; } [Column("update_tds_file_id")] [ForeignKey("UpdateTDSFile")] public long? UpdateTDSFileId { get; set; } public string? UpdateTDSRemark { get; set; } public virtual Signature Signature { get; set; } [Column("signature_id")] [ForeignKey("Signature")] public long? SignatureId { get; set; } [Column("certification_id")] public long CertificationId { get; set; } public virtual ICollection PerformanceLetters { get; set; } = new List(); public virtual User AssignedTo { get; set; } [JsonIgnore] [Column("assigned_to_id")] [ForeignKey("AssignedTo")] public long? AssignedToId { get; set; } [Column("assign_date")] public DateTime? AssignDate { get; set; } [Column("is_expired_over_two_years")] public bool? IsExpiredOver2Years { get; set; } [Column("require_factory_audit")] public bool? RequiresFactoryAudit { get; set; } [JsonIgnore] public virtual ICollection Clarifications { get; set; } = new List(); // --- NEW RELATIONSHIPS --- public virtual RenewalPart2Evaluation Part2Evaluation { get; set; } [ForeignKey("Part2Evaluation")] public long? Part2EvaluationId { get; set; } public virtual RenewalPart3Decision Part3Decision { get; set; } [ForeignKey("Part3Decision")] public long? Part3DecisionId { get; set; } public virtual RenewalFinalDecision FinalDecision { get; set; } [ForeignKey("FinalDecision")] public long? FinalDecisionId { get; set; } public virtual RenewalClarification Clarification { get; set; } [ForeignKey("Clarification")] public long? ClarificationId { get; set; } public virtual RenewalPayment Payment { get; set; } [ForeignKey("Payment")] public long? PaymentId { get; set; } [Column("request_type")] public RequestRenewType RequestType { get; set; } = RequestRenewType.RENEW; [Column("change_approval_comment")] public string? ChangeApprovalComment { get; set; } [Column("change_rejection_comment")] public string? ChangeRejectionComment { get; set; } // New Entity Relation public virtual UpdatedVendorData? UpdatedVendorData { get; set; } [Column("updated_vendor_data_id")] [ForeignKey("UpdatedVendorData")] public long? UpdatedVendorDataId { get; set; } // New FileModel Relations public virtual FileModel? TdcDocument { get; set; } [Column("tdc_document_id")] [ForeignKey("TdcDocument")] public long? TdcDocumentId { get; set; } public virtual FileModel? OfficialLetterFile { get; set; } [Column("official_letter_file_id")] [ForeignKey("OfficialLetterFile")] public long? OfficialLetterFileId { get; set; } public virtual FileModel? ValidAgencyAgreementFile { get; set; } [Column("valid_agency_agreement_id")] [ForeignKey("ValidAgencyAgreementFile")] public long? ValidAgencyAgreementFileId { get; set; } [Column("valid_agency_agreement_file_remark")] public string? ValidAgencyAgreementFileRemark { get; set; } // New FileModel Relation for Official Letter Remark public virtual FileModel? OfficialLetterFileRemark { get; set; } [Column("official_letter_file_remark_id")] [ForeignKey("OfficialLetterFileRemark")] public long? OfficialLetterFileRemarkId { get; set; } public string? ManagerRenewComment { get; set; } public virtual FileModel? ManagerRenewFile { get; set; } [Column("manager_renew_file_id")] public long? ManagerRenewFileId { get; set; } public virtual FileModel? RenewRequestFile { get; set; } [Column("renew_request_file_id")] [ForeignKey("RenewRequestFile")] public long? RenewRequestFileId { get; set; } } }