Skip to content

Documentacion para desarrolladores

Edward Brito Diaz edited this page Nov 23, 2022 · 3 revisions

El backend de este proyecto es MySql y NodeJs usando el Framework ExpressJs

Tecnologías:

  • Node(Backend).
  • Express(Framework).
  • Git and GitHub (Version Control).
  • JSON Web Tokens(JWT Auth).
  • Sequelize ORM (Consultas SQL).
  • MySQL (Gestor de base de datos).
  • Bcryptjs (Encriptar datos).

Rutas necesarias

@Get

Obtener paquetes por usuario
Obtener todos los paquetes
Obtener los estados de los paquetes 
Obtener roles
Obtener estados
Obtener pago
Obtener tracking
Obtener ultimo estado
Obtener resumen para grafico
Obtener pendiente de envio
Obtener pendiente de pago
Obtener enviados
Obtener factura
Obtener transacciones
Obtener Token

@Post

Registrar paquetes por usuario
Guardar usuario final
Iniciar session
Agregar roles
Agregar transaccion
Registrar cliente
Registrar personal (En la página Administrativa)
Actualizar el estado del paquete (administrativo)

@Put

Actualizar el precio de los paquetes (administrativo)
Actualizar el estado de los empleado a inactivo

@Delete

Eliminar personal
Eliminar roles
Eliminar token

Ejecutar localmente

  1. Clona el proyecto.
git clone https://github.com/Edwardb11/package-tracking-backend
  1. Ir al directorio del proyecto.
   cd package-tracking-backend
  1. Instalar dependencias.
npm install
  1. Configure su archivo .env usando .env.example como referencia. Para ejecutar este proyecto, deberá agregar las siguientes variables de entorno a su archivo .env.
Archivo: .env
ACCESS_TOKEN_SECRET = jsfgfjguwrg8783wgbjs849h2fu3cnsvh8wyr8fhwfvi2g225
REFRESH_TOKEN_SECRET = 825y8i3hnfjmsbv7gwajbl7fobqrjfvbs7gbfj2q3bgh8f42
PORT = 5000
MYSQLHOST = containers-us-west-49.railway.app
MYSQLUSER = root
MYSQLPASSWORD = B8DWKu6xUy2fAaAPXc2P
MYSQLDATABASE = railway
MYSQLPORT = 6787
ORIGIN = https://package-tracking-frontend.vercel.app

  1. Inicie el servidor de nodos.
npm start
  1. Abra el servidor de desarrollo en http://localhost:5000

Modelo Entidad-Relación (ER)

ER

Diagrama de flujo de datos

image

Algoritmo

image

Base de Datos

Mysql


-- -----------------------------------------------------
-- Schema sistema_paqueteriaV2
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema sistema_paqueteriaV2
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `sistema_paqueteriaV2` DEFAULT CHARACTER SET utf8 ;
USE `sistema_paqueteriaV2` ;

Tablas

--
-- Estructura de tabla para la tabla `cliente`
--

