namespace CMSMicroservice.Application.CommissionCQ.Queries.GetWeeklyCommissionPool;

/// <summary>
/// DTO برای استخر کمیسیون هفتگی
/// </summary>
public class WeeklyCommissionPoolDto
{
    public long Id { get; set; }
    public long WeekDefinitionId { get; set; } 
    public string WeekDisplayName { get; set; } = string.Empty;
    public long TotalPoolAmount { get; set; }
    public long TotalBalances { get; set; }
    public decimal ValuePerBalance { get; set; }
    public bool IsCalculated { get; set; }
    public DateTime? CalculatedAt { get; set; }
    public DateTimeOffset Created { get; set; }
    public long PackageId { get; set; }
    public string PackageTitle { get; set; } = string.Empty;

    // ── Validation Fields (Q29) ──
    /// <summary>آیا TotalPoolAmount با تعداد فعال‌سازی‌های ثبت‌شده در دیتابیس مطابقت دارد؟</summary>
    public bool ValidationIsValid { get; set; } = true;
    /// <summary>مبلغ مورد انتظار بر اساس شمارش فعال‌سازی‌ها × ActivationFee</summary>
    public long ValidationExpectedAmount { get; set; }
    /// <summary>اختلاف: TotalPoolAmount - ValidationExpectedAmount</summary>
    public long ValidationDiscrepancy { get; set; }
    /// <summary>تعداد فعال‌سازی‌های شناسایی‌شده برای این هفته و پکیج</summary>
    public int ValidationActivationCount { get; set; }
}
