Skip to content

Commit 9de61d2

Browse files
committed
add query for newly registered pupils that already have a screening
1 parent 36ef43a commit 9de61d2

File tree

1 file changed

+32
-17
lines changed

1 file changed

+32
-17
lines changed

graphql/statistics/fields.ts

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)