@studious-lms/server 1.23.0 → 1.25.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.
Files changed (298) hide show
  1. package/.env.example +0 -1
  2. package/data/curriculum/nepal-cdc-g4-g5/README.md +90 -0
  3. package/data/curriculum/nepal-cdc-g4-g5/manifest.json +97 -0
  4. package/data/curriculum/nepal-cdc-g4-g5/proficiency-scale.json +76 -0
  5. package/data/curriculum/nepal-cdc-g4-g5/subjects/english.json +6936 -0
  6. package/data/curriculum/nepal-cdc-g4-g5/subjects/health-physical-creative-arts.json +3401 -0
  7. package/data/curriculum/nepal-cdc-g4-g5/subjects/mathematics.json +1511 -0
  8. package/data/curriculum/nepal-cdc-g4-g5/subjects/nepali.json +7928 -0
  9. package/data/curriculum/nepal-cdc-g4-g5/subjects/science-technology.json +2420 -0
  10. package/data/curriculum/nepal-cdc-g4-g5/subjects/social-studies.json +2177 -0
  11. package/dist/lib/assignmentTypeDefaults.d.ts +41 -0
  12. package/dist/lib/assignmentTypeDefaults.d.ts.map +1 -0
  13. package/dist/lib/assignmentTypeDefaults.js +167 -0
  14. package/dist/lib/assignmentTypeDefaults.js.map +1 -0
  15. package/dist/lib/config/env.d.ts +0 -8
  16. package/dist/lib/config/env.d.ts.map +1 -1
  17. package/dist/lib/config/env.js +2 -5
  18. package/dist/lib/config/env.js.map +1 -1
  19. package/dist/lib/feePdf.d.ts +19 -0
  20. package/dist/lib/feePdf.d.ts.map +1 -0
  21. package/dist/lib/feePdf.js +167 -0
  22. package/dist/lib/feePdf.js.map +1 -0
  23. package/dist/lib/feePdfFormat.d.ts +4 -0
  24. package/dist/lib/feePdfFormat.d.ts.map +1 -0
  25. package/dist/lib/feePdfFormat.js +16 -0
  26. package/dist/lib/feePdfFormat.js.map +1 -0
  27. package/dist/lib/idCardPdf.d.ts +26 -0
  28. package/dist/lib/idCardPdf.d.ts.map +1 -0
  29. package/dist/lib/idCardPdf.js +272 -0
  30. package/dist/lib/idCardPdf.js.map +1 -0
  31. package/dist/lib/pdfLetterhead.d.ts +41 -0
  32. package/dist/lib/pdfLetterhead.d.ts.map +1 -0
  33. package/dist/lib/pdfLetterhead.js +86 -0
  34. package/dist/lib/pdfLetterhead.js.map +1 -0
  35. package/dist/lib/transcriptPdf.d.ts +55 -0
  36. package/dist/lib/transcriptPdf.d.ts.map +1 -0
  37. package/dist/lib/transcriptPdf.js +303 -0
  38. package/dist/lib/transcriptPdf.js.map +1 -0
  39. package/dist/models/academicCalendar.d.ts +198 -0
  40. package/dist/models/academicCalendar.d.ts.map +1 -0
  41. package/dist/models/academicCalendar.js +106 -0
  42. package/dist/models/academicCalendar.js.map +1 -0
  43. package/dist/models/agenda.d.ts +8 -0
  44. package/dist/models/agenda.d.ts.map +1 -1
  45. package/dist/models/announcement.d.ts +2 -0
  46. package/dist/models/announcement.d.ts.map +1 -1
  47. package/dist/models/assignment.d.ts +66 -0
  48. package/dist/models/assignment.d.ts.map +1 -1
  49. package/dist/models/attendance.d.ts +659 -21
  50. package/dist/models/attendance.d.ts.map +1 -1
  51. package/dist/models/attendance.js +547 -75
  52. package/dist/models/attendance.js.map +1 -1
  53. package/dist/models/auth.d.ts +2 -0
  54. package/dist/models/auth.d.ts.map +1 -1
  55. package/dist/models/class.d.ts +12 -0
  56. package/dist/models/class.d.ts.map +1 -1
  57. package/dist/models/class.js +3 -2
  58. package/dist/models/class.js.map +1 -1
  59. package/dist/models/event.d.ts +16 -0
  60. package/dist/models/event.d.ts.map +1 -1
  61. package/dist/models/fees.d.ts +554 -0
  62. package/dist/models/fees.d.ts.map +1 -0
  63. package/dist/models/fees.js +278 -0
  64. package/dist/models/fees.js.map +1 -0
  65. package/dist/models/file.d.ts +29 -0
  66. package/dist/models/file.d.ts.map +1 -1
  67. package/dist/models/folder.d.ts +2 -0
  68. package/dist/models/folder.d.ts.map +1 -1
  69. package/dist/models/labChat.d.ts +2 -0
  70. package/dist/models/labChat.d.ts.map +1 -1
  71. package/dist/models/marketplace.d.ts +180 -0
  72. package/dist/models/marketplace.d.ts.map +1 -0
  73. package/dist/models/marketplace.js +116 -0
  74. package/dist/models/marketplace.js.map +1 -0
  75. package/dist/models/moduleItem.d.ts +308 -0
  76. package/dist/models/moduleItem.d.ts.map +1 -0
  77. package/dist/models/moduleItem.js +93 -0
  78. package/dist/models/moduleItem.js.map +1 -0
  79. package/dist/models/newtonChat.d.ts +1 -0
  80. package/dist/models/newtonChat.d.ts.map +1 -1
  81. package/dist/models/school.d.ts +18 -0
  82. package/dist/models/school.d.ts.map +1 -1
  83. package/dist/models/school.js +7 -2
  84. package/dist/models/school.js.map +1 -1
  85. package/dist/models/section.d.ts +4 -0
  86. package/dist/models/section.d.ts.map +1 -1
  87. package/dist/models/worksheet.d.ts +19 -0
  88. package/dist/models/worksheet.d.ts.map +1 -1
  89. package/dist/models/worksheet.js +2 -2
  90. package/dist/models/worksheet.js.map +1 -1
  91. package/dist/routers/_app.d.ts +12024 -7778
  92. package/dist/routers/_app.d.ts.map +1 -1
  93. package/dist/routers/_app.js +12 -2
  94. package/dist/routers/_app.js.map +1 -1
  95. package/dist/routers/academicCalendar.d.ts +229 -0
  96. package/dist/routers/academicCalendar.d.ts.map +1 -0
  97. package/dist/routers/academicCalendar.js +75 -0
  98. package/dist/routers/academicCalendar.js.map +1 -0
  99. package/dist/routers/admin.d.ts +2 -0
  100. package/dist/routers/admin.d.ts.map +1 -1
  101. package/dist/routers/agenda.d.ts +8 -0
  102. package/dist/routers/agenda.d.ts.map +1 -1
  103. package/dist/routers/assignment.d.ts +75 -0
  104. package/dist/routers/assignment.d.ts.map +1 -1
  105. package/dist/routers/assignment.js +10 -2
  106. package/dist/routers/assignment.js.map +1 -1
  107. package/dist/routers/attendance.d.ts +103 -0
  108. package/dist/routers/attendance.d.ts.map +1 -1
  109. package/dist/routers/attendance.js +8 -5
  110. package/dist/routers/attendance.js.map +1 -1
  111. package/dist/routers/class.d.ts +27 -0
  112. package/dist/routers/class.d.ts.map +1 -1
  113. package/dist/routers/class.js +6 -2
  114. package/dist/routers/class.js.map +1 -1
  115. package/dist/routers/event.d.ts +8 -0
  116. package/dist/routers/event.d.ts.map +1 -1
  117. package/dist/routers/fees.d.ts +513 -0
  118. package/dist/routers/fees.d.ts.map +1 -0
  119. package/dist/routers/fees.js +88 -0
  120. package/dist/routers/fees.js.map +1 -0
  121. package/dist/routers/file.d.ts +2 -0
  122. package/dist/routers/file.d.ts.map +1 -1
  123. package/dist/routers/gradebook.d.ts +4 -1
  124. package/dist/routers/gradebook.d.ts.map +1 -1
  125. package/dist/routers/marketplace.d.ts +371 -0
  126. package/dist/routers/marketplace.d.ts.map +1 -0
  127. package/dist/routers/marketplace.js +87 -0
  128. package/dist/routers/marketplace.js.map +1 -0
  129. package/dist/routers/moduleItem.d.ts +263 -0
  130. package/dist/routers/moduleItem.d.ts.map +1 -0
  131. package/dist/routers/moduleItem.js +61 -0
  132. package/dist/routers/moduleItem.js.map +1 -0
  133. package/dist/routers/parent.d.ts +170 -0
  134. package/dist/routers/parent.d.ts.map +1 -0
  135. package/dist/routers/parent.js +49 -0
  136. package/dist/routers/parent.js.map +1 -0
  137. package/dist/routers/school.d.ts +363 -7
  138. package/dist/routers/school.d.ts.map +1 -1
  139. package/dist/routers/school.js +110 -3
  140. package/dist/routers/school.js.map +1 -1
  141. package/dist/routers/worksheet.d.ts +27 -0
  142. package/dist/routers/worksheet.d.ts.map +1 -1
  143. package/dist/routers/worksheet.js +10 -3
  144. package/dist/routers/worksheet.js.map +1 -1
  145. package/dist/services/academicCalendar.d.ts +173 -0
  146. package/dist/services/academicCalendar.d.ts.map +1 -0
  147. package/dist/services/academicCalendar.js +242 -0
  148. package/dist/services/academicCalendar.js.map +1 -0
  149. package/dist/services/adminInstitution.d.ts +2 -0
  150. package/dist/services/adminInstitution.d.ts.map +1 -1
  151. package/dist/services/agenda.d.ts +8 -0
  152. package/dist/services/agenda.d.ts.map +1 -1
  153. package/dist/services/assignment.d.ts +75 -0
  154. package/dist/services/assignment.d.ts.map +1 -1
  155. package/dist/services/assignment.js +91 -12
  156. package/dist/services/assignment.js.map +1 -1
  157. package/dist/services/attendance.d.ts +327 -10
  158. package/dist/services/attendance.d.ts.map +1 -1
  159. package/dist/services/attendance.js +389 -25
  160. package/dist/services/attendance.js.map +1 -1
  161. package/dist/services/attendanceMerge.d.ts +53 -0
  162. package/dist/services/attendanceMerge.d.ts.map +1 -0
  163. package/dist/services/attendanceMerge.js +87 -0
  164. package/dist/services/attendanceMerge.js.map +1 -0
  165. package/dist/services/attendanceRate.d.ts +24 -0
  166. package/dist/services/attendanceRate.d.ts.map +1 -0
  167. package/dist/services/attendanceRate.js +31 -0
  168. package/dist/services/attendanceRate.js.map +1 -0
  169. package/dist/services/attendanceStats.d.ts +22 -0
  170. package/dist/services/attendanceStats.d.ts.map +1 -0
  171. package/dist/services/attendanceStats.js +45 -0
  172. package/dist/services/attendanceStats.js.map +1 -0
  173. package/dist/services/class.d.ts +34 -2
  174. package/dist/services/class.d.ts.map +1 -1
  175. package/dist/services/class.js +27 -4
  176. package/dist/services/class.js.map +1 -1
  177. package/dist/services/event.d.ts +8 -0
  178. package/dist/services/event.d.ts.map +1 -1
  179. package/dist/services/fees.d.ts +422 -0
  180. package/dist/services/fees.d.ts.map +1 -0
  181. package/dist/services/fees.js +330 -0
  182. package/dist/services/fees.js.map +1 -0
  183. package/dist/services/feesAuthz.d.ts +46 -0
  184. package/dist/services/feesAuthz.d.ts.map +1 -0
  185. package/dist/services/feesAuthz.js +49 -0
  186. package/dist/services/feesAuthz.js.map +1 -0
  187. package/dist/services/file.d.ts +4 -0
  188. package/dist/services/file.d.ts.map +1 -1
  189. package/dist/services/gradebook.d.ts +18 -1
  190. package/dist/services/gradebook.d.ts.map +1 -1
  191. package/dist/services/gradebook.js +57 -2
  192. package/dist/services/gradebook.js.map +1 -1
  193. package/dist/services/idCard.d.ts +11 -0
  194. package/dist/services/idCard.d.ts.map +1 -0
  195. package/dist/services/idCard.js +122 -0
  196. package/dist/services/idCard.js.map +1 -0
  197. package/dist/services/marketplace.d.ts +301 -0
  198. package/dist/services/marketplace.d.ts.map +1 -0
  199. package/dist/services/marketplace.js +631 -0
  200. package/dist/services/marketplace.js.map +1 -0
  201. package/dist/services/moduleItem.d.ts +196 -0
  202. package/dist/services/moduleItem.d.ts.map +1 -0
  203. package/dist/services/moduleItem.js +204 -0
  204. package/dist/services/moduleItem.js.map +1 -0
  205. package/dist/services/notification.d.ts +58 -0
  206. package/dist/services/notification.d.ts.map +1 -1
  207. package/dist/services/notification.js +30 -2
  208. package/dist/services/notification.js.map +1 -1
  209. package/dist/services/parentPortal.d.ts +131 -0
  210. package/dist/services/parentPortal.d.ts.map +1 -0
  211. package/dist/services/parentPortal.js +314 -0
  212. package/dist/services/parentPortal.js.map +1 -0
  213. package/dist/services/school.d.ts +28 -3
  214. package/dist/services/school.d.ts.map +1 -1
  215. package/dist/services/school.js +98 -54
  216. package/dist/services/school.js.map +1 -1
  217. package/dist/services/studentImport.d.ts +34 -0
  218. package/dist/services/studentImport.d.ts.map +1 -0
  219. package/dist/services/studentImport.js +249 -0
  220. package/dist/services/studentImport.js.map +1 -0
  221. package/dist/services/transcript.d.ts +60 -0
  222. package/dist/services/transcript.d.ts.map +1 -0
  223. package/dist/services/transcript.js +231 -0
  224. package/dist/services/transcript.js.map +1 -0
  225. package/dist/services/worksheet.d.ts +22 -0
  226. package/dist/services/worksheet.d.ts.map +1 -1
  227. package/dist/services/worksheet.js +94 -2
  228. package/dist/services/worksheet.js.map +1 -1
  229. package/dist/trpc.d.ts +1 -1
  230. package/dist/trpc.d.ts.map +1 -1
  231. package/dist/trpc.js +5 -5
  232. package/dist/trpc.js.map +1 -1
  233. package/dist/utils/adminPanelAccess.d.ts +4 -5
  234. package/dist/utils/adminPanelAccess.d.ts.map +1 -1
  235. package/dist/utils/adminPanelAccess.js +12 -34
  236. package/dist/utils/adminPanelAccess.js.map +1 -1
  237. package/package.json +2 -1
  238. package/prisma/migrations/20260804120000_add_attendance_records_and_excusals/migration.sql +114 -0
  239. package/prisma/migrations/20260804120100_add_fee_plans_invoices_payments/migration.sql +101 -0
  240. package/prisma/migrations/20260804120200_add_marketplace_listings/migration.sql +54 -0
  241. package/prisma/migrations/20260804120300_content_platform_b3_b9/migration.sql +63 -0
  242. package/prisma/migrations/20260804120400_c_academic_ops/migration.sql +77 -0
  243. package/prisma/schema.prisma +371 -11
  244. package/scripts/import-nepal-cdc-curriculum.ts +402 -0
  245. package/src/lib/assignmentTypeDefaults.ts +222 -0
  246. package/src/lib/config/env.ts +0 -3
  247. package/src/lib/feePdf.ts +199 -0
  248. package/src/lib/feePdfFormat.ts +14 -0
  249. package/src/lib/idCardPdf.ts +336 -0
  250. package/src/lib/pdfLetterhead.ts +124 -0
  251. package/src/lib/transcriptPdf.ts +502 -0
  252. package/src/models/academicCalendar.ts +139 -0
  253. package/src/models/attendance.ts +702 -73
  254. package/src/models/class.ts +1 -0
  255. package/src/models/fees.ts +349 -0
  256. package/src/models/marketplace.ts +161 -0
  257. package/src/models/moduleItem.ts +125 -0
  258. package/src/models/school.ts +6 -0
  259. package/src/models/worksheet.ts +2 -0
  260. package/src/routers/_app.ts +10 -0
  261. package/src/routers/academicCalendar.ts +103 -0
  262. package/src/routers/assignment.ts +8 -0
  263. package/src/routers/attendance.ts +7 -3
  264. package/src/routers/class.ts +4 -0
  265. package/src/routers/fees.ts +126 -0
  266. package/src/routers/marketplace.ts +134 -0
  267. package/src/routers/moduleItem.ts +91 -0
  268. package/src/routers/parent.ts +68 -0
  269. package/src/routers/school.ts +149 -1
  270. package/src/routers/worksheet.ts +11 -0
  271. package/src/services/academicCalendar.ts +327 -0
  272. package/src/services/assignment.ts +122 -12
  273. package/src/services/attendance.ts +552 -26
  274. package/src/services/attendanceMerge.ts +139 -0
  275. package/src/services/attendanceRate.ts +41 -0
  276. package/src/services/attendanceStats.ts +63 -0
  277. package/src/services/class.ts +26 -2
  278. package/src/services/fees.ts +447 -0
  279. package/src/services/feesAuthz.ts +73 -0
  280. package/src/services/gradebook.ts +70 -0
  281. package/src/services/idCard.ts +147 -0
  282. package/src/services/marketplace.ts +790 -0
  283. package/src/services/moduleItem.ts +298 -0
  284. package/src/services/notification.ts +43 -0
  285. package/src/services/parentPortal.ts +367 -0
  286. package/src/services/school.ts +100 -54
  287. package/src/services/studentImport.ts +285 -0
  288. package/src/services/transcript.ts +301 -0
  289. package/src/services/worksheet.ts +111 -0
  290. package/src/trpc.ts +3 -3
  291. package/src/utils/adminPanelAccess.ts +12 -35
  292. package/tests/unit/assignmentTypeDefaults.test.ts +52 -0
  293. package/tests/unit/lib/feePdf.test.ts +15 -0
  294. package/tests/unit/lib/idCardPdf.test.ts +40 -0
  295. package/tests/unit/lib/transcriptPdf.test.ts +111 -0
  296. package/tests/unit/services/attendanceMerge.test.ts +90 -0
  297. package/tests/unit/services/attendanceRate.test.ts +38 -0
  298. package/tests/unit/services/attendanceStats.test.ts +54 -0
