using Lada.Framework.DTO;

namespace Ladaer.BackEnd.Infrastructures.DTO.Items.Finances
{
    /// <summary>
    /// DTO Item cho giao dịch ngân hàng
    /// </summary>
    public class BankTransactionItem : BaseItem<Guid>
    {
        /// <summary>
        /// ID tài khoản ngân hàng
        /// </summary>
        public int BankAccountId { get; set; }

        /// <summary>
        /// Mã giao dịch từ ngân hàng
        /// </summary>
        public string TransactionCode { get; set; } = string.Empty;

        /// <summary>
        /// Ngày giao dịch
        /// </summary>
        public DateTimeOffset TransactionDate { get; set; }

        /// <summary>
        /// Số tiền ghi có (formatted)
        /// </summary>
        public string CreditAmount { get; set; } = string.Empty;

        /// <summary>
        /// Số tiền ghi nợ (formatted)
        /// </summary>
        public string DebitAmount { get; set; } = string.Empty;

        /// <summary>
        /// Số dư sau giao dịch (formatted)
        /// </summary>
        public string Balance { get; set; } = string.Empty;

        /// <summary>
        /// Nội dung giao dịch
        /// </summary>
        public string Description { get; set; } = string.Empty;

        /// <summary>
        /// Thời gian giao dịch chi tiết
        /// </summary>
        public DateTimeOffset? DetailedTime { get; set; }

        /// <summary>
        /// Trạng thái xử lý
        /// </summary>
        public string ProcessStatus { get; set; } = string.Empty;

        /// <summary>
        /// Loại giao dịch
        /// </summary>
        public string TransactionType { get; set; } = string.Empty;

        /// <summary>
        /// Mã tham chiếu
        /// </summary>
        public string ReferenceNumber { get; set; } = string.Empty;

        /// <summary>
        /// Tên người gửi/nhận
        /// </summary>
        public string CounterpartyName { get; set; } = string.Empty;

        /// <summary>
        /// Số tài khoản người gửi/nhận
        /// </summary>
        public string CounterpartyAccount { get; set; } = string.Empty;

        /// <summary>
        /// Ngân hàng của người gửi/nhận
        /// </summary>
        public string CounterpartyBank { get; set; } = string.Empty;

        /// <summary>
        /// Tên tài khoản ngân hàng
        /// </summary>
        public string BankAccountName { get; set; } = string.Empty;

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



        /// <summary>
        /// ID import (nếu có)
        /// </summary>
        public Guid? ImportId { get; set; }

        /// <summary>
        /// Số dòng trong file import
        /// </summary>
        public int? ImportRowNumber { get; set; }

        /// <summary>
        /// Ghi chú xử lý
        /// </summary>
        public string ProcessNote { get; set; } = string.Empty;

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