From ca1425671cd4ec8de590c3450dccf07095ab9013 Mon Sep 17 00:00:00 2001 From: Lucas Date: Fri, 19 Jan 2024 14:54:37 +0100 Subject: [PATCH] feat: conduct subcourse appointment metric and mutation adjustments --- common/achievement/metric.ts | 8 ++++++++ common/achievement/template.ts | 5 ++++- graphql/achievement/mutations.ts | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/common/achievement/metric.ts b/common/achievement/metric.ts index f646cb5a8..3d17e7de3 100644 --- a/common/achievement/metric.ts +++ b/common/achievement/metric.ts @@ -56,6 +56,14 @@ const batchOfMetrics = [ return 1; }), + /* CONDUCTED SUBCOURSE APPOINTMENT */ + createMetric('student_conducted_subcourse_appointment', ['student_joined_subcourse_meeting'], () => { + return 1; + }), + createMetric('pupil_conducted_subcourse_appointment', ['pupil_joined_subcourse_meeting'], () => { + return 1; + }), + /* REGULAR MATCH LEARNING */ createMetric('pupil_match_learned_regular', ['pupil_joined_match_meeting'], () => { return 1; diff --git a/common/achievement/template.ts b/common/achievement/template.ts index 110a933ff..b284d68c4 100644 --- a/common/achievement/template.ts +++ b/common/achievement/template.ts @@ -57,7 +57,10 @@ async function getTemplatesByMetrics(metricsForAction: Metric[]) { return []; } for (const metric of metricsForAction) { - templatesForAction = [...templatesForAction, ...templatesByMetric.get(metric.metricName)]; + const templatesForMetric = templatesByMetric.get(metric.metricName); + if (templatesForMetric) { + templatesForAction = [...templatesForAction, ...templatesForMetric]; + } } return templatesForAction; } diff --git a/graphql/achievement/mutations.ts b/graphql/achievement/mutations.ts index bb235acc6..5c93e39cc 100644 --- a/graphql/achievement/mutations.ts +++ b/graphql/achievement/mutations.ts @@ -33,7 +33,7 @@ export class MutateAchievementResolver { @Mutation((returns) => Boolean) @AuthorizedDeferred(Role.ADMIN, Role.OWNER) - async subcourseMeetingJoin(@Ctx() context: GraphQLContext, @Arg('matchId') subcourseId: number) { + async subcourseMeetingJoin(@Ctx() context: GraphQLContext, @Arg('subcourseId') subcourseId: number) { const { user } = context; const subcourse = await prisma.subcourse.findUnique({ where: { id: subcourseId }, include: { course: true, lecture: true } }); await hasAccess(context, 'Subcourse', subcourse);