using SolutionErp.Domain.Common;
using SolutionErp.Domain.Contracts;   // reuse ApprovalDecision enum

namespace SolutionErp.Domain.ContractSigningPlans;

// [W1 Mig 69 — S161] Lịch sử transition (1 row / lần chuyển phase).
// 🔴 THÊM sau review (lens-schema H1): service được lệnh copy CÓ ghi vào bảng này
// (`ContractWorkflowService.cs:151` `db.ContractApprovals.Add(...)`), twin PE
// `PurchaseEvaluation.cs:137` + index (PeId, ApprovedAt). Thiếu ⇒ đoạn copy trỏ
// bảng KHÔNG TỒN TẠI.
//
// BaseEntity (append-only, KHÔNG soft-delete) — mirror PurchaseEvaluationApproval.
//
// `ApprovalWorkflowLevelId` = loose-Guid CỐ Ý KHÔNG FK vật lý: nếu để FK Restrict thì
// admin xoá Level sẽ nổ 500 vì lịch sử duyệt, mà 3 site dọn dẹp trong
// ApprovalWorkflowV2AdminFeatures chỉ biết bảng *LevelOpinions (không biết *Approvals).
public class ContractSigningPlanApproval : BaseEntity
{
    public Guid ContractSigningPlanId { get; set; }

    public ContractSigningPlanPhase FromPhase { get; set; }
    public ContractSigningPlanPhase ToPhase { get; set; }
    public ApprovalDecision Decision { get; set; }
    public string? Comment { get; set; }

    public Guid? ApprovalWorkflowLevelId { get; set; }    // Cấp đã ký (loose-Guid, no FK)
    public Guid? ApprovedByUserId { get; set; }           // null = system/SLA auto
    public DateTime ApprovedAt { get; set; }

    public ContractSigningPlan? ContractSigningPlan { get; set; }
}
