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

namespace SolutionErp.Domain.ContractSigningPlans;

// [W1 Mig 69 — S161] Phạm vi thay đổi được ghi nhật ký. Bắt đầu từ 1 (0 falsy JS).
public enum ContractSigningPlanEntityType
{
    Header = 1,
    Line = 2,
    DossierItem = 3,
    Workflow = 4,
    Attachment = 5,
}

// [W1 Mig 69 — S161] Nhật ký thay đổi phiếu Kế hoạch ký kết — CÓ TỪ NGÀY 1
// (tiền lệ PE Mig 60/61: thiếu changelog thì không backfill lại được lịch sử).
//
// 🔴 4 cột EntityType / EntityId / UserName / FieldChangesJson là BẮT BUỘC (review
// lens-schema C1): `LogTransitionAsync` khuôn `ContractWorkflowService.cs:405` gọi
// `changelog.LogWorkflowTransitionAsync` cần đủ chữ ký này, thiếu ⇒ đoạn copy KHÔNG
// BIÊN DỊCH + mất index twin (PlanId, EntityType).
//
// BaseEntity (KHÔNG soft-delete) — append-only audit, mirror PurchaseEvaluationChangelog.
public class ContractSigningPlanChangelog : BaseEntity
{
    public Guid ContractSigningPlanId { get; set; }

    public ContractSigningPlanEntityType EntityType { get; set; }
    public Guid? EntityId { get; set; }
    public ChangelogAction Action { get; set; }
    public ContractSigningPlanPhase? PhaseAtChange { get; set; }
    public Guid? UserId { get; set; }
    public string? UserName { get; set; }
    public string? Summary { get; set; }
    public string? FieldChangesJson { get; set; }
    public string? ContextNote { get; set; }

    public ContractSigningPlan? ContractSigningPlan { get; set; }
}
