import { Body, Controller, Get, Param, Post, Query, UseGuards } from '@nestjs/common'; import { HqAuthGuard } from '../../common/guards/hq-auth.guard'; import { CurrentUser } from '../../common/decorators/current-user.decorator'; import type { AuthUser } from '../../common/guards/jwt-auth.guard'; import { HqOperation } from '../../common/hq-operation/hq-operation.decorator'; import { HqOperationAction } from '../../common/hq-operation/hq-operation.constants'; import { RedeemService } from '../redeem/redeem.service'; import { AdminRedeemPendingQueryDto, AdminRedeemPendingRejectDto, } from './dto/admin-redeem-pending.dto'; @Controller('admin/redeem-pending') @UseGuards(HqAuthGuard) export class AdminRedeemPendingController { constructor(private readonly redeemService: RedeemService) {} @Get() list(@Query() query: AdminRedeemPendingQueryDto) { return this.redeemService.listPendingRedeems(query); } @Get(':id') detail(@Param('id') id: string) { return this.redeemService.getPendingRedeem(BigInt(id)); } @Post(':id/complete') @HqOperation({ action: HqOperationAction.REDEEM_PENDING_COMPLETE, refType: 'REDEEM_PENDING', refIdParam: 'id', }) complete(@CurrentUser() user: AuthUser, @Param('id') id: string) { return this.redeemService.completePendingRedeem(BigInt(id), user.actorId); } @Post(':id/reject') @HqOperation({ action: HqOperationAction.REDEEM_PENDING_REJECT, refType: 'REDEEM_PENDING', refIdParam: 'id', includeBody: true, }) reject( @CurrentUser() user: AuthUser, @Param('id') id: string, @Body() body: AdminRedeemPendingRejectDto, ) { return this.redeemService.rejectPendingRedeem(BigInt(id), user.actorId, body.reason); } }