From 4745ea00913ed7f15e4c74661dfb844677562f1f Mon Sep 17 00:00:00 2001 From: isra el Date: Sat, 15 Mar 2025 19:43:43 +0300 Subject: [PATCH] chore(api): update reminder email sending logic --- api/src/users/users.service.ts | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/api/src/users/users.service.ts b/api/src/users/users.service.ts index 18b7f23..f933189 100644 --- a/api/src/users/users.service.ts +++ b/api/src/users/users.service.ts @@ -73,13 +73,18 @@ export class UsersService { } - @Cron('0 19 * * *') // Every day at 7 PM + @Cron('0 12 * * *') // Every day at 12 PM async sendEmailToInactiveNewUsers() { try { - // Get users who signed up in the last 24 hours + // Get users who signed up between 24-48 hours ago (1-2 days ago) + const twoDaysAgo = new Date(Date.now() - 48 * 60 * 60 * 1000) const oneDayAgo = new Date(Date.now() - 24 * 60 * 60 * 1000) + const newUsers = await this.userModel.find({ - createdAt: { $gte: oneDayAgo }, + createdAt: { + $gte: twoDaysAgo, + $lt: oneDayAgo + }, }) for (const user of newUsers) { @@ -107,16 +112,21 @@ export class UsersService { } - @Cron('0 20 * * *') // Every day at 8 PM + @Cron('0 13 * * *') // Every day at 1 PM async sendEmailToFreeUsers() { try { - // Get users who signed up in the last 3 days + // Get users who signed up exactly 3 days ago (within a 24-hour window) const threeDaysAgo = new Date(Date.now() - 3 * 24 * 60 * 60 * 1000) - const recentUsers = await this.userModel.find({ - createdAt: { $gte: threeDaysAgo }, + const fourDaysAgo = new Date(Date.now() - 4 * 24 * 60 * 60 * 1000) + + const usersToEmail = await this.userModel.find({ + createdAt: { + $gte: fourDaysAgo, + $lt: threeDaysAgo + }, }) - for (const user of recentUsers) { + for (const user of usersToEmail) { // Check if user is on free plan const subscription = await this.billingService.getActiveSubscription(user._id.toString())