CREATE TABLE `cliente` (
  `id_cliente` int(11) NOT NULL,
  `nombres` varchar(50) NOT NULL,
  `apellidos` varchar(50) NOT NULL,
  `sexo` varchar(50) NOT NULL,
  `celular` varchar(50) NOT NULL,
  `correo_electronico` varchar(90) NOT NULL,
  `contraseña` varchar(100) NOT NULL,
  `fecha_nacimiento` date NOT NULL,
  `token` text DEFAULT NULL,
  `creado` datetime DEFAULT current_timestamp(),
  `actualizado` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Estructura de tabla para la tabla `estados`
--

CREATE TABLE `estados` (
  `id_estado` int(11) NOT NULL,
  `nombre` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Estructura de tabla para la tabla `factura`
--

CREATE TABLE `factura` (
  `id_factura` int(11) NOT NULL,
  `id_paquete` varchar(30) NOT NULL,
  `cantidad_a_pagar` int(55) NOT NULL,
  `creado` datetime DEFAULT current_timestamp(),
  `actualizado` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Estructura de tabla para la tabla `metodos_de_pagos`
--

CREATE TABLE `metodos_de_pagos` (
  `id_metodo_de_pago` int(11) NOT NULL,
  `nombre` varchar(45) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Estructura de tabla para la tabla `paquete`
--

CREATE TABLE `paquete` (
  `id_paquete` varchar(30) NOT NULL,
  `id_usuario_final` int(11) NOT NULL,
  `id_cliente` int(11) NOT NULL,
  `nombre` varchar(30) NOT NULL,
  `peso` varchar(30) NOT NULL,
  `cantidad` int(11) NOT NULL,
  `ubicacion` varchar(255) NOT NULL,
  `creado` datetime DEFAULT current_timestamp(),
  `actualizado` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


--
-- Estructura de tabla para la tabla `paquetes_estados`
--

CREATE TABLE `paquetes_estados` (
  `id_paquetes` varchar(30) NOT NULL,
  `id_estado` int(11) NOT NULL,
  `id_personal` int(11) NOT NULL,
  `ubicacion` varchar(100) NOT NULL,
  `activo` tinyint(1) NOT NULL,
  `creado` datetime DEFAULT current_timestamp(),
  `actualizado` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


--
-- Estructura de tabla para la tabla `personal`
--

CREATE TABLE `personal` (
  `id_personal` int(11) NOT NULL,
  `nombres` varchar(30) NOT NULL,
  `apellidos` varchar(30) NOT NULL,
  `sexo` varchar(30) NOT NULL,
  `niveles_estudios` varchar(30) NOT NULL,
  `correo_electronico` varchar(90) NOT NULL,
  `contraseña` varchar(100) NOT NULL,
  `fecha_nacimiento` date NOT NULL,
  `celular` varchar(50) DEFAULT NULL,
  `activo` tinyint(1) NOT NULL,
  `token` text DEFAULT NULL,
  `creado` datetime DEFAULT current_timestamp(),
  `actualizado` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Estructura de tabla para la tabla `personal_roles`
--

CREATE TABLE `personal_roles` (
  `id_personal` int(11) NOT NULL,
  `id_roles` int(11) NOT NULL,
  `creado` datetime DEFAULT current_timestamp(),
  `actualizado` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Estructura de tabla para la tabla `roles`
--

CREATE TABLE `roles` (
  `id_roles` int(11) NOT NULL,
  `nombre` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Estructura de tabla para la tabla `transacciones`
--

CREATE TABLE `transacciones` (
  `id_transaccion` int(11) NOT NULL,
  `id_metodo_de_pago` int(11) NOT NULL,
  `id_factura` int(11) NOT NULL,
  `monto` int(55) NOT NULL,
  `creado` datetime DEFAULT current_timestamp(),
  `actualizado` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Estructura de tabla para la tabla `usuario_finales`
--

CREATE TABLE `usuario_finales` (
  `id_usuario_final` int(11) NOT NULL,
  `nombres` varchar(50) NOT NULL,
  `apellidos` varchar(50) NOT NULL,
  `sexo` varchar(20) NOT NULL,
  `celular` varchar(50) NOT NULL,
  `ubicacion` varchar(90) NOT NULL,
  `creado` datetime DEFAULT current_timestamp(),
  `actualizado` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Indices

--
-- Indices de la tabla `cliente`
--
ALTER TABLE `cliente`
  ADD PRIMARY KEY (`id_cliente`);

--
-- Indices de la tabla `estados`
--
ALTER TABLE `estados`
  ADD PRIMARY KEY (`id_estado`);

--
-- Indices de la tabla `factura`
--
ALTER TABLE `factura`
  ADD PRIMARY KEY (`id_factura`,`id_paquete`),
  ADD KEY `fk_factura_paquete1` (`id_paquete`);

--
-- Indices de la tabla `metodos_de_pagos`
--
ALTER TABLE `metodos_de_pagos`
  ADD PRIMARY KEY (`id_metodo_de_pago`);

--
-- Indices de la tabla `paquete`
--
ALTER TABLE `paquete`
  ADD PRIMARY KEY (`id_paquete`,`id_usuario_final`,`id_cliente`),
  ADD KEY `fk_paquetes_usuario_final1` (`id_usuario_final`),
  ADD KEY `fk_paquetes_clientes1` (`id_cliente`);

--
-- Indices de la tabla `paquetes_estados`
--
ALTER TABLE `paquetes_estados`
  ADD PRIMARY KEY (`id_paquetes`,`id_estado`,`id_personal`),
  ADD KEY `fk_paquetes_has_estados_estados1` (`id_estado`),
  ADD KEY `fk_paquetes_estados_personal1` (`id_personal`);

--
-- Indices de la tabla `personal`
--
ALTER TABLE `personal`
  ADD PRIMARY KEY (`id_personal`);

--
-- Indices de la tabla `personal_roles`
--
ALTER TABLE `personal_roles`
  ADD PRIMARY KEY (`id_personal`,`id_roles`),
  ADD KEY `fk_personal_has_roles_roles1` (`id_roles`);

--
-- Indices de la tabla `roles`
--
ALTER TABLE `roles`
  ADD PRIMARY KEY (`id_roles`);

--
-- Indices de la tabla `transacciones`
--
ALTER TABLE `transacciones`
  ADD PRIMARY KEY (`id_transaccion`,`id_factura`,`id_metodo_de_pago`),
  ADD KEY `fk_transacciones_factura2` (`id_factura`),
  ADD KEY `fk_transacciones_metodos_de_pagos2` (`id_metodo_de_pago`);

--
-- Indices de la tabla `usuario_finales`
--
ALTER TABLE `usuario_finales`
  ADD PRIMARY KEY (`id_usuario_final`);

--
-- AUTO_INCREMENT de las tablas volcadas
--

--
-- AUTO_INCREMENT de la tabla `cliente`
--
ALTER TABLE `cliente`
  MODIFY `id_cliente` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT de la tabla `estados`
--
ALTER TABLE `estados`
  MODIFY `id_estado` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT de la tabla `factura`
--
ALTER TABLE `factura`
  MODIFY `id_factura` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=26;

--
-- AUTO_INCREMENT de la tabla `metodos_de_pagos`
--
ALTER TABLE `metodos_de_pagos`
  MODIFY `id_metodo_de_pago` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT de la tabla `personal`
--
ALTER TABLE `personal`
  MODIFY `id_personal` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=24;

--
-- AUTO_INCREMENT de la tabla `roles`
--
ALTER TABLE `roles`
  MODIFY `id_roles` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT de la tabla `transacciones`
--
ALTER TABLE `transacciones`
  MODIFY `id_transaccion` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=44;

--
-- AUTO_INCREMENT de la tabla `usuario_finales`
--
ALTER TABLE `usuario_finales`
  MODIFY `id_usuario_final` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=26;

Restricciones

--
-- Restricciones para tablas volcadas
--

--
-- Filtros para la tabla `factura`
--
ALTER TABLE `factura`
  ADD CONSTRAINT `fk_factura_paquete1` FOREIGN KEY (`id_paquete`) REFERENCES `paquete` (`id_paquete`) ON DELETE NO ACTION ON UPDATE NO ACTION;

--
-- Filtros para la tabla `paquete`
--
ALTER TABLE `paquete`
  ADD CONSTRAINT `fk_paquetes_clientes1` FOREIGN KEY (`id_cliente`) REFERENCES `cliente` (`id_cliente`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `fk_paquetes_usuario_final1` FOREIGN KEY (`id_usuario_final`) REFERENCES `usuario_finales` (`id_usuario_final`) ON DELETE NO ACTION ON UPDATE NO ACTION;

--
-- Filtros para la tabla `paquetes_estados`
--
ALTER TABLE `paquetes_estados`
  ADD CONSTRAINT `fk_paquetes_estados_personal1` FOREIGN KEY (`id_personal`) REFERENCES `personal` (`id_personal`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `fk_paquetes_has_estados_estados1` FOREIGN KEY (`id_estado`) REFERENCES `estados` (`id_estado`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `fk_paquetes_has_estados_paquetes1` FOREIGN KEY (`id_paquetes`) REFERENCES `paquete` (`id_paquete`) ON DELETE NO ACTION ON UPDATE NO ACTION;

--
-- Filtros para la tabla `personal_roles`
--
ALTER TABLE `personal_roles`
  ADD CONSTRAINT `fk_personal_has_roles_personal1` FOREIGN KEY (`id_personal`) REFERENCES `personal` (`id_personal`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `fk_personal_has_roles_roles1` FOREIGN KEY (`id_roles`) REFERENCES `roles` (`id_roles`) ON DELETE NO ACTION ON UPDATE NO ACTION;

--
-- Filtros para la tabla `transacciones`
--
ALTER TABLE `transacciones`
  ADD CONSTRAINT `fk_transacciones_factura2` FOREIGN KEY (`id_factura`) REFERENCES `factura` (`id_factura`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `fk_transacciones_metodos_de_pagos2` FOREIGN KEY (`id_metodo_de_pago`) REFERENCES `metodos_de_pagos` (`id_metodo_de_pago`) ON DELETE NO ACTION ON UPDATE NO ACTION;