using Lada.Framework.DTO;

namespace Ladaer.BackEnd.Infrastructures.DTO.Items.Crm
{
    /// <summary>
    /// Item hiển thị thông tin tài khoản ngân hàng của khách hàng
    /// </summary>
    public class CustomerBankAccountItem : BaseItem<int>
    {
        /// <summary>
        /// ID khách hàng
        /// </summary>
        public int CustomerId { get; set; }

        /// <summary>
        /// Tên khách hàng
        /// </summary>
        public string CustomerName { get; set; } = string.Empty;

        /// <summary>
        /// Số tài khoản
        /// </summary>
        public string AccountNumber { get; set; } = string.Empty;

        /// <summary>
        /// Số tài khoản đã che (****1234)
        /// </summary>
        public string MaskedAccountNumber
        {
            get
            {
                if (string.IsNullOrEmpty(AccountNumber) || AccountNumber.Length <= 4)
                    return AccountNumber;

                return "****" + AccountNumber.Substring(AccountNumber.Length - 4);
            }
        }

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

        /// <summary>
        /// Mã ngân hàng
        /// </summary>
        public string BankCode { get; set; } = string.Empty;

        /// <summary>
        /// Tên ngân hàng
        /// </summary>
        public string BankName { get; set; } = string.Empty;

        /// <summary>
        /// Tên chi nhánh
        /// </summary>
        public string BranchName { get; set; } = string.Empty;

        /// <summary>
        /// Địa chỉ chi nhánh
        /// </summary>
        public string BranchAddress { get; set; } = string.Empty;

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

        /// <summary>
        /// Ghi chú
        /// </summary>
        public string Note { get; set; } = string.Empty;

        /// <summary>
        /// Thông tin hiển thị đầy đủ
        /// </summary>
        public string DisplayInfo => $"{AccountHolderName} - {MaskedAccountNumber} ({BankName})";

        /// <summary>
        /// Có thể sử dụng để chuyển tiền không
        /// </summary>
        public bool CanUseForTransfer => true;

        /// <summary>
        /// Có thể chỉnh sửa không
        /// </summary>
        public bool CanEdit => true;

        /// <summary>
        /// Có thể xóa không
        /// </summary>
        public bool CanDelete => true;
    }
}