@@ -0,0 +1,278 @@
1
+
2
+ !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]="f83e7b8d-ab55-5d6a-85ba-6472ae75af37")}catch(e){}}();
3
+ import { prisma } from "../lib/prisma.js";
4
+ const studentSelect = {
5
+ id: true,
6
+ username: true,
7
+ email: true,
8
+ profile: {
9
+ select: {
10
+ displayName: true,
11
+ profilePicture: true,
12
+ profilePictureThumbnail: true,
13
+ },
14
+ },
15
+ };
16
+ const planSelect = {
17
+ id: true,
18
+ schoolId: true,
19
+ name: true,
20
+ description: true,
21
+ amountNpr: true,
22
+ currency: true,
23
+ isActive: true,
24
+ createdAt: true,
25
+ updatedAt: true,
26
+ _count: { select: { enrollments: true, invoices: true } },
27
+ };
28
+ const invoiceSelect = {
29
+ id: true,
30
+ schoolId: true,
31
+ feePlanId: true,
32
+ studentId: true,
33
+ year: true,
34
+ month: true,
35
+ amountNpr: true,
36
+ currency: true,
37
+ status: true,
38
+ dueDate: true,
39
+ issuedAt: true,
40
+ notes: true,
41
+ createdAt: true,
42
+ updatedAt: true,
43
+ feePlan: { select: { id: true, name: true } },
44
+ student: { select: studentSelect },
45
+ payments: {
46
+ orderBy: { paidAt: "desc" },
47
+ select: {
48
+ id: true,
49
+ amountNpr: true,
50
+ method: true,
51
+ reference: true,
52
+ paidAt: true,
53
+ notes: true,
54
+ recordedById: true,
55
+ },
56
+ },
57
+ };
58
+ export function listFeePlans(schoolId) {
59
+ return prisma.feePlan.findMany({
60
+ where: { schoolId },
61
+ orderBy: [{ isActive: "desc" }, { name: "asc" }],
62
+ select: planSelect,
63
+ });
64
+ }
65
+ export function getFeePlan(planId) {
66
+ return prisma.feePlan.findUnique({
67
+ where: { id: planId },
68
+ select: {
69
+ ...planSelect,
70
+ enrollments: {
71
+ select: {
72
+ id: true,
73
+ studentId: true,
74
+ student: { select: studentSelect },
75
+ },
76
+ },
77
+ },
78
+ });
79
+ }
80
+ export function createFeePlan(data) {
81
+ return prisma.feePlan.create({
82
+ data: {
83
+ schoolId: data.schoolId,
84
+ name: data.name,
85
+ description: data.description,
86
+ amountNpr: data.amountNpr,
87
+ currency: data.currency ?? "NPR",
88
+ isActive: data.isActive ?? true,
89
+ },
90
+ select: planSelect,
91
+ });
92
+ }
93
+ export function updateFeePlan(planId, data) {
94
+ return prisma.feePlan.update({
95
+ where: { id: planId },
96
+ data,
97
+ select: planSelect,
98
+ });
99
+ }
100
+ export function setFeePlanEnrollments(planId, studentIds) {
101
+ return prisma.$transaction(async (tx) => {
102
+ await tx.feePlanEnrollment.deleteMany({ where: { feePlanId: planId } });
103
+ if (studentIds.length) {
104
+ await tx.feePlanEnrollment.createMany({
105
+ data: studentIds.map((studentId) => ({ feePlanId: planId, studentId })),
106
+ skipDuplicates: true,
107
+ });
108
+ }
109
+ return tx.feePlan.findUnique({
110
+ where: { id: planId },
111
+ select: {
112
+ ...planSelect,
113
+ enrollments: {
114
+ select: {
115
+ id: true,
116
+ studentId: true,
117
+ student: { select: studentSelect },
118
+ },
119
+ },
120
+ },
121
+ });
122
+ });
123
+ }
124
+ export function listActiveStudentIds(schoolId) {
125
+ return prisma.schoolMembership
126
+ .findMany({
127
+ where: { schoolId, role: "STUDENT", status: "ACTIVE" },
128
+ select: { userId: true },
129
+ })
130
+ .then((rows) => rows.map((r) => r.userId));
131
+ }
132
+ export function listPlanEnrollmentIds(planId) {
133
+ return prisma.feePlanEnrollment
134
+ .findMany({
135
+ where: { feePlanId: planId },
136
+ select: { studentId: true },
137
+ })
138
+ .then((rows) => rows.map((r) => r.studentId));
139
+ }
140
+ export function createFeeInvoices(rows) {
141
+ return prisma.feeInvoice.createMany({
142
+ data: rows,
143
+ skipDuplicates: true,
144
+ });
145
+ }
146
+ export function listFeeInvoices(filters) {
147
+ const where = {
148
+ schoolId: filters.schoolId,
149
+ };
150
+ if (filters.year != null)
151
+ where.year = filters.year;
152
+ if (filters.month != null)
153
+ where.month = filters.month;
154
+ if (filters.studentId)
155
+ where.studentId = filters.studentId;
156
+ if (filters.feePlanId)
157
+ where.feePlanId = filters.feePlanId;
158
+ if (filters.status)
159
+ where.status = filters.status;
160
+ return prisma.feeInvoice.findMany({
161
+ where,
162
+ orderBy: [{ year: "desc" }, { month: "desc" }, { issuedAt: "desc" }],
163
+ select: invoiceSelect,
164
+ });
165
+ }
166
+ export function getFeeInvoice(invoiceId) {
167
+ return prisma.feeInvoice.findUnique({
168
+ where: { id: invoiceId },
169
+ select: {
170
+ ...invoiceSelect,
171
+ school: {
172
+ select: {
173
+ id: true,
174
+ name: true,
175
+ letterheadFileId: true,
176
+ letterhead: {
177
+ select: { id: true, path: true, type: true, name: true },
178
+ },
179
+ },
180
+ },
181
+ },
182
+ });
183
+ }
184
+ export function createFeePayment(data) {
185
+ return prisma.feePayment.create({
186
+ data: {
187
+ schoolId: data.schoolId,
188
+ invoiceId: data.invoiceId,
189
+ amountNpr: data.amountNpr,
190
+ method: data.method,
191
+ reference: data.reference,
192
+ paidAt: data.paidAt,
193
+ recordedById: data.recordedById,
194
+ notes: data.notes,
195
+ },
196
+ });
197
+ }
198
+ export function sumPaymentsForInvoice(invoiceId) {
199
+ return prisma.feePayment.aggregate({
200
+ where: { invoiceId },
201
+ _sum: { amountNpr: true },
202
+ });
203
+ }
204
+ export function updateInvoiceStatus(invoiceId, status) {
205
+ return prisma.feeInvoice.update({
206
+ where: { id: invoiceId },
207
+ data: { status },
208
+ });
209
+ }
210
+ export function getFeePayment(paymentId) {
211
+ return prisma.feePayment.findUnique({
212
+ where: { id: paymentId },
213
+ include: {
214
+ invoice: {
215
+ select: {
216
+ ...invoiceSelect,
217
+ school: {
218
+ select: {
219
+ id: true,
220
+ name: true,
221
+ letterheadFileId: true,
222
+ letterhead: {
223
+ select: { id: true, path: true, type: true, name: true },
224
+ },
225
+ },
226
+ },
227
+ },
228
+ },
229
+ recordedBy: {
230
+ select: {
231
+ id: true,
232
+ username: true,
233
+ profile: { select: { displayName: true } },
234
+ },
235
+ },
236
+ },
237
+ });
238
+ }
239
+ export async function listStudentBalances(schoolId) {
240
+ const invoices = await prisma.feeInvoice.findMany({
241
+ where: {
242
+ schoolId,
243
+ status: { in: ["UNPAID", "PARTIAL"] },
244
+ },
245
+ select: {
246
+ studentId: true,
247
+ amountNpr: true,
248
+ student: { select: studentSelect },
249
+ payments: { select: { amountNpr: true } },
250
+ },
251
+ });
252
+ const byStudent = new Map();
253
+ for (const inv of invoices) {
254
+ const paid = inv.payments.reduce((s, p) => s + p.amountNpr, 0);
255
+ const balance = Math.max(0, inv.amountNpr - paid);
256
+ const existing = byStudent.get(inv.studentId);
257
+ if (existing) {
258
+ existing.invoicedNpr += inv.amountNpr;
259
+ existing.paidNpr += paid;
260
+ existing.balanceNpr += balance;
261
+ existing.openInvoiceCount += 1;
262
+ }
263
+ else {
264
+ byStudent.set(inv.studentId, {
265
+ student: inv.student,
266
+ invoicedNpr: inv.amountNpr,
267
+ paidNpr: paid,
268
+ balanceNpr: balance,
269
+ openInvoiceCount: 1,
270
+ });
271
+ }
272
+ }
273
+ return Array.from(byStudent.entries())
274
+ .map(([studentId, row]) => ({ studentId, ...row }))
275
+ .sort((a, b) => b.balanceNpr - a.balanceNpr);
276
+ }
277
+ //# sourceMappingURL=fees.js.map
278
+ //# debugId=f83e7b8d-ab55-5d6a-85ba-6472ae75af37
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fees.js","sources":["models/fees.ts"],"sourceRoot":"/","sourcesContent":["/**\n * Fee ledger model — FeePlan, FeeInvoice, FeePayment queries.\n */\nimport {\n FeeInvoiceStatus,\n FeePaymentMethod,\n Prisma,\n} from \"@prisma/client\";\nimport { prisma } from \"../lib/prisma.js\";\n\nconst studentSelect = {\n id: true,\n username: true,\n email: true,\n profile: {\n select: {\n displayName: true,\n profilePicture: true,\n profilePictureThumbnail: true,\n },\n },\n} as const;\n\nconst planSelect = {\n id: true,\n schoolId: true,\n name: true,\n description: true,\n amountNpr: true,\n currency: true,\n isActive: true,\n createdAt: true,\n updatedAt: true,\n _count: { select: { enrollments: true, invoices: true } },\n} as const;\n\nconst invoiceSelect = {\n id: true,\n schoolId: true,\n feePlanId: true,\n studentId: true,\n year: true,\n month: true,\n amountNpr: true,\n currency: true,\n status: true,\n dueDate: true,\n issuedAt: true,\n notes: true,\n createdAt: true,\n updatedAt: true,\n feePlan: { select: { id: true, name: true } },\n student: { select: studentSelect },\n payments: {\n orderBy: { paidAt: \"desc\" as const },\n select: {\n id: true,\n amountNpr: true,\n method: true,\n reference: true,\n paidAt: true,\n notes: true,\n recordedById: true,\n },\n },\n} as const;\n\nexport function listFeePlans(schoolId: string) {\n return prisma.feePlan.findMany({\n where: { schoolId },\n orderBy: [{ isActive: \"desc\" }, { name: \"asc\" }],\n select: planSelect,\n });\n}\n\nexport function getFeePlan(planId: string) {\n return prisma.feePlan.findUnique({\n where: { id: planId },\n select: {\n ...planSelect,\n enrollments: {\n select: {\n id: true,\n studentId: true,\n student: { select: studentSelect },\n },\n },\n },\n });\n}\n\nexport function createFeePlan(data: {\n schoolId: string;\n name: string;\n description?: string | null;\n amountNpr: number;\n currency?: string;\n isActive?: boolean;\n}) {\n return prisma.feePlan.create({\n data: {\n schoolId: data.schoolId,\n name: data.name,\n description: data.description,\n amountNpr: data.amountNpr,\n currency: data.currency ?? \"NPR\",\n isActive: data.isActive ?? true,\n },\n select: planSelect,\n });\n}\n\nexport function updateFeePlan(\n planId: string,\n data: {\n name?: string;\n description?: string | null;\n amountNpr?: number;\n isActive?: boolean;\n }\n) {\n return prisma.feePlan.update({\n where: { id: planId },\n data,\n select: planSelect,\n });\n}\n\nexport function setFeePlanEnrollments(planId: string, studentIds: string[]) {\n return prisma.$transaction(async (tx) => {\n await tx.feePlanEnrollment.deleteMany({ where: { feePlanId: planId } });\n if (studentIds.length) {\n await tx.feePlanEnrollment.createMany({\n data: studentIds.map((studentId) => ({ feePlanId: planId, studentId })),\n skipDuplicates: true,\n });\n }\n return tx.feePlan.findUnique({\n where: { id: planId },\n select: {\n ...planSelect,\n enrollments: {\n select: {\n id: true,\n studentId: true,\n student: { select: studentSelect },\n },\n },\n },\n });\n });\n}\n\nexport function listActiveStudentIds(schoolId: string) {\n return prisma.schoolMembership\n .findMany({\n where: { schoolId, role: \"STUDENT\", status: \"ACTIVE\" },\n select: { userId: true },\n })\n .then((rows) => rows.map((r) => r.userId));\n}\n\nexport function listPlanEnrollmentIds(planId: string) {\n return prisma.feePlanEnrollment\n .findMany({\n where: { feePlanId: planId },\n select: { studentId: true },\n })\n .then((rows) => rows.map((r) => r.studentId));\n}\n\nexport function createFeeInvoices(\n rows: {\n schoolId: string;\n feePlanId: string;\n studentId: string;\n year: number;\n month: number;\n amountNpr: number;\n currency: string;\n dueDate?: Date | null;\n }[]\n) {\n return prisma.feeInvoice.createMany({\n data: rows,\n skipDuplicates: true,\n });\n}\n\nexport function listFeeInvoices(filters: {\n schoolId: string;\n year?: number;\n month?: number;\n studentId?: string;\n feePlanId?: string;\n status?: FeeInvoiceStatus;\n}) {\n const where: Prisma.FeeInvoiceWhereInput = {\n schoolId: filters.schoolId,\n };\n if (filters.year != null) where.year = filters.year;\n if (filters.month != null) where.month = filters.month;\n if (filters.studentId) where.studentId = filters.studentId;\n if (filters.feePlanId) where.feePlanId = filters.feePlanId;\n if (filters.status) where.status = filters.status;\n\n return prisma.feeInvoice.findMany({\n where,\n orderBy: [{ year: \"desc\" }, { month: \"desc\" }, { issuedAt: \"desc\" }],\n select: invoiceSelect,\n });\n}\n\nexport function getFeeInvoice(invoiceId: string) {\n return prisma.feeInvoice.findUnique({\n where: { id: invoiceId },\n select: {\n ...invoiceSelect,\n school: {\n select: {\n id: true,\n name: true,\n letterheadFileId: true,\n letterhead: {\n select: { id: true, path: true, type: true, name: true },\n },\n },\n },\n },\n });\n}\n\nexport function createFeePayment(data: {\n schoolId: string;\n invoiceId: string;\n amountNpr: number;\n method: FeePaymentMethod;\n reference?: string | null;\n paidAt?: Date;\n recordedById: string;\n notes?: string | null;\n}) {\n return prisma.feePayment.create({\n data: {\n schoolId: data.schoolId,\n invoiceId: data.invoiceId,\n amountNpr: data.amountNpr,\n method: data.method,\n reference: data.reference,\n paidAt: data.paidAt,\n recordedById: data.recordedById,\n notes: data.notes,\n },\n });\n}\n\nexport function sumPaymentsForInvoice(invoiceId: string) {\n return prisma.feePayment.aggregate({\n where: { invoiceId },\n _sum: { amountNpr: true },\n });\n}\n\nexport function updateInvoiceStatus(invoiceId: string, status: FeeInvoiceStatus) {\n return prisma.feeInvoice.update({\n where: { id: invoiceId },\n data: { status },\n });\n}\n\nexport function getFeePayment(paymentId: string) {\n return prisma.feePayment.findUnique({\n where: { id: paymentId },\n include: {\n invoice: {\n select: {\n ...invoiceSelect,\n school: {\n select: {\n id: true,\n name: true,\n letterheadFileId: true,\n letterhead: {\n select: { id: true, path: true, type: true, name: true },\n },\n },\n },\n },\n },\n recordedBy: {\n select: {\n id: true,\n username: true,\n profile: { select: { displayName: true } },\n },\n },\n },\n });\n}\n\nexport async function listStudentBalances(schoolId: string) {\n const invoices = await prisma.feeInvoice.findMany({\n where: {\n schoolId,\n status: { in: [\"UNPAID\", \"PARTIAL\"] },\n },\n select: {\n studentId: true,\n amountNpr: true,\n student: { select: studentSelect },\n payments: { select: { amountNpr: true } },\n },\n });\n\n const byStudent = new Map<\n string,\n {\n student: (typeof invoices)[number][\"student\"];\n invoicedNpr: number;\n paidNpr: number;\n balanceNpr: number;\n openInvoiceCount: number;\n }\n >();\n\n for (const inv of invoices) {\n const paid = inv.payments.reduce((s, p) => s + p.amountNpr, 0);\n const balance = Math.max(0, inv.amountNpr - paid);\n const existing = byStudent.get(inv.studentId);\n if (existing) {\n existing.invoicedNpr += inv.amountNpr;\n existing.paidNpr += paid;\n existing.balanceNpr += balance;\n existing.openInvoiceCount += 1;\n } else {\n byStudent.set(inv.studentId, {\n student: inv.student,\n invoicedNpr: inv.amountNpr,\n paidNpr: paid,\n balanceNpr: balance,\n openInvoiceCount: 1,\n });\n }\n }\n\n return Array.from(byStudent.entries())\n .map(([studentId, row]) => ({ studentId, ...row }))\n .sort((a, b) => b.balanceNpr - a.balanceNpr);\n}\n"],"names":[],"mappings":"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","debug_id":"f83e7b8d-ab55-5d6a-85ba-6472ae75af37"}
@@ -37,6 +37,7 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
37
37
  name: string;
