Actualmente, el proyecto se encuentra en desarrollo
El proyecto de Express incluye las siguientes características:
- Crear y gestionar cuentas contables.
- Registrar transacciones financieras, especificando las cuentas involucradas y los montos correspondientes.
- Generar informes y balances para evaluar la salud financiera de la empresa.
Para instalar y ejecutar el proyecto, se requieren los siguientes componentes:
- Node.js
- NPM
El proyecto hace uso de las siguientes tecnologías:
- Node.js
- Express
- MySQL
- JWT (JSON Web Tokens)
Para instalar el proyecto, sigue estos pasos:
- Clona el repositorio:
git clone https://github.com/miusarname/Filtro-Real.git
- Dirígete al directorio del proyecto:
cd Filtro-Real
- Instala las dependencias:
npm install
- Crea el archivo .env con la configuración de la base de datos y el puerto:
PORT=3000 o <puerto_donde_correra_tu_servidor>(Este puerto debe estar disponible, si te sale algo como esto :
```bash
node:events:492
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::3005
at Server.setupListenHandle [as _listen2] (node:net:1872:16)
at listenInCluster (node:net:1920:12)
at Server.listen (node:net:2008:7)
at Function.listen (/home/apolt01-013/Desktop/carpetica/apifiltro/node_modules/express/lib/application.js:635:24)
at file:///home/apolt01-013/Desktop/carpetica/apifiltro/controller/index.js:21:5
at ModuleJob.run (node:internal/modules/esm/module_job:192:25)
at async DefaultModuleLoader.import (node:internal/modules/esm/loader:228:24)
at async loadESM (node:internal/process/esm_loader:40:7)
at async handleMainPromise (node:internal/modules/run_main:66:12)
Emitted 'error' event on Server instance at:
at emitErrorNT (node:net:1899:8)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
code: 'EADDRINUSE',
errno: -98,
syscall: 'listen',
address: '::',
port: 3005
}
Node.js v20.5.0
```
Significa que el puerto esta ocupado y debes poner otro
DB_NAME="nombre_de_tu_base_de_datos"
DB_USER="tu_usuario_de_mongodb"
DB_PASSWORD="contraseña_de_tu_base_de_datos"
DB_HOST="localhost"
DB_PORT=3306 o <puerto_de_tu_base_de_datos> (por ejemplo: 3306)
JWT_PRIVATE_KEY = <La_key_con_la_cual_desencripta_el_JWT> (Este campo es libre, lo quiera poner)
Reemplaza los valores entre comillas con los correspondientes a tu base de datos mongodb.
En mi caso quedo algo así :
PORT = 3002
DB_NAME="contabilidad5"
DB_USER="campus"
DB_PASSWORD="campus2023"
DB_HOST="localhost"
DB_PORT=3306
JWT_PRIVATE_KEY = "OscarElPapu"
Antes de usar el proyecto, asegúrate de que la base de datos esté configurada correctamente. Sigue los pasos a continuación:
- Copia el código SQL que se encuentra en el archivo db/db_Creation.mongodb.
- Abre tu administrador de base de datos, como mongodb Workbench o PhpMyAdmin
- Pega el codigo
- Ejecuta el código SQL copiado en la interfaz del administrador para crear la base de datos y sus tablas.
Antes de acceder a las rutas protegidas, necesitas obtener un token de acceso. Para obtener el token, envía una petición GET a la siguiente ruta:
http://localhost:<PORT>/token
Nota:Tambien existe un token de administrador que lo podemos pedir de la misma forma :
Una vez que tengas el token de acceso, debes incluirlo en los headers de tus peticiones a las rutas protegidas. Por ejemplo:
headers: {
Authorization: "Bearer tu_token_de_acceso";
}
o
Ahora puedes acceder a las rutas especificadas en el token. Si el token tiene el rol de "administrador", tendrás acceso total.
NOTA: Los token tiene una duracion de 30 minutos
Para ejecutar la aplicación, simplemente ejecuta el siguiente comando:
Nota :Primero en otra consola o terminal en la ruta de la aplicación deberas ejecutar esto :
npm run tsc
luego esto :
npm run dev
La aplicación se ejecutará en el puerto especificado en el archivo .env, por ejemplo, en este caso en el puerto 3000. Puedes acceder a ella en la siguiente URL:
- Consulta 3: Listar todos los alquileres activos junto con los datos de los clientes relacionados. Endpoint: /alquieres (GET)
- Consulta 4: Mostrar todas las reservas pendientes con los datos del cliente y el automóvil reservado. Endpoint: /reservas (GET)
- Consulta 5: Obtener los detalles del alquiler con el ID_Alquiler específico. Endpoint: /alquieres/:id (GET)
Esto /:id significa que aca es donde pondras el numero del alquier por ejemplo si el el numero del alquier es 1 entonces buscaremos
http://localhost:<PORT>/alquieres/1
- Consulta 7: Mostrar la cantidad total de automóviles disponibles en cada sucursal. Endpoint: /sucursales/cantidad (GET)
- Consulta 8: Obtener el costo total de un alquiler específico. Endpoint: /alquieres/costo/:id (GET)
Esto /:id significa que aca es donde pondras el numero del alquier por ejemplo si el el numero del alquier es 1 entonces buscaremos
http://localhost:<PORT>/alquieres/costo/1
Esto /:DNI significa que aca es donde pondras el numero del alquier por ejemplo si el el DNI es 1 entonces buscaremos
http://localhost:<PORT>/clientes/1
- Consulta 10: Mostrar todos los automóviles con una capacidad mayor a 5 personas. Endpoint: /autos/elderly/5 (GET)
- Consulta 11: Obtener los detalles del alquiler que tiene fecha de inicio en '2023-07-05'. Endpoint: /alquieres/details/fechaf (GET)
- Consulta 12: Listar las reservas pendientes realizadas por un cliente específico. Endpoint: /alquieres/:DNI (GET)
Esto /:DNI significa que aca es donde pondras el DNI del cliente por ejemplo si el el DNI es 1 entonces buscaremos
http://localhost:<PORT>/alquieres/1
- Consulta 11: Mostrar los empleados con cargo de "Gerente" o "Asistente". Endpoint: /empleados/gerenteoasistente (GET)
¡Se agradecen las contribuciones! Si deseas contribuir al proyecto, puedes enviar una solicitud de extracción a través de GitHub.
El proyecto está bajo la licencia MIT.