@@ -171,6 +171,21 @@ export class StatisticsResolver {
171171 ORDER BY "year" ASC, "month" ASC;` ;
172172 }
173173
174+ @FieldResolver ( ( returns ) => [ ByMonth ] )
175+ @Authorized ( Role . ADMIN )
176+ async registeredPupilsHavingScreening ( @Root ( ) statistics : Statistics ) {
177+ return await prisma . $queryRaw `SELECT COUNT(*)::INT AS value,
178+ date_part('year', pupil."createdAt"::date) AS year,
179+ date_part('month', pupil."createdAt"::date) AS month
180+ FROM pupil
181+ LEFT JOIN pupil_screening on pupil_screening."pupilId" = pupil.id
182+ WHERE pupil."createdAt" > ${ statistics . from } ::timestamp
183+ AND pupil."createdAt" < ${ statistics . to } ::timestamp
184+ AND (pupil_screening."createdAt" IS NOT NULL)
185+ GROUP BY "year", "month"
186+ ORDER BY "year" ASC, "month" ASC` ;
187+ }
188+
174189 @FieldResolver ( ( returns ) => [ ByMonth ] )
175190 @Authorized ( Role . ADMIN )
176191 async pupilRegistrationsByState ( @Root ( ) statistics : Statistics ) {
@@ -1070,7 +1085,7 @@ export class StatisticsResolver {
10701085 EXTRACT(YEAR FROM l."start")::int AS year,
10711086 EXTRACT(MONTH FROM l."start")::int AS month,
10721087 SUM(
1073- l."duration" * CASE
1088+ l."duration" * CASE
10741089 WHEN l."appointmentType" = 'match' THEN 1
10751090 ELSE COALESCE(array_length(l."participantIds", 1), 0)
10761091 END
@@ -1114,7 +1129,7 @@ export class StatisticsResolver {
11141129 COUNT(CASE WHEN l_count >= ${ minCompletedLectures } THEN m.id END) AS successful_matches
11151130 FROM match m
11161131 LEFT JOIN (
1117- SELECT
1132+ SELECT
11181133 l."matchId",
11191134 COUNT(*) AS l_count
11201135 FROM lecture l
@@ -1151,7 +1166,7 @@ export class StatisticsResolver {
11511166 EXTRACT(MONTH FROM l."start")::int AS month,
11521167 COUNT(DISTINCT m."id")::int AS value
11531168 FROM match m
1154- JOIN lecture l
1169+ JOIN lecture l
11551170 ON l."matchId" = m."id"
11561171 WHERE l."start" >= ${ statistics . from } ::timestamp AND l."start" <= ${ statistics . to } ::timestamp
11571172 AND l."isCanceled" = FALSE
@@ -1168,7 +1183,7 @@ export class StatisticsResolver {
11681183 SELECT
11691184 COUNT(DISTINCT m."id")::int AS value
11701185 FROM match m
1171- JOIN lecture l
1186+ JOIN lecture l
11721187 ON l."matchId" = m."id"
11731188 WHERE l."start" >= ${ statistics . from } ::timestamp AND l."start" <= ${ statistics . to } ::timestamp
11741189 AND l."isCanceled" = FALSE
@@ -1186,13 +1201,13 @@ export class StatisticsResolver {
11861201 EXTRACT(MONTH FROM l."start")::int AS month,
11871202 COUNT(DISTINCT p_id)::int AS value
11881203 FROM lecture l
1189- LEFT JOIN subcourse sc
1204+ LEFT JOIN subcourse sc
11901205 ON sc."id" = l."subcourseId"
1191- LEFT JOIN course c
1206+ LEFT JOIN course c
11921207 ON c."id" = sc."courseId"
11931208 CROSS JOIN LATERAL UNNEST(
1194- CASE
1195- WHEN c."name" LIKE '%Hausaufgabenhilfe%'
1209+ CASE
1210+ WHEN c."name" LIKE '%Hausaufgabenhilfe%'
11961211 THEN l."joinedBy"
11971212 ELSE l."participantIds"
11981213 END
@@ -1226,8 +1241,8 @@ export class StatisticsResolver {
12261241 LEFT JOIN subcourse sc ON sc."id" = l."subcourseId"
12271242 LEFT JOIN course c ON c."id" = sc."courseId"
12281243 CROSS JOIN LATERAL UNNEST(
1229- CASE
1230- WHEN c."name" LIKE '%Hausaufgabenhilfe%'
1244+ CASE
1245+ WHEN c."name" LIKE '%Hausaufgabenhilfe%'
12311246 THEN l."joinedBy"
12321247 ELSE l."organizerIds"
12331248 END
@@ -1256,12 +1271,12 @@ export class StatisticsResolver {
12561271 SELECT
12571272 COUNT(DISTINCT p_id)::int AS value
12581273 FROM lecture l
1259- LEFT JOIN subcourse sc
1274+ LEFT JOIN subcourse sc
12601275 ON sc."id" = l."subcourseId"
1261- LEFT JOIN course c
1276+ LEFT JOIN course c
12621277 ON c."id" = sc."courseId"
12631278 CROSS JOIN LATERAL UNNEST(
1264- CASE
1279+ CASE
12651280 WHEN c."name" LIKE '%Hausaufgabenhilfe%'
12661281 THEN l."joinedBy"
12671282 ELSE l."participantIds"
@@ -1290,13 +1305,13 @@ export class StatisticsResolver {
12901305 SELECT
12911306 COUNT(DISTINCT s_id)::int AS value
12921307 FROM lecture l
1293- LEFT JOIN subcourse sc
1308+ LEFT JOIN subcourse sc
12941309 ON sc."id" = l."subcourseId"
1295- LEFT JOIN course c
1310+ LEFT JOIN course c
12961311 ON c."id" = sc."courseId"
12971312 CROSS JOIN LATERAL UNNEST(
1298- CASE
1299- WHEN c."name" LIKE '%Hausaufgabenhilfe%'
1313+ CASE
1314+ WHEN c."name" LIKE '%Hausaufgabenhilfe%'
13001315 THEN l."joinedBy"
13011316 ELSE l."organizerIds"
13021317 END
0 commit comments