feat(wallet): enforce club membership validation for wallet charge operations
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 19m57s
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 19m57s
- Added club membership inclusion in user retrieval for ChargeCreditWallet and VerifyCreditWalletCharge command handlers. - Implemented validation to ensure users have an active club membership before allowing wallet charges, throwing a BadRequestException if not. - Updated UserWalletService to handle BadRequestException and return appropriate error messages in responses.
This commit is contained in:
+7
@@ -55,9 +55,16 @@ public class ChargeCreditWalletCommandHandler
|
||||
request.Amount);
|
||||
|
||||
var user = await _context.Users
|
||||
.Include(u => u.ClubMembership)
|
||||
.FirstOrDefaultAsync(u => u.Id == request.UserId, cancellationToken)
|
||||
?? throw new NotFoundException(nameof(User), request.UserId);
|
||||
|
||||
if (user.ClubMembership?.IsActive != true)
|
||||
{
|
||||
throw new BadRequestException(
|
||||
"برای شارژ کیف پول اصلی ابتدا باید پکیج را خریداری کرده و قرارداد باشگاه مشتریان را امضا کنید.");
|
||||
}
|
||||
|
||||
var wallet = await _context.UserWallets
|
||||
.FirstOrDefaultAsync(w => w.UserId == request.UserId, cancellationToken)
|
||||
?? throw new NotFoundException("کیف پول کاربر یافت نشد");
|
||||
|
||||
+7
@@ -51,9 +51,16 @@ public class VerifyCreditWalletChargeCommandHandler
|
||||
request.Authority);
|
||||
|
||||
var user = await _context.Users
|
||||
.Include(u => u.ClubMembership)
|
||||
.FirstOrDefaultAsync(u => u.Id == request.UserId, cancellationToken)
|
||||
?? throw new NotFoundException(nameof(User), request.UserId);
|
||||
|
||||
if (user.ClubMembership?.IsActive != true)
|
||||
{
|
||||
throw new BadRequestException(
|
||||
"برای شارژ کیف پول اصلی ابتدا باید پکیج را خریداری کرده و قرارداد باشگاه مشتریان را امضا کنید.");
|
||||
}
|
||||
|
||||
var paymentTx = await _context.PaymentTransactions
|
||||
.FirstOrDefaultAsync(pt => pt.Authority == request.Authority, cancellationToken);
|
||||
|
||||
|
||||
@@ -277,6 +277,14 @@ public class UserWalletService : UserWalletContract.UserWalletContractBase
|
||||
ErrorMessage = ex.Message
|
||||
};
|
||||
}
|
||||
catch (BadRequestException ex)
|
||||
{
|
||||
return new InitiateCreditChargeResponse
|
||||
{
|
||||
IsSuccess = false,
|
||||
ErrorMessage = ex.Message
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// ============= Wallet Verify Methods =============
|
||||
|
||||
Reference in New Issue
Block a user