49 lines
1.8 KiB
C#
49 lines
1.8 KiB
C#
namespace CMSMicroservice.Application.Common.Interfaces;
|
|
|
|
/// <summary>
|
|
/// استراتژی محاسبه کمیسیون هفتگی
|
|
/// دو پیادهسازی دارد: ORM و Stored Procedure
|
|
/// </summary>
|
|
public interface ICommissionCalculationStrategy
|
|
{
|
|
/// <summary>
|
|
/// محاسبه تعادلهای هفتگی (مرحله 1)
|
|
/// </summary>
|
|
/// <param name="weekDefinitionId">شناسه هفته</param>
|
|
/// <param name="forceRecalculate">محاسبه مجدد حتی اگر قبلاً محاسبه شده</param>
|
|
/// <param name="cancellationToken">توکن لغو</param>
|
|
/// <returns>تعداد رکوردهای محاسبه شده</returns>
|
|
Task<int> CalculateWeeklyBalancesAsync(
|
|
long weekDefinitionId,
|
|
bool forceRecalculate,
|
|
CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// محاسبه استخر کمیسیون و پرداختها (مرحله 2)
|
|
/// </summary>
|
|
/// <param name="weekDefinitionId">شناسه هفته</param>
|
|
/// <param name="forceRecalculate">محاسبه مجدد حتی اگر قبلاً محاسبه شده</param>
|
|
/// <param name="cancellationToken">توکن لغو</param>
|
|
/// <returns>شناسه Pool ایجاد شده</returns>
|
|
Task<long> CalculateWeeklyCommissionPoolAsync(
|
|
long weekDefinitionId,
|
|
bool forceRecalculate,
|
|
CancellationToken cancellationToken = default);
|
|
}
|
|
|
|
/// <summary>
|
|
/// نوع استراتژی محاسبه کمیسیون
|
|
/// </summary>
|
|
public enum CommissionCalculationStrategyType
|
|
{
|
|
/// <summary>
|
|
/// استفاده از Entity Framework (ORM) - پیشفرض
|
|
/// </summary>
|
|
Orm = 0,
|
|
|
|
/// <summary>
|
|
/// استفاده از Stored Procedure - بهینهتر برای دادههای زیاد
|
|
/// </summary>
|
|
StoredProcedure = 1
|
|
}
|