diff --git a/src/components/PerfilProfesor.css b/src/components/PerfilProfesor.css
index c53e600..796d836 100644
--- a/src/components/PerfilProfesor.css
+++ b/src/components/PerfilProfesor.css
@@ -1,67 +1,59 @@
-*{
- padding: 0;
+.perfil-profesor {
+ font-family: Arial, sans-serif;
+ padding: 20px;
+ border: 1px solid #ccc;
+ border-radius: 5px;
+ background-color: #f9f9f9;
+ margin: 20px auto;
+ max-width: 800px;
}
-.perfil-profesor {
- padding: 20px;
+.foto-nombre {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 20px;
+}
+
+.foto {
+ width: 200px;
+ height: 250px;
+ border-radius: 50%;
+ margin-right: 20px;
+}
+
+.info {
display: flex;
flex-direction: column;
- gap: 20px;
- border: 1px solid #ccc;
- border-radius: 10px;
- background-color: #f9f9f9;
-}
-
-.datos-profesor, .datos-academicos, .lineas-investigacion, .proyectos-academicos {
- padding: auto;
- border: 1px solid #ccc;
- border-radius: 10px;
- background-color: #fff;
-}
-
-.datos-profesor .foto-nombre {
- display: flex;
- align-items: flex-start;
- gap:0;
-}
-
-.datos-profesor .foto {
- width: 333px; /* Incrementa el tamaño de la imagen */
- height: 333px; /* Incrementa el tamaño de la imagen */
- border-radius:10px ;
- object-fit: cover;
-}
-
-.datos-profesor .info {
+ align-items: center;
flex: 1;
}
-.datos-profesor .info h2 {
- padding: 10px;
- text-align: center;
- border-radius:10px ;
- background-color: #D59F0F;
- margin-top: 0;
- }
-
+.datos-academicos, .lineas-investigacion, .proyectos-academicos {
+ margin-top: 20px;
+ border-top: 1px solid #ccc;
+ padding-top: 20px;
+}
-.datos-profesor .info p {
- margin: 5px 0;
-}
-
-h3 {
- color: #fff;
- padding: 10px;
- border-radius: 10px;
- margin: auto; /* Ajusta los márgenes para que el encabezado esté pegado arriba */
- text-align: center;
-}
-
-ul {
- list-style-type: disc;
- padding-left: 20px;
-}
-
-ul li {
+.datos-academicos h3, .lineas-investigacion h3, .proyectos-academicos h3 {
+ font-size: 1.2em;
+ margin-bottom: 10px;
+}
+
+.datos-academicos ul, .lineas-investigacion ul, .proyectos-academicos ul {
+ list-style-type: none;
+ padding: 0;
+}
+
+.datos-academicos li, .lineas-investigacion li, .proyectos-academicos li {
+ margin-bottom: 10px;
+}
+
+.datos-academicos li strong, .lineas-investigacion li strong, .proyectos-academicos li strong {
+ font-weight: bold;
+ margin-right: 5px;
+}
+
+.info p {
margin: 5px 0;
}
diff --git a/src/components/PerfilProfesor.js b/src/components/PerfilProfesor.js
index b7e084a..3044403 100644
--- a/src/components/PerfilProfesor.js
+++ b/src/components/PerfilProfesor.js
@@ -2,62 +2,104 @@ import React, { useEffect, useState } from 'react';
import './PerfilProfesor.css';
import { useParams } from 'react-router-dom';
+const defaultImage = 'https://static.vecteezy.com/system/resources/thumbnails/020/765/399/small_2x/default-profile-account-unknown-icon-black-silhouette-free-vector.jpg';
+
const PerfilProfesor = () => {
- const{id}=useParams()
+ const { id_profesor } = useParams();
const [profesor, setProfesor] = useState(null);
+ const [adscripciones, setAdscripciones] = useState([]);
+ const [categorias, setCategorias] = useState([]);
+ const [edificios, setEdificios] = useState([]);
useEffect(() => {
- console.log(id)
- const fetchProfesor = async () => {
+ const fetchData = async () => {
+ try {
+ const adscripcionesResponse = await fetch('http://localhost:3000/adscripcion');
+ const adscripcionesData = await adscripcionesResponse.json();
+ setAdscripciones(adscripcionesData);
- const response = await fetch(`http://localhost:3000/profesor/36`)
- .then(response=>response.json())
- .then(data=>setProfesor(data))
+ const categoriasResponse = await fetch('http://localhost:3000/categoria');
+ const categoriasData = await categoriasResponse.json();
+ setCategorias(categoriasData);
+
+ const edificiosResponse = await fetch('http://localhost:3000/edificio');
+ const edificiosData = await edificiosResponse.json();
+ setEdificios(edificiosData);
+
+ const profesorResponse = await fetch(`http://localhost:3000/profesor/${id_profesor}`);
+ const profesorData = await profesorResponse.json();
+ profesorData.proyectosAcademicos = profesorData.proyectosAcademicos.map(proyecto => ({
+ ...proyecto,
+ proyecto: proyecto.proyecto || proyecto.proyecto_html
+ }));
+ profesorData.lineasInvestigacion = profesorData.lineasInvestigacion.map(linea => ({
+ ...linea,
+ lineas_inv: linea.lineas_inv || linea.lineas_inv_html
+ }));
+ setProfesor(profesorData);
+ } catch (error) {
+ console.error('Error fetching data:', error);
+ }
};
- fetchProfesor();
- }, []);
+ fetchData();
+ }, [id_profesor]);
if (!profesor) {
- return
Cargando datos del profesor...
;
+ return
Cargando datos del profesor...
;
}
+ const edificioProfesor = edificios.find(edificio => edificio.id_edificio === profesor.id_edificio);
+ const adscripcionProfesor = adscripciones.find(adscripcion => adscripcion.id_adscripcion === profesor.id_adscripcion);
+ const categoriaProfesor = categorias.find(categoria => categoria.id_categoria === profesor.id_categoria);
+
+ const fotoProfesor = profesor.fotografia || defaultImage;
+
return (
-
-
-

-
-
{profesor.nombre}
-
Ubicación: {profesor.ubicacion}
-
Correo: {profesor.correo_pcp}
-
Edificio: {profesor.id_edificio}
-
Teléfono de oficina: {profesor.tel_oficina}
-
Extensión: {profesor.extension}
-
+
+

+
+
{profesor.nombre}
+
Ubicación: {profesor.ubicacion ? profesor.ubicacion: "NO ubicado"}
+
Correo: {profesor.correo_pcp ? profesor.correo_pcp:"No ubicado"}
+
Teléfono de oficina: {profesor.tel_oficina ? profesor.tel_oficina:"No ubicado"}
+
Extensión: {profesor.extension ? profesor.extension:"No ubicado"}
+
Edificio: {edificioProfesor ? edificioProfesor.edificio : 'No ubicado'}
+
-
Datos académicos
+
Datos académicos
- - Categoría: {profesor.id_categoria}
- - Adscripción: {profesor.id_adscripcion}
+ - Categoría: {categoriaProfesor ? categoriaProfesor.categoria : 'No ubicado'}
+ - Adscripción: {adscripcionProfesor ? adscripcionProfesor.adscripcion : 'No ubicado'}
+
-
Líneas de investigación
+
Líneas de investigación
- {profesor.lineasInvestigacion.map((linea, index) => (
- - Investigaciones: {linea.lineas_inv}
- ))}
+ {profesor.lineasInvestigacion.length > 0 ? (
+ profesor.lineasInvestigacion.map((linea, index) => (
+ - Investigaciones: {linea.lineas_inv ? linea.lineas_inv:"NO encontrado"}
+ ))
+ ) : (
+ - No hay líneas de investigación registradas.
+ )}
+
-
Proyectos académicos
+
Proyectos académicos
- {profesor.proyectosAcademicos.map((proyecto, index) => (
- - Proyectos: {proyecto.proyecto}
- ))}
+ {profesor.proyectosAcademicos.length > 0 ? (
+ profesor.proyectosAcademicos.map((proyecto, index) => (
+ - Proyectos: {proyecto.proyecto ? proyecto.proyecto : "NO encontrado"}
+ ))
+ ) : (
+ - No hay proyectos académicos registrados.
+ )}
diff --git a/src/models/routes.js b/src/models/routes.js
index b7829b7..5e92914 100644
--- a/src/models/routes.js
+++ b/src/models/routes.js
@@ -2,13 +2,15 @@ export const PublicRoutes={
NOTFOUND:'*',
LOGIN:'/login',
FILTER:'/',
- DATA:'/profesor/perfil/'
+ DATAPROFESOR:'/perfil/Profesor/'
}
export const PrivateRoutes={
CREARPROFESOR:'/Crear/Profesor',
EDITARPROFESOR:'/Editar/Profesor/',
CREARUSUARIO:'/Creacion/Usuario',
- EDITARUSUARIO:'/Editar/Usuario/:id_usuario',
+ EDITARUSUARIO:'/Editar/Usuario/',
+ DATAUSUARIO:'/perfil/Usuario',
INTERFACE:'/Interface',
+ FILTERUSUARIO:'/Filter/Usuario'
}
\ No newline at end of file
diff --git a/src/pages/PanelNavegacion/InterAdmin.js b/src/pages/PanelNavegacion/InterAdmin.js
index edd3969..853ba7f 100644
--- a/src/pages/PanelNavegacion/InterAdmin.js
+++ b/src/pages/PanelNavegacion/InterAdmin.js
@@ -8,17 +8,17 @@ const InterAdmin = () => {
Usuarios
-

+
-
+
Profesores
-

+