38
38
  description: string | null;
39
39
  logoId: string | null;
40
+ letterheadFileId: string | null;
40
41
  subdomain: string | null;
41
42
  }) | null;
42
43
  teachers: {
@@ -72,6 +73,7 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
72
73
  discussionsEnabled: boolean;
73
74
  studentsCanCreateDiscussions: boolean;
74
75
  studentsCanReply: boolean;
76
+ sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
75
77
  treatMissingAsZero: boolean;
76
78
  gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
77
79
  }) | null;
@@ -98,6 +100,7 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
98
100
  name: string;
99
101
  description: string | null;
100
102
  logoId: string | null;
103
+ letterheadFileId: string | null;
101
104
  subdomain: string | null;
102
105
  }) | null;
103
106
  teachers: {
@@ -133,6 +136,7 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
133
136
  discussionsEnabled: boolean;
134
137
  studentsCanCreateDiscussions: boolean;
135
138
  studentsCanReply: boolean;
139
+ sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
136
140
  treatMissingAsZero: boolean;
137
141
  gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
138
142
  };
@@ -162,6 +166,9 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
162
166
  order: number | null;
163
167
  gradingBoundaryId: string | null;
164
168
  gradeCategoryId: string | null;
169
+ timeLimitMinutes: number | null;
170
+ singleAttempt: boolean;
171
+ allowLateSubmissions: boolean;
165
172
  }) | null;
