diff --git a/src/modules/reseller/reseller.controller.ts b/src/modules/reseller/reseller.controller.ts index 26658fd..1dd9def 100644 --- a/src/modules/reseller/reseller.controller.ts +++ b/src/modules/reseller/reseller.controller.ts @@ -129,7 +129,7 @@ export class ResellerController { // ============Create WithDraw Request ============= @ApiOperation({ summary: "Create Reseller/Agent withdraw request ==> reseller route" }) - @ResellerRoute([ResellerType.agent]) + @ResellerRoute([ResellerType.agent, ResellerType.reseller]) @Post('withdraw-request') withdrawRequest(@UserDec("id") userId: string, @Body() dto: CreateWithdrawRequestDto) { return this.resellerService.createWithdrawRequest(userId, dto.amount) diff --git a/src/modules/reseller/reseller.service.ts b/src/modules/reseller/reseller.service.ts index ab1cd8d..7220720 100644 --- a/src/modules/reseller/reseller.service.ts +++ b/src/modules/reseller/reseller.service.ts @@ -13,6 +13,8 @@ import { CreateUserBankAccountDto } from './dto/create-user-bank-account.dto'; import { UserBankAccountRepository } from './repositories/user-bank-account.repository'; import { ResellerType } from '../auth/DTO/verify-reseller-otp.dto'; import { PaginationDto } from '../../common/DTO/pagination.dto'; +import { WalletsService } from '../wallets/providers/wallets.service'; +import Decimal from 'decimal.js'; @Injectable() export class ResellerService { @@ -23,6 +25,7 @@ export class ResellerService { private readonly invoicesService: InvoicesService, private readonly withdrawRequestRepository: WithdrawRequestRepository, private readonly userBankAccountRepository: UserBankAccountRepository, + private readonly walletsService: WalletsService, ) { } async create(dto: CreateResellerDto) { @@ -178,12 +181,16 @@ export class ResellerService { } async createWithdrawRequest(userId: string, requestedAmount: number) { - const user = await this.usersService.findOneWithPhone(userId) + const { user } = await this.usersService.findOneById(userId) if (!user) { throw new NotFoundException(AuthMessage.USER_NOT_FOUND) } + const { balance } = await this.walletsService.getBalance(userId) + if (new Decimal(balance).lessThan(requestedAmount)) { + throw new BadRequestException("برداشت بیشتر از موجودی ممکن نیست") + } const request = this.withdrawRequestRepository.create({ requestedAmount, user