53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
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);
|
|
}
|
|
}
|