@sekolaos/shared-api 1.3.2 → 1.4.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 (101) hide show
  1. package/dist/{chunk-ZPEEFUEC.cjs → chunk-4LZJ36WZ.cjs} +4 -4
  2. package/dist/{chunk-ZPEEFUEC.cjs.map → chunk-4LZJ36WZ.cjs.map} +1 -1
  3. package/dist/{chunk-KB4TZTAC.cjs → chunk-4UJJALG5.cjs} +15 -17
  4. package/dist/chunk-4UJJALG5.cjs.map +1 -0
  5. package/dist/{chunk-U7YG2GA7.js → chunk-55WQN2DX.js} +3 -3
  6. package/dist/{chunk-U7YG2GA7.js.map → chunk-55WQN2DX.js.map} +1 -1
  7. package/dist/{chunk-XNH67ORL.js → chunk-7GCYXFMU.js} +16 -4
  8. package/dist/chunk-7GCYXFMU.js.map +1 -0
  9. package/dist/{chunk-FVPR2MOB.js → chunk-B2BMTZUU.js} +3 -3
  10. package/dist/{chunk-FVPR2MOB.js.map → chunk-B2BMTZUU.js.map} +1 -1
  11. package/dist/{chunk-NPR4GLFZ.js → chunk-BKRQIZIV.js} +3 -3
  12. package/dist/{chunk-NPR4GLFZ.js.map → chunk-BKRQIZIV.js.map} +1 -1
  13. package/dist/{chunk-PQFTPOP4.js → chunk-CARJ6QAB.js} +3 -3
  14. package/dist/{chunk-PQFTPOP4.js.map → chunk-CARJ6QAB.js.map} +1 -1
  15. package/dist/{chunk-Y4YURM53.cjs → chunk-DSGF264Y.cjs} +12 -12
  16. package/dist/{chunk-Y4YURM53.cjs.map → chunk-DSGF264Y.cjs.map} +1 -1
  17. package/dist/{chunk-LS4ZQRFS.cjs → chunk-EXEAVSTX.cjs} +11 -11
  18. package/dist/{chunk-LS4ZQRFS.cjs.map → chunk-EXEAVSTX.cjs.map} +1 -1
  19. package/dist/{chunk-BBJBCD2K.cjs → chunk-IWV6SOVN.cjs} +6 -6
  20. package/dist/{chunk-BBJBCD2K.cjs.map → chunk-IWV6SOVN.cjs.map} +1 -1
  21. package/dist/{chunk-N4OBLYCQ.cjs → chunk-IXMKB5VH.cjs} +6 -6
  22. package/dist/{chunk-N4OBLYCQ.cjs.map → chunk-IXMKB5VH.cjs.map} +1 -1
  23. package/dist/chunk-JBIEHGQ6.js +213 -0
  24. package/dist/chunk-JBIEHGQ6.js.map +1 -0
  25. package/dist/{chunk-KLRABMYU.js → chunk-KPGOAAOU.js} +3 -3
  26. package/dist/{chunk-KLRABMYU.js.map → chunk-KPGOAAOU.js.map} +1 -1
  27. package/dist/{chunk-23XAR4OH.cjs → chunk-N6Y2VQWI.cjs} +9 -9
  28. package/dist/{chunk-23XAR4OH.cjs.map → chunk-N6Y2VQWI.cjs.map} +1 -1
  29. package/dist/chunk-NGEJP5ON.cjs +39 -0
  30. package/dist/chunk-NGEJP5ON.cjs.map +1 -0
  31. package/dist/{chunk-HISL2IF2.cjs → chunk-NUKJPRPS.cjs} +17 -3
  32. package/dist/chunk-NUKJPRPS.cjs.map +1 -0
  33. package/dist/{chunk-SBBVQ3Z2.cjs → chunk-PDJ6OU3X.cjs} +5 -5
  34. package/dist/{chunk-SBBVQ3Z2.cjs.map → chunk-PDJ6OU3X.cjs.map} +1 -1
  35. package/dist/{chunk-ROK2DEVT.js → chunk-Q4UVXJMH.js} +3 -3
  36. package/dist/{chunk-ROK2DEVT.js.map → chunk-Q4UVXJMH.js.map} +1 -1
  37. package/dist/{chunk-DATSHIPR.js → chunk-R2S5EWDS.js} +3 -3
  38. package/dist/{chunk-DATSHIPR.js.map → chunk-R2S5EWDS.js.map} +1 -1
  39. package/dist/{chunk-RDW4IZWK.js → chunk-RGA4HK7T.js} +3 -3
  40. package/dist/{chunk-RDW4IZWK.js.map → chunk-RGA4HK7T.js.map} +1 -1
  41. package/dist/{chunk-CSEMYBBZ.js → chunk-TSMUTMIE.js} +9 -11
  42. package/dist/chunk-TSMUTMIE.js.map +1 -0
  43. package/dist/{chunk-AMKVNGY4.cjs → chunk-UJN47JNP.cjs} +11 -11
  44. package/dist/{chunk-AMKVNGY4.cjs.map → chunk-UJN47JNP.cjs.map} +1 -1
  45. package/dist/{chunk-EM5HIZFG.cjs → chunk-V7QGZZXE.cjs} +8 -8
  46. package/dist/{chunk-EM5HIZFG.cjs.map → chunk-V7QGZZXE.cjs.map} +1 -1
  47. package/dist/{chunk-NCENQB6W.js → chunk-WFDOYOBG.js} +3 -3
  48. package/dist/{chunk-NCENQB6W.js.map → chunk-WFDOYOBG.js.map} +1 -1
  49. package/dist/chunk-XGKBOKII.cjs +244 -0
  50. package/dist/chunk-XGKBOKII.cjs.map +1 -0
  51. package/dist/chunk-YJOKPUPT.js +34 -0
  52. package/dist/chunk-YJOKPUPT.js.map +1 -0
  53. package/dist/index.cjs +254 -165
  54. package/dist/index.d.cts +5 -4
  55. package/dist/index.d.ts +5 -4
  56. package/dist/index.js +14 -13
  57. package/dist/keys/index.cjs +21 -13
  58. package/dist/keys/index.d.cts +14 -1
  59. package/dist/keys/index.d.ts +14 -1
  60. package/dist/keys/index.js +1 -1
  61. package/dist/modules/academic/index.cjs +10 -10
  62. package/dist/modules/academic/index.js +2 -2
  63. package/dist/modules/attendance/index.cjs +80 -16
  64. package/dist/modules/attendance/index.d.cts +138 -4
  65. package/dist/modules/attendance/index.d.ts +138 -4
  66. package/dist/modules/attendance/index.js +2 -2
  67. package/dist/modules/auth/index.cjs +18 -18
  68. package/dist/modules/auth/index.js +2 -2
  69. package/dist/modules/classroom/index.cjs +14 -14
  70. package/dist/modules/classroom/index.js +2 -2
  71. package/dist/modules/lead/index.cjs +10 -10
  72. package/dist/modules/lead/index.js +2 -2
  73. package/dist/modules/roles/index.cjs +29 -0
  74. package/dist/modules/roles/index.cjs.map +1 -0
  75. package/dist/modules/roles/index.d.cts +39 -0
  76. package/dist/modules/roles/index.d.ts +39 -0
  77. package/dist/modules/roles/index.js +8 -0
  78. package/dist/modules/roles/index.js.map +1 -0
  79. package/dist/modules/student/index.cjs +18 -18
  80. package/dist/modules/student/index.js +2 -2
  81. package/dist/modules/subject/index.cjs +8 -8
  82. package/dist/modules/subject/index.js +2 -2
  83. package/dist/modules/system/index.cjs +4 -4
  84. package/dist/modules/system/index.js +2 -2
  85. package/dist/modules/teaching-schedule/index.cjs +14 -14
  86. package/dist/modules/teaching-schedule/index.js +2 -2
  87. package/dist/modules/tenant/index.cjs +16 -16
  88. package/dist/modules/tenant/index.js +2 -2
  89. package/dist/modules/user/index.cjs +14 -14
  90. package/dist/modules/user/index.d.cts +10 -20
  91. package/dist/modules/user/index.d.ts +10 -20
  92. package/dist/modules/user/index.js +2 -2
  93. package/package.json +7 -2
  94. package/dist/chunk-CSEMYBBZ.js.map +0 -1
  95. package/dist/chunk-HISL2IF2.cjs.map +0 -1
  96. package/dist/chunk-ID3UGFZZ.js +0 -102
  97. package/dist/chunk-ID3UGFZZ.js.map +0 -1
  98. package/dist/chunk-JVX37TC5.cjs +0 -117
  99. package/dist/chunk-JVX37TC5.cjs.map +0 -1
  100. package/dist/chunk-KB4TZTAC.cjs.map +0 -1
  101. package/dist/chunk-XNH67ORL.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/modules/academic/academic-year.api.ts"],"names":["API_ENDPOINTS","getData","postData","putData","useQuery","academicYearKeys","useQueryClient","useMutation"],"mappings":";;;;;;;AAWA,IAAM,WAAWA,+BAAA,CAAc,aAAA;AAE/B,eAAsB,kBACpB,MAAA,EACyB;AACzB,EAAA,OAAOC,yBAAA,CAAwB,QAAA,EAAU,EAAE,MAAA,EAAQ,CAAA;AACrD;AAEA,eAAsB,mBAAmB,OAAA,EAAyD;AAChG,EAAA,OAAOC,0BAAA,CAAgD,UAAU,OAAO,CAAA;AAC1E;AAEA,eAAsB,kBAAA,CACpB,IACA,OAAA,EACuB;AACvB,EAAA,OAAOC,0BAA+C,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,IAAI,OAAO,CAAA;AACpF;AAEA,eAAsB,qBAAqB,EAAA,EAAmC;AAC5E,EAAA,OAAOD,0BAAA,CAAuB,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,SAAA,CAAW,CAAA;AAC5D;AAEO,SAAS,iBAAiB,MAAA,EAAyC;AACxE,EAAA,OAAOE,mBAAA,CAAS;AAAA,IACd,QAAA,EAAUC,kCAAA,CAAiB,IAAA,CAAK,MAA6C,CAAA;AAAA,IAC7E,OAAA,EAAS,MAAM,iBAAA,CAAkB,MAAM;AAAA,GACxC,CAAA;AACH;AAEO,SAAS,qBAAA,GAAwB;AACtC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,kBAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,kCAAA,CAAiB,KAAK,CAAA;AAAA,IACxE;AAAA,GACD,CAAA;AACH;AAEO,SAAS,qBAAA,GAAwB;AACtC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,CAAC,EAAE,EAAA,EAAI,SAAQ,KACzB,kBAAA,CAAmB,IAAI,OAAO,CAAA;AAAA,IAChC,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,kCAAA,CAAiB,KAAK,CAAA;AAAA,IACxE;AAAA,GACD,CAAA;AACH;AAEO,SAAS,uBAAA,GAA0B;AACxC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,oBAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,EAAkB;AAAA,IACtC;AAAA,GACD,CAAA;AACH","file":"chunk-BBJBCD2K.cjs","sourcesContent":["import type {\r\n AcademicYear,\r\n AcademicYearListQuery,\r\n CreateAcademicYearInput,\r\n UpdateAcademicYearInput,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport { academicYearKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.academicYears;\r\n\r\nexport async function listAcademicYears(\r\n params?: Partial<AcademicYearListQuery>\r\n): Promise<AcademicYear[]> {\r\n return getData<AcademicYear[]>(ENDPOINT, { params });\r\n}\r\n\r\nexport async function createAcademicYear(payload: CreateAcademicYearInput): Promise<AcademicYear> {\r\n return postData<AcademicYear, CreateAcademicYearInput>(ENDPOINT, payload);\r\n}\r\n\r\nexport async function updateAcademicYear(\r\n id: string,\r\n payload: UpdateAcademicYearInput\r\n): Promise<AcademicYear> {\r\n return putData<AcademicYear, UpdateAcademicYearInput>(`${ENDPOINT}/${id}`, payload);\r\n}\r\n\r\nexport async function activateAcademicYear(id: string): Promise<AcademicYear> {\r\n return postData<AcademicYear>(`${ENDPOINT}/${id}/activate`);\r\n}\r\n\r\nexport function useAcademicYears(params?: Partial<AcademicYearListQuery>) {\r\n return useQuery({\r\n queryKey: academicYearKeys.list(params as Record<string, unknown> | undefined),\r\n queryFn: () => listAcademicYears(params),\r\n });\r\n}\r\n\r\nexport function useCreateAcademicYear() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createAcademicYear,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: academicYearKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateAcademicYear() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ id, payload }: { id: string; payload: UpdateAcademicYearInput }) =>\r\n updateAcademicYear(id, payload),\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: academicYearKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useActivateAcademicYear() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: activateAcademicYear,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries();\r\n },\r\n });\r\n}\r\n\r\nexport type {\r\n AcademicYear,\r\n AcademicYearListQuery,\r\n CreateAcademicYearInput,\r\n UpdateAcademicYearInput,\r\n};\r\n"]}
