import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { getAsignacionesPorSupervisor, getAsignacionesPorAuxiliar, getSinAsignar, asignarObligacion, desasignarObligacion, asignarTarea, desasignarTarea, } from '../api/asignaciones'; export function useAsignacionesSupervisor() { return useQuery({ queryKey: ['asignaciones-supervisor'], queryFn: getAsignacionesPorSupervisor, }); } export function useAsignacionesAuxiliar() { return useQuery({ queryKey: ['asignaciones-auxiliar'], queryFn: getAsignacionesPorAuxiliar, }); } export function useSinAsignar() { return useQuery({ queryKey: ['asignaciones-sin-asignar'], queryFn: getSinAsignar, }); } export function useAsignarObligacion() { const qc = useQueryClient(); return useMutation({ mutationFn: ({ contribuyenteId, obligacionId, auxiliarUserId }: { contribuyenteId: string; obligacionId: string; auxiliarUserId: string; }) => asignarObligacion(contribuyenteId, obligacionId, auxiliarUserId), onSuccess: () => { qc.invalidateQueries({ queryKey: ['asignaciones-supervisor'] }); qc.invalidateQueries({ queryKey: ['asignaciones-sin-asignar'] }); qc.invalidateQueries({ queryKey: ['obligaciones'] }); }, }); } export function useDesasignarObligacion() { const qc = useQueryClient(); return useMutation({ mutationFn: ({ contribuyenteId, obligacionId }: { contribuyenteId: string; obligacionId: string; }) => desasignarObligacion(contribuyenteId, obligacionId), onSuccess: () => { qc.invalidateQueries({ queryKey: ['asignaciones-supervisor'] }); qc.invalidateQueries({ queryKey: ['asignaciones-sin-asignar'] }); qc.invalidateQueries({ queryKey: ['obligaciones'] }); }, }); } export function useAsignarTarea() { const qc = useQueryClient(); return useMutation({ mutationFn: ({ tareaId, auxiliarUserId }: { tareaId: string; auxiliarUserId: string; }) => asignarTarea(tareaId, auxiliarUserId), onSuccess: () => { qc.invalidateQueries({ queryKey: ['asignaciones-supervisor'] }); qc.invalidateQueries({ queryKey: ['asignaciones-sin-asignar'] }); qc.invalidateQueries({ queryKey: ['tareas'] }); }, }); } export function useDesasignarTarea() { const qc = useQueryClient(); return useMutation({ mutationFn: ({ tareaId }: { tareaId: string }) => desasignarTarea(tareaId), onSuccess: () => { qc.invalidateQueries({ queryKey: ['asignaciones-supervisor'] }); qc.invalidateQueries({ queryKey: ['asignaciones-sin-asignar'] }); qc.invalidateQueries({ queryKey: ['tareas'] }); }, }); }