From 822e495fa1dd45bbacba802bf4e55d23f3d0931f Mon Sep 17 00:00:00 2001 From: IO Date: Thu, 18 Jul 2024 23:08:06 -0600 Subject: [PATCH] error handling and existence information --- src/components/Card/CardProfesores/Mapeo.js | 28 +++++++++++-------- .../Card/CardUsuarios/MapeoUsuario.js | 8 ++++++ src/services/teacher.services.js | 26 +++++++++++++---- 3 files changed, 45 insertions(+), 17 deletions(-) diff --git a/src/components/Card/CardProfesores/Mapeo.js b/src/components/Card/CardProfesores/Mapeo.js index feafbca..cd7bc71 100644 --- a/src/components/Card/CardProfesores/Mapeo.js +++ b/src/components/Card/CardProfesores/Mapeo.js @@ -8,16 +8,28 @@ import { } from "../../../services/teacher.services"; import { PrivateRoutes } from "../../../models/routes"; -const Mapeo = ({ filters , edificios}) => { +const Mapeo = ({ filters, edificios }) => { const [currentPage, setCurrentPage] = useState(1); const permissions = Guard(); - const profesoresData = useProfesores(currentPage, filters); - const profesoresActivesData = useProfesoresActives(currentPage, filters); + const { profesores: profesoresData, totalPages: totalDataPages, loading: loadingData, error: errorData } = useProfesores(currentPage, filters); + const { profesores: profesoresActivesData, totalPages: totalActivePages, loading: loadingActives, error: errorActives } = useProfesoresActives(currentPage, filters); + + if (loadingData || loadingActives) { + return
Cargando datos del los profesores...
; + } + + if (errorData || errorActives) { + return
Error al cargar los datos de los profesores: {errorData || errorActives}
; + } + + if((totalDataPages || totalActivePages) === 0){ + return
Profesor no registrado en la base de datos
; + } const { profesores, totalPages } = permissions - ? profesoresData - : profesoresActivesData; + ? { profesores: profesoresData, totalPages: totalDataPages } + : { profesores: profesoresActivesData, totalPages: totalActivePages }; const handleNextPage = () => { if (currentPage < totalPages) { @@ -68,12 +80,6 @@ const Mapeo = ({ filters , edificios}) => { window.location.href = PrivateRoutes.INTERFACE; }; - if (!profesoresData || !profesoresActivesData) { - return ( -
Cargando datos del profesor...
- ); - } - return (
{permissions ? ( diff --git a/src/components/Card/CardUsuarios/MapeoUsuario.js b/src/components/Card/CardUsuarios/MapeoUsuario.js index 0ded8d7..ed75746 100644 --- a/src/components/Card/CardUsuarios/MapeoUsuario.js +++ b/src/components/Card/CardUsuarios/MapeoUsuario.js @@ -8,6 +8,14 @@ const MapeoUsuario = ({ filters }) => { const [currentPage, setCurrentPage] = useState(1); const { usuarios, totalPages } = useUsers(currentPage, filters); + if(totalPages === 0){ + return
Usuario no registrado en la base de datos
; + } + + if(!usuarios){ + return
Cargando datos del los usuario...
; + } + const handleNextPage = () => { if (currentPage < totalPages) { setCurrentPage((prevPage) => prevPage + 1); diff --git a/src/services/teacher.services.js b/src/services/teacher.services.js index 025c46e..03a0185 100644 --- a/src/services/teacher.services.js +++ b/src/services/teacher.services.js @@ -37,9 +37,14 @@ export const useDeleteProfesor = () => { export const useProfesoresActives = (currentPage, filters) => { const [profesores, setProfesores] = useState([]); const [totalPages, setTotalPages] = useState(1); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); useEffect(() => { const fetchProfesores = () => { + setLoading(true); + setError(null); + const query = new URLSearchParams({ page: currentPage, limit: 10, @@ -50,31 +55,38 @@ export const useProfesoresActives = (currentPage, filters) => { fetch(`${API_URL}/profesor/page?${query}`) .then((response) => { if (!response.ok) { - console.error("Error:"); + throw new Error("Error fetching the data"); } return response.json(); }) .then((data) => { setProfesores(data.profesores); setTotalPages(data.totalPages); + setLoading(false); }) .catch((error) => { - console.error("Error fetching the data: ", error); + setError(error.message); + setLoading(false); }); }; fetchProfesores(); }, [currentPage, filters]); - return { profesores, totalPages }; + return { profesores, totalPages, loading, error }; }; export const useProfesores = (currentPage, filters) => { const [profesores, setProfesores] = useState([]); const [totalPages, setTotalPages] = useState(1); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); useEffect(() => { const fetchProfesores = () => { + setLoading(true); + setError(null); + const query = new URLSearchParams({ page: currentPage, limit: 10, @@ -84,23 +96,25 @@ export const useProfesores = (currentPage, filters) => { fetch(`${API_URL}/profesor/page?${query}`) .then((response) => { if (!response.ok) { - console.error("Error:"); + throw new Error("Error fetching the data"); } return response.json(); }) .then((data) => { setProfesores(data.profesores); setTotalPages(data.totalPages); + setLoading(false); }) .catch((error) => { - console.error("Error fetching the data: ", error); + setError(error.message); + setLoading(false); }); }; fetchProfesores(); }, [currentPage, filters]); - return { profesores, totalPages }; + return { profesores, totalPages, loading, error }; }; export const useRegisterTeacher = () => {