1
+ {"version":3,"sources":["../src/modules/academic/academic-year.api.ts"],"names":["API_ENDPOINTS","getData","postData","putData","useQuery","academicYearKeys","useQueryClient","useMutation"],"mappings":";;;;;;;AAWA,IAAM,WAAWA,+BAAA,CAAc,aAAA;AAE/B,eAAsB,kBACpB,MAAA,EACyB;AACzB,EAAA,OAAOC,yBAAA,CAAwB,QAAA,EAAU,EAAE,MAAA,EAAQ,CAAA;AACrD;AAEA,eAAsB,mBAAmB,OAAA,EAAyD;AAChG,EAAA,OAAOC,0BAAA,CAAgD,UAAU,OAAO,CAAA;AAC1E;AAEA,eAAsB,kBAAA,CACpB,IACA,OAAA,EACuB;AACvB,EAAA,OAAOC,0BAA+C,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,IAAI,OAAO,CAAA;AACpF;AAEA,eAAsB,qBAAqB,EAAA,EAAmC;AAC5E,EAAA,OAAOD,0BAAA,CAAuB,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,SAAA,CAAW,CAAA;AAC5D;AAEO,SAAS,iBAAiB,MAAA,EAAyC;AACxE,EAAA,OAAOE,mBAAA,CAAS;AAAA,IACd,QAAA,EAAUC,kCAAA,CAAiB,IAAA,CAAK,MAA6C,CAAA;AAAA,IAC7E,OAAA,EAAS,MAAM,iBAAA,CAAkB,MAAM;AAAA,GACxC,CAAA;AACH;AAEO,SAAS,qBAAA,GAAwB;AACtC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,kBAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,kCAAA,CAAiB,KAAK,CAAA;AAAA,IACxE;AAAA,GACD,CAAA;AACH;AAEO,SAAS,qBAAA,GAAwB;AACtC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,CAAC,EAAE,EAAA,EAAI,SAAQ,KACzB,kBAAA,CAAmB,IAAI,OAAO,CAAA;AAAA,IAChC,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,kCAAA,CAAiB,KAAK,CAAA;AAAA,IACxE;AAAA,GACD,CAAA;AACH;AAEO,SAAS,uBAAA,GAA0B;AACxC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,oBAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,EAAkB;AAAA,IACtC;AAAA,GACD,CAAA;AACH","file":"chunk-IWV6SOVN.cjs","sourcesContent":["import type {\r\n AcademicYear,\r\n AcademicYearListQuery,\r\n CreateAcademicYearInput,\r\n UpdateAcademicYearInput,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport { academicYearKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.academicYears;\r\n\r\nexport async function listAcademicYears(\r\n params?: Partial<AcademicYearListQuery>\r\n): Promise<AcademicYear[]> {\r\n return getData<AcademicYear[]>(ENDPOINT, { params });\r\n}\r\n\r\nexport async function createAcademicYear(payload: CreateAcademicYearInput): Promise<AcademicYear> {\r\n return postData<AcademicYear, CreateAcademicYearInput>(ENDPOINT, payload);\r\n}\r\n\r\nexport async function updateAcademicYear(\r\n id: string,\r\n payload: UpdateAcademicYearInput\r\n): Promise<AcademicYear> {\r\n return putData<AcademicYear, UpdateAcademicYearInput>(`${ENDPOINT}/${id}`, payload);\r\n}\r\n\r\nexport async function activateAcademicYear(id: string): Promise<AcademicYear> {\r\n return postData<AcademicYear>(`${ENDPOINT}/${id}/activate`);\r\n}\r\n\r\nexport function useAcademicYears(params?: Partial<AcademicYearListQuery>) {\r\n return useQuery({\r\n queryKey: academicYearKeys.list(params as Record<string, unknown> | undefined),\r\n queryFn: () => listAcademicYears(params),\r\n });\r\n}\r\n\r\nexport function useCreateAcademicYear() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createAcademicYear,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: academicYearKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateAcademicYear() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ id, payload }: { id: string; payload: UpdateAcademicYearInput }) =>\r\n updateAcademicYear(id, payload),\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: academicYearKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useActivateAcademicYear() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: activateAcademicYear,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries();\r\n },\r\n });\r\n}\r\n\r\nexport type {\r\n AcademicYear,\r\n AcademicYearListQuery,\r\n CreateAcademicYearInput,\r\n UpdateAcademicYearInput,\r\n};\r\n"]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var chunk3TOBH3YY_cjs = require('./chunk-3TOBH3YY.cjs');
4
4
  var chunkNGFFI4XQ_cjs = require('./chunk-NGFFI4XQ.cjs');
5
- var chunkHISL2IF2_cjs = require('./chunk-HISL2IF2.cjs');
5
+ var chunkNUKJPRPS_cjs = require('./chunk-NUKJPRPS.cjs');
6
6
  var reactQuery = require('@tanstack/react-query');
7
7
 
8
8
  var ENDPOINT = chunk3TOBH3YY_cjs.API_ENDPOINTS.subjects;
@@ -17,7 +17,7 @@ async function updateSubject(id, payload) {
17
17
  }
18
18
  function useSubjects(params) {
19
19
  return reactQuery.useQuery({
20
- queryKey: chunkHISL2IF2_cjs.subjectKeys.list(params),
20
+ queryKey: chunkNUKJPRPS_cjs.subjectKeys.list(params),
21
21
  queryFn: () => listSubjects(params)
22
22
  });
23
23
  }
@@ -26,7 +26,7 @@ function useCreateSubject() {
26
26
  return reactQuery.useMutation({
27
27
  mutationFn: createSubject,
28
28
  onSuccess: async () => {
29
- await queryClient.invalidateQueries({ queryKey: chunkHISL2IF2_cjs.subjectKeys.all });
29
+ await queryClient.invalidateQueries({ queryKey: chunkNUKJPRPS_cjs.subjectKeys.all });
30
30
  }
31
31
  });
32
32
  }
@@ -35,7 +35,7 @@ function useUpdateSubject() {
35
35
  return reactQuery.useMutation({
36
36
  mutationFn: ({ id, payload }) => updateSubject(id, payload),
37
37
  onSuccess: async () => {
38
- await queryClient.invalidateQueries({ queryKey: chunkHISL2IF2_cjs.subjectKeys.all });
38
+ await queryClient.invalidateQueries({ queryKey: chunkNUKJPRPS_cjs.subjectKeys.all });
39
39
  }
40
40
  });
41
41
  }
@@ -46,5 +46,5 @@ exports.updateSubject = updateSubject;
46
46
  exports.useCreateSubject = useCreateSubject;
47
47
  exports.useSubjects = useSubjects;
48
48
  exports.useUpdateSubject = useUpdateSubject;
49
- //# sourceMappingURL=chunk-N4OBLYCQ.cjs.map
50
- //# sourceMappingURL=chunk-N4OBLYCQ.cjs.map
49
+ //# sourceMappingURL=chunk-IXMKB5VH.cjs.map
50
+ //# sourceMappingURL=chunk-IXMKB5VH.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/modules/subject/subject.api.ts"],"names":["API_ENDPOINTS","getData","postData","putData","useQuery","subjectKeys","useQueryClient","useMutation"],"mappings":";;;;;;;AAWA,IAAM,WAAWA,+BAAA,CAAc,QAAA;AAE/B,eAAsB,aAAa,MAAA,EAAwD;AACzF,EAAA,OAAOC,yBAAA,CAAmB,QAAA,EAAU,EAAE,MAAA,EAAQ,CAAA;AAChD;AAEA,eAAsB,cAAc,OAAA,EAA+C;AACjF,EAAA,OAAOC,0BAAA,CAAsC,UAAU,OAAO,CAAA;AAChE;AAEA,eAAsB,aAAA,CAAc,IAAY,OAAA,EAA+C;AAC7F,EAAA,OAAOC,0BAAqC,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,IAAI,OAAO,CAAA;AAC1E;AAEO,SAAS,YAAY,MAAA,EAAoC;AAC9D,EAAA,OAAOC,mBAAA,CAAS;AAAA,IACd,QAAA,EAAUC,6BAAA,CAAY,IAAA,CAAK,MAA6C,CAAA;AAAA,IACxE,OAAA,EAAS,MAAM,YAAA,CAAa,MAAM;AAAA,GACnC,CAAA;AACH;AAEO,SAAS,gBAAA,GAAmB;AACjC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,aAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,6BAAA,CAAY,KAAK,CAAA;AAAA,IACnE;AAAA,GACD,CAAA;AACH;AAEO,SAAS,gBAAA,GAAmB;AACjC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,CAAC,EAAE,EAAA,EAAI,SAAQ,KACzB,aAAA,CAAc,IAAI,OAAO,CAAA;AAAA,IAC3B,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,6BAAA,CAAY,KAAK,CAAA;AAAA,IACnE;AAAA,GACD,CAAA;AACH","file":"chunk-N4OBLYCQ.cjs","sourcesContent":["import type {\r\n CreateSubjectInput,\r\n Subject,\r\n SubjectListQuery,\r\n UpdateSubjectInput,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport { subjectKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.subjects;\r\n\r\nexport async function listSubjects(params?: Partial<SubjectListQuery>): Promise<Subject[]> {\r\n return getData<Subject[]>(ENDPOINT, { params });\r\n}\r\n\r\nexport async function createSubject(payload: CreateSubjectInput): Promise<Subject> {\r\n return postData<Subject, CreateSubjectInput>(ENDPOINT, payload);\r\n}\r\n\r\nexport async function updateSubject(id: string, payload: UpdateSubjectInput): Promise<Subject> {\r\n return putData<Subject, UpdateSubjectInput>(`${ENDPOINT}/${id}`, payload);\r\n}\r\n\r\nexport function useSubjects(params?: Partial<SubjectListQuery>) {\r\n return useQuery({\r\n queryKey: subjectKeys.list(params as Record<string, unknown> | undefined),\r\n queryFn: () => listSubjects(params),\r\n });\r\n}\r\n\r\nexport function useCreateSubject() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createSubject,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: subjectKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateSubject() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ id, payload }: { id: string; payload: UpdateSubjectInput }) =>\r\n updateSubject(id, payload),\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: subjectKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport type { CreateSubjectInput, Subject, SubjectListQuery, UpdateSubjectInput };\r\n"]}
1
+ {"version":3,"sources":["../src/modules/subject/subject.api.ts"],"names":["API_ENDPOINTS","getData","postData","putData","useQuery","subjectKeys","useQueryClient","useMutation"],"mappings":";;;;;;;AAWA,IAAM,WAAWA,+BAAA,CAAc,QAAA;AAE/B,eAAsB,aAAa,MAAA,EAAwD;AACzF,EAAA,OAAOC,yBAAA,CAAmB,QAAA,EAAU,EAAE,MAAA,EAAQ,CAAA;AAChD;AAEA,eAAsB,cAAc,OAAA,EAA+C;AACjF,EAAA,OAAOC,0BAAA,CAAsC,UAAU,OAAO,CAAA;AAChE;AAEA,eAAsB,aAAA,CAAc,IAAY,OAAA,EAA+C;AAC7F,EAAA,OAAOC,0BAAqC,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,IAAI,OAAO,CAAA;AAC1E;AAEO,SAAS,YAAY,MAAA,EAAoC;AAC9D,EAAA,OAAOC,mBAAA,CAAS;AAAA,IACd,QAAA,EAAUC,6BAAA,CAAY,IAAA,CAAK,MAA6C,CAAA;AAAA,IACxE,OAAA,EAAS,MAAM,YAAA,CAAa,MAAM;AAAA,GACnC,CAAA;AACH;AAEO,SAAS,gBAAA,GAAmB;AACjC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,aAAA;AAAA,IACZ,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,6BAAA,CAAY,KAAK,CAAA;AAAA,IACnE;AAAA,GACD,CAAA;AACH;AAEO,SAAS,gBAAA,GAAmB;AACjC,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,CAAC,EAAE,EAAA,EAAI,SAAQ,KACzB,aAAA,CAAc,IAAI,OAAO,CAAA;AAAA,IAC3B,WAAW,YAAY;AACrB,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,6BAAA,CAAY,KAAK,CAAA;AAAA,IACnE;AAAA,GACD,CAAA;AACH","file":"chunk-IXMKB5VH.cjs","sourcesContent":["import type {\r\n CreateSubjectInput,\r\n Subject,\r\n SubjectListQuery,\r\n UpdateSubjectInput,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport { subjectKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.subjects;\r\n\r\nexport async function listSubjects(params?: Partial<SubjectListQuery>): Promise<Subject[]> {\r\n return getData<Subject[]>(ENDPOINT, { params });\r\n}\r\n\r\nexport async function createSubject(payload: CreateSubjectInput): Promise<Subject> {\r\n return postData<Subject, CreateSubjectInput>(ENDPOINT, payload);\r\n}\r\n\r\nexport async function updateSubject(id: string, payload: UpdateSubjectInput): Promise<Subject> {\r\n return putData<Subject, UpdateSubjectInput>(`${ENDPOINT}/${id}`, payload);\r\n}\r\n\r\nexport function useSubjects(params?: Partial<SubjectListQuery>) {\r\n return useQuery({\r\n queryKey: subjectKeys.list(params as Record<string, unknown> | undefined),\r\n queryFn: () => listSubjects(params),\r\n });\r\n}\r\n\r\nexport function useCreateSubject() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createSubject,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: subjectKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateSubject() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ id, payload }: { id: string; payload: UpdateSubjectInput }) =>\r\n updateSubject(id, payload),\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: subjectKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport type { CreateSubjectInput, Subject, SubjectListQuery, UpdateSubjectInput };\r\n"]}
@@ -0,0 +1,213 @@
1
+ import { API_ENDPOINTS } from './chunk-Q5ZX6TKB.js';
2
+ import { getData, postData, putData, getPaginated } from './chunk-6JGO2CUT.js';
3
+ import { apiClient } from './chunk-GRXFSXG5.js';
4
+ import { attendanceKeys, attendanceShiftKeys } from './chunk-7GCYXFMU.js';
5
+ import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
6
+
7
+ var ENDPOINT = API_ENDPOINTS.attendance;
8
+ var TENANT_ENDPOINT = API_ENDPOINTS.tenants;
9
+ async function getAttendanceShifts(params) {
10
+ return getData(`${TENANT_ENDPOINT}/shifts`, { params });
11
+ }
12
+ async function getAttendanceShiftDetail(targetType) {
13
+ return getData(`${TENANT_ENDPOINT}/shifts/${targetType}`);
14
+ }
15
+ async function createAttendanceShift(payload) {
16
+ return postData(
17
+ `${TENANT_ENDPOINT}/shifts`,
18
+ payload
19
+ );
20
+ }
21
+ async function updateAttendanceShift(targetType, payload) {
22
+ return putData(
23
+ `${TENANT_ENDPOINT}/shifts/${targetType}`,
24
+ payload
25
+ );
26
+ }
27
+ async function deleteAttendanceShift(targetType) {
28
+ await apiClient.delete(`${TENANT_ENDPOINT}/shifts/${targetType}`);
29
+ }
30
+ async function getAttendanceHistory(params) {
31
+ return getPaginated(`${ENDPOINT}/history`, { params });
32
+ }
33
+ async function batchSyncAttendance(payload) {
34
+ return postData(
35
+ `${ENDPOINT}/batch-sync`,
36
+ payload
37
+ );
38
+ }
39
+ async function updateClassAttendance(payload) {
40
+ return postData(
41
+ `${ENDPOINT}/class-update`,
42
+ payload
43
+ );
44
+ }
45
+ async function getDynamicQrStream(params) {
46
+ if (params?.format === "text") {
47
+ const response = await apiClient.get(`${ENDPOINT}/dynamic-qr/stream`, { params });
48
+ return response.data;
49
+ }
50
+ return getData(`${ENDPOINT}/dynamic-qr/stream`, { params });
51
+ }
52
+ async function verifyDynamicQr(payload) {
53
+ return postData(
54
+ `${ENDPOINT}/dynamic-qr/verify`,
55
+ payload
56
+ );
57
+ }
58
+ async function listPicketSchedules(params) {
59
+ return getData(`${ENDPOINT}/picket-schedules`, { params });
60
+ }
61
+ async function createPicketAssignment(payload) {
62
+ return postData(
63
+ `${ENDPOINT}/picket-schedules`,
64
+ payload
65
+ );
66
+ }
67
+ async function getDutyStatus() {
68
+ return getData(`${ENDPOINT}/duty-status`);
69
+ }
70
+ async function recordManualStudentAttendance(payload) {
71
+ return postData(
72
+ `${ENDPOINT}/students/manual`,
73
+ payload
74
+ );
75
+ }
76
+ async function studentBatchSync(payload) {
77
+ return postData(
78
+ `${ENDPOINT}/students/batch-sync`,
79
+ payload
80
+ );
81
+ }
82
+ function useAttendanceHistory(params, enabled = true) {
83
+ return useQuery({
84
+ queryKey: attendanceKeys.history(params),
85
+ queryFn: () => getAttendanceHistory(params),
86
+ enabled
87
+ });
88
+ }
89
+ function useDynamicQrStream(params, enabled = true) {
90
+ return useQuery({
91
+ queryKey: attendanceKeys.dynamicQrStream(params),
92
+ queryFn: () => getDynamicQrStream(params),
93
+ enabled,
94
+ refetchInterval: 15e3
95
+ });
96
+ }
97
+ function usePicketSchedules(options) {
98
+ return useQuery({
99
+ queryKey: attendanceKeys.picketSchedules(),
100
+ queryFn: () => listPicketSchedules(),
101
+ ...options
102
+ });
103
+ }
104
+ function useBatchSyncAttendance() {
105
+ const queryClient = useQueryClient();
106
+ return useMutation({
107
+ mutationFn: batchSyncAttendance,
108
+ onSuccess: async () => {
109
+ await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });
110
+ }
111
+ });
112
+ }
113
+ function useUpdateClassAttendance() {
114
+ const queryClient = useQueryClient();
115
+ return useMutation({
116
+ mutationFn: updateClassAttendance,
117
+ onSuccess: async () => {
118
+ await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });
119
+ }
120
+ });
121
+ }
122
+ function useVerifyDynamicQr() {
123
+ return useMutation({ mutationFn: verifyDynamicQr });
124
+ }
125
+ function useCreatePicketAssignment(options) {
126
+ const queryClient = useQueryClient();
127
+ return useMutation({
128
+ mutationFn: createPicketAssignment,
129
+ onSuccess: (data, vars, ctx) => {
130
+ queryClient.invalidateQueries({ queryKey: attendanceKeys.all });
131
+ options?.onSuccess?.(data, vars, ctx);
132
+ },
133
+ ...options
134
+ });
135
+ }
136
+ function useAttendanceShiftsQuery(params) {
137
+ return useQuery({
138
+ queryKey: attendanceShiftKeys.list(
139
+ params
140
+ ),
141
+ queryFn: () => getAttendanceShifts(params)
142
+ });
143
+ }
144
+ function useAttendanceShiftDetailQuery(targetType) {
145
+ return useQuery({
146
+ queryKey: attendanceShiftKeys.detail(targetType),
147
+ queryFn: () => getAttendanceShiftDetail(targetType)
148
+ });
149
+ }
150
+ function useCreateAttendanceShiftMutation(options) {
151
+ const queryClient = useQueryClient();
152
+ return useMutation({
153
+ mutationFn: createAttendanceShift,
154
+ onSuccess: async (data, vars, ctx) => {
155
+ await queryClient.invalidateQueries({ queryKey: attendanceShiftKeys.all });
156
+ options?.onSuccess?.(data, vars, ctx);
157
+ }
158
+ });
159
+ }
160
+ function useUpdateAttendanceShiftMutation(options) {
161
+ const queryClient = useQueryClient();
162
+ return useMutation({
163
+ mutationFn: ({
164
+ targetType,
165
+ payload
166
+ }) => updateAttendanceShift(targetType, payload),
167
+ onSuccess: async (data, vars, ctx) => {
168
+ await queryClient.invalidateQueries({ queryKey: attendanceShiftKeys.all });
169
+ options?.onSuccess?.(data, vars, ctx);
170
+ }
171
+ });
172
+ }
173
+ function useDeleteAttendanceShiftMutation(options) {
174
+ const queryClient = useQueryClient();
175
+ return useMutation({
176
+ mutationFn: deleteAttendanceShift,
177
+ onSuccess: async (data, vars, ctx) => {
178
+ await queryClient.invalidateQueries({ queryKey: attendanceShiftKeys.all });
179
+ options?.onSuccess?.(data, vars, ctx);
180
+ }
181
+ });
182
+ }
183
+ function useDutyStatusQuery(options) {
184
+ return useQuery({
185
+ queryKey: attendanceKeys.dutyStatus(),
186
+ queryFn: getDutyStatus,
187
+ ...options
188
+ });
189
+ }
190
+ function useManualStudentAttendanceMutation(options) {
191
+ const queryClient = useQueryClient();
192
+ return useMutation({
193
+ mutationFn: recordManualStudentAttendance,
194
+ onSuccess: async (data, vars, ctx) => {
195
+ await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });
196
+ options?.onSuccess?.(data, vars, ctx);
197
+ }
198
+ });
199
+ }
200
+ function useStudentBatchSyncMutation(options) {
201
+ const queryClient = useQueryClient();
202
+ return useMutation({
203
+ mutationFn: studentBatchSync,
204
+ onSuccess: async (data, vars, ctx) => {
205
+ await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });
206
+ options?.onSuccess?.(data, vars, ctx);
207
+ }
208
+ });
209
+ }
210
+
211
+ export { batchSyncAttendance, createAttendanceShift, createPicketAssignment, deleteAttendanceShift, getAttendanceHistory, getAttendanceShiftDetail, getAttendanceShifts, getDutyStatus, getDynamicQrStream, listPicketSchedules, recordManualStudentAttendance, studentBatchSync, updateAttendanceShift, updateClassAttendance, useAttendanceHistory, useAttendanceShiftDetailQuery, useAttendanceShiftsQuery, useBatchSyncAttendance, useCreateAttendanceShiftMutation, useCreatePicketAssignment, useDeleteAttendanceShiftMutation, useDutyStatusQuery, useDynamicQrStream, useManualStudentAttendanceMutation, usePicketSchedules, useStudentBatchSyncMutation, useUpdateAttendanceShiftMutation, useUpdateClassAttendance, useVerifyDynamicQr, verifyDynamicQr };
212
+ //# sourceMappingURL=chunk-JBIEHGQ6.js.map
213
+ //# sourceMappingURL=chunk-JBIEHGQ6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/modules/attendance/attendance.api.ts"],"names":[],"mappings":"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","file":"chunk-JBIEHGQ6.js","sourcesContent":["import type {\r\n AttendanceHistoryItem,\r\n AttendanceHistoryQuery,\r\n AttendanceHistoryResult,\r\n BatchSyncAttendanceRequest,\r\n BatchSyncAttendanceResponse,\r\n ClassUpdateAttendanceResult,\r\n CreatePicketAssignmentInput,\r\n DynamicQrStreamQuery,\r\n DynamicQrStreamResult,\r\n DynamicQrVerifyResult,\r\n PicketAssignment,\r\n PicketScheduleListQuery,\r\n TeacherScanDynamicQrRequest,\r\n UpdateClassAttendanceRequest,\r\n AttendanceShift,\r\n CreateAttendanceShiftSchemaInput,\r\n UpdateAttendanceShiftSchemaInput,\r\n ManualStudentAttendanceRequest,\r\n StudentBatchSyncRequest,\r\n StudentBatchSyncResponse,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { apiClient } from \"../../client/axios-instance\";\r\nimport { getData, getPaginated, postData, putData } from \"../../client/http\";\r\nimport type { MutationOptionsCustom, PaginatedResult, QueryOptionsWithoutKey } from \"../../client/types\";\r\nimport { attendanceKeys, attendanceShiftKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.attendance;\r\nconst TENANT_ENDPOINT = API_ENDPOINTS.tenants;\r\n\r\n// ── Shift CRUD (tenant endpoint) ───────────────────────────────────────────\r\n\r\nexport async function getAttendanceShifts(params?: {\r\n targetType?: \"SISWA\" | \"GURU\";\r\n}): Promise<AttendanceShift[]> {\r\n return getData<AttendanceShift[]>(`${TENANT_ENDPOINT}/shifts`, { params });\r\n}\r\n\r\nexport async function getAttendanceShiftDetail(\r\n targetType: \"SISWA\" | \"GURU\"\r\n): Promise<AttendanceShift> {\r\n return getData<AttendanceShift>(`${TENANT_ENDPOINT}/shifts/${targetType}`);\r\n}\r\n\r\nexport async function createAttendanceShift(\r\n payload: CreateAttendanceShiftSchemaInput\r\n): Promise<AttendanceShift> {\r\n return postData<AttendanceShift, CreateAttendanceShiftSchemaInput>(\r\n `${TENANT_ENDPOINT}/shifts`,\r\n payload\r\n );\r\n}\r\n\r\nexport async function updateAttendanceShift(\r\n targetType: \"SISWA\" | \"GURU\",\r\n payload: UpdateAttendanceShiftSchemaInput\r\n): Promise<AttendanceShift> {\r\n return putData<AttendanceShift, UpdateAttendanceShiftSchemaInput>(\r\n `${TENANT_ENDPOINT}/shifts/${targetType}`,\r\n payload\r\n );\r\n}\r\n\r\nexport async function deleteAttendanceShift(targetType: \"SISWA\" | \"GURU\"): Promise<void> {\r\n await apiClient.delete(`${TENANT_ENDPOINT}/shifts/${targetType}`);\r\n}\r\n\r\n// ── Presensi siswa ───────────────────────────────────────────────────────────\r\n\r\nexport async function getAttendanceHistory(\r\n params: AttendanceHistoryQuery\r\n): Promise<AttendanceHistoryResult> {\r\n return getPaginated<AttendanceHistoryItem>(`${ENDPOINT}/history`, { params });\r\n}\r\n\r\nexport async function batchSyncAttendance(\r\n payload: BatchSyncAttendanceRequest\r\n): Promise<BatchSyncAttendanceResponse> {\r\n return postData<BatchSyncAttendanceResponse, BatchSyncAttendanceRequest>(\r\n `${ENDPOINT}/batch-sync`,\r\n payload\r\n );\r\n}\r\n\r\nexport async function updateClassAttendance(\r\n payload: UpdateClassAttendanceRequest\r\n): Promise<ClassUpdateAttendanceResult> {\r\n return postData<ClassUpdateAttendanceResult, UpdateClassAttendanceRequest>(\r\n `${ENDPOINT}/class-update`,\r\n payload\r\n );\r\n}\r\n\r\nexport async function getDynamicQrStream(\r\n params?: DynamicQrStreamQuery\r\n): Promise<DynamicQrStreamResult | string> {\r\n if (params?.format === \"text\") {\r\n const response = await apiClient.get<string>(`${ENDPOINT}/dynamic-qr/stream`, { params });\r\n return response.data;\r\n }\r\n return getData<DynamicQrStreamResult>(`${ENDPOINT}/dynamic-qr/stream`, { params });\r\n}\r\n\r\nexport async function verifyDynamicQr(\r\n payload: TeacherScanDynamicQrRequest\r\n): Promise<DynamicQrVerifyResult> {\r\n return postData<DynamicQrVerifyResult, TeacherScanDynamicQrRequest>(\r\n `${ENDPOINT}/dynamic-qr/verify`,\r\n payload\r\n );\r\n}\r\n\r\nexport async function listPicketSchedules(\r\n params?: Partial<PicketScheduleListQuery>\r\n): Promise<PicketAssignment[]> {\r\n return getData<PicketAssignment[]>(`${ENDPOINT}/picket-schedules`, { params });\r\n}\r\n\r\nexport async function createPicketAssignment(\r\n payload: CreatePicketAssignmentInput\r\n): Promise<PicketAssignment> {\r\n return postData<PicketAssignment, CreatePicketAssignmentInput>(\r\n `${ENDPOINT}/picket-schedules`,\r\n payload\r\n );\r\n}\r\n\r\n// ── Status piket & absen manual ─────────────────────────────────────────────\r\n\r\nexport interface DutyStatus {\r\n isActiveDutyTeacher: boolean;\r\n activeShift: {\r\n id: string;\r\n name: string;\r\n checkInStart: string;\r\n checkInEnd: string;\r\n checkOutEnd: string;\r\n } | null;\r\n dutyDate: string;\r\n}\r\n\r\nexport async function getDutyStatus(): Promise<DutyStatus> {\r\n return getData<DutyStatus>(`${ENDPOINT}/duty-status`);\r\n}\r\n\r\nexport interface ManualAttendanceResult {\r\n id: string;\r\n method: \"QR_SCAN\" | \"MANUAL_DUTY_TEACHER\" | \"SYSTEM_AUTO\";\r\n status: \"PRESENT\" | \"LATE\";\r\n manualReason: string;\r\n recordedByUserId: string | null;\r\n}\r\n\r\nexport async function recordManualStudentAttendance(\r\n payload: ManualStudentAttendanceRequest\r\n): Promise<ManualAttendanceResult> {\r\n return postData<ManualAttendanceResult, ManualStudentAttendanceRequest>(\r\n `${ENDPOINT}/students/manual`,\r\n payload\r\n );\r\n}\r\n\r\nexport async function studentBatchSync(\r\n payload: StudentBatchSyncRequest\r\n): Promise<StudentBatchSyncResponse> {\r\n return postData<StudentBatchSyncResponse, StudentBatchSyncRequest>(\r\n `${ENDPOINT}/students/batch-sync`,\r\n payload\r\n );\r\n}\r\n\r\nexport function useAttendanceHistory(params: AttendanceHistoryQuery, enabled = true) {\r\n return useQuery({\r\n queryKey: attendanceKeys.history(params as unknown as Record<string, unknown>),\r\n queryFn: () => getAttendanceHistory(params),\r\n enabled,\r\n });\r\n}\r\n\r\nexport function useDynamicQrStream(params: DynamicQrStreamQuery, enabled = true) {\r\n return useQuery({\r\n queryKey: attendanceKeys.dynamicQrStream(params as unknown as Record<string, unknown>),\r\n queryFn: () => getDynamicQrStream(params),\r\n enabled,\r\n refetchInterval: 15_000,\r\n });\r\n}\r\n\r\nexport function usePicketSchedules(options?: QueryOptionsWithoutKey<PicketAssignment[]>) {\r\n return useQuery({\r\n queryKey: attendanceKeys.picketSchedules(),\r\n queryFn: () => listPicketSchedules(),\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useBatchSyncAttendance() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: batchSyncAttendance,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateClassAttendance() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: updateClassAttendance,\r\n onSuccess: async () => {\r\n await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });\r\n },\r\n });\r\n}\r\n\r\nexport function useVerifyDynamicQr() {\r\n return useMutation({ mutationFn: verifyDynamicQr });\r\n}\r\n\r\nexport function useCreatePicketAssignment(options?: MutationOptionsCustom<PicketAssignment, CreatePicketAssignmentInput>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createPicketAssignment,\r\n onSuccess: (data, vars, ctx) => {\r\n queryClient.invalidateQueries({ queryKey: attendanceKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\n// ── Hooks: shift CRUD ───────────────────────────────────────────────────────\r\n\r\nexport function useAttendanceShiftsQuery(params?: { targetType?: \"SISWA\" | \"GURU\" }) {\r\n return useQuery({\r\n queryKey: attendanceShiftKeys.list(\r\n params as unknown as Record<string, unknown> | undefined\r\n ),\r\n queryFn: () => getAttendanceShifts(params),\r\n });\r\n}\r\n\r\nexport function useAttendanceShiftDetailQuery(targetType: \"SISWA\" | \"GURU\") {\r\n return useQuery({\r\n queryKey: attendanceShiftKeys.detail(targetType),\r\n queryFn: () => getAttendanceShiftDetail(targetType),\r\n });\r\n}\r\n\r\nexport function useCreateAttendanceShiftMutation(\r\n options?: MutationOptionsCustom<AttendanceShift, CreateAttendanceShiftSchemaInput>\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createAttendanceShift,\r\n onSuccess: async (data, vars, ctx) => {\r\n await queryClient.invalidateQueries({ queryKey: attendanceShiftKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n });\r\n}\r\n\r\nexport function useUpdateAttendanceShiftMutation(\r\n options?: MutationOptionsCustom<\r\n AttendanceShift,\r\n { targetType: \"SISWA\" | \"GURU\"; payload: UpdateAttendanceShiftSchemaInput }\r\n >\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({\r\n targetType,\r\n payload,\r\n }: {\r\n targetType: \"SISWA\" | \"GURU\";\r\n payload: UpdateAttendanceShiftSchemaInput;\r\n }) => updateAttendanceShift(targetType, payload),\r\n onSuccess: async (data, vars, ctx) => {\r\n await queryClient.invalidateQueries({ queryKey: attendanceShiftKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n });\r\n}\r\n\r\nexport function useDeleteAttendanceShiftMutation(\r\n options?: MutationOptionsCustom<void, \"SISWA\" | \"GURU\">\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: deleteAttendanceShift,\r\n onSuccess: async (data, vars, ctx) => {\r\n await queryClient.invalidateQueries({ queryKey: attendanceShiftKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n });\r\n}\r\n\r\n// ── Hooks: status piket & absen manual ─────────────────────────────────────\r\n\r\nexport function useDutyStatusQuery(options?: QueryOptionsWithoutKey<DutyStatus>) {\r\n return useQuery({\r\n queryKey: attendanceKeys.dutyStatus(),\r\n queryFn: getDutyStatus,\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useManualStudentAttendanceMutation(\r\n options?: MutationOptionsCustom<ManualAttendanceResult, ManualStudentAttendanceRequest>\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: recordManualStudentAttendance,\r\n onSuccess: async (data, vars, ctx) => {\r\n // Invalikan riwayat presensi hari ini\r\n await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n });\r\n}\r\n\r\nexport function useStudentBatchSyncMutation(\r\n options?: MutationOptionsCustom<StudentBatchSyncResponse, StudentBatchSyncRequest>\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: studentBatchSync,\r\n onSuccess: async (data, vars, ctx) => {\r\n await queryClient.invalidateQueries({ queryKey: attendanceKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n });\r\n}\r\n\r\nexport type {\r\n AttendanceHistoryItem,\r\n AttendanceHistoryQuery,\r\n AttendanceHistoryResult,\r\n AttendanceShift,\r\n BatchSyncAttendanceRequest,\r\n BatchSyncAttendanceResponse,\r\n ClassUpdateAttendanceResult,\r\n CreateAttendanceShiftSchemaInput,\r\n CreatePicketAssignmentInput,\r\n DynamicQrStreamQuery,\r\n DynamicQrStreamResult,\r\n DynamicQrVerifyResult,\r\n ManualStudentAttendanceRequest,\r\n PaginatedResult,\r\n PicketAssignment,\r\n PicketScheduleListQuery,\r\n StudentBatchSyncRequest,\r\n StudentBatchSyncResponse,\r\n TeacherScanDynamicQrRequest,\r\n UpdateAttendanceShiftSchemaInput,\r\n UpdateClassAttendanceRequest,\r\n};\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import { API_ENDPOINTS } from './chunk-Q5ZX6TKB.js';
2
2
  import { postData, getData, putData } from './chunk-6JGO2CUT.js';
