mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-11-26 00:24:54 +00:00
Compare commits
5 Commits
9d9408dedd
...
7194c38918
| Author | SHA1 | Date | |
|---|---|---|---|
| 7194c38918 | |||
| a3a61b4923 | |||
| 39d5fc1869 | |||
| 05a6ad2d84 | |||
| 5649d24724 |
@ -163,8 +163,8 @@ export class CardService {
|
||||
return finalAmount.toNumber();
|
||||
}
|
||||
|
||||
getWeeklySummary(juniorId: string) {
|
||||
return this.transactionService.getWeeklySummary(juniorId);
|
||||
getWeeklySummary(juniorId: string, startDate?: Date, endDate?: Date) {
|
||||
return this.transactionService.getWeeklySummary(juniorId, startDate, endDate);
|
||||
}
|
||||
|
||||
fundIban(iban: string, amount: number) {
|
||||
|
||||
@ -84,15 +84,28 @@ export class TransactionService {
|
||||
return existingTransaction;
|
||||
}
|
||||
|
||||
async getWeeklySummary(juniorId: string) {
|
||||
const endOfWeek = moment().toDate();
|
||||
const startOfWeek = moment().subtract(1, 'week').toDate();
|
||||
async getWeeklySummary(juniorId: string, startDate?: Date, endDate?: Date) {
|
||||
let startOfWeek: Date;
|
||||
let endOfWeek: Date;
|
||||
|
||||
if (startDate && endDate) {
|
||||
startOfWeek = startDate;
|
||||
endOfWeek = endDate;
|
||||
} else {
|
||||
const now = moment();
|
||||
const dayOfWeek = now.day();
|
||||
|
||||
startOfWeek = moment().subtract(dayOfWeek, 'days').startOf('day').toDate();
|
||||
|
||||
endOfWeek = moment().add(6 - dayOfWeek, 'days').endOf('day').toDate();
|
||||
}
|
||||
|
||||
const transactions = await this.transactionRepository.getTransactionsForCardWithinDateRange(
|
||||
juniorId,
|
||||
startOfWeek,
|
||||
endOfWeek,
|
||||
);
|
||||
|
||||
const summary = {
|
||||
startOfWeek: startOfWeek,
|
||||
endOfWeek: endOfWeek,
|
||||
|
||||
@ -151,11 +151,17 @@ export class JuniorController {
|
||||
@UseGuards(RolesGuard)
|
||||
@AllowedRoles(Roles.GUARDIAN)
|
||||
@ApiDataResponse(WeeklySummaryResponseDto)
|
||||
@ApiQuery({ name: 'startUtc', required: false, type: String, example: '2025-10-20T00:00:00.000Z', description: 'Start date (defaults to start of current week)' })
|
||||
@ApiQuery({ name: 'endUtc', required: false, type: String, example: '2025-10-26T23:59:59.999Z', description: 'End date (defaults to end of current week)' })
|
||||
async getWeeklySummary(
|
||||
@Param('juniorId', CustomParseUUIDPipe) juniorId: string,
|
||||
@AuthenticatedUser() user: IJwtPayload,
|
||||
@Query('startUtc') startUtc?: string,
|
||||
@Query('endUtc') endUtc?: string,
|
||||
) {
|
||||
const summary = await this.juniorService.getWeeklySummary(juniorId, user.sub);
|
||||
const startDate = startUtc ? new Date(startUtc) : undefined;
|
||||
const endDate = endUtc ? new Date(endUtc) : undefined;
|
||||
const summary = await this.juniorService.getWeeklySummary(juniorId, user.sub, startDate, endDate);
|
||||
return ResponseFactory.data(summary);
|
||||
}
|
||||
|
||||
|
||||
@ -212,7 +212,7 @@ export class JuniorService {
|
||||
this.logger.log(`Junior ${juniorId} deleted successfully`);
|
||||
}
|
||||
|
||||
async getWeeklySummary(juniorId: string, guardianId: string) {
|
||||
async getWeeklySummary(juniorId: string, guardianId: string, startDate?: Date, endDate?: Date) {
|
||||
const doesBelong = await this.doesJuniorBelongToGuardian(guardianId, juniorId);
|
||||
|
||||
if (!doesBelong) {
|
||||
@ -221,7 +221,7 @@ export class JuniorService {
|
||||
}
|
||||
|
||||
this.logger.log(`Getting weekly summary for junior ${juniorId}`);
|
||||
return this.cardService.getWeeklySummary(juniorId);
|
||||
return this.cardService.getWeeklySummary(juniorId, startDate, endDate);
|
||||
}
|
||||
|
||||
async getJuniorHome(juniorId: string, userId: string, size: number): Promise<JuniorHomeResponseDto> {
|
||||
|
||||
@ -226,7 +226,15 @@ export class UserService {
|
||||
|
||||
if (userWithEmail) {
|
||||
if (userWithEmail.id === userId) {
|
||||
return;
|
||||
this.logger.log(`Generating OTP for current email ${email} for user ${userId}`);
|
||||
await this.userRepository.update(userId, { isEmailVerified: false });
|
||||
|
||||
return this.otpService.generateAndSendOtp({
|
||||
userId,
|
||||
recipient: email,
|
||||
otpType: OtpType.EMAIL,
|
||||
scope: OtpScope.VERIFY_EMAIL,
|
||||
});
|
||||
}
|
||||
|
||||
this.logger.error(`Email ${email} is already taken by another user`);
|
||||
|
||||
Reference in New Issue
Block a user