🐛 Unable to use random split in open fund

This commit is contained in:
2025-11-22 16:54:29 +08:00
parent 3800dae8b7
commit f7388822e0

View File

@@ -588,13 +588,22 @@ public class PaymentService(
if (fund.RemainingAmount <= 0)
return 0;
// For open mode funds: calculate amount per split
// For open mode funds: use split type calculation
if (fund.IsOpen)
{
// Calculate amount per split: TotalAmount / AmountOfSplits
var amountPerSplit = fund.TotalAmount / fund.AmountOfSplits;
return Math.Max(amountPerSplit, 0.01m); // Minimum 0.01 per claim
var remainingRecipients = fund.AmountOfSplits - fund.Recipients.Count(r => r.IsReceived);
if (remainingRecipients == 0)
return 0;
var amount = fund.SplitType switch
{
Shared.Models.FundSplitType.Even => SplitEvenly(fund.RemainingAmount, remainingRecipients)[0],
Shared.Models.FundSplitType.Random => SplitRandomly(fund.RemainingAmount, remainingRecipients)[0],
_ => throw new ArgumentException("Invalid split type")
};
return Math.Max(amount, 0.01m);
}
// For closed mode funds: use split type calculation
var unclaimedRecipients = fund.Recipients.Count(r => !r.IsReceived);