mirror of
https://github.com/AustinKelsay/plebdevs.git
synced 2025-06-06 18:31:00 +00:00
Fixes to course tracking
This commit is contained in:
parent
6b027412e7
commit
e32e326d17
@ -20,6 +20,24 @@ export const getUserCourse = async (userId, courseId) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const createOrUpdateUserCourse = async (userId, courseId, data) => {
|
export const createOrUpdateUserCourse = async (userId, courseId, data) => {
|
||||||
|
const existing = await prisma.userCourse.findUnique({
|
||||||
|
where: {
|
||||||
|
userId_courseId: {
|
||||||
|
userId,
|
||||||
|
courseId,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const updateData = existing?.completed ? {
|
||||||
|
...data,
|
||||||
|
updatedAt: new Date(),
|
||||||
|
completedAt: existing.completedAt,
|
||||||
|
} : {
|
||||||
|
...data,
|
||||||
|
updatedAt: new Date(),
|
||||||
|
};
|
||||||
|
|
||||||
return await prisma.userCourse.upsert({
|
return await prisma.userCourse.upsert({
|
||||||
where: {
|
where: {
|
||||||
userId_courseId: {
|
userId_courseId: {
|
||||||
@ -27,10 +45,7 @@ export const createOrUpdateUserCourse = async (userId, courseId, data) => {
|
|||||||
courseId,
|
courseId,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
update: {
|
update: updateData,
|
||||||
...data,
|
|
||||||
updatedAt: new Date(),
|
|
||||||
},
|
|
||||||
create: {
|
create: {
|
||||||
userId,
|
userId,
|
||||||
courseId,
|
courseId,
|
||||||
@ -72,10 +87,19 @@ export const checkCourseCompletion = async (userId, courseId) => {
|
|||||||
lesson.userLessons.length > 0 && lesson.userLessons[0].completed
|
lesson.userLessons.length > 0 && lesson.userLessons[0].completed
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const existingUserCourse = await prisma.userCourse.findUnique({
|
||||||
|
where: {
|
||||||
|
userId_courseId: {
|
||||||
|
userId,
|
||||||
|
courseId,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (allLessonsCompleted) {
|
if (allLessonsCompleted) {
|
||||||
await createOrUpdateUserCourse(userId, courseId, {
|
await createOrUpdateUserCourse(userId, courseId, {
|
||||||
completed: true,
|
completed: true,
|
||||||
completedAt: new Date()
|
...(existingUserCourse?.completed ? {} : { completedAt: new Date() })
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ const useCheckCourseProgress = () => {
|
|||||||
completed: true,
|
completed: true,
|
||||||
completedAt: new Date().toISOString(),
|
completedAt: new Date().toISOString(),
|
||||||
});
|
});
|
||||||
update()
|
update();
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`Failed to update course ${courseId} completion status:`, error);
|
console.error(`Failed to update course ${courseId} completion status:`, error);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user