using CMSMicroservice.Domain.Enums;

namespace CMSMicroservice.Application.DayaLoanCQ.Commands.CheckAndProcessDayaLoans;

/// <summary>
/// پاسخ Command استعلام و پردازش وام دایا
/// </summary>
public class CheckAndProcessDayaLoansResponseDto
{
    /// <summary>
    /// نتایج استعلام و پردازش
    /// </summary>
    public required List<DayaLoanProcessResult> Results { get; set; }
    
    /// <summary>
    /// تعداد کل استعلام شده
    /// </summary>
    public int TotalChecked { get; set; }
    
    /// <summary>
    /// تعداد موفق (دارای قرارداد)
    /// </summary>
    public int WithContractCount { get; set; }
    
    /// <summary>
    /// تعداد پردازش شده (شارژ کیف پول)
    /// </summary>
    public int ProcessedCount { get; set; }
}

/// <summary>
/// نتیجه پردازش هر کاربر
/// </summary>
public class DayaLoanProcessResult
{
    /// <summary>
    /// کد ملی
    /// </summary>
    public required string NationalCode { get; set; }
    
    /// <summary>
    /// شناسه کاربر
    /// </summary>
    public long? UserId { get; set; }
    
    /// <summary>
    /// وضعیت وام در دایا
    /// </summary>
    public DayaLoanStatus Status { get; set; }
    
    /// <summary>
    /// شماره قرارداد
    /// </summary>
    public string? ContractNumber { get; set; }
    
    /// <summary>
    /// آیا پردازش مالی انجام شد؟
    /// </summary>
    public bool WasProcessed { get; set; }
    
    /// <summary>
    /// موجودی کیف پول بعد از شارژ
    /// </summary>
    public long? NewWalletBalance { get; set; }
    
    /// <summary>
    /// نام پکیج
    /// </summary>
    public string? PackageName { get; set; }
    
    /// <summary>
    /// پیام
    /// </summary>
    public required string Message { get; set; }
}
