@sekolaos/shared-api 1.4.0 → 1.4.1

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.
@@ -14,14 +14,14 @@ async function getAttendanceShiftDetail(targetType) {
14
14
  }
15
15
  async function createAttendanceShift(payload) {
16
16
  return postData(
17
- `${TENANT_ENDPOINT}/shifts`,
17
+ `${TENANT_ENDPOINT}/shifts/${payload.targetType}`,
18
18
  payload
19
19
  );
20
20
  }
21
21
  async function updateAttendanceShift(targetType, payload) {
22
22
  return putData(
23
- `${TENANT_ENDPOINT}/shifts/${targetType}`,
24
- payload
23
+ `${TENANT_ENDPOINT}/shifts`,
24
+ { [targetType]: payload }
25
25
  );
26
26
  }
27
27
  async function deleteAttendanceShift(targetType) {
@@ -209,5 +209,5 @@ function useStudentBatchSyncMutation(options) {
209
209
  }
210
210
 
211
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
212
+ //# sourceMappingURL=chunk-2YBLKPOL.js.map
213
+ //# sourceMappingURL=chunk-2YBLKPOL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/modules/attendance/attendance.api.ts"],"names":[],"mappings":"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","file":"chunk-2YBLKPOL.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/${payload.targetType}`,\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, Record<string, unknown>>(\r\n `${TENANT_ENDPOINT}/shifts`,\r\n { [targetType]: 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"]}
@@ -16,14 +16,14 @@ async function getAttendanceShiftDetail(targetType) {
16
16
  }
17
17
  async function createAttendanceShift(payload) {
18
18
  return chunkNGFFI4XQ_cjs.postData(
19
- `${TENANT_ENDPOINT}/shifts`,
19
+ `${TENANT_ENDPOINT}/shifts/${payload.targetType}`,
20
20
  payload
21
21
  );
22
22
  }
23
23
  async function updateAttendanceShift(targetType, payload) {
24
24
  return chunkNGFFI4XQ_cjs.putData(
25
- `${TENANT_ENDPOINT}/shifts/${targetType}`,
26
- payload
25
+ `${TENANT_ENDPOINT}/shifts`,
26
+ { [targetType]: payload }
27
27
  );
28
28
  }
29
29
  async function deleteAttendanceShift(targetType) {
@@ -240,5 +240,5 @@ exports.useUpdateAttendanceShiftMutation = useUpdateAttendanceShiftMutation;
240
240
  exports.useUpdateClassAttendance = useUpdateClassAttendance;
241
241
  exports.useVerifyDynamicQr = useVerifyDynamicQr;
242
242
  exports.verifyDynamicQr = verifyDynamicQr;
243
- //# sourceMappingURL=chunk-XGKBOKII.cjs.map
244
- //# sourceMappingURL=chunk-XGKBOKII.cjs.map
243
+ //# sourceMappingURL=chunk-4I2DP4CT.cjs.map
244
+ //# sourceMappingURL=chunk-4I2DP4CT.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/modules/attendance/attendance.api.ts"],"names":["API_ENDPOINTS","getData","postData","putData","apiClient","getPaginated","useQuery","attendanceKeys","useQueryClient","useMutation","attendanceShiftKeys"],"mappings":"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","file":"chunk-4I2DP4CT.cjs","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/${payload.targetType}`,\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, Record<string, unknown>>(\r\n `${TENANT_ENDPOINT}/shifts`,\r\n { [targetType]: 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"]}
package/dist/index.cjs CHANGED
@@ -13,7 +13,7 @@ var chunkEXEAVSTX_cjs = require('./chunk-EXEAVSTX.cjs');
13
13
  var chunk2FTS6JMO_cjs = require('./chunk-2FTS6JMO.cjs');
14
14
  require('./chunk-WF63F6RJ.cjs');
15
15
  var chunkIWV6SOVN_cjs = require('./chunk-IWV6SOVN.cjs');
16
- var chunkXGKBOKII_cjs = require('./chunk-XGKBOKII.cjs');
16
+ var chunk4I2DP4CT_cjs = require('./chunk-4I2DP4CT.cjs');
17
17
  var chunkV7QGZZXE_cjs = require('./chunk-V7QGZZXE.cjs');
18
18
  var chunkUJN47JNP_cjs = require('./chunk-UJN47JNP.cjs');
19
19
  var chunk3TOBH3YY_cjs = require('./chunk-3TOBH3YY.cjs');
@@ -463,123 +463,123 @@ Object.defineProperty(exports, "useUpdateAcademicYear", {
463
463
  });
464
464
  Object.defineProperty(exports, "batchSyncAttendance", {
465
465
  enumerable: true,
466
- get: function () { return chunkXGKBOKII_cjs.batchSyncAttendance; }
466
+ get: function () { return chunk4I2DP4CT_cjs.batchSyncAttendance; }
467
467
  });
468
468
  Object.defineProperty(exports, "createAttendanceShift", {
469
469
  enumerable: true,
470
- get: function () { return chunkXGKBOKII_cjs.createAttendanceShift; }
470
+ get: function () { return chunk4I2DP4CT_cjs.createAttendanceShift; }
471
471
  });
472
472
  Object.defineProperty(exports, "createPicketAssignment", {
473
473
  enumerable: true,
474
- get: function () { return chunkXGKBOKII_cjs.createPicketAssignment; }
474
+ get: function () { return chunk4I2DP4CT_cjs.createPicketAssignment; }
475
475
  });
476
476
  Object.defineProperty(exports, "deleteAttendanceShift", {
477
477
  enumerable: true,
478
- get: function () { return chunkXGKBOKII_cjs.deleteAttendanceShift; }
478
+ get: function () { return chunk4I2DP4CT_cjs.deleteAttendanceShift; }
479
479
  });
480
480
  Object.defineProperty(exports, "getAttendanceHistory", {
481
481
  enumerable: true,
482
- get: function () { return chunkXGKBOKII_cjs.getAttendanceHistory; }
482
+ get: function () { return chunk4I2DP4CT_cjs.getAttendanceHistory; }
483
483
  });
484
484
  Object.defineProperty(exports, "getAttendanceShiftDetail", {
485
485
  enumerable: true,
486
- get: function () { return chunkXGKBOKII_cjs.getAttendanceShiftDetail; }
486
+ get: function () { return chunk4I2DP4CT_cjs.getAttendanceShiftDetail; }
487
487
  });
488
488
  Object.defineProperty(exports, "getAttendanceShifts", {
489
489
  enumerable: true,
490
- get: function () { return chunkXGKBOKII_cjs.getAttendanceShifts; }
490
+ get: function () { return chunk4I2DP4CT_cjs.getAttendanceShifts; }
491
491
  });
492
492
  Object.defineProperty(exports, "getDutyStatus", {
493
493
  enumerable: true,
494
- get: function () { return chunkXGKBOKII_cjs.getDutyStatus; }
494
+ get: function () { return chunk4I2DP4CT_cjs.getDutyStatus; }
495
495
  });
496
496
  Object.defineProperty(exports, "getDynamicQrStream", {
497
497
  enumerable: true,
498
- get: function () { return chunkXGKBOKII_cjs.getDynamicQrStream; }
498
+ get: function () { return chunk4I2DP4CT_cjs.getDynamicQrStream; }
499
499
  });
500
500
  Object.defineProperty(exports, "listPicketSchedules", {
501
501
  enumerable: true,
502
- get: function () { return chunkXGKBOKII_cjs.listPicketSchedules; }
502
+ get: function () { return chunk4I2DP4CT_cjs.listPicketSchedules; }
503
503
  });
504
504
  Object.defineProperty(exports, "recordManualStudentAttendance", {
505
505
  enumerable: true,
506
- get: function () { return chunkXGKBOKII_cjs.recordManualStudentAttendance; }
506
+ get: function () { return chunk4I2DP4CT_cjs.recordManualStudentAttendance; }
507
507
  });
508
508
  Object.defineProperty(exports, "studentBatchSync", {
509
509
  enumerable: true,
510
- get: function () { return chunkXGKBOKII_cjs.studentBatchSync; }
510
+ get: function () { return chunk4I2DP4CT_cjs.studentBatchSync; }
511
511
  });
512
512
  Object.defineProperty(exports, "updateAttendanceShift", {
513
513
  enumerable: true,
514
- get: function () { return chunkXGKBOKII_cjs.updateAttendanceShift; }
514
+ get: function () { return chunk4I2DP4CT_cjs.updateAttendanceShift; }
515
515
  });
516
516
  Object.defineProperty(exports, "updateClassAttendance", {
517
517
  enumerable: true,
518
- get: function () { return chunkXGKBOKII_cjs.updateClassAttendance; }
518
+ get: function () { return chunk4I2DP4CT_cjs.updateClassAttendance; }
519
519
  });
520
520
  Object.defineProperty(exports, "useAttendanceHistory", {
521
521
  enumerable: true,
522
- get: function () { return chunkXGKBOKII_cjs.useAttendanceHistory; }
522
+ get: function () { return chunk4I2DP4CT_cjs.useAttendanceHistory; }
523
523
  });
524
524
  Object.defineProperty(exports, "useAttendanceShiftDetailQuery", {
525
525
  enumerable: true,
526
- get: function () { return chunkXGKBOKII_cjs.useAttendanceShiftDetailQuery; }
526
+ get: function () { return chunk4I2DP4CT_cjs.useAttendanceShiftDetailQuery; }
527
527
  });
528
528
  Object.defineProperty(exports, "useAttendanceShiftsQuery", {
529
529
  enumerable: true,
530
- get: function () { return chunkXGKBOKII_cjs.useAttendanceShiftsQuery; }
530
+ get: function () { return chunk4I2DP4CT_cjs.useAttendanceShiftsQuery; }
531
531
  });
532
532
  Object.defineProperty(exports, "useBatchSyncAttendance", {
533
533
  enumerable: true,
534
- get: function () { return chunkXGKBOKII_cjs.useBatchSyncAttendance; }
534
+ get: function () { return chunk4I2DP4CT_cjs.useBatchSyncAttendance; }
535
535
  });
536
536
  Object.defineProperty(exports, "useCreateAttendanceShiftMutation", {
537
537
  enumerable: true,
538
- get: function () { return chunkXGKBOKII_cjs.useCreateAttendanceShiftMutation; }
538
+ get: function () { return chunk4I2DP4CT_cjs.useCreateAttendanceShiftMutation; }
539
539
  });
540
540
  Object.defineProperty(exports, "useCreatePicketAssignment", {
541
541
  enumerable: true,
542
- get: function () { return chunkXGKBOKII_cjs.useCreatePicketAssignment; }
542
+ get: function () { return chunk4I2DP4CT_cjs.useCreatePicketAssignment; }
543
543
  });
544
544
  Object.defineProperty(exports, "useDeleteAttendanceShiftMutation", {
545
545
  enumerable: true,
546
- get: function () { return chunkXGKBOKII_cjs.useDeleteAttendanceShiftMutation; }
546
+ get: function () { return chunk4I2DP4CT_cjs.useDeleteAttendanceShiftMutation; }
547
547
  });
548
548
  Object.defineProperty(exports, "useDutyStatusQuery", {
549
549
  enumerable: true,
550
- get: function () { return chunkXGKBOKII_cjs.useDutyStatusQuery; }
550
+ get: function () { return chunk4I2DP4CT_cjs.useDutyStatusQuery; }
551
551
  });
552
552
  Object.defineProperty(exports, "useDynamicQrStream", {
553
553
  enumerable: true,
554
- get: function () { return chunkXGKBOKII_cjs.useDynamicQrStream; }
554
+ get: function () { return chunk4I2DP4CT_cjs.useDynamicQrStream; }
555
555
  });
556
556
  Object.defineProperty(exports, "useManualStudentAttendanceMutation", {
557
557
  enumerable: true,
558
- get: function () { return chunkXGKBOKII_cjs.useManualStudentAttendanceMutation; }
558
+ get: function () { return chunk4I2DP4CT_cjs.useManualStudentAttendanceMutation; }
559
559
  });
560
560
  Object.defineProperty(exports, "usePicketSchedules", {
561
561
  enumerable: true,
562
- get: function () { return chunkXGKBOKII_cjs.usePicketSchedules; }
562
+ get: function () { return chunk4I2DP4CT_cjs.usePicketSchedules; }
563
563
  });
564
564
  Object.defineProperty(exports, "useStudentBatchSyncMutation", {
565
565
  enumerable: true,
566
- get: function () { return chunkXGKBOKII_cjs.useStudentBatchSyncMutation; }
566
+ get: function () { return chunk4I2DP4CT_cjs.useStudentBatchSyncMutation; }
567
567
  });
568
568
  Object.defineProperty(exports, "useUpdateAttendanceShiftMutation", {
569
569
  enumerable: true,
570
- get: function () { return chunkXGKBOKII_cjs.useUpdateAttendanceShiftMutation; }
570
+ get: function () { return chunk4I2DP4CT_cjs.useUpdateAttendanceShiftMutation; }
571
571
  });
572
572
  Object.defineProperty(exports, "useUpdateClassAttendance", {
573
573
  enumerable: true,
574
- get: function () { return chunkXGKBOKII_cjs.useUpdateClassAttendance; }
574
+ get: function () { return chunk4I2DP4CT_cjs.useUpdateClassAttendance; }
575
575
  });
576
576
  Object.defineProperty(exports, "useVerifyDynamicQr", {
577
577
  enumerable: true,
578
- get: function () { return chunkXGKBOKII_cjs.useVerifyDynamicQr; }
578
+ get: function () { return chunk4I2DP4CT_cjs.useVerifyDynamicQr; }
579
579
  });
580
580
  Object.defineProperty(exports, "verifyDynamicQr", {
581
581
  enumerable: true,
582
- get: function () { return chunkXGKBOKII_cjs.verifyDynamicQr; }
582
+ get: function () { return chunk4I2DP4CT_cjs.verifyDynamicQr; }
583
583
  });
584
584
  Object.defineProperty(exports, "changePassword", {
585
585
  enumerable: true,
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ export { createTenant, getAttendanceShift, getCurrentTenant, getTenantModules, l
11
11
  export { SekolaosQueryProvider, createDefaultQueryClient } from './chunk-CBTITLRR.js';
12
12
  import './chunk-AGPMQFZM.js';
13
13
  export { activateAcademicYear, createAcademicYear, listAcademicYears, updateAcademicYear, useAcademicYears, useActivateAcademicYear, useCreateAcademicYear, useUpdateAcademicYear } from './chunk-Q4UVXJMH.js';
14
- 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 } from './chunk-JBIEHGQ6.js';
14
+ 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 } from './chunk-2YBLKPOL.js';
15
15
  export { changePassword, consumeImpersonation, exitImpersonation, getMe, login, logout, selectTenant, switchRole, useChangePassword, useConsumeImpersonation, useExitImpersonation, useLogin, useLogout, useMe, useSelectTenant, useSwitchRole } from './chunk-KPGOAAOU.js';
16
16
  export { createClassroom, getClassroom, getClassroomStudents, listClassrooms, promoteClassStudents, updateClassroom, useClassroom, useClassroomStudents, useClassrooms, useCreateClassroom, usePromoteClassStudents, useUpdateClassroom } from './chunk-B2BMTZUU.js';
17
17
  export { API_ENDPOINTS, API_V1_PREFIX } from './chunk-Q5ZX6TKB.js';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkXGKBOKII_cjs = require('../../chunk-XGKBOKII.cjs');
3
+ var chunk4I2DP4CT_cjs = require('../../chunk-4I2DP4CT.cjs');
4
4
  require('../../chunk-3TOBH3YY.cjs');
5
5
  require('../../chunk-NGFFI4XQ.cjs');
6
6
  require('../../chunk-PPK3HQOY.cjs');
@@ -11,123 +11,123 @@ require('../../chunk-5KSKHZWB.cjs');
11
11
 
12
12
  Object.defineProperty(exports, "batchSyncAttendance", {
13
13
  enumerable: true,
14
- get: function () { return chunkXGKBOKII_cjs.batchSyncAttendance; }
14
+ get: function () { return chunk4I2DP4CT_cjs.batchSyncAttendance; }
15
15
  });
16
16
  Object.defineProperty(exports, "createAttendanceShift", {
17
17
  enumerable: true,
18
- get: function () { return chunkXGKBOKII_cjs.createAttendanceShift; }
18
+ get: function () { return chunk4I2DP4CT_cjs.createAttendanceShift; }
19
19
  });
20
20
  Object.defineProperty(exports, "createPicketAssignment", {
21
21
  enumerable: true,
22
- get: function () { return chunkXGKBOKII_cjs.createPicketAssignment; }
22
+ get: function () { return chunk4I2DP4CT_cjs.createPicketAssignment; }
23
23
  });
24
24
  Object.defineProperty(exports, "deleteAttendanceShift", {
25
25
  enumerable: true,
26
- get: function () { return chunkXGKBOKII_cjs.deleteAttendanceShift; }
26
+ get: function () { return chunk4I2DP4CT_cjs.deleteAttendanceShift; }
27
27
  });
28
28
  Object.defineProperty(exports, "getAttendanceHistory", {
29
29
  enumerable: true,
30
- get: function () { return chunkXGKBOKII_cjs.getAttendanceHistory; }
30
+ get: function () { return chunk4I2DP4CT_cjs.getAttendanceHistory; }
31
31
  });
32
32
  Object.defineProperty(exports, "getAttendanceShiftDetail", {
33
33
  enumerable: true,
34
- get: function () { return chunkXGKBOKII_cjs.getAttendanceShiftDetail; }
34
+ get: function () { return chunk4I2DP4CT_cjs.getAttendanceShiftDetail; }
35
35
  });
36
36
  Object.defineProperty(exports, "getAttendanceShifts", {
37
37
  enumerable: true,
38
- get: function () { return chunkXGKBOKII_cjs.getAttendanceShifts; }
38
+ get: function () { return chunk4I2DP4CT_cjs.getAttendanceShifts; }
39
39
  });
40
40
  Object.defineProperty(exports, "getDutyStatus", {
41
41
  enumerable: true,
42
- get: function () { return chunkXGKBOKII_cjs.getDutyStatus; }
42
+ get: function () { return chunk4I2DP4CT_cjs.getDutyStatus; }
43
43
  });
44
44
  Object.defineProperty(exports, "getDynamicQrStream", {
45
45
  enumerable: true,
46
- get: function () { return chunkXGKBOKII_cjs.getDynamicQrStream; }
46
+ get: function () { return chunk4I2DP4CT_cjs.getDynamicQrStream; }
47
47
  });
48
48
  Object.defineProperty(exports, "listPicketSchedules", {
49
49
  enumerable: true,
50
- get: function () { return chunkXGKBOKII_cjs.listPicketSchedules; }
50
+ get: function () { return chunk4I2DP4CT_cjs.listPicketSchedules; }
51
51
  });
52
52
  Object.defineProperty(exports, "recordManualStudentAttendance", {
53
53
  enumerable: true,
54
- get: function () { return chunkXGKBOKII_cjs.recordManualStudentAttendance; }
54
+ get: function () { return chunk4I2DP4CT_cjs.recordManualStudentAttendance; }
55
55
  });
56
56
  Object.defineProperty(exports, "studentBatchSync", {
57
57
  enumerable: true,
58
- get: function () { return chunkXGKBOKII_cjs.studentBatchSync; }
58
+ get: function () { return chunk4I2DP4CT_cjs.studentBatchSync; }
59
59
  });
60
60
  Object.defineProperty(exports, "updateAttendanceShift", {
61
61
  enumerable: true,
62
- get: function () { return chunkXGKBOKII_cjs.updateAttendanceShift; }
62
+ get: function () { return chunk4I2DP4CT_cjs.updateAttendanceShift; }
63
63
  });
64
64
  Object.defineProperty(exports, "updateClassAttendance", {
65
65
  enumerable: true,
66
- get: function () { return chunkXGKBOKII_cjs.updateClassAttendance; }
66
+ get: function () { return chunk4I2DP4CT_cjs.updateClassAttendance; }
67
67
  });
68
68
  Object.defineProperty(exports, "useAttendanceHistory", {
69
69
  enumerable: true,
70
- get: function () { return chunkXGKBOKII_cjs.useAttendanceHistory; }
70
+ get: function () { return chunk4I2DP4CT_cjs.useAttendanceHistory; }
71
71
  });
72
72
  Object.defineProperty(exports, "useAttendanceShiftDetailQuery", {
73
73
  enumerable: true,
74
- get: function () { return chunkXGKBOKII_cjs.useAttendanceShiftDetailQuery; }
74
+ get: function () { return chunk4I2DP4CT_cjs.useAttendanceShiftDetailQuery; }
75
75
  });
76
76
  Object.defineProperty(exports, "useAttendanceShiftsQuery", {
77
77
  enumerable: true,
78
- get: function () { return chunkXGKBOKII_cjs.useAttendanceShiftsQuery; }
78
+ get: function () { return chunk4I2DP4CT_cjs.useAttendanceShiftsQuery; }
79
79
  });
80
80
  Object.defineProperty(exports, "useBatchSyncAttendance", {
81
81
  enumerable: true,
82
- get: function () { return chunkXGKBOKII_cjs.useBatchSyncAttendance; }
82
+ get: function () { return chunk4I2DP4CT_cjs.useBatchSyncAttendance; }
83
83
  });
84
84
  Object.defineProperty(exports, "useCreateAttendanceShiftMutation", {
85
85
  enumerable: true,
86
- get: function () { return chunkXGKBOKII_cjs.useCreateAttendanceShiftMutation; }
86
+ get: function () { return chunk4I2DP4CT_cjs.useCreateAttendanceShiftMutation; }
87
87
  });
88
88
  Object.defineProperty(exports, "useCreatePicketAssignment", {
89
89
  enumerable: true,
90
- get: function () { return chunkXGKBOKII_cjs.useCreatePicketAssignment; }
90
+ get: function () { return chunk4I2DP4CT_cjs.useCreatePicketAssignment; }
91
91
  });
92
92
  Object.defineProperty(exports, "useDeleteAttendanceShiftMutation", {
93
93
  enumerable: true,
94
- get: function () { return chunkXGKBOKII_cjs.useDeleteAttendanceShiftMutation; }
94
+ get: function () { return chunk4I2DP4CT_cjs.useDeleteAttendanceShiftMutation; }
95
95
  });
96
96
  Object.defineProperty(exports, "useDutyStatusQuery", {
97
97
  enumerable: true,
98
- get: function () { return chunkXGKBOKII_cjs.useDutyStatusQuery; }
98
+ get: function () { return chunk4I2DP4CT_cjs.useDutyStatusQuery; }
99
99
  });
100
100
  Object.defineProperty(exports, "useDynamicQrStream", {
101
101
  enumerable: true,
102
- get: function () { return chunkXGKBOKII_cjs.useDynamicQrStream; }
102
+ get: function () { return chunk4I2DP4CT_cjs.useDynamicQrStream; }
103
103
  });
104
104
  Object.defineProperty(exports, "useManualStudentAttendanceMutation", {
105
105
  enumerable: true,
106
- get: function () { return chunkXGKBOKII_cjs.useManualStudentAttendanceMutation; }
106
+ get: function () { return chunk4I2DP4CT_cjs.useManualStudentAttendanceMutation; }
107
107
  });
108
108
  Object.defineProperty(exports, "usePicketSchedules", {
109
109
  enumerable: true,
110
- get: function () { return chunkXGKBOKII_cjs.usePicketSchedules; }
110
+ get: function () { return chunk4I2DP4CT_cjs.usePicketSchedules; }
111
111
  });
112
112
  Object.defineProperty(exports, "useStudentBatchSyncMutation", {
113
113
  enumerable: true,
114
- get: function () { return chunkXGKBOKII_cjs.useStudentBatchSyncMutation; }
114
+ get: function () { return chunk4I2DP4CT_cjs.useStudentBatchSyncMutation; }
115
115
  });
116
116
  Object.defineProperty(exports, "useUpdateAttendanceShiftMutation", {
117
117
  enumerable: true,
118
- get: function () { return chunkXGKBOKII_cjs.useUpdateAttendanceShiftMutation; }
118
+ get: function () { return chunk4I2DP4CT_cjs.useUpdateAttendanceShiftMutation; }
119
119
  });
120
120
  Object.defineProperty(exports, "useUpdateClassAttendance", {
121
121
  enumerable: true,
122
- get: function () { return chunkXGKBOKII_cjs.useUpdateClassAttendance; }
122
+ get: function () { return chunk4I2DP4CT_cjs.useUpdateClassAttendance; }
123
123
  });
124
124
  Object.defineProperty(exports, "useVerifyDynamicQr", {
125
125
  enumerable: true,
126
- get: function () { return chunkXGKBOKII_cjs.useVerifyDynamicQr; }
126
+ get: function () { return chunk4I2DP4CT_cjs.useVerifyDynamicQr; }
127
127
  });
128
128
  Object.defineProperty(exports, "verifyDynamicQr", {
129
129
  enumerable: true,
130
- get: function () { return chunkXGKBOKII_cjs.verifyDynamicQr; }
130
+ get: function () { return chunk4I2DP4CT_cjs.verifyDynamicQr; }
131
131
  });
132
132
  //# sourceMappingURL=index.cjs.map
133
133
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- 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 } from '../../chunk-JBIEHGQ6.js';
1
+ 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 } from '../../chunk-2YBLKPOL.js';
2
2
  import '../../chunk-Q5ZX6TKB.js';
3
3
  import '../../chunk-6JGO2CUT.js';
4
4
  import '../../chunk-GRXFSXG5.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sekolaos/shared-api",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "Shared HTTP API client, TanStack Query hooks, and query key factory for Sekolaos ecosystem aligned with OpenAPI 3.0.3",
5
5
  "license": "ISC",
6
6
  "author": "Sekolaos",
@@ -1 +0,0 @@
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 +0,0 @@
1
- {"version":3,"sources":["../src/modules/attendance/attendance.api.ts"],"names":["API_ENDPOINTS","getData","postData","putData","apiClient","getPaginated","useQuery","attendanceKeys","useQueryClient","useMutation","attendanceShiftKeys"],"mappings":"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","file":"chunk-XGKBOKII.cjs","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"]}