Files
APP-SIGMA-WEB/src/rutas/rt_clientes.js
2025-07-17 14:40:17 -05:00

108 lines
7.1 KiB
JavaScript

const express = require('express');
const rutas = express.Router();
const controladorClientes = require('../controladores/controlador_Clientes');
const controladorMembresias = require('../controladores/controlador_Clientes_Membresias');
const controladorMiembros = require('../controladores/controlador_Clientes_Miembros');
const controladorAreas = require('../controladores/controlador_Areas'); // Controlador para áreas de configuración
const controladorVisitas = require('../controladores/controlador_Clientes_MiembrosVisitas'); // Controlador para visitas de miembros
//indice inical
rutas.get('/clientes', controladorClientes.ver);//ver lista de clientes
//ver listar clientes /formulario/:varNomCampoDb, controlador clase.funcion
rutas.get('/clientJson/:client_rucCed', controladorClientes.verClientJson);//ver cliente en modo json/get
rutas.get('/verClientesJsonApp', controladorClientes.verClientesJsonApp);//ver cliente en modo json/get
rutas.post('/verClientJsonPost/:client_rucCed', controladorClientes.verClientJsonPost);//ver cliente en mod json
rutas.get('/buscarClienteForm/:client_rucCed', controladorClientes.verClientForm);//ver cliente en tab form
//modificar clientes
rutas.get('/actCliente/:client_id', controladorClientes.VerClienteA_Modificar);//carga el cliente
rutas.post('/actCliente/:client_id', controladorClientes.modificaCliente);//actualiza el cliente
//eliminar clientes
rutas.get('/eliminarCliente/:client_id', controladorClientes.eliminarCliente);
//almacena cliente
rutas.post('/addCliente', controladorClientes.guardaCliente);//almacena en bd el nuevo cliente: https://app.factura-e.net/addCliente
rutas.get('/addClienteForm', controladorClientes.verFormNclientes);//muesta form para crear cliente
//*** Consultas de clientes(/consultaClientesJson?consulta=dato) donde dato puede ser nombre, ruc, cedula;
rutas.get('/consultaClientesJson', controladorClientes.app_pedidos_clientes);//consulta clientes: /consultaClientesJson?consulta=dato
rutas.get('/consulta_clientesApps', controladorClientes.consulta_clientesApps);
rutas.get('/busquedaSRI/', controladorClientes.buscarCli_sri);//API consulta clientes
//API CONSULTA CLIENTES: https://NAME_SERVER/api_consultaClientes?id=numero_rucOcedula => https://app.factura-e.net/api_consultaClientes?id=0701637498001
rutas.get('/api_consultaClientes/', controladorClientes.api_consultaCliente);//API consulta clientes
// --- NUEVAS RUTAS RESTful para CLIENTES (para el frontend Vue) ---
// Obtener un cliente por su client_rucCed (para EditarCliente.vue)
rutas.get('/api/clientes/:client_rucCed', controladorClientes.obtenerClienteJsonPorId); // Nuevo endpoint RESTful GET
// Crear un nuevo cliente (para NuevoCliente.vue)
rutas.post('/api/clientes', controladorClientes.crearClienteJson); // Nuevo endpoint RESTful POST
// Actualizar un cliente existente (para EditarCliente.vue)
rutas.put('/api/clientes/:client_rucCed', controladorClientes.actualizarClienteJson); // Nuevo endpoint RESTful PUT
// Eliminar un cliente (para ListaClientes.vue)
rutas.delete('/api/clientes/:client_rucCed', controladorClientes.eliminarClienteJson); // Nuevo endpoint RESTful DELETE
// --- Rutas RESTful para TIPOS de Membresías (tabla 'clientes_membresias') ---
// Estas rutas apuntarán al nuevo controlador_Membresias
rutas.get('/api/tipos-membresia', controladorMembresias.listarTiposMembresia);
rutas.get('/api/tipos-membresia/:id', controladorMembresias.obtenerTipoMembresiaPorId);
rutas.post('/api/tipos-membresia', controladorMembresias.crearTipoMembresia);
rutas.put('/api/tipos-membresia/:id', controladorMembresias.actualizarTipoMembresia);
rutas.delete('/api/tipos-membresia/:id', controladorMembresias.eliminarTipoMembresia);
// --- Rutas RESTful para MIEMBROS (tabla 'clientes_miembros') ---
// Estas rutas apuntarán al nuevo controlador_Miembros
// Obtener todos los miembros
rutas.get('/api/miembros', controladorMiembros.listarMiembros);
// Obtener un miembro por su ID
rutas.get('/api/miembros/:id_miembro', controladorMiembros.obtenerMiembroPorId);
// Crear un nuevo miembro
// Datos esperados en el cuerpo de la solicitud: matricula, client_id, id_tipo_membresia, fecha_inicio, fecha_fin, etc.
rutas.post('/api/miembros', controladorMiembros.crearMiembro);
// Actualizar un miembro existente por su ID
// Datos esperados en el cuerpo de la solicitud para actualizar: estado, fechas, etc.
rutas.put('/api/miembros/:id_miembro', controladorMiembros.actualizarMiembro);
// Eliminar (lógicamente/cambiar estado a CANCELADO/SUSPENDIDO) un miembro por su ID
// NOTA: Dada la importancia del historial, es más común cambiar el estado a 'CANCELADO' o 'SUSPENDIDO'
// en lugar de una eliminación física. El controlador debería manejar esto.
rutas.delete('/api/miembros/:id_miembro', controladorMiembros.eliminarMiembro);
// --- Rutas Adicionales Comunes para Miembros (Opcional) ---
// Obtener miembros por client_id (útil para ver todas las membresías de un cliente)
rutas.get('/api/clientes/:client_id/miembros', controladorMiembros.listarMiembrosPorCliente);
// Obtener miembros por estado (ej. 'ACTIVO', 'VENCIDO')
rutas.get('/api/miembros/estado/:estado', controladorMiembros.listarMiembrosPorEstado);
// Obtener miembros por tipo de membresía
rutas.get('/api/tipos-membresia/:id_tipo_membresia/miembros', controladorMiembros.listarMiembrosPorTipoMembresia);
/// --- Rutas RESTful para VISITAS UNIFICADAS (tabla 'clientes_visitas') ---
// Estas rutas apuntarán al nuevo controlador_ClientesVisitas
// Registrar una nueva visita (para miembro o ocasional)
rutas.post('/api/visitas', controladorVisitas.crearVisita); // Renombrado a 'crearVisita'
// Obtener todas las visitas (con posibilidad de filtros, cuidado con volumen)
rutas.get('/api/visitas', controladorVisitas.listarVisitas);
// Obtener una visita específica por su ID
rutas.get('/api/visitas/:id_visita', controladorVisitas.obtenerVisitaPorId);
// Actualizar una visita existente (ej. corregir observaciones, cambiar estado si se permite)
rutas.put('/api/visitas/:id_visita', controladorVisitas.actualizarVisita);
// Eliminar lógicamente una visita (ej. marcar como 'ANULADA' si tuvieras ese estado)
rutas.delete('/api/visitas/:id_visita', controladorVisitas.eliminarVisita); // Implementación para una eliminación lógica
// Rutas de consulta específicas para visitas
rutas.get('/api/visitas/por-cliente/:client_id', controladorVisitas.listarVisitasPorCliente);
rutas.get('/api/visitas/por-miembro/:id_miembro', controladorVisitas.listarVisitasPorMiembro);
rutas.get('/api/visitas/estado/:estado_acceso', controladorVisitas.listarVisitasPorEstadoAcceso);
rutas.get('/api/visitas/area/:nombre_area', controladorVisitas.listarVisitasPorArea);
// Rutas para la administración de Áreas de Acceso
rutas.get('/api/areas', controladorAreas.listarAreas);
rutas.get('/api/areas/:id', controladorAreas.obtenerAreaPorId);
rutas.post('/api/areas', controladorAreas.crearArea);
rutas.put('/api/areas/:id', controladorAreas.actualizarArea);
rutas.put('/api/areas/:id/inactivar', controladorAreas.inactivarArea); // Ruta específica para inactivar
// Ruta para obtener ciudades
rutas.get('/api/ciudades', controladorClientes.obtenerCiudades);
module.exports = rutas;