mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-11-27 00:54:54 +00:00
51 lines
1.9 KiB
TypeScript
51 lines
1.9 KiB
TypeScript
import { Controller, Get, Query, UseGuards } from '@nestjs/common';
|
|
import { ApiBearerAuth, ApiTags, ApiQuery } from '@nestjs/swagger';
|
|
import { Roles } from '~/auth/enums';
|
|
import { IJwtPayload } from '~/auth/interfaces';
|
|
import { AllowedRoles, AuthenticatedUser } from '~/common/decorators';
|
|
import { AccessTokenGuard, RolesGuard } from '~/common/guards';
|
|
import { ApiDataResponse, ApiLangRequestHeader } from '~/core/decorators';
|
|
import { ResponseFactory } from '~/core/utils';
|
|
import { ParentHomeResponseDto, PagedParentTransfersResponseDto } from '~/card/dtos/responses';
|
|
import { GuardianTransactionsService } from '../services';
|
|
|
|
|
|
@Controller('guardians/me')
|
|
@ApiTags('Guardians')
|
|
@ApiBearerAuth()
|
|
@ApiLangRequestHeader()
|
|
@UseGuards(AccessTokenGuard, RolesGuard)
|
|
@AllowedRoles(Roles.GUARDIAN)
|
|
export class GuardianTransactionsController {
|
|
constructor(private readonly guardianTxService: GuardianTransactionsService) {}
|
|
|
|
@Get('home')
|
|
@ApiQuery({ name: 'size', required: false, type: Number, example: 5 })
|
|
@ApiDataResponse(ParentHomeResponseDto)
|
|
async getHome(
|
|
@AuthenticatedUser() user: IJwtPayload,
|
|
@Query('size') size?: number,
|
|
) {
|
|
const limit = Math.max(1, Math.min(Number(size) || 5, 20));
|
|
const res = await this.guardianTxService.getHome(user.sub, limit);
|
|
return ResponseFactory.data(res);
|
|
}
|
|
|
|
@Get('transfers')
|
|
@ApiQuery({ name: 'page', required: false, type: Number, example: 1 })
|
|
@ApiQuery({ name: 'size', required: false, type: Number, example: 10 })
|
|
@ApiDataResponse(PagedParentTransfersResponseDto)
|
|
async getTransfers(
|
|
@AuthenticatedUser() user: IJwtPayload,
|
|
@Query('page') page?: number,
|
|
@Query('size') size?: number,
|
|
) {
|
|
const pageNum = Math.max(1, Number(page) || 1);
|
|
const pageSize = Math.max(1, Math.min(Number(size) || 10, 50));
|
|
const res = await this.guardianTxService.getTransfers(user.sub, pageNum, pageSize);
|
|
return ResponseFactory.data(res);
|
|
}
|
|
}
|
|
|
|
|