feat: Magic Wallet Phase 6 + Daya restriction + purchase cycle count

- ActivateClubMembershipCommandHandler: block activation in Magic mode
- CheckAndProcessDayaLoansCommandHandler: reject Daya after first cycle
- userwallet.proto: add purchase_cycle_count to GetMagicWalletStatusResponse
- UserWalletService: query ClubMembershipCycles count for cycle info
- EF Migration u21: ClubMembershipCycle table + UserWallet Magic fields
This commit is contained in:
masoodafar-web
2026-02-22 20:04:13 +03:30
parent bdd2c51726
commit 58d419ced3
7 changed files with 5062 additions and 1 deletions
@@ -72,6 +72,17 @@ public class CheckAndProcessDayaLoansCommandHandler : IRequestHandler<CheckAndPr
result.UserId = user.Id;
// 2.5. بررسی محدودیت دایا — پس از اولین دور، فقط IPG مجاز است
var hasPreviousCycle = await _context.ClubMembershipCycles
.AnyAsync(c => c.UserId == user.Id, cancellationToken);
if (hasPreviousCycle)
{
result.Message = "کاربرانی که دور اول را تکمیل کرده‌اند فقط از طریق درگاه بانکی می‌توانند پکیج خریداری کنند";
results.Add(result);
continue;
}
// 3. ذخیره/به‌روزرسانی DayaLoanContract
var contract = await _context.DayaLoanContracts
.FirstOrDefaultAsync(d => d.NationalCode == dayaResult.NationalCode, cancellationToken);