- Componente seguimiento-auxiliares.tsx con tabs Asignadas/Sin asignar - Tabs internos Obligaciones/Tareas en cada vista - API client y hooks para asignaciones - Fix: invalidar query sin-asignar al asignar/desasignar
90 lines
2.6 KiB
TypeScript
90 lines
2.6 KiB
TypeScript
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'] });
|
|
},
|
|
});
|
|
}
|