181 lines
5.3 KiB
JavaScript
181 lines
5.3 KiB
JavaScript
|
import express from 'express';
|
||
|
import bodyParser from 'body-parser';
|
||
|
import DAO from './Controller/DAO.js'; // Importa tus controladores DAO
|
||
|
import DAOTutor from './Controller/DAOTutor.js';
|
||
|
import DAOCarreras from './Controller/DAOCarrera.js';
|
||
|
import Usuario from './Model/Usuario.js'; // Importa tus modelos
|
||
|
import multer from 'multer';
|
||
|
import path from 'path';
|
||
|
import { fileURLToPath } from 'url';
|
||
|
import DAODocumento from './Controller/DAODocumento.js';
|
||
|
import fs from 'fs';
|
||
|
|
||
|
const app = express();
|
||
|
const port = 3000;
|
||
|
|
||
|
// Obtener el directorio actual
|
||
|
const __filename = fileURLToPath(import.meta.url);
|
||
|
const __dirname = path.dirname(__filename);
|
||
|
|
||
|
const diskStorage = multer.diskStorage({
|
||
|
destination: path.join(__dirname, '/ActasNacimiento'),
|
||
|
filename: (req, file, cb) => {
|
||
|
cb(null, file.originalname);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
const fileUpload = multer({
|
||
|
storage: diskStorage
|
||
|
}).single('archivo');
|
||
|
|
||
|
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();
|
||
|
});
|
||
|
|
||
|
// Rutas
|
||
|
app.get("/todosLosAlumnos", async (req, res) => {
|
||
|
try {
|
||
|
const alumnos = await DAO.dameAlumnos();
|
||
|
res.json(alumnos);
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ error: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
app.post("/agregarAlumno", async (req, res) => {
|
||
|
try {
|
||
|
const usuario = req.body;
|
||
|
usuario.rol = "estudiante";
|
||
|
const msj = await DAO.agregarAlumno(usuario);
|
||
|
res.json(msj);
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ error: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
app.put("/editarUsuario", async (req, res) => {
|
||
|
try {
|
||
|
const usuario = req.body;
|
||
|
const verificado = await DAO.editarAlumno(usuario);
|
||
|
res.json({ Editado: verificado });
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ error: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
app.put("/editarTutor", async (req, res) => {
|
||
|
try {
|
||
|
const tutor = req.body;
|
||
|
const verificado = await DAOTutor.editarTutor(tutor);
|
||
|
res.json({ Editado: verificado });
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ error: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
app.post("/agregarTutor", async (req, res) => {
|
||
|
try {
|
||
|
const tutor = req.body;
|
||
|
const agregado = await DAOTutor.agregarTutor(tutor);
|
||
|
res.json({ msj: agregado });
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ error: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
app.post("/alumnoIniciado", async (req, res) => {
|
||
|
try {
|
||
|
const alumno = req.body;
|
||
|
const matricula = alumno.matricula;
|
||
|
if (!alumno.matricula || !alumno.contrasena) {
|
||
|
return res.status(400).json({ error: "Missing matricula or contrasena" });
|
||
|
}
|
||
|
const usuario = await DAO.alumnoIniciado(alumno.matricula, alumno.contrasena);
|
||
|
const user = new Usuario();
|
||
|
if (usuario) {
|
||
|
const authToken = user.crearToken();
|
||
|
const authRol = usuario.getRol();
|
||
|
const authId = usuario.getId();
|
||
|
const message = `Bienvenido ${usuario.getNombre()}`;
|
||
|
res.json({ matricula, authToken, authRol, authId, message });
|
||
|
} else {
|
||
|
res.status(401).json({ error: "Credenciales inválidas" });
|
||
|
}
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ error: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
app.post("/usuarioValido", async (req, res) => {
|
||
|
try {
|
||
|
const usuario = req.body;
|
||
|
const verificado = await DAO.validarAlumno(usuario);
|
||
|
res.json({ existe: verificado });
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ error: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
app.post("/traerDatosAlumno", async (req, res) => {
|
||
|
try {
|
||
|
const usuario = req.body;
|
||
|
const datos = await DAO.traeUsuario(usuario.id);
|
||
|
res.json(datos);
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ error: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
app.get("/carreras", async (req, res) => {
|
||
|
try {
|
||
|
const carreras = await DAOCarreras.dameCarreras();
|
||
|
res.json(carreras);
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ error: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
app.post("/traerDatosTutor", async (req, res) => {
|
||
|
try {
|
||
|
const usuario = req.body;
|
||
|
const datos = await DAOTutor.traerTutor(usuario.id);
|
||
|
res.json(datos);
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ error: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
app.post("/agregarDocumentoAN", fileUpload, async (req, res) => {
|
||
|
try {
|
||
|
const data = req.body;
|
||
|
const file = fs.readFileSync(path.join(__dirname, '/ActasNacimiento/' + req.file.filename))
|
||
|
const guardado = await DAODocumento.agregarDocumento(data, file);
|
||
|
|
||
|
if (guardado) {
|
||
|
res.json({ message: "Archivo guardado correctamente" });
|
||
|
} else {
|
||
|
res.json({ message: "No se pudo guardar el archivo" });
|
||
|
}
|
||
|
} catch (error) {
|
||
|
res.status(500).json({ error: error.message });
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Manejo de errores
|
||
|
app.use((err, req, res, next) => {
|
||
|
console.error(err.stack);
|
||
|
res.status(500).send('Something broke!');
|
||
|
});
|
||
|
|
||
|
// Iniciar el servidor
|
||
|
app.listen(port, () => {
|
||
|
console.log(`App listening at http://localhost:${port}`);
|
||
|
});
|