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);
|
request.Amount);
|
||||||
|
|
||||||
var user = await _context.Users
|
var user = await _context.Users
|
||||||
|
.Include(u => u.ClubMembership)
|
||||||
.FirstOrDefaultAsync(u => u.Id == request.UserId, cancellationToken)
|
.FirstOrDefaultAsync(u => u.Id == request.UserId, cancellationToken)
|
||||||
?? throw new NotFoundException(nameof(User), request.UserId);
|
?? throw new NotFoundException(nameof(User), request.UserId);
|
||||||
|
|
||||||
|
if (user.ClubMembership?.IsActive != true)
|
||||||
|
{
|
||||||
|
throw new BadRequestException(
|
||||||
|
"برای شارژ کیف پول اصلی ابتدا باید پکیج را خریداری کرده و قرارداد باشگاه مشتریان را امضا کنید.");
|
||||||
|
}
|
||||||
|
|
||||||
var wallet = await _context.UserWallets
|
var wallet = await _context.UserWallets
|
||||||
.FirstOrDefaultAsync(w => w.UserId == request.UserId, cancellationToken)
|
.FirstOrDefaultAsync(w => w.UserId == request.UserId, cancellationToken)
|
||||||
?? throw new NotFoundException("کیف پول کاربر یافت نشد");
|
?? throw new NotFoundException("کیف پول کاربر یافت نشد");
|
||||||
|
|||||||
+7
@@ -51,9 +51,16 @@ public class VerifyCreditWalletChargeCommandHandler
|
|||||||
request.Authority);
|
request.Authority);
|
||||||
|
|
||||||
var user = await _context.Users
|
var user = await _context.Users
|
||||||
|
.Include(u => u.ClubMembership)
|
||||||
.FirstOrDefaultAsync(u => u.Id == request.UserId, cancellationToken)
|
.FirstOrDefaultAsync(u => u.Id == request.UserId, cancellationToken)
|
||||||
?? throw new NotFoundException(nameof(User), request.UserId);
|
?? throw new NotFoundException(nameof(User), request.UserId);
|
||||||
|
|
||||||
|
if (user.ClubMembership?.IsActive != true)
|
||||||
|
{
|
||||||
|
throw new BadRequestException(
|
||||||
|
"برای شارژ کیف پول اصلی ابتدا باید پکیج را خریداری کرده و قرارداد باشگاه مشتریان را امضا کنید.");
|
||||||
|
}
|
||||||
|
|
||||||
var paymentTx = await _context.PaymentTransactions
|
var paymentTx = await _context.PaymentTransactions
|
||||||
.FirstOrDefaultAsync(pt => pt.Authority == request.Authority, cancellationToken);
|
.FirstOrDefaultAsync(pt => pt.Authority == request.Authority, cancellationToken);
|
||||||
|
|
||||||
|
|||||||
@@ -277,6 +277,14 @@ public class UserWalletService : UserWalletContract.UserWalletContractBase
|
|||||||
ErrorMessage = ex.Message
|
ErrorMessage = ex.Message
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
catch (BadRequestException ex)
|
||||||
|
{
|
||||||
|
return new InitiateCreditChargeResponse
|
||||||
|
{
|
||||||
|
IsSuccess = false,
|
||||||
|
ErrorMessage = ex.Message
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============= Wallet Verify Methods =============
|
// ============= Wallet Verify Methods =============
|
||||||
|
|||||||
Reference in New Issue
Block a user