using Lada.Framework.DTO;

namespace Ladaer.BackEnd.Infrastructures.DTO.Items.Finances
{
    /// <summary>
    /// DTO Item cho import sao kê ngân hàng
    /// </summary>
    public class BankStatementImportItem : BaseItem<Guid>
    {
        /// <summary>
        /// ID tài khoản ngân hàng
        /// </summary>
        public int BankAccountId { get; set; }

        /// <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>
        /// Tên ngân hàng
        /// </summary>
        public string BankName { get; set; } = string.Empty;

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

        /// <summary>
        /// Tên file gốc
        /// </summary>
        public string OriginalFileName { get; set; } = string.Empty;

        /// <summary>
        /// Kích thước file (formatted)
        /// </summary>
        public string FileSize { get; set; } = string.Empty;

        /// <summary>
        /// Tổng số dòng trong file
        /// </summary>
        public int TotalRows { get; set; }

        /// <summary>
        /// Số dòng xử lý thành công
        /// </summary>
        public int ProcessedRows { get; set; }

        /// <summary>
        /// Số dòng lỗi
        /// </summary>
        public int ErrorRows { get; set; }

        /// <summary>
        /// Số dòng bỏ qua
        /// </summary>
        public int SkippedRows { get; set; }

        /// <summary>
        /// Số dòng trùng lặp
        /// </summary>
        public int DuplicateRows { get; set; }

        /// <summary>
        /// Trạng thái import
        /// </summary>
        public string ImportStatus { get; set; } = string.Empty;

        /// <summary>
        /// Thông báo lỗi
        /// </summary>
        public string ErrorMessage { get; set; } = string.Empty;

        /// <summary>
        /// Ngày bắt đầu của dữ liệu
        /// </summary>
        public DateTimeOffset? DataFromDate { get; set; }

        /// <summary>
        /// Ngày kết thúc của dữ liệu
        /// </summary>
        public DateTimeOffset? DataToDate { get; set; }

        /// <summary>
        /// Có ghi đè dữ liệu trùng lặp không
        /// </summary>
        public bool OverwriteExisting { get; set; }

        /// <summary>
        /// Thời gian bắt đầu xử lý
        /// </summary>
        public DateTimeOffset? ProcessStartTime { get; set; }

        /// <summary>
        /// Thời gian kết thúc xử lý
        /// </summary>
        public DateTimeOffset? ProcessEndTime { get; set; }

        /// <summary>
        /// Thời gian xử lý (formatted)
        /// </summary>
        public string ProcessDuration { get; set; } = string.Empty;

        /// <summary>
        /// Tên người thực hiện import
        /// </summary>
        public string ImportedByUserName { get; set; } = string.Empty;

        /// <summary>
        /// Tỷ lệ thành công (%)
        /// </summary>
        public decimal SuccessRate { get; set; }
    }
}
