@studious-lms/server 1.23.0 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +0 -1
- package/data/curriculum/nepal-cdc-g4-g5/README.md +90 -0
- package/data/curriculum/nepal-cdc-g4-g5/manifest.json +97 -0
- package/data/curriculum/nepal-cdc-g4-g5/proficiency-scale.json +76 -0
- package/data/curriculum/nepal-cdc-g4-g5/subjects/english.json +6936 -0
- package/data/curriculum/nepal-cdc-g4-g5/subjects/health-physical-creative-arts.json +3401 -0
- package/data/curriculum/nepal-cdc-g4-g5/subjects/mathematics.json +1511 -0
- package/data/curriculum/nepal-cdc-g4-g5/subjects/nepali.json +7928 -0
- package/data/curriculum/nepal-cdc-g4-g5/subjects/science-technology.json +2420 -0
- package/data/curriculum/nepal-cdc-g4-g5/subjects/social-studies.json +2177 -0
- package/dist/lib/assignmentTypeDefaults.d.ts +41 -0
- package/dist/lib/assignmentTypeDefaults.d.ts.map +1 -0
- package/dist/lib/assignmentTypeDefaults.js +167 -0
- package/dist/lib/assignmentTypeDefaults.js.map +1 -0
- package/dist/lib/config/env.d.ts +0 -8
- package/dist/lib/config/env.d.ts.map +1 -1
- package/dist/lib/config/env.js +2 -5
- package/dist/lib/config/env.js.map +1 -1
- package/dist/lib/feePdf.d.ts +19 -0
- package/dist/lib/feePdf.d.ts.map +1 -0
- package/dist/lib/feePdf.js +167 -0
- package/dist/lib/feePdf.js.map +1 -0
- package/dist/lib/feePdfFormat.d.ts +4 -0
- package/dist/lib/feePdfFormat.d.ts.map +1 -0
- package/dist/lib/feePdfFormat.js +16 -0
- package/dist/lib/feePdfFormat.js.map +1 -0
- package/dist/lib/idCardPdf.d.ts +26 -0
- package/dist/lib/idCardPdf.d.ts.map +1 -0
- package/dist/lib/idCardPdf.js +272 -0
- package/dist/lib/idCardPdf.js.map +1 -0
- package/dist/lib/pdfLetterhead.d.ts +41 -0
- package/dist/lib/pdfLetterhead.d.ts.map +1 -0
- package/dist/lib/pdfLetterhead.js +86 -0
- package/dist/lib/pdfLetterhead.js.map +1 -0
- package/dist/lib/transcriptPdf.d.ts +55 -0
- package/dist/lib/transcriptPdf.d.ts.map +1 -0
- package/dist/lib/transcriptPdf.js +303 -0
- package/dist/lib/transcriptPdf.js.map +1 -0
- package/dist/models/academicCalendar.d.ts +198 -0
- package/dist/models/academicCalendar.d.ts.map +1 -0
- package/dist/models/academicCalendar.js +106 -0
- package/dist/models/academicCalendar.js.map +1 -0
- package/dist/models/agenda.d.ts +8 -0
- package/dist/models/agenda.d.ts.map +1 -1
- package/dist/models/announcement.d.ts +2 -0
- package/dist/models/announcement.d.ts.map +1 -1
- package/dist/models/assignment.d.ts +66 -0
- package/dist/models/assignment.d.ts.map +1 -1
- package/dist/models/attendance.d.ts +659 -21
- package/dist/models/attendance.d.ts.map +1 -1
- package/dist/models/attendance.js +544 -75
- package/dist/models/attendance.js.map +1 -1
- package/dist/models/auth.d.ts +2 -0
- package/dist/models/auth.d.ts.map +1 -1
- package/dist/models/class.d.ts +12 -0
- package/dist/models/class.d.ts.map +1 -1
- package/dist/models/class.js +3 -2
- package/dist/models/class.js.map +1 -1
- package/dist/models/event.d.ts +16 -0
- package/dist/models/event.d.ts.map +1 -1
- package/dist/models/fees.d.ts +554 -0
- package/dist/models/fees.d.ts.map +1 -0
- package/dist/models/fees.js +278 -0
- package/dist/models/fees.js.map +1 -0
- package/dist/models/file.d.ts +29 -0
- package/dist/models/file.d.ts.map +1 -1
- package/dist/models/folder.d.ts +2 -0
- package/dist/models/folder.d.ts.map +1 -1
- package/dist/models/labChat.d.ts +2 -0
- package/dist/models/labChat.d.ts.map +1 -1
- package/dist/models/marketplace.d.ts +178 -0
- package/dist/models/marketplace.d.ts.map +1 -0
- package/dist/models/marketplace.js +115 -0
- package/dist/models/marketplace.js.map +1 -0
- package/dist/models/moduleItem.d.ts +304 -0
- package/dist/models/moduleItem.d.ts.map +1 -0
- package/dist/models/moduleItem.js +78 -0
- package/dist/models/moduleItem.js.map +1 -0
- package/dist/models/newtonChat.d.ts +1 -0
- package/dist/models/newtonChat.d.ts.map +1 -1
- package/dist/models/school.d.ts +18 -0
- package/dist/models/school.d.ts.map +1 -1
- package/dist/models/school.js +7 -2
- package/dist/models/school.js.map +1 -1
- package/dist/models/section.d.ts +4 -0
- package/dist/models/section.d.ts.map +1 -1
- package/dist/models/worksheet.d.ts +19 -0
- package/dist/models/worksheet.d.ts.map +1 -1
- package/dist/models/worksheet.js +2 -2
- package/dist/models/worksheet.js.map +1 -1
- package/dist/routers/_app.d.ts +11341 -7097
- package/dist/routers/_app.d.ts.map +1 -1
- package/dist/routers/_app.js +12 -2
- package/dist/routers/_app.js.map +1 -1
- package/dist/routers/academicCalendar.d.ts +229 -0
- package/dist/routers/academicCalendar.d.ts.map +1 -0
- package/dist/routers/academicCalendar.js +75 -0
- package/dist/routers/academicCalendar.js.map +1 -0
- package/dist/routers/admin.d.ts +2 -0
- package/dist/routers/admin.d.ts.map +1 -1
- package/dist/routers/agenda.d.ts +8 -0
- package/dist/routers/agenda.d.ts.map +1 -1
- package/dist/routers/assignment.d.ts +75 -0
- package/dist/routers/assignment.d.ts.map +1 -1
- package/dist/routers/assignment.js +10 -2
- package/dist/routers/assignment.js.map +1 -1
- package/dist/routers/attendance.d.ts +103 -0
- package/dist/routers/attendance.d.ts.map +1 -1
- package/dist/routers/attendance.js +8 -5
- package/dist/routers/attendance.js.map +1 -1
- package/dist/routers/class.d.ts +27 -0
- package/dist/routers/class.d.ts.map +1 -1
- package/dist/routers/class.js +6 -2
- package/dist/routers/class.js.map +1 -1
- package/dist/routers/event.d.ts +8 -0
- package/dist/routers/event.d.ts.map +1 -1
- package/dist/routers/fees.d.ts +513 -0
- package/dist/routers/fees.d.ts.map +1 -0
- package/dist/routers/fees.js +88 -0
- package/dist/routers/fees.js.map +1 -0
- package/dist/routers/file.d.ts +2 -0
- package/dist/routers/file.d.ts.map +1 -1
- package/dist/routers/gradebook.d.ts +4 -1
- package/dist/routers/gradebook.d.ts.map +1 -1
- package/dist/routers/marketplace.d.ts +371 -0
- package/dist/routers/marketplace.d.ts.map +1 -0
- package/dist/routers/marketplace.js +87 -0
- package/dist/routers/marketplace.js.map +1 -0
- package/dist/routers/moduleItem.d.ts +263 -0
- package/dist/routers/moduleItem.d.ts.map +1 -0
- package/dist/routers/moduleItem.js +60 -0
- package/dist/routers/moduleItem.js.map +1 -0
- package/dist/routers/parent.d.ts +169 -0
- package/dist/routers/parent.d.ts.map +1 -0
- package/dist/routers/parent.js +49 -0
- package/dist/routers/parent.js.map +1 -0
- package/dist/routers/school.d.ts +363 -7
- package/dist/routers/school.d.ts.map +1 -1
- package/dist/routers/school.js +100 -3
- package/dist/routers/school.js.map +1 -1
- package/dist/routers/worksheet.d.ts +27 -0
- package/dist/routers/worksheet.d.ts.map +1 -1
- package/dist/routers/worksheet.js +10 -3
- package/dist/routers/worksheet.js.map +1 -1
- package/dist/services/academicCalendar.d.ts +173 -0
- package/dist/services/academicCalendar.d.ts.map +1 -0
- package/dist/services/academicCalendar.js +214 -0
- package/dist/services/academicCalendar.js.map +1 -0
- package/dist/services/adminInstitution.d.ts +2 -0
- package/dist/services/adminInstitution.d.ts.map +1 -1
- package/dist/services/agenda.d.ts +8 -0
- package/dist/services/agenda.d.ts.map +1 -1
- package/dist/services/assignment.d.ts +75 -0
- package/dist/services/assignment.d.ts.map +1 -1
- package/dist/services/assignment.js +91 -12
- package/dist/services/assignment.js.map +1 -1
- package/dist/services/attendance.d.ts +323 -10
- package/dist/services/attendance.d.ts.map +1 -1
- package/dist/services/attendance.js +385 -25
- package/dist/services/attendance.js.map +1 -1
- package/dist/services/attendanceMerge.d.ts +53 -0
- package/dist/services/attendanceMerge.d.ts.map +1 -0
- package/dist/services/attendanceMerge.js +87 -0
- package/dist/services/attendanceMerge.js.map +1 -0
- package/dist/services/attendanceRate.d.ts +24 -0
- package/dist/services/attendanceRate.d.ts.map +1 -0
- package/dist/services/attendanceRate.js +31 -0
- package/dist/services/attendanceRate.js.map +1 -0
- package/dist/services/attendanceStats.d.ts +22 -0
- package/dist/services/attendanceStats.d.ts.map +1 -0
- package/dist/services/attendanceStats.js +45 -0
- package/dist/services/attendanceStats.js.map +1 -0
- package/dist/services/class.d.ts +27 -0
- package/dist/services/class.d.ts.map +1 -1
- package/dist/services/class.js +26 -3
- package/dist/services/class.js.map +1 -1
- package/dist/services/event.d.ts +8 -0
- package/dist/services/event.d.ts.map +1 -1
- package/dist/services/fees.d.ts +422 -0
- package/dist/services/fees.d.ts.map +1 -0
- package/dist/services/fees.js +310 -0
- package/dist/services/fees.js.map +1 -0
- package/dist/services/feesAuthz.d.ts +49 -0
- package/dist/services/feesAuthz.d.ts.map +1 -0
- package/dist/services/feesAuthz.js +52 -0
- package/dist/services/feesAuthz.js.map +1 -0
- package/dist/services/file.d.ts +4 -0
- package/dist/services/file.d.ts.map +1 -1
- package/dist/services/gradebook.d.ts +18 -1
- package/dist/services/gradebook.d.ts.map +1 -1
- package/dist/services/gradebook.js +57 -2
- package/dist/services/gradebook.js.map +1 -1
- package/dist/services/idCard.d.ts +11 -0
- package/dist/services/idCard.d.ts.map +1 -0
- package/dist/services/idCard.js +122 -0
- package/dist/services/idCard.js.map +1 -0
- package/dist/services/marketplace.d.ts +301 -0
- package/dist/services/marketplace.d.ts.map +1 -0
- package/dist/services/marketplace.js +628 -0
- package/dist/services/marketplace.js.map +1 -0
- package/dist/services/moduleItem.d.ts +196 -0
- package/dist/services/moduleItem.d.ts.map +1 -0
- package/dist/services/moduleItem.js +188 -0
- package/dist/services/moduleItem.js.map +1 -0
- package/dist/services/notification.d.ts +58 -0
- package/dist/services/notification.d.ts.map +1 -1
- package/dist/services/notification.js +30 -2
- package/dist/services/notification.js.map +1 -1
- package/dist/services/parentPortal.d.ts +133 -0
- package/dist/services/parentPortal.d.ts.map +1 -0
- package/dist/services/parentPortal.js +328 -0
- package/dist/services/parentPortal.js.map +1 -0
- package/dist/services/school.d.ts +28 -3
- package/dist/services/school.d.ts.map +1 -1
- package/dist/services/school.js +65 -45
- package/dist/services/school.js.map +1 -1
- package/dist/services/studentImport.d.ts +34 -0
- package/dist/services/studentImport.d.ts.map +1 -0
- package/dist/services/studentImport.js +236 -0
- package/dist/services/studentImport.js.map +1 -0
- package/dist/services/transcript.d.ts +61 -0
- package/dist/services/transcript.d.ts.map +1 -0
- package/dist/services/transcript.js +243 -0
- package/dist/services/transcript.js.map +1 -0
- package/dist/services/worksheet.d.ts +22 -0
- package/dist/services/worksheet.d.ts.map +1 -1
- package/dist/services/worksheet.js +94 -2
- package/dist/services/worksheet.js.map +1 -1
- package/dist/trpc.d.ts +1 -1
- package/dist/trpc.d.ts.map +1 -1
- package/dist/trpc.js +5 -5
- package/dist/trpc.js.map +1 -1
- package/dist/utils/adminPanelAccess.d.ts +4 -5
- package/dist/utils/adminPanelAccess.d.ts.map +1 -1
- package/dist/utils/adminPanelAccess.js +12 -34
- package/dist/utils/adminPanelAccess.js.map +1 -1
- package/package.json +2 -1
- package/prisma/migrations/20260804120000_add_attendance_records_and_excusals/migration.sql +114 -0
- package/prisma/migrations/20260804120100_add_fee_plans_invoices_payments/migration.sql +101 -0
- package/prisma/migrations/20260804120200_add_marketplace_listings/migration.sql +54 -0
- package/prisma/migrations/20260804120300_content_platform_b3_b9/migration.sql +63 -0
- package/prisma/migrations/20260804120400_c_academic_ops/migration.sql +77 -0
- package/prisma/schema.prisma +371 -11
- package/scripts/import-nepal-cdc-curriculum.ts +379 -0
- package/src/lib/assignmentTypeDefaults.ts +222 -0
- package/src/lib/config/env.ts +0 -3
- package/src/lib/feePdf.ts +199 -0
- package/src/lib/feePdfFormat.ts +14 -0
- package/src/lib/idCardPdf.ts +336 -0
- package/src/lib/pdfLetterhead.ts +124 -0
- package/src/lib/transcriptPdf.ts +502 -0
- package/src/models/academicCalendar.ts +139 -0
- package/src/models/attendance.ts +704 -73
- package/src/models/class.ts +1 -0
- package/src/models/fees.ts +349 -0
- package/src/models/marketplace.ts +158 -0
- package/src/models/moduleItem.ts +107 -0
- package/src/models/school.ts +6 -0
- package/src/models/worksheet.ts +2 -0
- package/src/routers/_app.ts +10 -0
- package/src/routers/academicCalendar.ts +103 -0
- package/src/routers/assignment.ts +8 -0
- package/src/routers/attendance.ts +7 -3
- package/src/routers/class.ts +4 -0
- package/src/routers/fees.ts +126 -0
- package/src/routers/marketplace.ts +134 -0
- package/src/routers/moduleItem.ts +89 -0
- package/src/routers/parent.ts +68 -0
- package/src/routers/school.ts +139 -1
- package/src/routers/worksheet.ts +11 -0
- package/src/services/academicCalendar.ts +299 -0
- package/src/services/assignment.ts +122 -12
- package/src/services/attendance.ts +548 -26
- package/src/services/attendanceMerge.ts +139 -0
- package/src/services/attendanceRate.ts +41 -0
- package/src/services/attendanceStats.ts +63 -0
- package/src/services/class.ts +25 -1
- package/src/services/fees.ts +424 -0
- package/src/services/feesAuthz.ts +77 -0
- package/src/services/gradebook.ts +70 -0
- package/src/services/idCard.ts +147 -0
- package/src/services/marketplace.ts +785 -0
- package/src/services/moduleItem.ts +274 -0
- package/src/services/notification.ts +43 -0
- package/src/services/parentPortal.ts +380 -0
- package/src/services/school.ts +65 -44
- package/src/services/studentImport.ts +273 -0
- package/src/services/transcript.ts +313 -0
- package/src/services/worksheet.ts +111 -0
- package/src/trpc.ts +3 -3
- package/src/utils/adminPanelAccess.ts +12 -35
- package/tests/unit/assignmentTypeDefaults.test.ts +52 -0
- package/tests/unit/lib/feePdf.test.ts +15 -0
- package/tests/unit/lib/idCardPdf.test.ts +40 -0
- package/tests/unit/lib/transcriptPdf.test.ts +111 -0
- package/tests/unit/services/attendanceMerge.test.ts +90 -0
- package/tests/unit/services/attendanceRate.test.ts +38 -0
- package/tests/unit/services/attendanceStats.test.ts +54 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Academic year / term service (C1) + student promotion (C2).
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="97525cba-13be-5926-93dc-e0cbf27e0ef6")}catch(e){}}();
|
|
6
|
+
import { TRPCError } from "@trpc/server";
|
|
7
|
+
import { prisma } from "../lib/prisma.js";
|
|
8
|
+
import { createAcademicTerm, createAcademicYear, deleteAcademicTerm, deleteAcademicYear, getAcademicYearById, getCurrentAcademicYear, listAcademicYears, updateAcademicTerm, updateAcademicYear, } from "../models/academicCalendar.js";
|
|
9
|
+
import { findActiveSchoolAdminMembership, findSchoolClass, listActiveSchoolMemberships, } from "../models/school.js";
|
|
10
|
+
async function requireSchoolAdmin(schoolId, userId) {
|
|
11
|
+
const membership = await findActiveSchoolAdminMembership(schoolId, userId);
|
|
12
|
+
if (!membership) {
|
|
13
|
+
throw new TRPCError({
|
|
14
|
+
code: "FORBIDDEN",
|
|
15
|
+
message: "Only school admins can perform this action",
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return membership;
|
|
19
|
+
}
|
|
20
|
+
export async function listYears(userId, schoolId) {
|
|
21
|
+
await requireSchoolAdmin(schoolId, userId);
|
|
22
|
+
return { years: await listAcademicYears(schoolId) };
|
|
23
|
+
}
|
|
24
|
+
export async function getCurrentYear(userId, schoolId) {
|
|
25
|
+
await requireSchoolAdmin(schoolId, userId);
|
|
26
|
+
return { year: await getCurrentAcademicYear(schoolId) };
|
|
27
|
+
}
|
|
28
|
+
export async function createYear(userId, input) {
|
|
29
|
+
await requireSchoolAdmin(input.schoolId, userId);
|
|
30
|
+
if (input.endDate < input.startDate) {
|
|
31
|
+
throw new TRPCError({
|
|
32
|
+
code: "BAD_REQUEST",
|
|
33
|
+
message: "endDate must be on or after startDate",
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const year = await createAcademicYear(input);
|
|
38
|
+
return { year };
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
if (err &&
|
|
42
|
+
typeof err === "object" &&
|
|
43
|
+
"code" in err &&
|
|
44
|
+
err.code === "P2002") {
|
|
45
|
+
throw new TRPCError({
|
|
46
|
+
code: "CONFLICT",
|
|
47
|
+
message: "An academic year with this name already exists",
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export async function updateYear(userId, input) {
|
|
54
|
+
await requireSchoolAdmin(input.schoolId, userId);
|
|
55
|
+
const year = await updateAcademicYear(input.yearId, input.schoolId, {
|
|
56
|
+
name: input.name,
|
|
57
|
+
startDate: input.startDate,
|
|
58
|
+
endDate: input.endDate,
|
|
59
|
+
isCurrent: input.isCurrent,
|
|
60
|
+
});
|
|
61
|
+
if (!year) {
|
|
62
|
+
throw new TRPCError({ code: "NOT_FOUND", message: "Academic year not found" });
|
|
63
|
+
}
|
|
64
|
+
return { year };
|
|
65
|
+
}
|
|
66
|
+
export async function removeYear(userId, input) {
|
|
67
|
+
await requireSchoolAdmin(input.schoolId, userId);
|
|
68
|
+
const result = await deleteAcademicYear(input.yearId, input.schoolId);
|
|
69
|
+
if (result.count === 0) {
|
|
70
|
+
throw new TRPCError({ code: "NOT_FOUND", message: "Academic year not found" });
|
|
71
|
+
}
|
|
72
|
+
return { ok: true };
|
|
73
|
+
}
|
|
74
|
+
export async function createTerm(userId, input) {
|
|
75
|
+
await requireSchoolAdmin(input.schoolId, userId);
|
|
76
|
+
const year = await getAcademicYearById(input.yearId, input.schoolId);
|
|
77
|
+
if (!year) {
|
|
78
|
+
throw new TRPCError({ code: "NOT_FOUND", message: "Academic year not found" });
|
|
79
|
+
}
|
|
80
|
+
if (input.endDate < input.startDate) {
|
|
81
|
+
throw new TRPCError({
|
|
82
|
+
code: "BAD_REQUEST",
|
|
83
|
+
message: "endDate must be on or after startDate",
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
const term = await createAcademicTerm({
|
|
88
|
+
academicYearId: input.yearId,
|
|
89
|
+
name: input.name,
|
|
90
|
+
startDate: input.startDate,
|
|
91
|
+
endDate: input.endDate,
|
|
92
|
+
isCurrent: input.isCurrent,
|
|
93
|
+
});
|
|
94
|
+
return { term };
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
if (err &&
|
|
98
|
+
typeof err === "object" &&
|
|
99
|
+
"code" in err &&
|
|
100
|
+
err.code === "P2002") {
|
|
101
|
+
throw new TRPCError({
|
|
102
|
+
code: "CONFLICT",
|
|
103
|
+
message: "A term with this name already exists in the year",
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
throw err;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export async function updateTerm(userId, input) {
|
|
110
|
+
await requireSchoolAdmin(input.schoolId, userId);
|
|
111
|
+
const year = await getAcademicYearById(input.yearId, input.schoolId);
|
|
112
|
+
if (!year) {
|
|
113
|
+
throw new TRPCError({ code: "NOT_FOUND", message: "Academic year not found" });
|
|
114
|
+
}
|
|
115
|
+
const term = await updateAcademicTerm(input.termId, input.yearId, {
|
|
116
|
+
name: input.name,
|
|
117
|
+
startDate: input.startDate,
|
|
118
|
+
endDate: input.endDate,
|
|
119
|
+
isCurrent: input.isCurrent,
|
|
120
|
+
});
|
|
121
|
+
if (!term) {
|
|
122
|
+
throw new TRPCError({ code: "NOT_FOUND", message: "Academic term not found" });
|
|
123
|
+
}
|
|
124
|
+
return { term };
|
|
125
|
+
}
|
|
126
|
+
export async function removeTerm(userId, input) {
|
|
127
|
+
await requireSchoolAdmin(input.schoolId, userId);
|
|
128
|
+
const year = await getAcademicYearById(input.yearId, input.schoolId);
|
|
129
|
+
if (!year) {
|
|
130
|
+
throw new TRPCError({ code: "NOT_FOUND", message: "Academic year not found" });
|
|
131
|
+
}
|
|
132
|
+
const result = await deleteAcademicTerm(input.termId, input.yearId);
|
|
133
|
+
if (result.count === 0) {
|
|
134
|
+
throw new TRPCError({ code: "NOT_FOUND", message: "Academic term not found" });
|
|
135
|
+
}
|
|
136
|
+
return { ok: true };
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* C2: Promote / move students from one class to another (basic rollover).
|
|
140
|
+
* Disconnects from `fromClassId` and connects to `toClassId`.
|
|
141
|
+
*/
|
|
142
|
+
export async function promoteStudents(userId, input) {
|
|
143
|
+
await requireSchoolAdmin(input.schoolId, userId);
|
|
144
|
+
if (input.fromClassId === input.toClassId) {
|
|
145
|
+
throw new TRPCError({
|
|
146
|
+
code: "BAD_REQUEST",
|
|
147
|
+
message: "fromClassId and toClassId must differ",
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
if (input.studentUserIds.length === 0) {
|
|
151
|
+
throw new TRPCError({
|
|
152
|
+
code: "BAD_REQUEST",
|
|
153
|
+
message: "Select at least one student",
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
const [fromClass, toClass] = await Promise.all([
|
|
157
|
+
findSchoolClass(input.schoolId, input.fromClassId),
|
|
158
|
+
findSchoolClass(input.schoolId, input.toClassId),
|
|
159
|
+
]);
|
|
160
|
+
if (!fromClass || !toClass) {
|
|
161
|
+
throw new TRPCError({
|
|
162
|
+
code: "NOT_FOUND",
|
|
163
|
+
message: "Source or destination class not found in this school",
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
const memberships = await listActiveSchoolMemberships(input.schoolId, input.studentUserIds);
|
|
167
|
+
const studentIds = memberships
|
|
168
|
+
.filter((m) => m.role === "STUDENT")
|
|
169
|
+
.map((m) => m.userId);
|
|
170
|
+
if (studentIds.length === 0) {
|
|
171
|
+
throw new TRPCError({
|
|
172
|
+
code: "BAD_REQUEST",
|
|
173
|
+
message: "No active student memberships found for the given users",
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
// Only move students currently enrolled in the source class.
|
|
177
|
+
const enrolled = await prisma.class.findFirst({
|
|
178
|
+
where: {
|
|
179
|
+
id: input.fromClassId,
|
|
180
|
+
schoolId: input.schoolId,
|
|
181
|
+
},
|
|
182
|
+
select: {
|
|
183
|
+
students: {
|
|
184
|
+
where: { id: { in: studentIds } },
|
|
185
|
+
select: { id: true },
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
const moveIds = (enrolled?.students ?? []).map((s) => s.id);
|
|
190
|
+
if (moveIds.length === 0) {
|
|
191
|
+
throw new TRPCError({
|
|
192
|
+
code: "BAD_REQUEST",
|
|
193
|
+
message: "None of the selected students are in the source class",
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
await prisma.$transaction([
|
|
197
|
+
prisma.class.update({
|
|
198
|
+
where: { id: input.fromClassId },
|
|
199
|
+
data: { students: { disconnect: moveIds.map((id) => ({ id })) } },
|
|
200
|
+
}),
|
|
201
|
+
prisma.class.update({
|
|
202
|
+
where: { id: input.toClassId },
|
|
203
|
+
data: { students: { connect: moveIds.map((id) => ({ id })) } },
|
|
204
|
+
}),
|
|
205
|
+
]);
|
|
206
|
+
return {
|
|
207
|
+
promotedCount: moveIds.length,
|
|
208
|
+
studentUserIds: moveIds,
|
|
209
|
+
fromClassId: input.fromClassId,
|
|
210
|
+
toClassId: input.toClassId,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=academicCalendar.js.map
|
|
214
|
+
//# debugId=97525cba-13be-5926-93dc-e0cbf27e0ef6
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"academicCalendar.js","sources":["services/academicCalendar.ts"],"sourceRoot":"/","sourcesContent":["/**\n * Academic year / term service (C1) + student promotion (C2).\n */\nimport { TRPCError } from \"@trpc/server\";\nimport { prisma } from \"../lib/prisma.js\";\nimport {\n createAcademicTerm,\n createAcademicYear,\n deleteAcademicTerm,\n deleteAcademicYear,\n getAcademicYearById,\n getCurrentAcademicYear,\n listAcademicYears,\n updateAcademicTerm,\n updateAcademicYear,\n} from \"../models/academicCalendar.js\";\nimport {\n findActiveSchoolAdminMembership,\n findSchoolClass,\n listActiveSchoolMemberships,\n} from \"../models/school.js\";\n\nasync function requireSchoolAdmin(schoolId: string, userId: string) {\n const membership = await findActiveSchoolAdminMembership(schoolId, userId);\n if (!membership) {\n throw new TRPCError({\n code: \"FORBIDDEN\",\n message: \"Only school admins can perform this action\",\n });\n }\n return membership;\n}\n\nexport async function listYears(userId: string, schoolId: string) {\n await requireSchoolAdmin(schoolId, userId);\n return { years: await listAcademicYears(schoolId) };\n}\n\nexport async function getCurrentYear(userId: string, schoolId: string) {\n await requireSchoolAdmin(schoolId, userId);\n return { year: await getCurrentAcademicYear(schoolId) };\n}\n\nexport async function createYear(\n userId: string,\n input: {\n schoolId: string;\n name: string;\n startDate: Date;\n endDate: Date;\n isCurrent?: boolean;\n }\n) {\n await requireSchoolAdmin(input.schoolId, userId);\n if (input.endDate < input.startDate) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"endDate must be on or after startDate\",\n });\n }\n try {\n const year = await createAcademicYear(input);\n return { year };\n } catch (err: unknown) {\n if (\n err &&\n typeof err === \"object\" &&\n \"code\" in err &&\n (err as { code: string }).code === \"P2002\"\n ) {\n throw new TRPCError({\n code: \"CONFLICT\",\n message: \"An academic year with this name already exists\",\n });\n }\n throw err;\n }\n}\n\nexport async function updateYear(\n userId: string,\n input: {\n schoolId: string;\n yearId: string;\n name?: string;\n startDate?: Date;\n endDate?: Date;\n isCurrent?: boolean;\n }\n) {\n await requireSchoolAdmin(input.schoolId, userId);\n const year = await updateAcademicYear(input.yearId, input.schoolId, {\n name: input.name,\n startDate: input.startDate,\n endDate: input.endDate,\n isCurrent: input.isCurrent,\n });\n if (!year) {\n throw new TRPCError({ code: \"NOT_FOUND\", message: \"Academic year not found\" });\n }\n return { year };\n}\n\nexport async function removeYear(\n userId: string,\n input: { schoolId: string; yearId: string }\n) {\n await requireSchoolAdmin(input.schoolId, userId);\n const result = await deleteAcademicYear(input.yearId, input.schoolId);\n if (result.count === 0) {\n throw new TRPCError({ code: \"NOT_FOUND\", message: \"Academic year not found\" });\n }\n return { ok: true as const };\n}\n\nexport async function createTerm(\n userId: string,\n input: {\n schoolId: string;\n yearId: string;\n name: string;\n startDate: Date;\n endDate: Date;\n isCurrent?: boolean;\n }\n) {\n await requireSchoolAdmin(input.schoolId, userId);\n const year = await getAcademicYearById(input.yearId, input.schoolId);\n if (!year) {\n throw new TRPCError({ code: \"NOT_FOUND\", message: \"Academic year not found\" });\n }\n if (input.endDate < input.startDate) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"endDate must be on or after startDate\",\n });\n }\n try {\n const term = await createAcademicTerm({\n academicYearId: input.yearId,\n name: input.name,\n startDate: input.startDate,\n endDate: input.endDate,\n isCurrent: input.isCurrent,\n });\n return { term };\n } catch (err: unknown) {\n if (\n err &&\n typeof err === \"object\" &&\n \"code\" in err &&\n (err as { code: string }).code === \"P2002\"\n ) {\n throw new TRPCError({\n code: \"CONFLICT\",\n message: \"A term with this name already exists in the year\",\n });\n }\n throw err;\n }\n}\n\nexport async function updateTerm(\n userId: string,\n input: {\n schoolId: string;\n yearId: string;\n termId: string;\n name?: string;\n startDate?: Date;\n endDate?: Date;\n isCurrent?: boolean;\n }\n) {\n await requireSchoolAdmin(input.schoolId, userId);\n const year = await getAcademicYearById(input.yearId, input.schoolId);\n if (!year) {\n throw new TRPCError({ code: \"NOT_FOUND\", message: \"Academic year not found\" });\n }\n const term = await updateAcademicTerm(input.termId, input.yearId, {\n name: input.name,\n startDate: input.startDate,\n endDate: input.endDate,\n isCurrent: input.isCurrent,\n });\n if (!term) {\n throw new TRPCError({ code: \"NOT_FOUND\", message: \"Academic term not found\" });\n }\n return { term };\n}\n\nexport async function removeTerm(\n userId: string,\n input: { schoolId: string; yearId: string; termId: string }\n) {\n await requireSchoolAdmin(input.schoolId, userId);\n const year = await getAcademicYearById(input.yearId, input.schoolId);\n if (!year) {\n throw new TRPCError({ code: \"NOT_FOUND\", message: \"Academic year not found\" });\n }\n const result = await deleteAcademicTerm(input.termId, input.yearId);\n if (result.count === 0) {\n throw new TRPCError({ code: \"NOT_FOUND\", message: \"Academic term not found\" });\n }\n return { ok: true as const };\n}\n\n/**\n * C2: Promote / move students from one class to another (basic rollover).\n * Disconnects from `fromClassId` and connects to `toClassId`.\n */\nexport async function promoteStudents(\n userId: string,\n input: {\n schoolId: string;\n fromClassId: string;\n toClassId: string;\n studentUserIds: string[];\n }\n) {\n await requireSchoolAdmin(input.schoolId, userId);\n\n if (input.fromClassId === input.toClassId) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"fromClassId and toClassId must differ\",\n });\n }\n if (input.studentUserIds.length === 0) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Select at least one student\",\n });\n }\n\n const [fromClass, toClass] = await Promise.all([\n findSchoolClass(input.schoolId, input.fromClassId),\n findSchoolClass(input.schoolId, input.toClassId),\n ]);\n if (!fromClass || !toClass) {\n throw new TRPCError({\n code: \"NOT_FOUND\",\n message: \"Source or destination class not found in this school\",\n });\n }\n\n const memberships = await listActiveSchoolMemberships(\n input.schoolId,\n input.studentUserIds\n );\n const studentIds = memberships\n .filter((m) => m.role === \"STUDENT\")\n .map((m) => m.userId);\n if (studentIds.length === 0) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"No active student memberships found for the given users\",\n });\n }\n\n // Only move students currently enrolled in the source class.\n const enrolled = await prisma.class.findFirst({\n where: {\n id: input.fromClassId,\n schoolId: input.schoolId,\n },\n select: {\n students: {\n where: { id: { in: studentIds } },\n select: { id: true },\n },\n },\n });\n const moveIds = (enrolled?.students ?? []).map((s) => s.id);\n if (moveIds.length === 0) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"None of the selected students are in the source class\",\n });\n }\n\n await prisma.$transaction([\n prisma.class.update({\n where: { id: input.fromClassId },\n data: { students: { disconnect: moveIds.map((id) => ({ id })) } },\n }),\n prisma.class.update({\n where: { id: input.toClassId },\n data: { students: { connect: moveIds.map((id) => ({ id })) } },\n }),\n ]);\n\n return {\n promotedCount: moveIds.length,\n studentUserIds: moveIds,\n fromClassId: input.fromClassId,\n toClassId: input.toClassId,\n };\n}\n"],"names":[],"mappings":"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","debug_id":"97525cba-13be-5926-93dc-e0cbf27e0ef6"}
|
|
@@ -16,6 +16,7 @@ export declare function listSchoolsForAdmin(input: {
|
|
|
16
16
|
name: string;
|
|
17
17
|
description: string | null;
|
|
18
18
|
logoId: string | null;
|
|
19
|
+
letterheadFileId: string | null;
|
|
19
20
|
subdomain: string | null;
|
|
20
21
|
})[];
|
|
21
22
|
total: number;
|
|
@@ -72,6 +73,7 @@ export declare function getSchoolForAdmin(id: string): Promise<{
|
|
|
72
73
|
name: string;
|
|
73
74
|
description: string | null;
|
|
74
75
|
logoId: string | null;
|
|
76
|
+
letterheadFileId: string | null;
|
|
75
77
|
subdomain: string | null;
|
|
76
78
|
}>;
|
|
77
79
|
export declare function listDepartmentsForAdmin(input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adminInstitution.d.ts","sourceRoot":"/","sources":["services/adminInstitution.ts"],"names":[],"mappings":"AAIA,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB
|
|
1
|
+
{"version":3,"file":"adminInstitution.d.ts","sourceRoot":"/","sources":["services/adminInstitution.ts"],"names":[],"mappings":"AAIA,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;GAsCA;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDjD;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;;;;;;;;;;;;;;;;;;;;;;;;GA0BA;AAED,wBAAsB,qCAAqC,CAAC,KAAK,EAAE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BA;AAED,wBAAsB,+BAA+B,CAAC,KAAK,EAAE;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;GAmBA"}
|
|
@@ -15,6 +15,7 @@ export declare function getAgenda(userId: string, weekStart: string): Promise<{
|
|
|
15
15
|
discussionsEnabled: boolean;
|
|
16
16
|
studentsCanCreateDiscussions: boolean;
|
|
17
17
|
studentsCanReply: boolean;
|
|
18
|
+
sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
|
|
18
19
|
treatMissingAsZero: boolean;
|
|
19
20
|
gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
|
|
20
21
|
} | null;
|
|
@@ -44,6 +45,9 @@ export declare function getAgenda(userId: string, weekStart: string): Promise<{
|
|
|
44
45
|
order: number | null;
|
|
45
46
|
gradingBoundaryId: string | null;
|
|
46
47
|
gradeCategoryId: string | null;
|
|
48
|
+
timeLimitMinutes: number | null;
|
|
49
|
+
singleAttempt: boolean;
|
|
50
|
+
allowLateSubmissions: boolean;
|
|
47
51
|
}[];
|
|
48
52
|
} & {
|
|
49
53
|
id: string;
|
|
@@ -70,6 +74,7 @@ export declare function getAgenda(userId: string, weekStart: string): Promise<{
|
|
|
70
74
|
discussionsEnabled: boolean;
|
|
71
75
|
studentsCanCreateDiscussions: boolean;
|
|
72
76
|
studentsCanReply: boolean;
|
|
77
|
+
sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
|
|
73
78
|
treatMissingAsZero: boolean;
|
|
74
79
|
gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
|
|
75
80
|
} | null;
|
|
@@ -99,6 +104,9 @@ export declare function getAgenda(userId: string, weekStart: string): Promise<{
|
|
|
99
104
|
order: number | null;
|
|
100
105
|
gradingBoundaryId: string | null;
|
|
101
106
|
gradeCategoryId: string | null;
|
|
107
|
+
timeLimitMinutes: number | null;
|
|
108
|
+
singleAttempt: boolean;
|
|
109
|
+
allowLateSubmissions: boolean;
|
|
102
110
|
}[];
|
|
103
111
|
} & {
|
|
104
112
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agenda.d.ts","sourceRoot":"/","sources":["services/agenda.ts"],"names":[],"mappings":"AAQA,sFAAsF;AACtF,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"agenda.d.ts","sourceRoot":"/","sources":["services/agenda.ts"],"names":[],"mappings":"AAQA,sFAAsF;AACtF,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAWhE"}
|
|
@@ -89,6 +89,9 @@ export declare function getAssignment(id: string, _classId: string): Promise<{
|
|
|
89
89
|
order: number | null;
|
|
90
90
|
gradingBoundaryId: string | null;
|
|
91
91
|
gradeCategoryId: string | null;
|
|
92
|
+
timeLimitMinutes: number | null;
|
|
93
|
+
singleAttempt: boolean;
|
|
94
|
+
allowLateSubmissions: boolean;
|
|
92
95
|
}>;
|
|
93
96
|
export declare function getSubmission(assignmentId: string, studentId: string): Promise<{
|
|
94
97
|
late: boolean;
|
|
@@ -106,6 +109,7 @@ export declare function getSubmission(assignmentId: string, studentId: string):
|
|
|
106
109
|
discussionsEnabled: boolean;
|
|
107
110
|
studentsCanCreateDiscussions: boolean;
|
|
108
111
|
studentsCanReply: boolean;
|
|
112
|
+
sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
|
|
109
113
|
treatMissingAsZero: boolean;
|
|
110
114
|
gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
|
|
111
115
|
};
|
|
@@ -147,6 +151,9 @@ export declare function getSubmission(assignmentId: string, studentId: string):
|
|
|
147
151
|
order: number | null;
|
|
148
152
|
gradingBoundaryId: string | null;
|
|
149
153
|
gradeCategoryId: string | null;
|
|
154
|
+
timeLimitMinutes: number | null;
|
|
155
|
+
singleAttempt: boolean;
|
|
156
|
+
allowLateSubmissions: boolean;
|
|
150
157
|
};
|
|
151
158
|
attachments: {
|
|
152
159
|
path: string;
|
|
@@ -176,6 +183,7 @@ export declare function getSubmission(assignmentId: string, studentId: string):
|
|
|
176
183
|
announcementId: string | null;
|
|
177
184
|
discussionId: string | null;
|
|
178
185
|
discussionReplyId: string | null;
|
|
186
|
+
moduleItemId: string | null;
|
|
179
187
|
schoolDevelopementProgramId: string | null;
|
|
180
188
|
}[];
|
|
181
189
|
annotations: {
|
|
@@ -206,6 +214,7 @@ export declare function getSubmission(assignmentId: string, studentId: string):
|
|
|
206
214
|
announcementId: string | null;
|
|
207
215
|
discussionId: string | null;
|
|
208
216
|
discussionReplyId: string | null;
|
|
217
|
+
moduleItemId: string | null;
|
|
209
218
|
schoolDevelopementProgramId: string | null;
|
|
210
219
|
}[];
|
|
211
220
|
student: {
|
|
@@ -244,6 +253,7 @@ export declare function getSubmissionById(submissionId: string, classId: string,
|
|
|
244
253
|
discussionsEnabled: boolean;
|
|
245
254
|
studentsCanCreateDiscussions: boolean;
|
|
246
255
|
studentsCanReply: boolean;
|
|
256
|
+
sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
|
|
247
257
|
treatMissingAsZero: boolean;
|
|
248
258
|
gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
|
|
249
259
|
};
|
|
@@ -285,6 +295,9 @@ export declare function getSubmissionById(submissionId: string, classId: string,
|
|
|
285
295
|
order: number | null;
|
|
286
296
|
gradingBoundaryId: string | null;
|
|
287
297
|
gradeCategoryId: string | null;
|
|
298
|
+
timeLimitMinutes: number | null;
|
|
299
|
+
singleAttempt: boolean;
|
|
300
|
+
allowLateSubmissions: boolean;
|
|
288
301
|
};
|
|
289
302
|
attachments: {
|
|
290
303
|
path: string;
|
|
@@ -314,6 +327,7 @@ export declare function getSubmissionById(submissionId: string, classId: string,
|
|
|
314
327
|
announcementId: string | null;
|
|
315
328
|
discussionId: string | null;
|
|
316
329
|
discussionReplyId: string | null;
|
|
330
|
+
moduleItemId: string | null;
|
|
317
331
|
schoolDevelopementProgramId: string | null;
|
|
318
332
|
}[];
|
|
319
333
|
annotations: {
|
|
@@ -344,6 +358,7 @@ export declare function getSubmissionById(submissionId: string, classId: string,
|
|
|
344
358
|
announcementId: string | null;
|
|
345
359
|
discussionId: string | null;
|
|
346
360
|
discussionReplyId: string | null;
|
|
361
|
+
moduleItemId: string | null;
|
|
347
362
|
schoolDevelopementProgramId: string | null;
|
|
348
363
|
}[];
|
|
349
364
|
student: {
|
|
@@ -394,6 +409,7 @@ export declare function getSubmissions(assignmentId: string, teacherId: string):
|
|
|
394
409
|
discussionsEnabled: boolean;
|
|
395
410
|
studentsCanCreateDiscussions: boolean;
|
|
396
411
|
studentsCanReply: boolean;
|
|
412
|
+
sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
|
|
397
413
|
treatMissingAsZero: boolean;
|
|
398
414
|
gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
|
|
399
415
|
};
|
|
@@ -431,6 +447,9 @@ export declare function getSubmissions(assignmentId: string, teacherId: string):
|
|
|
431
447
|
order: number | null;
|
|
432
448
|
gradingBoundaryId: string | null;
|
|
433
449
|
gradeCategoryId: string | null;
|
|
450
|
+
timeLimitMinutes: number | null;
|
|
451
|
+
singleAttempt: boolean;
|
|
452
|
+
allowLateSubmissions: boolean;
|
|
434
453
|
};
|
|
435
454
|
attachments: ({
|
|
436
455
|
thumbnail: {
|
|
@@ -461,6 +480,7 @@ export declare function getSubmissions(assignmentId: string, teacherId: string):
|
|
|
461
480
|
announcementId: string | null;
|
|
462
481
|
discussionId: string | null;
|
|
463
482
|
discussionReplyId: string | null;
|
|
483
|
+
moduleItemId: string | null;
|
|
464
484
|
schoolDevelopementProgramId: string | null;
|
|
465
485
|
} | null;
|
|
466
486
|
} & {
|
|
@@ -491,6 +511,7 @@ export declare function getSubmissions(assignmentId: string, teacherId: string):
|
|
|
491
511
|
announcementId: string | null;
|
|
492
512
|
discussionId: string | null;
|
|
493
513
|
discussionReplyId: string | null;
|
|
514
|
+
moduleItemId: string | null;
|
|
494
515
|
schoolDevelopementProgramId: string | null;
|
|
495
516
|
})[];
|
|
496
517
|
student: {
|
|
@@ -546,6 +567,10 @@ export declare function createAssignmentRecord(userId: string, input: {
|
|
|
546
567
|
gradingBoundaryId?: string;
|
|
547
568
|
inProgress?: boolean;
|
|
548
569
|
sourceAssignmentId?: string;
|
|
570
|
+
timeLimitMinutes?: number | null;
|
|
571
|
+
singleAttempt?: boolean;
|
|
572
|
+
allowLateSubmissions?: boolean;
|
|
573
|
+
applyTypeDefaults?: boolean;
|
|
549
574
|
}): Promise<{
|
|
550
575
|
type: import(".prisma/client").$Enums.AssignmentType;
|
|
551
576
|
class: {
|
|
@@ -603,6 +628,9 @@ export declare function duplicateAssignmentRecord(assignmentId: string, classId:
|
|
|
603
628
|
order: number | null;
|
|
604
629
|
gradingBoundaryId: string | null;
|
|
605
630
|
gradeCategoryId: string | null;
|
|
631
|
+
timeLimitMinutes: number | null;
|
|
632
|
+
singleAttempt: boolean;
|
|
633
|
+
allowLateSubmissions: boolean;
|
|
606
634
|
}>;
|
|
607
635
|
export declare function updateAssignmentRecord(userId: string, input: {
|
|
608
636
|
id: string;
|
|
@@ -630,6 +658,10 @@ export declare function updateAssignmentRecord(userId: string, input: {
|
|
|
630
658
|
acceptWorksheet?: boolean;
|
|
631
659
|
gradeWithAI?: boolean;
|
|
632
660
|
studentIds?: string[];
|
|
661
|
+
timeLimitMinutes?: number | null;
|
|
662
|
+
singleAttempt?: boolean;
|
|
663
|
+
allowLateSubmissions?: boolean;
|
|
664
|
+
applyTypeDefaults?: boolean;
|
|
633
665
|
}): Promise<{
|
|
634
666
|
type: import(".prisma/client").$Enums.AssignmentType;
|
|
635
667
|
class: {
|
|
@@ -645,6 +677,7 @@ export declare function updateAssignmentRecord(userId: string, input: {
|
|
|
645
677
|
discussionsEnabled: boolean;
|
|
646
678
|
studentsCanCreateDiscussions: boolean;
|
|
647
679
|
studentsCanReply: boolean;
|
|
680
|
+
sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
|
|
648
681
|
treatMissingAsZero: boolean;
|
|
649
682
|
gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
|
|
650
683
|
};
|
|
@@ -701,6 +734,7 @@ export declare function updateAssignmentRecord(userId: string, input: {
|
|
|
701
734
|
announcementId: string | null;
|
|
702
735
|
discussionId: string | null;
|
|
703
736
|
discussionReplyId: string | null;
|
|
737
|
+
moduleItemId: string | null;
|
|
704
738
|
schoolDevelopementProgramId: string | null;
|
|
705
739
|
} | null;
|
|
706
740
|
thumbnailId: string | null;
|
|
@@ -751,6 +785,7 @@ export declare function updateSubmissionRecord(userId: string, input: {
|
|
|
751
785
|
discussionsEnabled: boolean;
|
|
752
786
|
studentsCanCreateDiscussions: boolean;
|
|
753
787
|
studentsCanReply: boolean;
|
|
788
|
+
sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
|
|
754
789
|
treatMissingAsZero: boolean;
|
|
755
790
|
gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
|
|
756
791
|
};
|
|
@@ -788,6 +823,9 @@ export declare function updateSubmissionRecord(userId: string, input: {
|
|
|
788
823
|
order: number | null;
|
|
789
824
|
gradingBoundaryId: string | null;
|
|
790
825
|
gradeCategoryId: string | null;
|
|
826
|
+
timeLimitMinutes: number | null;
|
|
827
|
+
singleAttempt: boolean;
|
|
828
|
+
allowLateSubmissions: boolean;
|
|
791
829
|
};
|
|
792
830
|
attachments: {
|
|
793
831
|
path: string;
|
|
@@ -817,6 +855,7 @@ export declare function updateSubmissionRecord(userId: string, input: {
|
|
|
817
855
|
announcementId: string | null;
|
|
818
856
|
discussionId: string | null;
|
|
819
857
|
discussionReplyId: string | null;
|
|
858
|
+
moduleItemId: string | null;
|
|
820
859
|
schoolDevelopementProgramId: string | null;
|
|
821
860
|
}[];
|
|
822
861
|
student: {
|
|
@@ -875,6 +914,7 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
|
|
|
875
914
|
discussionsEnabled: boolean;
|
|
876
915
|
studentsCanCreateDiscussions: boolean;
|
|
877
916
|
studentsCanReply: boolean;
|
|
917
|
+
sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
|
|
878
918
|
treatMissingAsZero: boolean;
|
|
879
919
|
gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
|
|
880
920
|
};
|
|
@@ -912,6 +952,9 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
|
|
|
912
952
|
order: number | null;
|
|
913
953
|
gradingBoundaryId: string | null;
|
|
914
954
|
gradeCategoryId: string | null;
|
|
955
|
+
timeLimitMinutes: number | null;
|
|
956
|
+
singleAttempt: boolean;
|
|
957
|
+
allowLateSubmissions: boolean;
|
|
915
958
|
};
|
|
916
959
|
attachments: ({
|
|
917
960
|
thumbnail: {
|
|
@@ -942,6 +985,7 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
|
|
|
942
985
|
announcementId: string | null;
|
|
943
986
|
discussionId: string | null;
|
|
944
987
|
discussionReplyId: string | null;
|
|
988
|
+
moduleItemId: string | null;
|
|
945
989
|
schoolDevelopementProgramId: string | null;
|
|
946
990
|
} | null;
|
|
947
991
|
} & {
|
|
@@ -972,6 +1016,7 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
|
|
|
972
1016
|
announcementId: string | null;
|
|
973
1017
|
discussionId: string | null;
|
|
974
1018
|
discussionReplyId: string | null;
|
|
1019
|
+
moduleItemId: string | null;
|
|
975
1020
|
schoolDevelopementProgramId: string | null;
|
|
976
1021
|
})[];
|
|
977
1022
|
annotations: ({
|
|
@@ -1003,6 +1048,7 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
|
|
|
1003
1048
|
announcementId: string | null;
|
|
1004
1049
|
discussionId: string | null;
|
|
1005
1050
|
discussionReplyId: string | null;
|
|
1051
|
+
moduleItemId: string | null;
|
|
1006
1052
|
schoolDevelopementProgramId: string | null;
|
|
1007
1053
|
} | null;
|
|
1008
1054
|
} & {
|
|
@@ -1033,6 +1079,7 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
|
|
|
1033
1079
|
announcementId: string | null;
|
|
1034
1080
|
discussionId: string | null;
|
|
1035
1081
|
discussionReplyId: string | null;
|
|
1082
|
+
moduleItemId: string | null;
|
|
1036
1083
|
schoolDevelopementProgramId: string | null;
|
|
1037
1084
|
})[];
|
|
1038
1085
|
student: {
|
|
@@ -1109,6 +1156,9 @@ export declare function attachAssignmentToEventRecord(teacherId: string, assignm
|
|
|
1109
1156
|
order: number | null;
|
|
1110
1157
|
gradingBoundaryId: string | null;
|
|
1111
1158
|
gradeCategoryId: string | null;
|
|
1159
|
+
timeLimitMinutes: number | null;
|
|
1160
|
+
singleAttempt: boolean;
|
|
1161
|
+
allowLateSubmissions: boolean;
|
|
1112
1162
|
};
|
|
1113
1163
|
}>;
|
|
1114
1164
|
export declare function detachAssignmentFromEventRecord(teacherId: string, assignmentId: string): Promise<{
|
|
@@ -1159,6 +1209,9 @@ export declare function detachAssignmentFromEventRecord(teacherId: string, assig
|
|
|
1159
1209
|
order: number | null;
|
|
1160
1210
|
gradingBoundaryId: string | null;
|
|
1161
1211
|
gradeCategoryId: string | null;
|
|
1212
|
+
timeLimitMinutes: number | null;
|
|
1213
|
+
singleAttempt: boolean;
|
|
1214
|
+
allowLateSubmissions: boolean;
|
|
1162
1215
|
};
|
|
1163
1216
|
}>;
|
|
1164
1217
|
export declare function getAvailableEventsForAssignment(teacherId: string, assignmentId: string): Promise<{
|
|
@@ -1215,6 +1268,7 @@ export declare function attachMarkSchemeRecord(teacherId: string, assignmentId:
|
|
|
1215
1268
|
announcementId: string | null;
|
|
1216
1269
|
discussionId: string | null;
|
|
1217
1270
|
discussionReplyId: string | null;
|
|
1271
|
+
moduleItemId: string | null;
|
|
1218
1272
|
schoolDevelopementProgramId: string | null;
|
|
1219
1273
|
}[];
|
|
1220
1274
|
teacher: {
|
|
@@ -1264,6 +1318,9 @@ export declare function attachMarkSchemeRecord(teacherId: string, assignmentId:
|
|
|
1264
1318
|
order: number | null;
|
|
1265
1319
|
gradingBoundaryId: string | null;
|
|
1266
1320
|
gradeCategoryId: string | null;
|
|
1321
|
+
timeLimitMinutes: number | null;
|
|
1322
|
+
singleAttempt: boolean;
|
|
1323
|
+
allowLateSubmissions: boolean;
|
|
1267
1324
|
}>;
|
|
1268
1325
|
export declare function detachMarkSchemeRecord(teacherId: string, assignmentId: string): Promise<{
|
|
1269
1326
|
markScheme: {
|
|
@@ -1308,6 +1365,7 @@ export declare function detachMarkSchemeRecord(teacherId: string, assignmentId:
|
|
|
1308
1365
|
announcementId: string | null;
|
|
1309
1366
|
discussionId: string | null;
|
|
1310
1367
|
discussionReplyId: string | null;
|
|
1368
|
+
moduleItemId: string | null;
|
|
1311
1369
|
schoolDevelopementProgramId: string | null;
|
|
1312
1370
|
}[];
|
|
1313
1371
|
teacher: {
|
|
@@ -1357,6 +1415,9 @@ export declare function detachMarkSchemeRecord(teacherId: string, assignmentId:
|
|
|
1357
1415
|
order: number | null;
|
|
1358
1416
|
gradingBoundaryId: string | null;
|
|
1359
1417
|
gradeCategoryId: string | null;
|
|
1418
|
+
timeLimitMinutes: number | null;
|
|
1419
|
+
singleAttempt: boolean;
|
|
1420
|
+
allowLateSubmissions: boolean;
|
|
1360
1421
|
}>;
|
|
1361
1422
|
export declare function attachGradingBoundaryRecord(teacherId: string, assignmentId: string, gradingBoundaryId: string | null): Promise<{
|
|
1362
1423
|
gradingBoundary: {
|
|
@@ -1401,6 +1462,7 @@ export declare function attachGradingBoundaryRecord(teacherId: string, assignmen
|
|
|
1401
1462
|
announcementId: string | null;
|
|
1402
1463
|
discussionId: string | null;
|
|
1403
1464
|
discussionReplyId: string | null;
|
|
1465
|
+
moduleItemId: string | null;
|
|
1404
1466
|
schoolDevelopementProgramId: string | null;
|
|
1405
1467
|
}[];
|
|
1406
1468
|
teacher: {
|
|
@@ -1450,6 +1512,9 @@ export declare function attachGradingBoundaryRecord(teacherId: string, assignmen
|
|
|
1450
1512
|
order: number | null;
|
|
1451
1513
|
gradingBoundaryId: string | null;
|
|
1452
1514
|
gradeCategoryId: string | null;
|
|
1515
|
+
timeLimitMinutes: number | null;
|
|
1516
|
+
singleAttempt: boolean;
|
|
1517
|
+
allowLateSubmissions: boolean;
|
|
1453
1518
|
}>;
|
|
1454
1519
|
export declare function detachGradingBoundaryRecord(teacherId: string, assignmentId: string): Promise<{
|
|
1455
1520
|
gradingBoundary: {
|
|
@@ -1494,6 +1559,7 @@ export declare function detachGradingBoundaryRecord(teacherId: string, assignmen
|
|
|
1494
1559
|
announcementId: string | null;
|
|
1495
1560
|
discussionId: string | null;
|
|
1496
1561
|
discussionReplyId: string | null;
|
|
1562
|
+
moduleItemId: string | null;
|
|
1497
1563
|
schoolDevelopementProgramId: string | null;
|
|
1498
1564
|
}[];
|
|
1499
1565
|
teacher: {
|
|
@@ -1543,6 +1609,9 @@ export declare function detachGradingBoundaryRecord(teacherId: string, assignmen
|
|
|
1543
1609
|
order: number | null;
|
|
1544
1610
|
gradingBoundaryId: string | null;
|
|
1545
1611
|
gradeCategoryId: string | null;
|
|
1612
|
+
timeLimitMinutes: number | null;
|
|
1613
|
+
singleAttempt: boolean;
|
|
1614
|
+
allowLateSubmissions: boolean;
|
|
1546
1615
|
}>;
|
|
1547
1616
|
export declare function reorderAssignmentRecord(teacherId: string, input: {
|
|
1548
1617
|
classId: string;
|
|
@@ -1575,6 +1644,9 @@ export declare function reorderAssignmentRecord(teacherId: string, input: {
|
|
|
1575
1644
|
order: number | null;
|
|
1576
1645
|
gradingBoundaryId: string | null;
|
|
1577
1646
|
gradeCategoryId: string | null;
|
|
1647
|
+
timeLimitMinutes: number | null;
|
|
1648
|
+
singleAttempt: boolean;
|
|
1649
|
+
allowLateSubmissions: boolean;
|
|
1578
1650
|
} | null>;
|
|
1579
1651
|
export declare function moveAssignmentRecord(teacherId: string, input: {
|
|
1580
1652
|
id: string;
|
|
@@ -1606,5 +1678,8 @@ export declare function moveAssignmentRecord(teacherId: string, input: {
|
|
|
1606
1678
|
order: number | null;
|
|
1607
1679
|
gradingBoundaryId: string | null;
|
|
1608
1680
|
gradeCategoryId: string | null;
|
|
1681
|
+
timeLimitMinutes: number | null;
|
|
1682
|
+
singleAttempt: boolean;
|
|
1683
|
+
allowLateSubmissions: boolean;
|
|
1609
1684
|
} | null>;
|
|
1610
1685
|
//# sourceMappingURL=assignment.d.ts.map
|