166
173
  announcement: ({
167
174
  class: {
@@ -176,6 +183,7 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
176
183
  name: string;
177
184
  description: string | null;
178
185
  logoId: string | null;
186
+ letterheadFileId: string | null;
179
187
  subdomain: string | null;
180
188
  }) | null;
181
189
  teachers: {
@@ -211,6 +219,7 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
211
219
  discussionsEnabled: boolean;
212
220
  studentsCanCreateDiscussions: boolean;
213
221
  studentsCanReply: boolean;
222
+ sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
214
223
  treatMissingAsZero: boolean;
215
224
  gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
216
225
  };
@@ -236,6 +245,7 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
236
245
  name: string;
237
246
  description: string | null;
238
247
  logoId: string | null;
248
+ letterheadFileId: string | null;
239
249
  subdomain: string | null;
240
250
  }) | null;
241
251
  teachers: {
@@ -271,6 +281,7 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
271
281
  discussionsEnabled: boolean;
272
282
  studentsCanCreateDiscussions: boolean;
273
283
  studentsCanReply: boolean;
284
+ sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
274
285
  treatMissingAsZero: boolean;
275
286
  gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
276
287
  };
@@ -300,6 +311,9 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
300
311
  order: number | null;
301
312
  gradingBoundaryId: string | null;
