Files
encoach_frontend_new_v2/src/hooks/queries/useEntityOnboarding.ts
2026-04-26 03:12:52 +04:00

58 lines
1.9 KiB
TypeScript

import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { queryKeys } from "./keys";
import { entityOnboardingService } from "@/services/entity-onboarding.service";
import type { CredentialFilters } from "@/types";
export function useValidateCSV() {
return useMutation({
mutationFn: (file: File) => entityOnboardingService.validateCsv(file),
});
}
export function useBulkCreate() {
const qc = useQueryClient();
return useMutation({
mutationFn: (payload: { validate_session_id?: string }) => entityOnboardingService.bulkCreate(payload),
onSuccess: () => {
qc.invalidateQueries({ queryKey: ["entity-onboarding"] });
},
});
}
export function useSendCredentials() {
const qc = useQueryClient();
return useMutation({
mutationFn: (studentIds: number[]) => entityOnboardingService.sendCredentials(studentIds),
onSuccess: () => {
qc.invalidateQueries({ queryKey: queryKeys.entityOnboarding.credentials() });
},
});
}
export function useCredentialStatuses(filters?: CredentialFilters & { page?: number; limit?: number }) {
return useQuery({
queryKey: queryKeys.entityOnboarding.credentials(filters as Record<string, unknown> | undefined),
queryFn: () => entityOnboardingService.getCredentialStatuses(filters),
});
}
export function useResendCredential() {
const qc = useQueryClient();
return useMutation({
mutationFn: (studentId: number) => entityOnboardingService.resendCredential(studentId),
onSuccess: () => {
qc.invalidateQueries({ queryKey: ["entity-onboarding", "credentials"] });
},
});
}
export function useResendAllPendingCredentials() {
const qc = useQueryClient();
return useMutation({
mutationFn: () => entityOnboardingService.resendAllPending(),
onSuccess: () => {
qc.invalidateQueries({ queryKey: ["entity-onboarding", "credentials"] });
},
});
}