diff --git a/packages/core/src/services/learnAndEarn/answer.ts b/packages/core/src/services/learnAndEarn/answer.ts index 5f4548a88..301bc86a7 100644 --- a/packages/core/src/services/learnAndEarn/answer.ts +++ b/packages/core/src/services/learnAndEarn/answer.ts @@ -174,9 +174,33 @@ export async function answer( try { const daysAgo = new Date(); daysAgo.setDate(daysAgo.getDate() - config.intervalBetweenLessons); + + const lessonRegistry = await models.learnAndEarnLesson.findOne({ + attributes: ['levelId'], + where: { + id: lessonId, + }, + }); + + if (!lessonRegistry) { + throw new BaseError( + 'LESSON_NOT_FOUND', + 'lesson not found for the given id' + ); + } // check if already completed a lesson today const concludedLessons = await models.learnAndEarnUserLesson.count({ + include: [ + { + model: models.learnAndEarnLesson, + as: 'lesson', + required: true, + where: { + levelId: lessonRegistry.levelId, + }, + }, + ], where: { completionDate: { [Op.gte]: daysAgo.setHours(0, 0, 0, 0), diff --git a/packages/core/src/services/learnAndEarn/list.ts b/packages/core/src/services/learnAndEarn/list.ts index d6441743c..9e3d99a0d 100644 --- a/packages/core/src/services/learnAndEarn/list.ts +++ b/packages/core/src/services/learnAndEarn/list.ts @@ -215,6 +215,16 @@ export async function listLessons(userId: number, levelId: number) { const daysAgo = new Date(); daysAgo.setDate(daysAgo.getDate() - config.intervalBetweenLessons); const completedToday = await models.learnAndEarnUserLesson.count({ + include: [ + { + model: models.learnAndEarnLesson, + as: 'lesson', + required: true, + where: { + levelId, + }, + }, + ], where: { completionDate: { [Op.gte]: daysAgo.setHours(0, 0, 0, 0),