Skip to content

Commit

Permalink
fix: update mutation functions for course mutation
Browse files Browse the repository at this point in the history
  • Loading branch information
LucasFalkowsky committed Jan 22, 2024
1 parent 3ac109b commit 4642507
Showing 1 changed file with 19 additions and 18 deletions.
37 changes: 19 additions & 18 deletions graphql/course/mutations.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { course_category_enum } from '@prisma/client';
import { course_category_enum, user_achievement } from '@prisma/client';
import { UserInputError } from 'apollo-server-express';
import { getFile, removeFile } from '../files';
import { getLogger } from '../../common/logger/logger';
Expand Down Expand Up @@ -92,6 +92,7 @@ export class MutateCourseResolver {
@Arg('course') data: PublicCourseEditInput
): Promise<GraphQLModel.Course> {
const course = await getCourse(courseId);
const user = context.user;
await hasAccess(context, 'Course', course);

if (course.courseState === 'allowed') {
Expand All @@ -111,25 +112,25 @@ export class MutateCourseResolver {

const subcourse = await prisma.subcourse.findFirst({
where: { courseId: courseId },
include: { subcourse_instructors_student: { select: { student: true } } },
});
const { subcourse_instructors_student: instructors } = subcourse;
const { context: contextData } = await prisma.user_achievement.findFirst({
where: { group: 'student_offer_course', context: { path: ['relation'], equals: `subcourse/${subcourse.id}` } },
const usersSubcourseAchievements = await prisma.user_achievement.findMany({
where: { context: { path: ['relation'], equals: `subcourse/${subcourse.id}` }, userId: user.userID },
include: { template: true },
});
contextData['courseName'] = result.name;
await prisma.user_achievement.updateMany({
where: {
userId: {
in: instructors.map((it) => {
const user = userForStudent(it.student);
return user.userID;
}),
},
group: 'student_offer_course',
context: { path: ['relation'], equals: `subcourse/${subcourse.id}` },
},
data: { context: contextData },
const subcourseAchievements = await Promise.all(
usersSubcourseAchievements.map(async (usersSubcourseAchievement) => {
return await prisma.user_achievement.findMany({
where: { context: { path: ['relation'], equals: `subcourse/${subcourse.id}` }, templateId: usersSubcourseAchievement.template.id },
});
})
);
subcourseAchievements.flat().forEach(async (achievement) => {
const { context } = achievement;
context['courseName'] = result.name;
await prisma.user_achievement.update({
where: { id: achievement.id },
data: { context },
});
});

return result;
Expand Down

0 comments on commit 4642507

Please sign in to comment.