using Lada.Framework.Data.Domains.BaseEntities;
using Lada.Framework.Data.Domains.Identity;
using System.ComponentModel.DataAnnotations;

namespace Lada.Framework.Data.Domains.Finance
{
    /// <summary>
    /// Thông tin tài khoản ngân hàng của người dùng
    /// </summary>
    public class UserBankAccount : BaseEntityWithKey<int>
    {
        /// <summary>
        /// ID người dùng
        /// </summary>
        public int UserId { get; set; }
        public virtual User User { get; set; } = null!;

        /// <summary>
        /// Số tài khoản
        /// </summary>
        [MaxLength(64)]
        public string AccountNumber { get; set; } = string.Empty;

        /// <summary>
        /// Tên chủ tài khoản
        /// </summary>
        [MaxLength(256)]
        public string AccountHolderName { get; set; } = string.Empty;

        /// <summary>
        /// ID ngân hàng
        /// </summary>
        public int BankId { get; set; }
        public virtual Bank Bank { get; set; } = null!;

        /// <summary>
        /// Có phải tài khoản mặc định không
        /// </summary>
        public bool IsDefault { get; set; } = false;

        /// <summary>
        /// Ghi chú
        /// </summary>
        [MaxLength(512)]
        public string Note { get; set; } = string.Empty;

        /// <summary>
        /// Danh sách chi phí sử dụng tài khoản này
        /// </summary>
        public virtual ICollection<Expense> Expenses { get; set; } = new List<Expense>();
    }
}
