diff --git a/src/CMSMicroservice.Application/CommissionCQ/Commands/BulkCreditPayouts/BulkCreditPayoutsCommandHandler.cs b/src/CMSMicroservice.Application/CommissionCQ/Commands/BulkCreditPayouts/BulkCreditPayoutsCommandHandler.cs index 6d1e840..a968c57 100644 --- a/src/CMSMicroservice.Application/CommissionCQ/Commands/BulkCreditPayouts/BulkCreditPayoutsCommandHandler.cs +++ b/src/CMSMicroservice.Application/CommissionCQ/Commands/BulkCreditPayouts/BulkCreditPayoutsCommandHandler.cs @@ -1,5 +1,4 @@ using CMSMicroservice.Application.Common.Interfaces; -using CMSMicroservice.Domain.Entities; using CMSMicroservice.Domain.Entities.Commission; using CMSMicroservice.Domain.Entities.History; using CMSMicroservice.Domain.Enums; @@ -25,7 +24,6 @@ public class BulkCreditPayoutsCommandHandler : IRequestHandler Handle(BulkCreditPayoutsCommand request, CancellationToken cancellationToken) { - // بارگذاری همه پرداخت‌های Pending این هفته var pendingPayouts = await _context.UserCommissionPayouts .Where(p => p.WeekDefinitionId == request.WeekDefinitionId && p.Status == CommissionPayoutStatus.Pending @@ -37,72 +35,37 @@ public class BulkCreditPayoutsCommandHandler : IRequestHandler p.UserId).Distinct().ToList(); - var wallets = await _context.UserWallets - .Where(w => userIds.Contains(w.UserId) && !w.IsDeleted) - .ToDictionaryAsync(w => w.UserId, cancellationToken); - var performedBy = _currentUser.GetPerformedBy() ?? "System"; var now = DateTime.UtcNow; - var walletHistories = new List(); var payoutHistories = new List(); var creditedCount = 0; long totalCredited = 0; foreach (var payout in pendingPayouts) { - if (!wallets.TryGetValue(payout.UserId, out var wallet)) - { - _logger.LogWarning( - "Wallet not found for UserId={UserId}, PayoutId={PayoutId} — skipping", - payout.UserId, payout.Id); - continue; - } - - var oldBalance = wallet.Balance; - - // واریز مبلغ به کیف پول - wallet.Balance += payout.TotalAmount; - - walletHistories.Add(new UserWalletHistory - { - WalletId = wallet.Id, - CurrentBalance = wallet.Balance, - CurrentNetworkBalance = wallet.NetworkBalance, - CurrentDiscountBalance = wallet.DiscountBalance, - ChangeValue = payout.TotalAmount, - ChangeNerworkValue = 0, - ChangeDiscountValue = 0, - IsIncrease = true, - RefrenceId = payout.Id - }); - - // به‌روزرسانی وضعیت پرداخت payout.Status = CommissionPayoutStatus.Paid; payout.PaidAt = now; payout.LastModified = now; payoutHistories.Add(new CommissionPayoutHistory { - UserCommissionPayoutId = payout.Id, + UserCommissionPayoutId = payout.Id, UserId = payout.UserId, WeekDefinitionId = payout.WeekDefinitionId, - AmountBefore = 0, + AmountBefore = payout.TotalAmount, AmountAfter = payout.TotalAmount, OldStatus = CommissionPayoutStatus.Pending, NewStatus = CommissionPayoutStatus.Paid, Action = CommissionPayoutAction.Paid, PerformedBy = performedBy, - Reason = $"واریز دسته‌جمعی کمیسیون هفته {payout.WeekDefinitionId} توسط {performedBy}" + Reason = $"تایید پرداخت دسته‌جمعی کمیسیون هفته {payout.WeekDefinitionId} توسط {performedBy}" }); creditedCount++; totalCredited += payout.TotalAmount; } - await _context.UserWalletHistories.AddRangeAsync(walletHistories, cancellationToken); await _context.CommissionPayoutHistories.AddRangeAsync(payoutHistories, cancellationToken); await _context.SaveChangesAsync(cancellationToken);