mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2026-10-25 07:17:56 +00:00
git checkout -b ZOD-204-view-spending-from-child-login
This commit is contained in:
@@ -191,4 +191,31 @@ export class JuniorController {
|
||||
const res = await this.juniorService.getJuniorTransfers(juniorId, user.sub, pageNum, pageSize);
|
||||
return ResponseFactory.data(res);
|
||||
}
|
||||
|
||||
@Get(':juniorId/spending-history')
|
||||
@UseGuards(RolesGuard)
|
||||
@AllowedRoles(Roles.JUNIOR, Roles.GUARDIAN)
|
||||
@ApiQuery({ name: 'startUtc', required: true, type: String, example: '2025-01-01T00:00:00.000Z' })
|
||||
@ApiQuery({ name: 'endUtc', required: true, type: String, example: '2025-01-31T23:59:59.999Z' })
|
||||
async getSpendingHistory(
|
||||
@Param('juniorId', CustomParseUUIDPipe) juniorId: string,
|
||||
@AuthenticatedUser() user: IJwtPayload,
|
||||
@Query('startUtc') startUtc: string,
|
||||
@Query('endUtc') endUtc: string,
|
||||
) {
|
||||
const res = await this.juniorService.getSpendingHistory(juniorId, user.sub, new Date(startUtc), new Date(endUtc));
|
||||
return ResponseFactory.data(res);
|
||||
}
|
||||
|
||||
@Get(':juniorId/transactions/:transactionId')
|
||||
@UseGuards(RolesGuard)
|
||||
@AllowedRoles(Roles.JUNIOR, Roles.GUARDIAN)
|
||||
async getTransactionDetail(
|
||||
@Param('juniorId', CustomParseUUIDPipe) juniorId: string,
|
||||
@Param('transactionId', CustomParseUUIDPipe) transactionId: string,
|
||||
@AuthenticatedUser() user: IJwtPayload,
|
||||
) {
|
||||
const res = await this.juniorService.getTransactionDetail(juniorId, user.sub, transactionId);
|
||||
return ResponseFactory.data(res);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,6 +273,42 @@ export class JuniorService {
|
||||
return this.transactionService.getChildTransfersPaginated(juniorId, page, size);
|
||||
}
|
||||
|
||||
async getSpendingHistory(juniorId: string, userId: string, startUtc: Date, endUtc: Date) {
|
||||
this.logger.log(`Getting spending history for junior ${juniorId}`);
|
||||
|
||||
// Check if user is the junior themselves or their guardian
|
||||
let junior: Junior | null;
|
||||
if (juniorId === userId) {
|
||||
junior = await this.findJuniorById(juniorId, false);
|
||||
} else {
|
||||
junior = await this.findJuniorById(juniorId, false, userId);
|
||||
}
|
||||
|
||||
if (!junior) {
|
||||
throw new BadRequestException('JUNIOR.NOT_FOUND');
|
||||
}
|
||||
|
||||
return this.transactionService.getChildSpendingHistory(juniorId, startUtc, endUtc);
|
||||
}
|
||||
|
||||
async getTransactionDetail(juniorId: string, userId: string, transactionId: string) {
|
||||
this.logger.log(`Getting transaction detail ${transactionId} for junior ${juniorId}`);
|
||||
|
||||
// Check if user is the junior themselves or their guardian
|
||||
let junior: Junior | null;
|
||||
if (juniorId === userId) {
|
||||
junior = await this.findJuniorById(juniorId, false);
|
||||
} else {
|
||||
junior = await this.findJuniorById(juniorId, false, userId);
|
||||
}
|
||||
|
||||
if (!junior) {
|
||||
throw new BadRequestException('JUNIOR.NOT_FOUND');
|
||||
}
|
||||
|
||||
return this.transactionService.getTransactionDetail(transactionId, juniorId);
|
||||
}
|
||||
|
||||
private async prepareJuniorImages(juniors: Junior[]) {
|
||||
this.logger.log(`Preparing junior images`);
|
||||
await Promise.all(
|
||||
|
||||
Reference in New Issue
Block a user