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;