vista de administrador
This commit is contained in:
parent
41b16210f2
commit
f50deaf29d
Binary file not shown.
|
@ -4,16 +4,19 @@ import Mensaje from '../Model/Mensaje.js'; // Asegúrate de tener la ruta correc
|
|||
import DAORegistro from './DAORegistro.js';
|
||||
|
||||
class DAO {
|
||||
static async dameAlumnos() {
|
||||
|
||||
static async matriculas() {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const sql = `SELECT id, nombre, apellido, matricula FROM usuario`;
|
||||
const sql = `SELECT id, matricula FROM usuario where inscrito = 1`;
|
||||
const [rows] = await conexionEstablecida.query(sql);
|
||||
const resultado = rows.map(row => new Usuario(row.id, row.nombre, row.apellido, row.matricula));
|
||||
const resultado = rows.map(row => {
|
||||
return { id: row.id, matricula: row.matricula };
|
||||
});
|
||||
return resultado;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
console.error(error); s
|
||||
return [];
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
|
@ -155,6 +158,61 @@ class DAO {
|
|||
}
|
||||
return usuario;
|
||||
}
|
||||
static async editarAlumnoInscrito(data) {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
try {
|
||||
const sql = `UPDATE usuario SET inscrito = ? WHERE id = ?`;
|
||||
const [result] = await conexionEstablecida.query(sql, [
|
||||
1, data.idUsuario
|
||||
]);
|
||||
return result.affectedRows > 0;
|
||||
|
||||
} catch (error) {
|
||||
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
}
|
||||
|
||||
static async traeTodosLosDatosUsuario(id) {
|
||||
const conexion = new Conexion();
|
||||
const conexionEstablecida = await conexion.conectar();
|
||||
let usuario = null;
|
||||
try {
|
||||
const sql = `SELECT U.id,U.nombre,U.apellido,matricula,correo,nacionalidad,tipoSangre,fecha_nacimiento,curp,inscrito, T.nombre as tutorNombre, T.apellido as tutorApellido, T.numeroDeTelefono,C.nombre as carreraNombre FROM usuario U, tutor T, carrera C where C.id= U.idCarrera and U.id = T.idUsuario and inscrito =1 and U.id =?;`;
|
||||
const [rows] = await conexionEstablecida.query(sql, [id]);
|
||||
if (rows.length > 0) {
|
||||
const row = rows[0];
|
||||
|
||||
// Convertir la fecha al formato "yyyy-MM-dd"
|
||||
const fechaNacimiento = new Date(row.fecha_nacimiento);
|
||||
const formattedDate = fechaNacimiento.toISOString().split('T')[0]; // "yyyy-MM-dd"
|
||||
|
||||
usuario = {
|
||||
id: row.id,
|
||||
nombre: row.nombre,
|
||||
apellido: row.apellido,
|
||||
matricula: row.matricula,
|
||||
correo: row.correo,
|
||||
nacionalidad: row.nacionalidad,
|
||||
tipoSangre: row.tipoSangre,
|
||||
fecha_nacimiento: formattedDate,
|
||||
curp: row.curp,
|
||||
inscrito: row.inscrito,
|
||||
tutorNombre: row.tutorNombre,
|
||||
tutorApellido: row.tutorApellido,
|
||||
numeroDeTelefono: row.numeroDeTelefono,
|
||||
carreraNombre: row.carreraNombre
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
} finally {
|
||||
conexion.cerrarConexion();
|
||||
}
|
||||
return usuario;
|
||||
}
|
||||
}
|
||||
|
||||
export default DAO;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import express from 'express';
|
||||
import bodyParser from 'body-parser';
|
||||
import cors from 'cors';
|
||||
import DAO from './Controller/DAO.js'; // Importa tus controladores DAO
|
||||
import DAOTutor from './Controller/DAOTutor.js';
|
||||
import DAOCarreras from './Controller/DAOCarrera.js';
|
||||
|
@ -31,18 +32,18 @@ const fileUpload = multer({
|
|||
app.use(bodyParser.json());
|
||||
|
||||
// Configuración de CORS
|
||||
app.use((req, res, next) => {
|
||||
res.header("Access-Control-Allow-Origin", "http://localhost:5173");
|
||||
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
|
||||
res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
|
||||
res.header("Access-Control-Allow-Credentials", "true");
|
||||
next();
|
||||
});
|
||||
app.use(cors({
|
||||
origin: 'http://localhost:5173', // Especifica el origen permitido
|
||||
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
|
||||
allowedHeaders: ['Origin', 'X-Requested-With', 'Content-Type', 'Accept'],
|
||||
credentials: true
|
||||
}));
|
||||
app.use(express.static(path.join(__dirname,'ActasNacimiento')))
|
||||
|
||||
// Rutas
|
||||
app.get("/todosLosAlumnos", async (req, res) => {
|
||||
app.get("/matriculas", async (req, res) => {
|
||||
try {
|
||||
const alumnos = await DAO.dameAlumnos();
|
||||
const alumnos = await DAO.matriculas();
|
||||
res.json(alumnos);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
|
@ -159,9 +160,14 @@ app.post("/agregarDocumentoAN", fileUpload, async (req, res) => {
|
|||
const guardado = await DAODocumento.agregarDocumento(data, file);
|
||||
|
||||
if (guardado) {
|
||||
res.json({ message: "Archivo guardado correctamente" });
|
||||
const cambiar = await DAO.editarAlumnoInscrito(data);
|
||||
if (cambiar) {
|
||||
res.json({ message: true });
|
||||
} else {
|
||||
res.json({ message: false });
|
||||
}
|
||||
} else {
|
||||
res.json({ message: "No se pudo guardar el archivo" });
|
||||
res.json({ message: false });
|
||||
}
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
|
@ -178,3 +184,13 @@ app.use((err, req, res, next) => {
|
|||
app.listen(port, () => {
|
||||
console.log(`App listening at http://localhost:${port}`);
|
||||
});
|
||||
|
||||
app.post("/traerTodosDatosAlumno", async (req, res) => {
|
||||
try {
|
||||
const usuario = req.body;
|
||||
const datos = await DAO.traeTodosLosDatosUsuario(usuario.id);
|
||||
res.json(datos);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
|
|
@ -18,7 +18,8 @@ const Inscripcion = () => {
|
|||
tipoSangre: "",
|
||||
fecha_nacimiento: "",
|
||||
curp: "",
|
||||
idCarrera: 0
|
||||
idCarrera: 0,
|
||||
inscrito:0
|
||||
});
|
||||
|
||||
const [tutor, setTutor] = useState({
|
||||
|
@ -53,7 +54,8 @@ const Inscripcion = () => {
|
|||
tipoSangre: resUsuario.data.tipoSangre || "",
|
||||
fecha_nacimiento: resUsuario.data.fecha_nacimiento || "",
|
||||
curp: resUsuario.data.curp || "",
|
||||
idCarrera: resUsuario.data.idCarrera || 0
|
||||
idCarrera: resUsuario.data.idCarrera || 0,
|
||||
inscrito: resUsuario.data.inscrito || 0
|
||||
}));
|
||||
} else {
|
||||
console.log('Error: No hay usuario');
|
||||
|
@ -157,155 +159,162 @@ const Inscripcion = () => {
|
|||
formData.append('titulo', `${usuario.matricula}_ActaN`);
|
||||
formData.append('archivo', actaN.archivo);
|
||||
formData.append('idUsuario', usuario.id);
|
||||
fetch('http://localhost:3000/agregarDocumentoAN',{
|
||||
method: 'POST',
|
||||
body: formData
|
||||
}).then(res=>res.text())
|
||||
.then(res => console.log(res))
|
||||
.catch(err=>{
|
||||
console.error(err)
|
||||
})
|
||||
setActaN(null)
|
||||
const reqs = await axios.post('/agregarDocumentoAN', formData,{
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data',
|
||||
},
|
||||
});
|
||||
if (reqs){
|
||||
window.location.reload();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error al subir los datos:', error);
|
||||
//window.location.reload();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className='container'>
|
||||
<div className='nbn'>
|
||||
<form onSubmit={subir}>
|
||||
<div className="mb-4">
|
||||
<h5>Datos Personales</h5>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="nombre"
|
||||
value={usuario.nombre}
|
||||
className="form-control mb-3"
|
||||
placeholder="Nombre"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="apellido"
|
||||
value={usuario.apellido}
|
||||
className="form-control mb-3"
|
||||
placeholder="Apellido"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="email"
|
||||
name="correo"
|
||||
value={usuario.correo}
|
||||
className="form-control mb-3"
|
||||
placeholder="Correo Electrónico"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="nacionalidad"
|
||||
value={usuario.nacionalidad}
|
||||
className="form-control mb-3"
|
||||
placeholder="Nacionalidad"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="tipoSangre"
|
||||
value={usuario.tipoSangre}
|
||||
className="form-control mb-3"
|
||||
placeholder="Tipo de Sangre"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<h6>Fecha de Nacimiento</h6>
|
||||
<DivInput
|
||||
type="date"
|
||||
name="fecha_nacimiento"
|
||||
value={usuario.fecha_nacimiento}
|
||||
className="form-control mb-3"
|
||||
placeholder="Fecha de Nacimiento"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="curp"
|
||||
value={usuario.curp}
|
||||
className="form-control mb-3"
|
||||
placeholder="CURP"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<>
|
||||
{usuario.inscrito !== 1 ? (
|
||||
<div className='container'>
|
||||
<div className='nbn'>
|
||||
<form onSubmit={subir}>
|
||||
<div className="mb-4">
|
||||
<h5>Datos Personales</h5>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="nombre"
|
||||
value={usuario.nombre}
|
||||
className="form-control mb-3"
|
||||
placeholder="Nombre"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="apellido"
|
||||
value={usuario.apellido}
|
||||
className="form-control mb-3"
|
||||
placeholder="Apellido"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="email"
|
||||
name="correo"
|
||||
value={usuario.correo}
|
||||
className="form-control mb-3"
|
||||
placeholder="Correo Electrónico"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="nacionalidad"
|
||||
value={usuario.nacionalidad}
|
||||
className="form-control mb-3"
|
||||
placeholder="Nacionalidad"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="tipoSangre"
|
||||
value={usuario.tipoSangre}
|
||||
className="form-control mb-3"
|
||||
placeholder="Tipo de Sangre"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<h6>Fecha de Nacimiento</h6>
|
||||
<DivInput
|
||||
type="date"
|
||||
name="fecha_nacimiento"
|
||||
value={usuario.fecha_nacimiento}
|
||||
className="form-control mb-3"
|
||||
placeholder="Fecha de Nacimiento"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="curp"
|
||||
value={usuario.curp}
|
||||
className="form-control mb-3"
|
||||
placeholder="CURP"
|
||||
required
|
||||
handleChange={handleInputChange}
|
||||
/>
|
||||
</div>
|
||||
<div className="mb-4">
|
||||
<h5>Datos del Tutor</h5>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="nombre"
|
||||
value={tutor.nombre}
|
||||
className="form-control mb-3"
|
||||
placeholder="Nombre"
|
||||
required
|
||||
handleChange={handleTutorInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="apellido"
|
||||
value={tutor.apellido}
|
||||
className="form-control mb-3"
|
||||
placeholder="Apellidos"
|
||||
required
|
||||
handleChange={handleTutorInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="tel"
|
||||
name="numeroDeTelefono"
|
||||
value={tutor.numeroDeTelefono}
|
||||
className="form-control mb-3"
|
||||
placeholder="Número de Teléfono"
|
||||
required
|
||||
handleChange={handleTutorInputChange}
|
||||
/>
|
||||
</div>
|
||||
<div className="mb-4">
|
||||
<h5>Carrera</h5>
|
||||
<select
|
||||
id="carreraSelect"
|
||||
className="form-control"
|
||||
value={carreraSeleccionada}
|
||||
onChange={handleCarreraChange}
|
||||
>
|
||||
<option value="" disabled>Selecciona una carrera</option>
|
||||
{carrera.map((carrera) => (
|
||||
<option key={carrera.id} value={carrera.id}>
|
||||
{carrera.nombre}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
</div>
|
||||
<div className="mb-4">
|
||||
<h5>Documentación</h5>
|
||||
<h6>Acta De Nacimiento</h6>
|
||||
<input
|
||||
type="file"
|
||||
name="archivo"
|
||||
className="form-control mb-3"
|
||||
accept=".pdf"
|
||||
placeholder="Acta de Nacimiento"
|
||||
required
|
||||
onChange={handleFileChange}
|
||||
/>
|
||||
</div>
|
||||
<button type="submit" className="btn btn-primary">Enviar Inscripción</button>
|
||||
</form>
|
||||
</div>
|
||||
<div className="mb-4">
|
||||
<h5>Datos del Tutor</h5>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="nombre"
|
||||
value={tutor.nombre}
|
||||
className="form-control mb-3"
|
||||
placeholder="Nombre"
|
||||
required
|
||||
handleChange={handleTutorInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="text"
|
||||
name="apellido"
|
||||
value={tutor.apellido}
|
||||
className="form-control mb-3"
|
||||
placeholder="Apellidos"
|
||||
required
|
||||
handleChange={handleTutorInputChange}
|
||||
/>
|
||||
<DivInput
|
||||
type="tel"
|
||||
name="numeroDeTelefono"
|
||||
value={tutor.numeroDeTelefono}
|
||||
className="form-control mb-3"
|
||||
placeholder="Número de Teléfono"
|
||||
required
|
||||
handleChange={handleTutorInputChange}
|
||||
/>
|
||||
</div>
|
||||
<div className="mb-4">
|
||||
<h5>Carrera</h5>
|
||||
<select
|
||||
id="carreraSelect"
|
||||
className="form-control"
|
||||
value={carreraSeleccionada}
|
||||
onChange={handleCarreraChange}
|
||||
>
|
||||
<option value="" disabled>Selecciona una carrera</option>
|
||||
{carrera.map((carrera) => (
|
||||
<option key={carrera.id} value={carrera.id}>
|
||||
{carrera.nombre}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
</div>
|
||||
<div className="mb-4">
|
||||
<h5>Documentación</h5>
|
||||
<h6>Acta De Nacimiento</h6>
|
||||
<input
|
||||
type="file"
|
||||
name="archivo"
|
||||
className="form-control mb-3"
|
||||
accept=".pdf"
|
||||
placeholder="Acta de Nacimiento"
|
||||
required
|
||||
onChange={handleFileChange}
|
||||
/>
|
||||
</div>
|
||||
<button type="submit" className="btn btn-primary">Enviar Inscripción</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
<div className="d-flex justify-content-center align-items-center vh-100">
|
||||
<div className="p-5 text-center bg-light border rounded shadow">
|
||||
Inscripción en Proceso, Validando los datos por favor revisa esta página dentro de una semana
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,47 +1,100 @@
|
|||
import React, { useState } from 'react';
|
||||
|
||||
|
||||
import axios from 'axios';
|
||||
import React, { useState, useEffect } from 'react';
|
||||
|
||||
const ValidacionAdm = () => {
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [alumno, setAlumno] = useState({});
|
||||
const [matriculas, setMatriculas] = useState([]);
|
||||
const [currentMatriculaIndex, setCurrentMatriculaIndex] = useState(0);
|
||||
|
||||
const handleLoad = () => {
|
||||
setLoading(false);
|
||||
useEffect(() => {
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
const resMatriculas = await axios.get('http://localhost:3000/matriculas');
|
||||
if (resMatriculas.status === 200 && resMatriculas.data.length > 0) {
|
||||
setMatriculas(resMatriculas.data);
|
||||
await fetchAlumnoData(resMatriculas.data[0].id);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
fetchData();
|
||||
}, []);
|
||||
|
||||
const fetchAlumnoData = async (id) => {
|
||||
try {
|
||||
const resAlumno = await axios.post('http://localhost:3000/traerTodosDatosAlumno', { id: parseInt(id, 10) });
|
||||
if (resAlumno.status === 200) {
|
||||
setAlumno(resAlumno.data);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
};
|
||||
|
||||
const handlePreviousMatricula = () => {
|
||||
if (currentMatriculaIndex > 0) {
|
||||
const newIndex = currentMatriculaIndex - 1;
|
||||
setCurrentMatriculaIndex(newIndex);
|
||||
fetchAlumnoData(matriculas[newIndex].id);
|
||||
}
|
||||
};
|
||||
|
||||
const handleNextMatricula = () => {
|
||||
if (currentMatriculaIndex < matriculas.length - 1) {
|
||||
const newIndex = currentMatriculaIndex + 1;
|
||||
setCurrentMatriculaIndex(newIndex);
|
||||
fetchAlumnoData(matriculas[newIndex].id);
|
||||
}
|
||||
};
|
||||
|
||||
if (loading) {
|
||||
return <div>Loading...</div>;
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="container mt-4">
|
||||
<h1 className="text-center mb-4">Validacion Administrativa</h1>
|
||||
<h1 className="text-center mb-4">Validación Administrativa</h1>
|
||||
|
||||
<div className="input-group mb-3 justify-content-center">
|
||||
<div className="input-group-prepend">
|
||||
<button className="btn btn-sm p-0 border-0" type="button">
|
||||
<button className="btn btn-sm p-0 border-0" type="button" onClick={handlePreviousMatricula}>
|
||||
<img src="left-arrow.png" alt="Icono de flecha izquierda" style={{ width: '20px', height: '20px' }} />
|
||||
</button>
|
||||
</div>
|
||||
<input type="text" className="form-control form-control-sm text-center" style={{ maxWidth: '250px' }} placeholder="Aqui aparece la matricula" />
|
||||
<input
|
||||
type="text"
|
||||
className="form-control form-control-sm text-center"
|
||||
style={{ maxWidth: '250px' }}
|
||||
placeholder="Aqui aparece la matricula"
|
||||
value={matriculas[currentMatriculaIndex].matricula}
|
||||
readOnly
|
||||
/>
|
||||
<div className="input-group-append">
|
||||
<button className="btn btn-sm p-0 border-0" type="button">
|
||||
<button className="btn btn-sm p-0 border-0" type="button" onClick={handleNextMatricula}>
|
||||
<img src="right-arrow.png" alt="Icono de flecha derecha" style={{ width: '20px', height: '20px' }} />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div className="card mb-4">
|
||||
<div className="card-body">
|
||||
<h2 className="card-title">Datos del Alumno</h2>
|
||||
<div className="row">
|
||||
<div className="col-md-6">
|
||||
<p className="card-text"><strong>Nombre:</strong> { } </p>
|
||||
<p className="card-text"><strong>Apellido:</strong>{ } </p>
|
||||
<p className="card-text"><strong>Matricula:</strong> { }</p>
|
||||
<p className="card-text"><strong>Correo:</strong>{ } </p>
|
||||
<p className="card-text"><strong>Nacionalidad:</strong>{ } </p>
|
||||
<p className="card-text"><strong>Tipo de sangre:</strong>{ } </p>
|
||||
<p className="card-text"><strong>Fecha de nacimiento:</strong>{ } </p>
|
||||
<p className="card-text"><strong>CURP:</strong>{ } </p>
|
||||
<p className="card-text"><strong>Carrera:</strong>{ } </p>
|
||||
<p className="card-text"><strong>Nombre:</strong> {alumno.nombre}</p>
|
||||
<p className="card-text"><strong>Apellido:</strong> {alumno.apellido}</p>
|
||||
<p className="card-text"><strong>Matricula:</strong> {alumno.matricula}</p>
|
||||
<p className="card-text"><strong>Correo:</strong> {alumno.correo}</p>
|
||||
<p className="card-text"><strong>Nacionalidad:</strong> {alumno.nacionalidad}</p>
|
||||
<p className="card-text"><strong>Tipo de sangre:</strong> {alumno.tipoSangre}</p>
|
||||
<p className="card-text"><strong>Fecha de nacimiento:</strong> {alumno.fecha_nacimiento}</p>
|
||||
<p className="card-text"><strong>CURP:</strong> {alumno.curp}</p>
|
||||
<p className="card-text"><strong>Carrera:</strong> {alumno.carreraNombre}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -52,9 +105,9 @@ const ValidacionAdm = () => {
|
|||
<h2 className="card-title">Datos del Tutor</h2>
|
||||
<div className="row">
|
||||
<div className="col-md-6">
|
||||
<p className="card-text"><strong>Nombre:</strong> { } </p>
|
||||
<p className="card-text"><strong>Apellido:</strong>{ } </p>
|
||||
<p className="card-text"><strong>Teléfono:</strong>{ }</p>
|
||||
<p className="card-text"><strong>Nombre:</strong> {alumno.tutorNombre}</p>
|
||||
<p className="card-text"><strong>Apellido:</strong> {alumno.tutorApellido}</p>
|
||||
<p className="card-text"><strong>Teléfono:</strong> {alumno.numeroDeTelefono}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -62,35 +115,33 @@ const ValidacionAdm = () => {
|
|||
|
||||
<div className="card mb-4">
|
||||
<div className="card-body">
|
||||
<h2 className="card-title">Documentos de Alumno</h2>
|
||||
<h2 className="card-title">Documentos del Alumno</h2>
|
||||
<div className="pdf-container mb-4">
|
||||
<p className="card-text"><strong>Acta de Nacimiento:</strong> </p>
|
||||
<embed src={"mapa_curri_TC.pdf"} type="application/pdf" width="100%" height="300px" onLoad={handleLoad} />
|
||||
<p className="card-text"><strong>Acta de Nacimiento:</strong></p>
|
||||
<embed src={'http://localhost:3000/'+alumno.matricula+'_ActaN.pdf'} type="application/pdf" width="100%" height="300px" />
|
||||
<div className="d-flex justify-content-center mt-3">
|
||||
<button className="btn btn-primary btn-sm me-1">Aceptar Documentos</button>
|
||||
<button className="btn btn-primary btn-sm ms-1">Rechazar Documentos</button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="pdf-container mb-4">
|
||||
<p className="card-text"><strong>Constancia de estudios :</strong> </p>
|
||||
<embed src={"mapa_curri_TC.pdf"} type="application/pdf" width="100%" height="300px" onLoad={handleLoad} />
|
||||
<p className="card-text"><strong>Constancia de estudios:</strong></p>
|
||||
<embed src={alumno.constanciaEstudios} type="application/pdf" width="100%" height="300px" />
|
||||
<div className="d-flex justify-content-center mt-3">
|
||||
<button className="btn btn-primary btn-sm me-1">Aceptar Documentos</button>
|
||||
<button className="btn btn-primary btn-sm ms-1">Rechazar Documentos</button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="pdf-container mb-4">
|
||||
<p className="card-text"><strong>Fotografia:</strong> </p>
|
||||
<embed src={"mapa_curri_TC.pdf"} type="application/pdf" width="100%" height="300px" onLoad={handleLoad} />
|
||||
<p className="card-text"><strong>Fotografía:</strong></p>
|
||||
<embed src={alumno.fotografia} type="application/pdf" width="100%" height="300px" />
|
||||
<div className="d-flex justify-content-center mt-3">
|
||||
<button className="btn btn-primary btn-sm me-1">Aceptar Documentos</button>
|
||||
<button className="btn btn-primary btn-sm ms-1">Rechazar Documentos</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue