namespace CMSMicroservice.Domain.Entities.Network; /// /// تعادل‌های هفتگی شبکه باینری /// public class NetworkWeeklyBalance : BaseAuditableEntity { /// /// شناسه کاربر /// public long UserId { get; set; } /// /// User Navigation Property /// public virtual User User { get; set; } /// /// شماره هفته (مثال: "2025-W48") /// public string WeekNumber { get; set; } /// /// تعداد اعضای جدید شاخه چپ در این هفته /// public int LeftLegNewMembers { get; set; } /// /// تعداد اعضای جدید شاخه راست در این هفته /// public int RightLegNewMembers { get; set; } /// /// باقیمانده شاخه چپ از هفته قبل (Carryover) /// public int LeftLegCarryover { get; set; } /// /// باقیمانده شاخه راست از هفته قبل (Carryover) /// public int RightLegCarryover { get; set; } /// /// مجموع شاخه چپ: LeftLegNewMembers + LeftLegCarryover /// public int LeftLegTotal { get; set; } /// /// مجموع شاخه راست: RightLegNewMembers + RightLegCarryover /// public int RightLegTotal { get; set; } /// /// تعداد تعادل (امتیاز): MIN(LeftLegTotal, RightLegTotal) /// public int TotalBalances { get; set; } /// /// باقیمانده شاخه چپ برای هفته بعد /// public int LeftLegRemainder { get; set; } /// /// باقیمانده شاخه راست برای هفته بعد /// public int RightLegRemainder { get; set; } /// /// مقدار فلش هر طرف (بعد از اعمال Cap): TotalBalances - CappedBalances /// public int FlushedPerSide { get; set; } /// /// مجموع فلش از دو طرف: FlushedPerSide × 2 /// این مقدار از دست می‌رود (نه به هفته بعد، نه به کمیسیون) /// public int TotalFlushed { get; set; } /// /// مجموع تعادل زیرمجموعه این کاربر (تا 15 لول پایین‌تر) /// این مقدار در CalculateWeeklyBalances محاسبه و ذخیره می‌شود /// public int SubordinateBalances { get; set; } /// /// [DEPRECATED] تعداد تعادل شاخه چپ - استفاده نشود /// [Obsolete("Use LeftLegTotal instead")] public int LeftLegBalances { get; set; } /// /// [DEPRECATED] تعداد تعادل شاخه راست - استفاده نشود /// [Obsolete("Use RightLegTotal instead")] public int RightLegBalances { get; set; } /// /// مبلغی که از این کاربر به استخر هفتگی اضافه شد (ریال) /// public long WeeklyPoolContribution { get; set; } /// /// زمان محاسبه توسط Worker /// public DateTime? CalculatedAt { get; set; } /// /// آیا منقضی شده (بعد از توزیع کمیسیون) /// public bool IsExpired { get; set; } }