302
313
  gradeCategoryId: string | null;
314
+ timeLimitMinutes: number | null;
315
+ singleAttempt: boolean;
316
+ allowLateSubmissions: boolean;
303
317
  };
304
318
  student: {
305
319
  id: string;
@@ -342,6 +356,7 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
342
356
  name: string;
343
357
  description: string | null;
344
358
  logoId: string | null;
359
+ letterheadFileId: string | null;
345
360
  subdomain: string | null;
346
361
  }) | null;
347
362
  teachers: {
@@ -377,6 +392,7 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
377
392
  discussionsEnabled: boolean;
378
393
  studentsCanCreateDiscussions: boolean;
379
394
  studentsCanReply: boolean;
395
+ sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
380
396
  treatMissingAsZero: boolean;
381
397
  gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
382
398
  };
@@ -406,6 +422,9 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
406
422
  order: number | null;
407
423
  gradingBoundaryId: string | null;
408
424
  gradeCategoryId: string | null;
425
+ timeLimitMinutes: number | null;
426
+ singleAttempt: boolean;
427
+ allowLateSubmissions: boolean;
409
428
  };
410
429
  student: {
411
430
  id: string;
@@ -462,6 +481,7 @@ export declare function findFileById(fileId: string): import("@prisma/client/run
462
481
  announcementId: string | null;
463
482
  discussionId: string | null;
464
483
  discussionReplyId: string | null;
484
+ moduleItemId: string | null;
465
485
  schoolDevelopementProgramId: string | null;
466
486
  }) | null>;
