// Enum cho mã ngân hàng (Bank Account)
export const BankCode = {
  VPBank: 1,
  Techcombank: 2,
  Vietcombank: 3,
  BIDV: 4,
  Agribank: 5,
  Sacombank: 6,
  ACB: 7,
  MBBank: 8,
  VietinBank: 9,
  HDBank: 10,
  TPBank: 11,
  SeABank: 12,
  SHB: 13,
  VIB: 14,
  LienVietPostBank: 15,
  OCB: 16,
  MSB: 17,
  Eximbank: 18,
  NamABank: 19,
  PGBank: 20
};

// Danh sách ngân hàng với tên đầy đủ
export const BankList = [
  { Id: 1, Code: "VPBank", Name: "Ngân hàng TMCP Việt Nam Thịnh Vượng" },
  { Id: 2, Code: "Techcombank", Name: "Ngân hàng TMCP Kỹ thương Việt Nam" },
  { Id: 3, Code: "Vietcombank", Name: "Ngân hàng TMCP Ngoại thương Việt Nam" },
  { Id: 4, Code: "BIDV", Name: "Ngân hàng TMCP Đầu tư và Phát triển Việt Nam" },
  { Id: 5, Code: "Agribank", Name: "Ngân hàng Nông nghiệp và Phát triển Nông thôn Việt Nam" },
  { Id: 6, Code: "Sacombank", Name: "Ngân hàng TMCP Sài Gòn Thương Tín" },
  { Id: 7, Code: "ACB", Name: "Ngân hàng TMCP Á Châu" },
  { Id: 8, Code: "MBBank", Name: "Ngân hàng TMCP Quân đội" },
  { Id: 9, Code: "VietinBank", Name: "Ngân hàng TMCP Công thương Việt Nam" },
  { Id: 10, Code: "HDBank", Name: "Ngân hàng TMCP Phát triển Thành phố Hồ Chí Minh" },
  { Id: 11, Code: "TPBank", Name: "Ngân hàng TMCP Tiên Phong" },
  { Id: 12, Code: "SeABank", Name: "Ngân hàng TMCP Đông Nam Á" },
  { Id: 13, Code: "SHB", Name: "Ngân hàng TMCP Sài Gòn - Hà Nội" },
  { Id: 14, Code: "VIB", Name: "Ngân hàng TMCP Quốc tế Việt Nam" },
  { Id: 15, Code: "LienVietPostBank", Name: "Ngân hàng TMCP Bưu điện Liên Việt" },
  { Id: 16, Code: "OCB", Name: "Ngân hàng TMCP Phương Đông" },
  { Id: 17, Code: "MSB", Name: "Ngân hàng TMCP Hàng Hải" },
  { Id: 18, Code: "Eximbank", Name: "Ngân hàng TMCP Xuất Nhập khẩu Việt Nam" },
  { Id: 19, Code: "NamABank", Name: "Ngân hàng TMCP Nam Á" },
  { Id: 20, Code: "PGBank", Name: "Ngân hàng TMCP Xăng dầu Petrolimex" }
];

// Enum cho trạng thái tài khoản ngân hàng
export const BankAccountStatus = {
  Active: 1,
  Suspended: 2,
  Closed: 3,
  PendingActivation: 4
};

// Danh sách trạng thái tài khoản
export const BankAccountStatusList = [
  { Id: 1, Name: "Hoạt động", Color: "success" },
  { Id: 2, Name: "Tạm khóa", Color: "warning" },
  { Id: 3, Name: "Đóng", Color: "danger" },
  { Id: 4, Name: "Chờ kích hoạt", Color: "info" }
];

// Enum cho trạng thái xử lý giao dịch
export const TransactionProcessStatus = {
  Pending: 1,
  Processed: 2,
  Error: 3,
  Skipped: 4,
  Duplicate: 5
};

// Danh sách trạng thái xử lý giao dịch
export const TransactionProcessStatusList = [
  { Id: 1, Name: "Chưa xử lý", Color: "warning" },
  { Id: 2, Name: "Đã xử lý", Color: "success" },
  { Id: 3, Name: "Lỗi", Color: "danger" },
  { Id: 4, Name: "Bỏ qua", Color: "secondary" },
  { Id: 5, Name: "Trùng lặp", Color: "info" }
];

