using SolutionErp.Domain.Common;

namespace SolutionErp.Domain.PurchaseEvaluations;

// "Ý kiến 4 phòng ban" — sign-off block trên PHIẾU TRÌNH KÝ CHỌN TP/NCC.
// 4 box: Phê duyệt / P.CCM / P.MuaHàng / SM-PM. Mỗi box có:
// - Opinion text (text ý kiến)
// - SignedAt date
// - UserId người ký (lưu UserName denorm để render readable)
//
// Lưu thành table riêng (1:N với PurchaseEvaluation, max 4 row mỗi PE) để:
// - Dễ query "phòng nào chưa ký"
// - Audit history (mỗi update là 1 record? — không, dùng UPDATE in-place,
//   audit qua PurchaseEvaluationChangelog).
// - Không bloat header với 12 column nullable.
public enum PeDepartmentKind
{
    PheDuyet = 1,    // box "PHÊ DUYỆT" trên cùng — typically Drafter/PM ký xác nhận trình
    Ccm = 2,         // P.CCM — Cost Control review
    MuaHang = 3,     // P.MuaHàng (PRO) — Procurement
    SmPm = 4,        // SM-PM — Site Manager / Project Manager
}

public class PurchaseEvaluationDepartmentOpinion : AuditableEntity
{
    public Guid PurchaseEvaluationId { get; set; }
    public PeDepartmentKind Kind { get; set; }

    public string? Opinion { get; set; }       // text ý kiến (max 2000)
    public DateTime? SignedAt { get; set; }
    public Guid? UserId { get; set; }           // người ký
    public string? UserName { get; set; }       // denorm cho readable render

    public PurchaseEvaluation? PurchaseEvaluation { get; set; }
}