467
487
  /** @returns File with folder and class. */
@@ -504,6 +524,7 @@ export declare function findFileWithFolder(fileId: string): import("@prisma/clie
504
524
  discussionsEnabled: boolean;
505
525
  studentsCanCreateDiscussions: boolean;
506
526
  studentsCanReply: boolean;
527
+ sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
507
528
  treatMissingAsZero: boolean;
508
529
  gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
509
530
  } | null;
@@ -545,6 +566,7 @@ export declare function findFileWithFolder(fileId: string): import("@prisma/clie
545
566
  announcementId: string | null;
546
567
  discussionId: string | null;
547
568
  discussionReplyId: string | null;
569
+ moduleItemId: string | null;
548
570
  schoolDevelopementProgramId: string | null;
549
571
  }) | null>;
550
572
  /** @returns File with folder and thumbnail. */
@@ -587,6 +609,7 @@ export declare function findFileWithFolderAndThumbnail(fileId: string): import("
587
609
  discussionsEnabled: boolean;
588
610
  studentsCanCreateDiscussions: boolean;
589
611
  studentsCanReply: boolean;
612
+ sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
590
613
  treatMissingAsZero: boolean;
591
614
  gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
592
615
  } | null;
@@ -628,6 +651,7 @@ export declare function findFileWithFolderAndThumbnail(fileId: string): import("
628
651
  announcementId: string | null;
629
652
  discussionId: string | null;
630
653
  discussionReplyId: string | null;
654
+ moduleItemId: string | null;
631
655
  schoolDevelopementProgramId: string | null;
632
656
  } | null;