3
- import { authKeys } from './chunk-XNH67ORL.js';
3
+ import { authKeys } from './chunk-7GCYXFMU.js';
4
4
  import { useQueryClient, useMutation, useQuery } from '@tanstack/react-query';
5
5
 
6
6
  var ENDPOINT = API_ENDPOINTS.auth;
@@ -117,5 +117,5 @@ function useChangePassword(options) {
117
117
  }
118
118
 
119
119
  export { changePassword, consumeImpersonation, exitImpersonation, getMe, login, logout, selectTenant, switchRole, useChangePassword, useConsumeImpersonation, useExitImpersonation, useLogin, useLogout, useMe, useSelectTenant, useSwitchRole };
120
- //# sourceMappingURL=chunk-KLRABMYU.js.map
121
- //# sourceMappingURL=chunk-KLRABMYU.js.map
120
+ //# sourceMappingURL=chunk-KPGOAAOU.js.map
121
+ //# sourceMappingURL=chunk-KPGOAAOU.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/modules/auth/auth.api.ts"],"names":[],"mappings":"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","file":"chunk-KLRABMYU.js","sourcesContent":["import type {\r\n AuthSession,\r\n ChangePasswordRequest,\r\n ConsumeImpersonationRequest,\r\n LoginRequest,\r\n LoginResponse,\r\n Role,\r\n SelectTenantRequest,\r\n SwitchRoleRequest,\r\n Tenant,\r\n TenantOption,\r\n UserProfile,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { authKeys } from \"../../keys\";\r\nimport type { MutationOptionsCustom, QueryOptionsWithoutKey } from \"../../client/types\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.auth;\r\n\r\nexport interface AuthUserSummary {\r\n id: string;\r\n username: string;\r\n email: string | null;\r\n fullName: string;\r\n}\r\n\r\n/** Payload `GET /auth/me`: sesi + profil ringkas user + tenant aktif. */\r\nexport interface AuthSessionPayload {\r\n session: AuthSession;\r\n user: AuthUserSummary;\r\n tenant: Tenant;\r\n}\r\n\r\nexport async function login(payload: LoginRequest): Promise<LoginResponse> {\r\n return postData<LoginResponse, LoginRequest>(`${ENDPOINT}/login`, payload);\r\n}\r\n\r\nexport async function selectTenant(payload: SelectTenantRequest): Promise<LoginResponse> {\r\n return postData<LoginResponse, SelectTenantRequest>(`${ENDPOINT}/select-tenant`, payload);\r\n}\r\n\r\nexport async function switchRole(payload: SwitchRoleRequest): Promise<AuthSession> {\r\n return postData<AuthSession, SwitchRoleRequest>(`${ENDPOINT}/switch-role`, payload);\r\n}\r\n\r\nexport async function logout(): Promise<void> {\r\n await postData<void>(`${ENDPOINT}/logout`);\r\n}\r\n\r\nexport async function getMe(): Promise<AuthSessionPayload> {\r\n return getData<AuthSessionPayload>(`${ENDPOINT}/me`);\r\n}\r\n\r\nexport async function changePassword(payload: ChangePasswordRequest): Promise<{ message: string }> {\r\n return putData<{ message: string }, ChangePasswordRequest>(`${ENDPOINT}/change-password`, payload);\r\n}\r\n\r\n/** Konsumsi token impersonasi dari sekolaos-admin, terbitkan sesi sekolah dengan isImpersonating: true. */\r\nexport async function consumeImpersonation(payload: ConsumeImpersonationRequest): Promise<AuthSession> {\r\n const res = await postData<{ session: AuthSession }, ConsumeImpersonationRequest>(\r\n `${ENDPOINT}/impersonate/consume`,\r\n payload\r\n );\r\n return res.session;\r\n}\r\n\r\n/** Keluar dari mode penyamaran: hapus cookie sesi sekolah. */\r\nexport async function exitImpersonation(): Promise<void> {\r\n await postData<void>(`${ENDPOINT}/impersonate/exit`);\r\n}\r\n\r\nexport function useConsumeImpersonation(options?: MutationOptionsCustom<AuthSession, ConsumeImpersonationRequest>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: consumeImpersonation,\r\n onSuccess: (data, variables, context) => {\r\n queryClient.invalidateQueries({ queryKey: authKeys.all });\r\n options?.onSuccess?.(data, variables, context);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useExitImpersonation(options?: MutationOptionsCustom<void, void>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: exitImpersonation,\r\n onSuccess: () => {\r\n queryClient.clear();\r\n options?.onSuccess?.(undefined, undefined, undefined);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useMe(options?: QueryOptionsWithoutKey<AuthSessionPayload> & { enabled?: boolean }) {\r\n return useQuery({\r\n queryKey: authKeys.me(),\r\n queryFn: getMe,\r\n enabled: options?.enabled ?? true,\r\n staleTime: 60_000,\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useLogin(options?: MutationOptionsCustom<LoginResponse, LoginRequest>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: login,\r\n onSuccess: (data, variables, context) => {\r\n if (data.status === \"SUCCESS\") {\r\n queryClient.invalidateQueries({ queryKey: authKeys.all });\r\n }\r\n options?.onSuccess?.(data, variables, context);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useSelectTenant(options?: MutationOptionsCustom<LoginResponse, SelectTenantRequest>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: selectTenant,\r\n onSuccess: (data, variables, context) => {\r\n queryClient.invalidateQueries({ queryKey: authKeys.all });\r\n options?.onSuccess?.(data, variables, context);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useSwitchRole(options?: MutationOptionsCustom<AuthSession, SwitchRoleRequest>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: switchRole,\r\n onSuccess: (data, variables, context) => {\r\n queryClient.invalidateQueries({ queryKey: authKeys.all });\r\n options?.onSuccess?.(data, variables, context);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useLogout(options?: MutationOptionsCustom<void, void>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: logout,\r\n onSuccess: () => {\r\n queryClient.clear();\r\n options?.onSuccess?.(undefined, undefined, undefined);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useChangePassword(options?: MutationOptionsCustom<{ message: string }, ChangePasswordRequest>) {\r\n return useMutation({\r\n mutationFn: changePassword,\r\n ...options,\r\n });\r\n}\r\n\r\nexport type {\r\n AuthSession,\r\n ChangePasswordRequest,\r\n ConsumeImpersonationRequest,\r\n LoginRequest,\r\n LoginResponse,\r\n Role,\r\n SelectTenantRequest,\r\n SwitchRoleRequest,\r\n TenantOption,\r\n UserProfile,\r\n};\r\n"]}
1
+ {"version":3,"sources":["../src/modules/auth/auth.api.ts"],"names":[],"mappings":"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","file":"chunk-KPGOAAOU.js","sourcesContent":["import type {\r\n AuthSession,\r\n ChangePasswordRequest,\r\n ConsumeImpersonationRequest,\r\n LoginRequest,\r\n LoginResponse,\r\n Role,\r\n SelectTenantRequest,\r\n SwitchRoleRequest,\r\n Tenant,\r\n TenantOption,\r\n UserProfile,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { authKeys } from \"../../keys\";\r\nimport type { MutationOptionsCustom, QueryOptionsWithoutKey } from \"../../client/types\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.auth;\r\n\r\nexport interface AuthUserSummary {\r\n id: string;\r\n username: string;\r\n email: string | null;\r\n fullName: string;\r\n}\r\n\r\n/** Payload `GET /auth/me`: sesi + profil ringkas user + tenant aktif. */\r\nexport interface AuthSessionPayload {\r\n session: AuthSession;\r\n user: AuthUserSummary;\r\n tenant: Tenant;\r\n}\r\n\r\nexport async function login(payload: LoginRequest): Promise<LoginResponse> {\r\n return postData<LoginResponse, LoginRequest>(`${ENDPOINT}/login`, payload);\r\n}\r\n\r\nexport async function selectTenant(payload: SelectTenantRequest): Promise<LoginResponse> {\r\n return postData<LoginResponse, SelectTenantRequest>(`${ENDPOINT}/select-tenant`, payload);\r\n}\r\n\r\nexport async function switchRole(payload: SwitchRoleRequest): Promise<AuthSession> {\r\n return postData<AuthSession, SwitchRoleRequest>(`${ENDPOINT}/switch-role`, payload);\r\n}\r\n\r\nexport async function logout(): Promise<void> {\r\n await postData<void>(`${ENDPOINT}/logout`);\r\n}\r\n\r\nexport async function getMe(): Promise<AuthSessionPayload> {\r\n return getData<AuthSessionPayload>(`${ENDPOINT}/me`);\r\n}\r\n\r\nexport async function changePassword(payload: ChangePasswordRequest): Promise<{ message: string }> {\r\n return putData<{ message: string }, ChangePasswordRequest>(`${ENDPOINT}/change-password`, payload);\r\n}\r\n\r\n/** Konsumsi token impersonasi dari sekolaos-admin, terbitkan sesi sekolah dengan isImpersonating: true. */\r\nexport async function consumeImpersonation(payload: ConsumeImpersonationRequest): Promise<AuthSession> {\r\n const res = await postData<{ session: AuthSession }, ConsumeImpersonationRequest>(\r\n `${ENDPOINT}/impersonate/consume`,\r\n payload\r\n );\r\n return res.session;\r\n}\r\n\r\n/** Keluar dari mode penyamaran: hapus cookie sesi sekolah. */\r\nexport async function exitImpersonation(): Promise<void> {\r\n await postData<void>(`${ENDPOINT}/impersonate/exit`);\r\n}\r\n\r\nexport function useConsumeImpersonation(options?: MutationOptionsCustom<AuthSession, ConsumeImpersonationRequest>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: consumeImpersonation,\r\n onSuccess: (data, variables, context) => {\r\n queryClient.invalidateQueries({ queryKey: authKeys.all });\r\n options?.onSuccess?.(data, variables, context);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useExitImpersonation(options?: MutationOptionsCustom<void, void>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: exitImpersonation,\r\n onSuccess: () => {\r\n queryClient.clear();\r\n options?.onSuccess?.(undefined, undefined, undefined);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useMe(options?: QueryOptionsWithoutKey<AuthSessionPayload> & { enabled?: boolean }) {\r\n return useQuery({\r\n queryKey: authKeys.me(),\r\n queryFn: getMe,\r\n enabled: options?.enabled ?? true,\r\n staleTime: 60_000,\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useLogin(options?: MutationOptionsCustom<LoginResponse, LoginRequest>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: login,\r\n onSuccess: (data, variables, context) => {\r\n if (data.status === \"SUCCESS\") {\r\n queryClient.invalidateQueries({ queryKey: authKeys.all });\r\n }\r\n options?.onSuccess?.(data, variables, context);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useSelectTenant(options?: MutationOptionsCustom<LoginResponse, SelectTenantRequest>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: selectTenant,\r\n onSuccess: (data, variables, context) => {\r\n queryClient.invalidateQueries({ queryKey: authKeys.all });\r\n options?.onSuccess?.(data, variables, context);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useSwitchRole(options?: MutationOptionsCustom<AuthSession, SwitchRoleRequest>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: switchRole,\r\n onSuccess: (data, variables, context) => {\r\n queryClient.invalidateQueries({ queryKey: authKeys.all });\r\n options?.onSuccess?.(data, variables, context);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useLogout(options?: MutationOptionsCustom<void, void>) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: logout,\r\n onSuccess: () => {\r\n queryClient.clear();\r\n options?.onSuccess?.(undefined, undefined, undefined);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useChangePassword(options?: MutationOptionsCustom<{ message: string }, ChangePasswordRequest>) {\r\n return useMutation({\r\n mutationFn: changePassword,\r\n ...options,\r\n });\r\n}\r\n\r\nexport type {\r\n AuthSession,\r\n ChangePasswordRequest,\r\n ConsumeImpersonationRequest,\r\n LoginRequest,\r\n LoginResponse,\r\n Role,\r\n SelectTenantRequest,\r\n SwitchRoleRequest,\r\n TenantOption,\r\n UserProfile,\r\n};\r\n"]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var chunk3TOBH3YY_cjs = require('./chunk-3TOBH3YY.cjs');
4
4
  var chunkNGFFI4XQ_cjs = require('./chunk-NGFFI4XQ.cjs');
5
- var chunkHISL2IF2_cjs = require('./chunk-HISL2IF2.cjs');
5
+ var chunkNUKJPRPS_cjs = require('./chunk-NUKJPRPS.cjs');
6
6
  var reactQuery = require('@tanstack/react-query');
7
7
 
8
8
  var ENDPOINT = chunk3TOBH3YY_cjs.API_ENDPOINTS.teachingSchedules;
@@ -26,13 +26,13 @@ async function copyRoster(payload) {
26
26
  }
27
27
  function useTeachingSchedules(params) {
28
28
  return reactQuery.useQuery({
29
- queryKey: chunkHISL2IF2_cjs.scheduleKeys.list(params),
29
+ queryKey: chunkNUKJPRPS_cjs.scheduleKeys.list(params),
30
30
  queryFn: () => listTeachingSchedules(params)
31
31
  });
32
32
  }
33
33
  function useScheduleConflict(params, options) {
34
34
  return reactQuery.useQuery({
35
- queryKey: chunkHISL2IF2_cjs.scheduleKeys.conflicts(params),
35
+ queryKey: chunkNUKJPRPS_cjs.scheduleKeys.conflicts(params),
36
36
  queryFn: () => checkScheduleConflict(params),
37
37
  ...options
38
38
  });
@@ -42,7 +42,7 @@ function useCreateTeachingSchedule(options) {
42
42
  return reactQuery.useMutation({
43
43
  mutationFn: createTeachingSchedule,
44
44
  onSuccess: (data, vars, ctx) => {
45
- queryClient.invalidateQueries({ queryKey: chunkHISL2IF2_cjs.scheduleKeys.all });
45
+ queryClient.invalidateQueries({ queryKey: chunkNUKJPRPS_cjs.scheduleKeys.all });
46
46
  options?.onSuccess?.(data, vars, ctx);
47
47
  },
48
48
  ...options
@@ -53,7 +53,7 @@ function useUpdateTeachingSchedule(options) {
53
53
  return reactQuery.useMutation({
54
54
  mutationFn: ({ id, payload }) => updateTeachingSchedule(id, payload),
55
55
  onSuccess: (data, vars, ctx) => {
56
- queryClient.invalidateQueries({ queryKey: chunkHISL2IF2_cjs.scheduleKeys.all });
56
+ queryClient.invalidateQueries({ queryKey: chunkNUKJPRPS_cjs.scheduleKeys.all });
57
57
  options?.onSuccess?.(data, vars, ctx);
58
58
  },
59
59
  ...options
@@ -64,7 +64,7 @@ function useBatchCreateTeachingSchedules(options) {
64
64
  return reactQuery.useMutation({
65
65
  mutationFn: batchCreateTeachingSchedules,
66
66
  onSuccess: (data, vars, ctx) => {
67
- queryClient.invalidateQueries({ queryKey: chunkHISL2IF2_cjs.scheduleKeys.all });
67
+ queryClient.invalidateQueries({ queryKey: chunkNUKJPRPS_cjs.scheduleKeys.all });
68
68
  options?.onSuccess?.(data, vars, ctx);
69
69
  },
70
70
  ...options
@@ -75,7 +75,7 @@ function useCopyRoster(options) {
75
75
  return reactQuery.useMutation({
76
76
  mutationFn: copyRoster,
77
77
  onSuccess: (data, vars, ctx) => {
78
- queryClient.invalidateQueries({ queryKey: chunkHISL2IF2_cjs.scheduleKeys.all });
78
+ queryClient.invalidateQueries({ queryKey: chunkNUKJPRPS_cjs.scheduleKeys.all });
79
79
  options?.onSuccess?.(data, vars, ctx);
80
80
  },
81
81
  ...options
@@ -94,5 +94,5 @@ exports.useCreateTeachingSchedule = useCreateTeachingSchedule;
94
94
  exports.useScheduleConflict = useScheduleConflict;
95
95
  exports.useTeachingSchedules = useTeachingSchedules;
96
96
  exports.useUpdateTeachingSchedule = useUpdateTeachingSchedule;
97
- //# sourceMappingURL=chunk-23XAR4OH.cjs.map
98
- //# sourceMappingURL=chunk-23XAR4OH.cjs.map
97
+ //# sourceMappingURL=chunk-N6Y2VQWI.cjs.map
98
+ //# sourceMappingURL=chunk-N6Y2VQWI.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/modules/teaching-schedule/teaching-schedule.api.ts"],"names":["API_ENDPOINTS","getData","postData","putData","useQuery","scheduleKeys","useQueryClient","useMutation"],"mappings":";;;;;;;AAeA,IAAM,WAAWA,+BAAA,CAAc,iBAAA;AAc/B,eAAsB,sBACpB,MAAA,EAC6B;AAC7B,EAAA,OAAOC,yBAAA,CAA4B,QAAA,EAAU,EAAE,MAAA,EAAQ,CAAA;AACzD;AAEA,eAAsB,uBACpB,OAAA,EAC2B;AAC3B,EAAA,OAAOC,0BAAA,CAAwD,UAAU,OAAO,CAAA;AAClF;AAEA,eAAsB,sBAAA,CACpB,IACA,OAAA,EAC2B;AAC3B,EAAA,OAAOC,0BAAuD,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,IAAI,OAAO,CAAA;AAC5F;AAEA,eAAsB,sBACpB,MAAA,EACiC;AACjC,EAAA,OAAOF,0BAAgC,CAAA,EAAG,QAAQ,CAAA,UAAA,CAAA,EAAc,EAAE,QAAQ,CAAA;AAC5E;AAEA,eAAsB,6BACpB,OAAA,EAC6B;AAC7B,EAAA,OAAOC,0BAAA,CAA+D,CAAA,EAAG,QAAQ,CAAA,MAAA,CAAA,EAAU,OAAO,CAAA;AACpG;AAEA,eAAsB,WAAW,OAAA,EAA8D;AAC7F,EAAA,OAAOA,0BAAA,CAAqD,CAAA,EAAG,QAAQ,CAAA,KAAA,CAAA,EAAS,OAAO,CAAA;AACzF;AAEO,SAAS,qBAAqB,MAAA,EAAoC;AACvE,EAAA,OAAOE,mBAAA,CAAS;AAAA,IACd,QAAA,EAAUC,8BAAA,CAAa,IAAA,CAAK,MAA6C,CAAA;AAAA,IACzE,OAAA,EAAS,MAAM,qBAAA,CAAsB,MAAM;AAAA,GAC5C,CAAA;AACH;AAEO,SAAS,mBAAA,CACd,QACA,OAAA,EACA;AACA,EAAA,OAAOD,mBAAA,CAAS;AAAA,IACd,QAAA,EAAUC,8BAAA,CAAa,SAAA,CAAU,MAA4C,CAAA;AAAA,IAC7E,OAAA,EAAS,MAAM,qBAAA,CAAsB,MAAM,CAAA;AAAA,IAC3C,GAAG;AAAA,GACJ,CAAA;AACH;AAEO,SAAS,0BACd,OAAA,EACA;AACA,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,sBAAA;AAAA,IACZ,SAAA,EAAW,CAAC,IAAA,EAAM,IAAA,EAAM,GAAA,KAAQ;AAC9B,MAAA,WAAA,CAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,8BAAA,CAAa,KAAK,CAAA;AAC5D,MAAA,OAAA,EAAS,SAAA,GAAY,IAAA,EAAM,IAAA,EAAM,GAAG,CAAA;AAAA,IACtC,CAAA;AAAA,IACA,GAAG;AAAA,GACJ,CAAA;AACH;AAEO,SAAS,0BACd,OAAA,EACA;AACA,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,CAAC,EAAE,EAAA,EAAI,SAAQ,KACzB,sBAAA,CAAuB,IAAI,OAAO,CAAA;AAAA,IACpC,SAAA,EAAW,CAAC,IAAA,EAAM,IAAA,EAAM,GAAA,KAAQ;AAC9B,MAAA,WAAA,CAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,8BAAA,CAAa,KAAK,CAAA;AAC5D,MAAA,OAAA,EAAS,SAAA,GAAY,IAAA,EAAM,IAAA,EAAM,GAAG,CAAA;AAAA,IACtC,CAAA;AAAA,IACA,GAAG;AAAA,GACJ,CAAA;AACH;AAEO,SAAS,gCACd,OAAA,EACA;AACA,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,4BAAA;AAAA,IACZ,SAAA,EAAW,CAAC,IAAA,EAAM,IAAA,EAAM,GAAA,KAAQ;AAC9B,MAAA,WAAA,CAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,8BAAA,CAAa,KAAK,CAAA;AAC5D,MAAA,OAAA,EAAS,SAAA,GAAY,IAAA,EAAM,IAAA,EAAM,GAAG,CAAA;AAAA,IACtC,CAAA;AAAA,IACA,GAAG;AAAA,GACJ,CAAA;AACH;AAEO,SAAS,cACd,OAAA,EACA;AACA,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,UAAA;AAAA,IACZ,SAAA,EAAW,CAAC,IAAA,EAAM,IAAA,EAAM,GAAA,KAAQ;AAC9B,MAAA,WAAA,CAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUF,8BAAA,CAAa,KAAK,CAAA;AAC5D,MAAA,OAAA,EAAS,SAAA,GAAY,IAAA,EAAM,IAAA,EAAM,GAAG,CAAA;AAAA,IACtC,CAAA;AAAA,IACA,GAAG;AAAA,GACJ,CAAA;AACH","file":"chunk-23XAR4OH.cjs","sourcesContent":["import type {\r\n BatchCreateTeachingScheduleInput,\r\n CheckScheduleConflictQuery,\r\n CopyRosterRequestInput,\r\n CreateTeachingScheduleInput,\r\n TeachingSchedule,\r\n TeachingScheduleListQuery,\r\n UpdateTeachingScheduleInput,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport type { MutationOptionsCustom, QueryOptionsWithoutKey } from \"../../client/types\";\r\nimport { scheduleKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.teachingSchedules;\r\n\r\nexport type ScheduleConflictType = \"TEACHER\" | \"CLASSROOM\";\r\n\r\nexport interface ScheduleConflictResult {\r\n hasConflict: boolean;\r\n conflictType: ScheduleConflictType | null;\r\n conflictingSchedule: TeachingSchedule | null;\r\n}\r\n\r\nexport interface AffectedRowsResult {\r\n totalCreated: number;\r\n}\r\n\r\nexport async function listTeachingSchedules(\r\n params?: TeachingScheduleListQuery\r\n): Promise<TeachingSchedule[]> {\r\n return getData<TeachingSchedule[]>(ENDPOINT, { params });\r\n}\r\n\r\nexport async function createTeachingSchedule(\r\n payload: CreateTeachingScheduleInput\r\n): Promise<TeachingSchedule> {\r\n return postData<TeachingSchedule, CreateTeachingScheduleInput>(ENDPOINT, payload);\r\n}\r\n\r\nexport async function updateTeachingSchedule(\r\n id: string,\r\n payload: UpdateTeachingScheduleInput\r\n): Promise<TeachingSchedule> {\r\n return putData<TeachingSchedule, UpdateTeachingScheduleInput>(`${ENDPOINT}/${id}`, payload);\r\n}\r\n\r\nexport async function checkScheduleConflict(\r\n params: CheckScheduleConflictQuery\r\n): Promise<ScheduleConflictResult> {\r\n return getData<ScheduleConflictResult>(`${ENDPOINT}/conflicts`, { params });\r\n}\r\n\r\nexport async function batchCreateTeachingSchedules(\r\n payload: BatchCreateTeachingScheduleInput\r\n): Promise<AffectedRowsResult> {\r\n return postData<AffectedRowsResult, BatchCreateTeachingScheduleInput>(`${ENDPOINT}/batch`, payload);\r\n}\r\n\r\nexport async function copyRoster(payload: CopyRosterRequestInput): Promise<AffectedRowsResult> {\r\n return postData<AffectedRowsResult, CopyRosterRequestInput>(`${ENDPOINT}/copy`, payload);\r\n}\r\n\r\nexport function useTeachingSchedules(params?: TeachingScheduleListQuery) {\r\n return useQuery({\r\n queryKey: scheduleKeys.list(params as Record<string, unknown> | undefined),\r\n queryFn: () => listTeachingSchedules(params),\r\n });\r\n}\r\n\r\nexport function useScheduleConflict(\r\n params: CheckScheduleConflictQuery,\r\n options?: QueryOptionsWithoutKey<ScheduleConflictResult>\r\n) {\r\n return useQuery({\r\n queryKey: scheduleKeys.conflicts(params as unknown as Record<string, unknown>),\r\n queryFn: () => checkScheduleConflict(params),\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useCreateTeachingSchedule(\r\n options?: MutationOptionsCustom<TeachingSchedule, CreateTeachingScheduleInput>\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createTeachingSchedule,\r\n onSuccess: (data, vars, ctx) => {\r\n queryClient.invalidateQueries({ queryKey: scheduleKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useUpdateTeachingSchedule(\r\n options?: MutationOptionsCustom<TeachingSchedule, { id: string; payload: UpdateTeachingScheduleInput }>\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ id, payload }: { id: string; payload: UpdateTeachingScheduleInput }) =>\r\n updateTeachingSchedule(id, payload),\r\n onSuccess: (data, vars, ctx) => {\r\n queryClient.invalidateQueries({ queryKey: scheduleKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useBatchCreateTeachingSchedules(\r\n options?: MutationOptionsCustom<AffectedRowsResult, BatchCreateTeachingScheduleInput>\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: batchCreateTeachingSchedules,\r\n onSuccess: (data, vars, ctx) => {\r\n queryClient.invalidateQueries({ queryKey: scheduleKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useCopyRoster(\r\n options?: MutationOptionsCustom<AffectedRowsResult, CopyRosterRequestInput>\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: copyRoster,\r\n onSuccess: (data, vars, ctx) => {\r\n queryClient.invalidateQueries({ queryKey: scheduleKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport type {\r\n BatchCreateTeachingScheduleInput,\r\n CheckScheduleConflictQuery,\r\n CopyRosterRequestInput,\r\n CreateTeachingScheduleInput,\r\n TeachingSchedule,\r\n TeachingScheduleListQuery,\r\n UpdateTeachingScheduleInput,\r\n};\r\n"]}
1
+ {"version":3,"sources":["../src/modules/teaching-schedule/teaching-schedule.api.ts"],"names":["API_ENDPOINTS","getData","postData","putData","useQuery","scheduleKeys","useQueryClient","useMutation"],"mappings":"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","file":"chunk-N6Y2VQWI.cjs","sourcesContent":["import type {\r\n BatchCreateTeachingScheduleInput,\r\n CheckScheduleConflictQuery,\r\n CopyRosterRequestInput,\r\n CreateTeachingScheduleInput,\r\n TeachingSchedule,\r\n TeachingScheduleListQuery,\r\n UpdateTeachingScheduleInput,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, postData, putData } from \"../../client/http\";\r\nimport type { MutationOptionsCustom, QueryOptionsWithoutKey } from \"../../client/types\";\r\nimport { scheduleKeys } from \"../../keys\";\r\n\r\nconst ENDPOINT = API_ENDPOINTS.teachingSchedules;\r\n\r\nexport type ScheduleConflictType = \"TEACHER\" | \"CLASSROOM\";\r\n\r\nexport interface ScheduleConflictResult {\r\n hasConflict: boolean;\r\n conflictType: ScheduleConflictType | null;\r\n conflictingSchedule: TeachingSchedule | null;\r\n}\r\n\r\nexport interface AffectedRowsResult {\r\n totalCreated: number;\r\n}\r\n\r\nexport async function listTeachingSchedules(\r\n params?: TeachingScheduleListQuery\r\n): Promise<TeachingSchedule[]> {\r\n return getData<TeachingSchedule[]>(ENDPOINT, { params });\r\n}\r\n\r\nexport async function createTeachingSchedule(\r\n payload: CreateTeachingScheduleInput\r\n): Promise<TeachingSchedule> {\r\n return postData<TeachingSchedule, CreateTeachingScheduleInput>(ENDPOINT, payload);\r\n}\r\n\r\nexport async function updateTeachingSchedule(\r\n id: string,\r\n payload: UpdateTeachingScheduleInput\r\n): Promise<TeachingSchedule> {\r\n return putData<TeachingSchedule, UpdateTeachingScheduleInput>(`${ENDPOINT}/${id}`, payload);\r\n}\r\n\r\nexport async function checkScheduleConflict(\r\n params: CheckScheduleConflictQuery\r\n): Promise<ScheduleConflictResult> {\r\n return getData<ScheduleConflictResult>(`${ENDPOINT}/conflicts`, { params });\r\n}\r\n\r\nexport async function batchCreateTeachingSchedules(\r\n payload: BatchCreateTeachingScheduleInput\r\n): Promise<AffectedRowsResult> {\r\n return postData<AffectedRowsResult, BatchCreateTeachingScheduleInput>(`${ENDPOINT}/batch`, payload);\r\n}\r\n\r\nexport async function copyRoster(payload: CopyRosterRequestInput): Promise<AffectedRowsResult> {\r\n return postData<AffectedRowsResult, CopyRosterRequestInput>(`${ENDPOINT}/copy`, payload);\r\n}\r\n\r\nexport function useTeachingSchedules(params?: TeachingScheduleListQuery) {\r\n return useQuery({\r\n queryKey: scheduleKeys.list(params as Record<string, unknown> | undefined),\r\n queryFn: () => listTeachingSchedules(params),\r\n });\r\n}\r\n\r\nexport function useScheduleConflict(\r\n params: CheckScheduleConflictQuery,\r\n options?: QueryOptionsWithoutKey<ScheduleConflictResult>\r\n) {\r\n return useQuery({\r\n queryKey: scheduleKeys.conflicts(params as unknown as Record<string, unknown>),\r\n queryFn: () => checkScheduleConflict(params),\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useCreateTeachingSchedule(\r\n options?: MutationOptionsCustom<TeachingSchedule, CreateTeachingScheduleInput>\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createTeachingSchedule,\r\n onSuccess: (data, vars, ctx) => {\r\n queryClient.invalidateQueries({ queryKey: scheduleKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useUpdateTeachingSchedule(\r\n options?: MutationOptionsCustom<TeachingSchedule, { id: string; payload: UpdateTeachingScheduleInput }>\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ id, payload }: { id: string; payload: UpdateTeachingScheduleInput }) =>\r\n updateTeachingSchedule(id, payload),\r\n onSuccess: (data, vars, ctx) => {\r\n queryClient.invalidateQueries({ queryKey: scheduleKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useBatchCreateTeachingSchedules(\r\n options?: MutationOptionsCustom<AffectedRowsResult, BatchCreateTeachingScheduleInput>\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: batchCreateTeachingSchedules,\r\n onSuccess: (data, vars, ctx) => {\r\n queryClient.invalidateQueries({ queryKey: scheduleKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useCopyRoster(\r\n options?: MutationOptionsCustom<AffectedRowsResult, CopyRosterRequestInput>\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: copyRoster,\r\n onSuccess: (data, vars, ctx) => {\r\n queryClient.invalidateQueries({ queryKey: scheduleKeys.all });\r\n options?.onSuccess?.(data, vars, ctx);\r\n },\r\n ...options,\r\n });\r\n}\r\n\r\nexport type {\r\n BatchCreateTeachingScheduleInput,\r\n CheckScheduleConflictQuery,\r\n CopyRosterRequestInput,\r\n CreateTeachingScheduleInput,\r\n TeachingSchedule,\r\n TeachingScheduleListQuery,\r\n UpdateTeachingScheduleInput,\r\n};\r\n"]}
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ var chunk3TOBH3YY_cjs = require('./chunk-3TOBH3YY.cjs');
4
+ var chunkNGFFI4XQ_cjs = require('./chunk-NGFFI4XQ.cjs');
5
+ var chunkNUKJPRPS_cjs = require('./chunk-NUKJPRPS.cjs');
6
+ var reactQuery = require('@tanstack/react-query');
7
+
8
+ async function getRoles() {
9
+ return chunkNGFFI4XQ_cjs.getData(`${chunk3TOBH3YY_cjs.API_ENDPOINTS.users}/roles`);
10
+ }
11
+ async function assignUserRoles(userId, payload) {
12
+ return chunkNGFFI4XQ_cjs.putData(`${chunk3TOBH3YY_cjs.API_ENDPOINTS.users}/${userId}/roles`, payload);
13
+ }
14
+ function useRolesQuery(options) {
15
+ return reactQuery.useQuery({
16
+ queryKey: chunkNUKJPRPS_cjs.roleKeys.list(),
17
+ queryFn: getRoles,
18
+ staleTime: 5 * 6e4,
19
+ ...options
20
+ });
21
+ }
22
+ function useAssignUserRolesMutation(options) {
23
+ const queryClient = reactQuery.useQueryClient();
24
+ return reactQuery.useMutation({
25
+ mutationFn: ({ userId, payload }) => assignUserRoles(userId, payload),
26
+ onSuccess: async (_data, variables) => {
27
+ await queryClient.invalidateQueries({ queryKey: chunkNUKJPRPS_cjs.userKeys.all });
28
+ await queryClient.invalidateQueries({ queryKey: chunkNUKJPRPS_cjs.roleKeys.all });
29
+ options?.onSuccess?.(_data, variables, void 0);
30
+ }
31
+ });
32
+ }
33
+
34
+ exports.assignUserRoles = assignUserRoles;
35
+ exports.getRoles = getRoles;
36
+ exports.useAssignUserRolesMutation = useAssignUserRolesMutation;
37
+ exports.useRolesQuery = useRolesQuery;
38
+ //# sourceMappingURL=chunk-NGEJP5ON.cjs.map
39
+ //# sourceMappingURL=chunk-NGEJP5ON.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/modules/roles/roles.api.ts"],"names":["getData","API_ENDPOINTS","putData","useQuery","roleKeys","useQueryClient","useMutation","userKeys"],"mappings":";;;;;;;AAUA,eAAsB,QAAA,GAAkC;AACtD,EAAA,OAAOA,yBAAA,CAAsB,CAAA,EAAGC,+BAAA,CAAc,KAAK,CAAA,MAAA,CAAQ,CAAA;AAC7D;AAGA,eAAsB,eAAA,CACpB,QACA,OAAA,EACwE;AACxE,EAAA,OAAOC,0BAGL,CAAA,EAAGD,+BAAA,CAAc,KAAK,CAAA,CAAA,EAAI,MAAM,UAAU,OAAO,CAAA;AACrD;AAEO,SAAS,cAAc,OAAA,EAAgD;AAC5E,EAAA,OAAOE,mBAAA,CAAS;AAAA,IACd,QAAA,EAAUC,2BAAS,IAAA,EAAK;AAAA,IACxB,OAAA,EAAS,QAAA;AAAA,IACT,WAAW,CAAA,GAAI,GAAA;AAAA,IACf,GAAG;AAAA,GACJ,CAAA;AACH;AAEO,SAAS,2BACd,OAAA,EAIA;AACA,EAAA,MAAM,cAAcC,yBAAA,EAAe;AACnC,EAAA,OAAOC,sBAAA,CAAY;AAAA,IACjB,UAAA,EAAY,CAAC,EAAE,MAAA,EAAQ,SAAQ,KAC7B,eAAA,CAAgB,QAAQ,OAAO,CAAA;AAAA,IACjC,SAAA,EAAW,OAAO,KAAA,EAAO,SAAA,KAAc;AACrC,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUC,0BAAA,CAAS,KAAK,CAAA;AAC9D,MAAA,MAAM,YAAY,iBAAA,CAAkB,EAAE,QAAA,EAAUH,0BAAA,CAAS,KAAK,CAAA;AAC9D,MAAA,OAAA,EAAS,SAAA,GAAY,KAAA,EAAO,SAAA,EAAW,MAAS,CAAA;AAAA,IAClD;AAAA,GACD,CAAA;AACH","file":"chunk-NGEJP5ON.cjs","sourcesContent":["import type {\r\n AssignUserRolesRequest,\r\n SchoolRole,\r\n} from \"@sekolaos/shared-schema\";\r\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport { API_ENDPOINTS } from \"../../common/endpoints\";\r\nimport { getData, putData } from \"../../client/http\";\r\nimport type { MutationOptionsCustom, QueryOptionsWithoutKey } from \"../../client/types\";\r\nimport { roleKeys, userKeys } from \"../../keys\";\r\n\r\nexport async function getRoles(): Promise<SchoolRole[]> {\r\n return getData<SchoolRole[]>(`${API_ENDPOINTS.users}/roles`);\r\n}\r\n\r\n/** `PUT /api/v1/users/:id/roles` — ganti seluruh peran pengguna pada tahun ajaran. */\r\nexport async function assignUserRoles(\r\n userId: string,\r\n payload: AssignUserRolesRequest\r\n): Promise<{ userId: string; roleIds: string[]; academicYearId: string }> {\r\n return putData<\r\n { userId: string; roleIds: string[]; academicYearId: string },\r\n AssignUserRolesRequest\r\n >(`${API_ENDPOINTS.users}/${userId}/roles`, payload);\r\n}\r\n\r\nexport function useRolesQuery(options?: QueryOptionsWithoutKey<SchoolRole[]>) {\r\n return useQuery({\r\n queryKey: roleKeys.list(),\r\n queryFn: getRoles,\r\n staleTime: 5 * 60_000,\r\n ...options,\r\n });\r\n}\r\n\r\nexport function useAssignUserRolesMutation(\r\n options?: MutationOptionsCustom<\r\n { userId: string; roleIds: string[]; academicYearId: string },\r\n { userId: string; payload: AssignUserRolesRequest }\r\n >\r\n) {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: ({ userId, payload }: { userId: string; payload: AssignUserRolesRequest }) =>\r\n assignUserRoles(userId, payload),\r\n onSuccess: async (_data, variables) => {\r\n await queryClient.invalidateQueries({ queryKey: userKeys.all });\r\n await queryClient.invalidateQueries({ queryKey: roleKeys.all });\r\n options?.onSuccess?.(_data, variables, undefined);\r\n },\r\n });\r\n}\r\n\r\nexport type {\r\n AssignUserRolesRequest,\r\n SchoolRole,\r\n};\r\n"]}
@@ -44,7 +44,19 @@ var attendanceKeys = {
44
44
  all: ["attendance"],
45
45
  history: (params) => [...attendanceKeys.all, "history", params],
46
46
  dynamicQrStream: (params) => [...attendanceKeys.all, "dynamic-qr", params ?? {}],
47
- picketSchedules: (params) => [...attendanceKeys.all, "picket-schedules", params ?? {}]
47
+ picketSchedules: (params) => [...attendanceKeys.all, "picket-schedules", params ?? {}],
48
+ dutyStatus: () => [...attendanceKeys.all, "duty-status"]
49
+ };
50
+ var attendanceShiftKeys = {
51
+ all: ["attendance-shifts"],
52
+ lists: () => [...attendanceShiftKeys.all, "list"],
53
+ list: (params) => [...attendanceShiftKeys.lists(), params ?? {}],
54
+ detail: (targetType) => [...attendanceShiftKeys.all, "detail", targetType]
55
+ };
56
+ var roleKeys = {
57
+ all: ["roles"],
58
+ lists: () => [...roleKeys.all, "list"],
59
+ list: (params) => [...roleKeys.lists(), params ?? {}]
48
60
  };
49
61
  var userKeys = {
50
62
  all: ["users"],
@@ -66,9 +78,11 @@ var systemKeys = {
66
78
 
67
79
  exports.academicYearKeys = academicYearKeys;
68
80
  exports.attendanceKeys = attendanceKeys;
81
+ exports.attendanceShiftKeys = attendanceShiftKeys;
69
82
  exports.authKeys = authKeys;
70
83
  exports.classroomKeys = classroomKeys;
71
84
  exports.leadKeys = leadKeys;
85
+ exports.roleKeys = roleKeys;
72
86
  exports.scheduleKeys = scheduleKeys;
73
87
  exports.studentKeys = studentKeys;
74
88
  exports.subjectKeys = subjectKeys;
@@ -76,5 +90,5 @@ exports.systemKeys = systemKeys;
76
90
  exports.tenantKeys = tenantKeys;
77
91
  exports.uploadKeys = uploadKeys;
78
92
  exports.userKeys = userKeys;
79
- //# sourceMappingURL=chunk-HISL2IF2.cjs.map
80
- //# sourceMappingURL=chunk-HISL2IF2.cjs.map
93
+ //# sourceMappingURL=chunk-NUKJPRPS.cjs.map
94
+ //# sourceMappingURL=chunk-NUKJPRPS.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/keys/index.ts"],"names":[],"mappings":"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","file":"chunk-NUKJPRPS.cjs","sourcesContent":["type Params = Record<string, unknown> | undefined;\r\n\r\nexport const authKeys = {\r\n all: [\"auth\"] as const,\r\n me: () => [...authKeys.all, \"me\"] as const,\r\n selectTenant: () => [...authKeys.all, \"select-tenant\"] as const,\r\n};\r\n\r\nexport const tenantKeys = {\r\n all: [\"tenants\"] as const,\r\n current: () => [...tenantKeys.all, \"current\"] as const,\r\n modules: () => [...tenantKeys.all, \"modules\"] as const,\r\n shifts: (params?: Params) => [...tenantKeys.all, \"shifts\", params ?? {}] as const,\r\n shiftDetail: (targetType: \"SISWA\" | \"GURU\") => [...tenantKeys.all, \"shifts\", targetType] as const,\r\n};\r\n\r\nexport const academicYearKeys = {\r\n all: [\"academic-years\"] as const,\r\n list: (params?: Params) => [...academicYearKeys.all, \"list\", params ?? {}] as const,\r\n detail: (id: string) => [...academicYearKeys.all, \"detail\", id] as const,\r\n};\r\n\r\nexport const subjectKeys = {\r\n all: [\"subjects\"] as const,\r\n list: (params?: Params) => [...subjectKeys.all, \"list\", params ?? {}] as const,\r\n};\r\n\r\nexport const classroomKeys = {\r\n all: [\"classrooms\"] as const,\r\n list: (params?: Params) => [...classroomKeys.all, \"list\", params ?? {}] as const,\r\n detail: (id: string) => [...classroomKeys.all, \"detail\", id] as const,\r\n students: (id: string) => [...classroomKeys.detail(id), \"students\"] as const,\r\n};\r\n\r\nexport const studentKeys = {\r\n all: [\"students\"] as const,\r\n list: (params?: Params) => [...studentKeys.all, \"list\", params ?? {}] as const,\r\n detail: (id: string) => [...studentKeys.all, \"detail\", id] as const,\r\n kioskCache: () => [...studentKeys.all, \"kiosk-cache\"] as const,\r\n qrCode: (id: string) => [...studentKeys.detail(id), \"qr-code\"] as const,\r\n};\r\n\r\nexport const scheduleKeys = {\r\n all: [\"teaching-schedules\"] as const,\r\n list: (params?: Params) => [...scheduleKeys.all, \"list\", params ?? {}] as const,\r\n conflicts: (params: Record<string, unknown>) => [...scheduleKeys.all, \"conflicts\", params] as const,\r\n};\r\n\r\nexport const attendanceKeys = {\r\n all: [\"attendance\"] as const,\r\n history: (params: Record<string, unknown>) => [...attendanceKeys.all, \"history\", params] as const,\r\n dynamicQrStream: (params?: Record<string, unknown>) =>\r\n [...attendanceKeys.all, \"dynamic-qr\", params ?? {}] as const,\r\n picketSchedules: (params?: Params) => [...attendanceKeys.all, \"picket-schedules\", params ?? {}] as const,\r\n dutyStatus: () => [...attendanceKeys.all, \"duty-status\"] as const,\r\n};\r\n\r\n/** Query key factory khusus CRUD shift presensi (dipakai tenant + attendance). */\r\nexport const attendanceShiftKeys = {\r\n all: [\"attendance-shifts\"] as const,\r\n lists: () => [...attendanceShiftKeys.all, \"list\"] as const,\r\n list: (params?: Params) => [...attendanceShiftKeys.lists(), params ?? {}] as const,\r\n detail: (targetType: \"SISWA\" | \"GURU\") => [...attendanceShiftKeys.all, \"detail\", targetType] as const,\r\n};\r\n\r\nexport const roleKeys = {\r\n all: [\"roles\"] as const,\r\n lists: () => [...roleKeys.all, \"list\"] as const,\r\n list: (params?: Params) => [...roleKeys.lists(), params ?? {}] as const,\r\n};\r\n\r\nexport const userKeys = {\r\n all: [\"users\"] as const,\r\n roles: () => [...userKeys.all, \"roles\"] as const,\r\n teachers: (params?: Params) => [...userKeys.all, \"teachers\", \"list\", params ?? {}] as const,\r\n teacherDetail: (id: string) => [...userKeys.all, \"teachers\", \"detail\", id] as const,\r\n};\r\n\r\nexport const leadKeys = {\r\n all: [\"leads\"] as const,\r\n list: (params?: Params) => [...leadKeys.all, \"list\", params ?? {}] as const,\r\n};\r\n\r\nexport const uploadKeys = {\r\n all: [\"uploads\"] as const,\r\n};\r\n\r\nexport const systemKeys = {\r\n all: [\"system\"] as const,\r\n health: () => [...systemKeys.all, \"health\"] as const,\r\n};\r\n\r\nexport * from \"./platform-admin.keys\";\r\n"]}