// Enum cho trạng thái import
export const ImportStatus = {
  Processing: 1,
  Success: 2,
  Failed: 3,
  SuccessWithWarnings: 4,
  Cancelled: 5
};

// Danh sách trạng thái import
export const ImportStatusList = [
  { Id: 1, Name: "Đang xử lý", Color: "warning" },
  { Id: 2, Name: "Thành công", Color: "success" },
  { Id: 3, Name: "Thất bại", Color: "danger" },
  { Id: 4, Name: "Thành công có cảnh báo", Color: "info" },
  { Id: 5, Name: "Đã hủy", Color: "secondary" }
];

// Enum cho loại giao dịch ngân hàng
export const BankTransactionType = {
  TransferIn: 1,
  TransferOut: 2,
  Withdrawal: 3,
  Deposit: 4,
  ServiceFee: 5,
  Interest: 6,
  BillPayment: 7,
  Other: 8
};

// Danh sách loại giao dịch ngân hàng
export const BankTransactionTypeList = [
  { Id: 1, Name: "Chuyển khoản đến", Color: "success" },
  { Id: 2, Name: "Chuyển khoản đi", Color: "danger" },
  { Id: 3, Name: "Rút tiền", Color: "warning" },
  { Id: 4, Name: "Nộp tiền", Color: "info" },
  { Id: 5, Name: "Phí dịch vụ", Color: "secondary" },
  { Id: 6, Name: "Lãi tiền gửi", Color: "success" },
  { Id: 7, Name: "Thanh toán hóa đơn", Color: "primary" },
  { Id: 8, Name: "Khác", Color: "dark" }
];

// Utility functions
export const BankAccountUtils = {
  // Lấy tên ngân hàng theo mã
  getBankName(bankCode) {
    const bank = BankList.find(b => b.Id === bankCode);
    return bank ? bank.Name : "Không xác định";
  },

  // Lấy mã ngân hàng theo ID
  getBankCode(bankId) {
    const bank = BankList.find(b => b.Id === bankId);
    return bank ? bank.Code : "Unknown";
  },

  // Lấy tên trạng thái tài khoản
  getStatusName(statusId) {
    const status = BankAccountStatusList.find(s => s.Id === statusId);
    return status ? status.Name : "Không xác định";
  },

  // Lấy màu trạng thái tài khoản
  getStatusColor(statusId) {
    const status = BankAccountStatusList.find(s => s.Id === statusId);
    return status ? status.Color : "secondary";
  },

  // Lấy tên trạng thái xử lý giao dịch
  getTransactionStatusName(statusId) {
    const status = TransactionProcessStatusList.find(s => s.Id === statusId);
    return status ? status.Name : "Không xác định";
  },

  // Lấy màu trạng thái xử lý giao dịch
  getTransactionStatusColor(statusId) {
    const status = TransactionProcessStatusList.find(s => s.Id === statusId);
    return status ? status.Color : "secondary";
  },

  // Lấy tên loại giao dịch
  getTransactionTypeName(typeId) {
    const type = BankTransactionTypeList.find(t => t.Id === typeId);
    return type ? type.Name : "Không xác định";
  },

  // Lấy màu loại giao dịch
  getTransactionTypeColor(typeId) {
    const type = BankTransactionTypeList.find(t => t.Id === typeId);
    return type ? type.Color : "secondary";
  },

  // Format số tiền
  formatCurrency(amount) {
    if (!amount && amount !== 0) return "";
    return new Intl.NumberFormat('vi-VN').format(amount);
  },

  // Format số tài khoản (ẩn một phần)
  formatAccountNumber(accountNumber, showLast = 4) {
    if (!accountNumber) return "";
    if (accountNumber.length <= showLast) return accountNumber;
    const hidden = "*".repeat(accountNumber.length - showLast);
    return hidden + accountNumber.slice(-showLast);
  }
};