633
657
  } & {
@@ -658,6 +682,7 @@ export declare function findFileWithFolderAndThumbnail(fileId: string): import("
658
682
  announcementId: string | null;
659
683
  discussionId: string | null;
660
684
  discussionReplyId: string | null;
685
+ moduleItemId: string | null;
661
686
  schoolDevelopementProgramId: string | null;
662
687
  }) | null>;
663
688
  /** @returns Folder by ID with class. */
@@ -699,6 +724,7 @@ export declare function findFolderById(folderId: string): import("@prisma/client
699
724
  discussionsEnabled: boolean;
700
725
  studentsCanCreateDiscussions: boolean;
701
726
  studentsCanReply: boolean;
727
+ sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
702
728
  treatMissingAsZero: boolean;
703
729
  gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
704
730
  } | null;
@@ -770,6 +796,7 @@ export declare function updateFileFolder(fileId: string, folderId: string): impo
770
796
  announcementId: string | null;
771
797
  discussionId: string | null;
772
798
  discussionReplyId: string | null;
799
+ moduleItemId: string | null;
773
800
  schoolDevelopementProgramId: string | null;
774
801
  }>;
775
802
  /** Rename a file. */
@@ -830,6 +857,7 @@ export declare function updateFileName(fileId: string, name: string): import("@p
830
857
  announcementId: string | null;
831
858
  discussionId: string | null;
832
859
  discussionReplyId: string | null;
860
+ moduleItemId: string | null;
833
861
  schoolDevelopementProgramId: string | null;
834
862
  }>;
