feat: add PackageId to CalculateWeeklyCommissionPoolCommand and related logic for package-specific calculations
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 8m43s
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 8m43s
This commit is contained in:
+5
@@ -10,6 +10,11 @@ public record CalculateWeeklyCommissionPoolCommand : IRequest<long>
|
||||
/// </summary>
|
||||
public long WeekDefinitionId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// شناسه پکیج — اگر مقدار داشته باشد فقط همین پکیج محاسبه میشود.
|
||||
/// </summary>
|
||||
public long? PackageId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// آیا محاسبه مجدد انجام شود؟
|
||||
/// </summary>
|
||||
|
||||
+29
-8
@@ -23,8 +23,17 @@ public class CalculateWeeklyCommissionPoolCommandHandler : IRequestHandler<Calcu
|
||||
}
|
||||
|
||||
// بررسی وجود استخر
|
||||
var existingPool = await _context.WeeklyCommissionPools
|
||||
.FirstOrDefaultAsync(x => x.WeekDefinitionId == request.WeekDefinitionId, cancellationToken);
|
||||
var existingPoolQuery = _context.WeeklyCommissionPools
|
||||
.Where(x => x.WeekDefinitionId == request.WeekDefinitionId);
|
||||
|
||||
if (request.PackageId.HasValue)
|
||||
{
|
||||
existingPoolQuery = existingPoolQuery.Where(x => x.PackageId == request.PackageId.Value);
|
||||
}
|
||||
|
||||
var existingPool = await existingPoolQuery
|
||||
.OrderBy(x => x.Id)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
if (existingPool == null)
|
||||
{
|
||||
@@ -40,9 +49,15 @@ public class CalculateWeeklyCommissionPoolCommandHandler : IRequestHandler<Calcu
|
||||
}
|
||||
|
||||
// بررسی وجود تعادلهای هفتگی
|
||||
var weeklyBalances = await _context.NetworkWeeklyBalances
|
||||
.Where(x => x.WeekDefinitionId == request.WeekDefinitionId)
|
||||
.ToListAsync(cancellationToken);
|
||||
var weeklyBalancesQuery = _context.NetworkWeeklyBalances
|
||||
.Where(x => x.WeekDefinitionId == request.WeekDefinitionId);
|
||||
|
||||
if (request.PackageId.HasValue)
|
||||
{
|
||||
weeklyBalancesQuery = weeklyBalancesQuery.Where(x => x.PackageId == request.PackageId.Value);
|
||||
}
|
||||
|
||||
var weeklyBalances = await weeklyBalancesQuery.ToListAsync(cancellationToken);
|
||||
|
||||
if (!weeklyBalances.Any())
|
||||
{
|
||||
@@ -76,9 +91,15 @@ public class CalculateWeeklyCommissionPoolCommandHandler : IRequestHandler<Calcu
|
||||
// حذف پرداختهای قبلی در صورت ForceRecalculate
|
||||
if (request.ForceRecalculate)
|
||||
{
|
||||
var oldPayouts = await _context.UserCommissionPayouts
|
||||
.Where(p => p.WeekDefinitionId == request.WeekDefinitionId)
|
||||
.ToListAsync(cancellationToken);
|
||||
var oldPayoutsQuery = _context.UserCommissionPayouts
|
||||
.Where(p => p.WeekDefinitionId == request.WeekDefinitionId);
|
||||
|
||||
if (request.PackageId.HasValue)
|
||||
{
|
||||
oldPayoutsQuery = oldPayoutsQuery.Where(p => p.PackageId == request.PackageId.Value);
|
||||
}
|
||||
|
||||
var oldPayouts = await oldPayoutsQuery.ToListAsync(cancellationToken);
|
||||
|
||||
if (oldPayouts.Any())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user