namespace CMSMicroservice.Domain.Entities.Commission;

/// <summary>
/// استخر کارمزد هفتگی
/// </summary>
public class WeeklyCommissionPool : BaseAuditableEntity
{

    /// <summary>
    /// شناسه تعریف هفته (کلید خارجی به WeekDefinition)
    /// </summary>
    public long WeekDefinitionId { get; set; }

    /// <summary>
    /// WeekDefinition Navigation Property
    /// </summary>
    public virtual WeekDefinition WeekDefinition { get; set; }

    /// <summary>
    /// شناسه پکیج (استخر هر پکیج جداگانه)
    /// </summary>
    public long PackageId { get; set; }

    /// <summary>
    /// Package Navigation Property
    /// </summary>
    public virtual Package Package { get; set; }

    /// <summary>
    /// مجموع مبلغ جمع‌شده در استخر (ریال)
    /// </summary>
    public long TotalPoolAmount { get; set; }

    /// <summary>
    /// مجموع تعادل‌های کل سیستم در این هفته
    /// </summary>
    public int TotalBalances { get; set; }

    /// <summary>
    /// مبلغ ریالی هر امتیاز (TotalPoolAmount ÷ TotalBalances)
    /// </summary>
    public long ValuePerBalance { get; set; }

    /// <summary>
    /// آیا محاسبه و توزیع شده
    /// </summary>
    public bool IsCalculated { get; set; }

    /// <summary>
    /// تاریخ محاسبه و توزیع
    /// </summary>
    public DateTime? CalculatedAt { get; set; }

    /// <summary>
    /// UserCommissionPayout Collection Navigation Reference
    /// </summary>
    public virtual ICollection<UserCommissionPayout>? UserCommissionPayouts { get; set; }
}