835
863
  /** Delete a file record. */
@@ -885,6 +913,7 @@ export declare function deleteFileById(fileId: string): import("@prisma/client/r
885
913
  announcementId: string | null;
886
914
  discussionId: string | null;
887
915
  discussionReplyId: string | null;
916
+ moduleItemId: string | null;
888
917
  schoolDevelopementProgramId: string | null;
889
918
  }>;
890
919
  //# sourceMappingURL=file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"/","sources":["models/file.ts"],"names":[],"mappings":"AAqBA,0GAA0G;AAC1G,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAmD1C;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAOhD;AAED,+CAA+C;AAC/C,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAQ5D;AAED,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAK9C;AAED,6BAA6B;AAC7B,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQhE;AAED,qBAAqB;AACrB,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQ1D;AAED,4BAA4B;AAC5B,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAI5C"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"/","sources":["models/file.ts"],"names":[],"mappings":"AAqBA,0GAA0G;AAC1G,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAmD1C;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAOhD;AAED,+CAA+C;AAC/C,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAQ5D;AAED,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAK9C;AAED,6BAA6B;AAC7B,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQhE;AAED,qBAAqB;AACrB,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQ1D;AAED,4BAA4B;AAC5B,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAI5C"}
@@ -36,6 +36,7 @@ export declare function findClassWithTeacher(classId: string, teacherId: string)
36
36
  discussionsEnabled: boolean;
37
37
  studentsCanCreateDiscussions: boolean;
38
38
  studentsCanReply: boolean;
39
+ sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
39
40
  treatMissingAsZero: boolean;
40
41
  gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
41
42
  } | null>;
@@ -113,6 +114,7 @@ export declare function findFolderByIdWithClass(folderId: string): import("@pris
113
114
  discussionsEnabled: boolean;
114
115
  studentsCanCreateDiscussions: boolean;
115
116
  studentsCanReply: boolean;
117
+ sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
116
118
  treatMissingAsZero: boolean;
117
119
  gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
118
120
  } | null;
@@ -1 +1 @@
1
- {"version":3,"file":"folder.d.ts","sourceRoot":"/","sources":["models/folder.ts"],"names":[],"mappings":"AAsBA,2DAA2D;AAC3D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAOtE;AAED,6BAA6B;AAC7B,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAI9C;AAED,kCAAkC;AAClC,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAKvD;AAED,wCAAwC;AACxC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAOtD;AAED,6CAA6C;AAC7C,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;GAW3D;AAED,uBAAuB;AACvB,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqBA;AAcD,oDAAoD;AACpD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAKtD;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAetD;AAED,sDAAsD;AACtD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAkBzD;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAOpE;AAED,+CAA+C;AAC/C,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAOvD;AAED,uBAAuB;AACvB,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAIhD;AAED,iCAAiC;AACjC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS1E;AAED,oCAAoC;AACpC,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAUxC;AAED,0CAA0C;AAC1C,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAIpD;AAED,6BAA6B;AAC7B,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAIjD"}
1
+ {"version":3,"file":"folder.d.ts","sourceRoot":"/","sources":["models/folder.ts"],"names":[],"mappings":"AAsBA,2DAA2D;AAC3D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAOtE;AAED,6BAA6B;AAC7B,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAI9C;AAED,kCAAkC;AAClC,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAKvD;AAED,wCAAwC;AACxC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAOtD;AAED,6CAA6C;AAC7C,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;GAW3D;AAED,uBAAuB;AACvB,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqBA;AAcD,oDAAoD;AACpD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAKtD;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAetD;AAED,sDAAsD;AACtD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAkBzD;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAOpE;AAED,+CAA+C;AAC/C,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAOvD;AAED,uBAAuB;AACvB,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAIhD;AAED,iCAAiC;AACjC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS1E;AAED,oCAAoC;AACpC,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAUxC;AAED,0CAA0C;AAC1C,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAIpD;AAED,6BAA6B;AAC7B,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAIjD"}
@@ -53,6 +53,7 @@ export declare function findClassWithTeachersForLab(classId: string, teacherId:
53
53
  discussionsEnabled: boolean;
54
54
  studentsCanCreateDiscussions: boolean;
55
55
  studentsCanReply: boolean;
56
+ sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
56
57
  treatMissingAsZero: boolean;
57
58
  gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
58
59
  }) | null>;
@@ -289,6 +290,7 @@ export declare function findClassMembership(classId: string, userId: string): im
289
290
  discussionsEnabled: boolean;
290
291
  studentsCanCreateDiscussions: boolean;
291
292
  studentsCanReply: boolean;
293
+ sidebarFeatures: import("@prisma/client/runtime/library.js").JsonValue | null;
292
294
  treatMissingAsZero: boolean;
293
295
  gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
294
296
  } | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"labChat.d.ts","sourceRoot":"/","sources":["models/labChat.ts"],"names":[],"mappings":"AAoDA,kEAAkE;AAClE,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAiC7E;AAED,0DAA0D;AAC1D,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAUpE;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAYrE;AAED,+BAA+B;AAC/B,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAKhD;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAOlE;AAED,sCAAsC;AACtC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAwClD;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAYnE;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAOrE;AAED,4DAA4D;AAC5D,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EAAE;;;;;;;;;KAQlB"}
1
+ {"version":3,"file":"labChat.d.ts","sourceRoot":"/","sources":["models/labChat.ts"],"names":[],"mappings":"AAoDA,kEAAkE;AAClE,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAiC7E;AAED,0DAA0D;AAC1D,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAUpE;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAYrE;AAED,+BAA+B;AAC/B,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAKhD;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAOlE;AAED,sCAAsC;AACtC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAwClD;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAYnE;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAOrE;AAED,4DAA4D;AAC5D,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EAAE;;;;;;;;;KAQlB"}