using Lada.Framework.DTO;

namespace Ladaer.BackEnd.Infrastructures.DTO.Items.Finance
{
    /// <summary>
    /// Item hiển thị thông tin danh mục chi phí
    /// </summary>
    public class ExpenseCategoryItem : BaseItem<int>
    {
        /// <summary>
        /// Tên danh mục chi phí
        /// </summary>
        public string Name { get; set; } = "";

        /// <summary>
        /// Mô tả danh mục chi phí
        /// </summary>
        public string Description { get; set; } = "";

        /// <summary>
        /// Thứ tự hiển thị
        /// </summary>
        public int DisplayOrder { get; set; }

        /// <summary>
        /// ID của danh mục cha (null nếu là danh mục gốc)
        /// </summary>
        public int? ParentId { get; set; }

        /// <summary>
        /// Tên danh mục cha
        /// </summary>
        public string? ParentName { get; set; }

        /// <summary>
        /// ID người duyệt
        /// </summary>
        public int ApprovedBy { get; set; }

        /// <summary>
        /// Tên người duyệt
        /// </summary>
        public string ApprovedByUserName { get; set; } = "";

        /// <summary>
        /// Mã tài khoản
        /// </summary>
        public string? AccountCode { get; set; }

        /// <summary>
        /// Danh sách danh mục con
        /// </summary>
        public List<ExpenseCategoryItem> Children { get; set; } = new List<ExpenseCategoryItem>();

        /// <summary>
        /// Cấp độ trong cây phân cấp (0 = gốc, 1 = con, 2 = cháu, ...)
        /// </summary>
        public int Level { get; set; }

        /// <summary>
        /// Trạng thái xóa
        /// </summary>
        public bool IsDeleted { get; set; }
    }
}
