namespace CMSMicroservice.Application.Common.Interfaces; /// /// استراتژی محاسبه کمیسیون هفتگی /// دو پیاده‌سازی دارد: ORM و Stored Procedure /// public interface ICommissionCalculationStrategy { /// /// محاسبه تعادل‌های هفتگی (مرحله 1) /// /// شناسه هفته /// محاسبه مجدد حتی اگر قبلاً محاسبه شده /// اگر مقدار داشته باشد فقط این پکیج محاسبه می‌شود — در غیر این صورت همه پکیج‌ها /// توکن لغو /// تعداد رکوردهای محاسبه شده Task CalculateWeeklyBalancesAsync( long weekDefinitionId, bool forceRecalculate, long? packageId = null, CancellationToken cancellationToken = default); /// /// محاسبه استخر کمیسیون و پرداخت‌ها (مرحله 2) /// /// شناسه هفته /// محاسبه مجدد حتی اگر قبلاً محاسبه شده /// اگر مقدار داشته باشد فقط این پکیج محاسبه می‌شود — در غیر این صورت همه پکیج‌ها /// توکن لغو /// شناسه Pool ایجاد شده Task CalculateWeeklyCommissionPoolAsync( long weekDefinitionId, bool forceRecalculate, long? packageId = null, CancellationToken cancellationToken = default); } /// /// نوع استراتژی محاسبه کمیسیون /// public enum CommissionCalculationStrategyType { /// /// استفاده از Entity Framework (ORM) - پیش‌فرض /// Orm = 0, /// /// استفاده از Stored Procedure - بهینه‌تر برای داده‌های زیاد /// StoredProcedure = 1 }