324 lines
8.4 KiB
PHP
324 lines
8.4 KiB
PHP
<?php
|
|
|
|
// Inicio de sesión
|
|
|
|
session_start();
|
|
|
|
// Generación de token (previene Cross-Site y Request Forgery)
|
|
|
|
if (empty($_SESSION['csrf_token'])) {
|
|
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
|
|
}
|
|
|
|
// Evitar Back-Forward Cache en Chrome
|
|
|
|
header("Cache-Control: no-store");
|
|
|
|
// Funcion principal para obtener el body a mostrar
|
|
|
|
function getBodyContent() {
|
|
|
|
$opt = $_GET['opt'] ?? null; // Obtiene parámetro enviado desde URL (es el parámetro que maneja todas las acciones dentro del sistema)
|
|
|
|
|
|
/* ----- REDIRECCIONES ----- */
|
|
|
|
|
|
// USUARIO LOGUEADO SIN OPT (en caso de ingresar localhost/ en la barra de direcciones)
|
|
|
|
if (isset($_SESSION['user']) && $opt === null) {
|
|
if ($_SESSION['user']['rol'] === 'admin') {
|
|
header("Location: index.php?opt=inicio_admin"); // Redirección HTTP
|
|
} else {
|
|
header("Location: index.php?opt=inicio_operador");
|
|
}
|
|
exit;
|
|
}
|
|
|
|
// OPCIONES DE RECUPERACION DE CUENTA (lo maneja logInController)
|
|
|
|
$opcionesRecuperacion = [
|
|
'recuperar_cuenta',
|
|
'verificar_codigo',
|
|
'restablecer_contrasenia'
|
|
];
|
|
|
|
if (in_array($opt, $opcionesRecuperacion, true)) {
|
|
return require __DIR__ . '/../controllers/logInController.php';
|
|
}
|
|
|
|
// USUARIO NO LOGUEADO
|
|
|
|
if (!isset($_SESSION['user'])) {
|
|
|
|
if ($opt === 'login') {
|
|
return require __DIR__ . '/../controllers/logInController.php';
|
|
}
|
|
|
|
header("Location: index.php?opt=login"); // Envía cabeceras http al navegador, obliga a mostrar el login
|
|
exit; // Importante usar exit para cortar ejecución
|
|
}
|
|
|
|
// SETEA EL USUARIO EN $_SESSION EN CASO DE QUE EL ROL SE CAMBIÓ. ADEMÁS HACE LOGOUT SI FUÉ DESACTIVADO
|
|
|
|
if (isset($_SESSION['user'])) {
|
|
|
|
require_once __DIR__ . '/../models/logInModel.php';
|
|
$loginmodel = new logInModel();
|
|
|
|
$usuario = $loginmodel->buscarPorUsuario($_SESSION['user']['usuario']);
|
|
|
|
if (!$usuario || !(bool)$usuario['activo']) {
|
|
session_unset();
|
|
session_destroy();
|
|
setcookie(session_name(), '', time() - 3600, '/');
|
|
|
|
header("Location: index.php?opt=login");
|
|
exit;
|
|
}
|
|
|
|
$_SESSION['user'] = $usuario;
|
|
|
|
if ($_SESSION['user']['activo'] !== true) {
|
|
header("Location:index.php?opt=logout");
|
|
}
|
|
}
|
|
|
|
|
|
/* ----- OPCIONES DE ACCIONES EN SISTEMA ----- */
|
|
|
|
|
|
// USUARIO LOGUEADO (HOME / LOGOUT)
|
|
|
|
$opcioneslogueado = [
|
|
'inicio_admin',
|
|
'inicio_operador',
|
|
'home_operador',
|
|
'home_admin',
|
|
'logout',
|
|
'readme'
|
|
];
|
|
|
|
if (in_array($opt, $opcioneslogueado, true)) { // Parámetro $strict en true, PHP compara el valor y también el tipo de dato
|
|
return require __DIR__ . '/../controllers/logInController.php';
|
|
}
|
|
|
|
// OPCIONES DE USUARIO (PERFIL + ADMINISTRACION)
|
|
|
|
$opcionesusuarios = [
|
|
'datos_usuario',
|
|
'usuarios',
|
|
'crear_usuario',
|
|
'eliminar_usuario'
|
|
];
|
|
|
|
if (in_array($opt, $opcionesusuarios, true)) {
|
|
return require __DIR__ . '/../controllers/usuarioController.php';
|
|
}
|
|
|
|
// CLIENTES
|
|
|
|
$opcionesclientes = [
|
|
'clientes',
|
|
'crear_cliente',
|
|
'editar_cliente'
|
|
];
|
|
|
|
if (in_array($opt, $opcionesclientes, true)) {
|
|
return require __DIR__ . '/../controllers/clienteController.php';
|
|
}
|
|
|
|
// PROVEEDORES
|
|
|
|
$opcionesproveedores = [
|
|
'proveedores',
|
|
'crear_proveedor',
|
|
'editar_proveedor'
|
|
];
|
|
|
|
if (in_array($opt, $opcionesproveedores, true)) {
|
|
return require __DIR__ . '/../controllers/proveedorController.php';
|
|
}
|
|
|
|
// PRODUCTOS
|
|
|
|
$opcionesproductos = [
|
|
|
|
// Manejo de productos
|
|
|
|
'productos',
|
|
'productos_inactivos',
|
|
'crear_producto',
|
|
'editar_producto',
|
|
'cambiar_estado',
|
|
|
|
// Manejo de categoría de productos
|
|
|
|
'categorias',
|
|
'crear_categoria',
|
|
'editar_categoria'
|
|
];
|
|
|
|
if (in_array($opt, $opcionesproductos, true)) {
|
|
return require __DIR__ . '/../controllers/productoController.php';
|
|
}
|
|
|
|
// VENTAS
|
|
|
|
$opcionesventas = [
|
|
'listar_ventas',
|
|
'crear_venta',
|
|
'agregar_producto',
|
|
'seleccionar_cliente',
|
|
'eliminar_cliente',
|
|
'resumen_venta',
|
|
'guardar_datos_venta',
|
|
'generar_venta_pdf',
|
|
'continuar_sin_comprobante',
|
|
'confirmar_venta',
|
|
'detalle_venta'
|
|
];
|
|
|
|
if (in_array($opt, $opcionesventas, true)) {
|
|
return require __DIR__ . '/../controllers/ventaController.php';
|
|
}
|
|
|
|
// PEDIDOS
|
|
|
|
$opcionespedidos = [
|
|
'listar_pedidos',
|
|
'detalle_pedido',
|
|
'crear_pedido',
|
|
'agregar_producto_pedido',
|
|
'seleccionar_proveedor',
|
|
'eliminar_proveedor',
|
|
'generar_remito_pdf',
|
|
'continuar_sin_remito',
|
|
'confirmar_pedido'
|
|
];
|
|
|
|
if (in_array($opt, $opcionespedidos, true)) {
|
|
return require __DIR__ . '/../controllers/pedidoController.php';
|
|
}
|
|
|
|
// SERVICIOS
|
|
|
|
$opcionesservicios = [
|
|
'crear_servicio',
|
|
'guardar_servicio', // Guardado inicial del servicio (cuando viene el cliente al local)
|
|
'generar_servicio_pdf',
|
|
'seleccionar_cliente_servicio',
|
|
'eliminar_cliente_servicio',
|
|
'listar_servicios',
|
|
'actualizar_servicio', // Actualización del servicio (se cargan los datos a realizar e insumos a utilizar)
|
|
'agregar_insumo',
|
|
'finalizar_servicio', // Actualización del servicio (el cliente decidió llevar a cabo el servicio, al terminar se marca como finalizado en la base de datos)
|
|
'cancelar_servicio', // Según regla de negocio (caso en donde el cliente decide no realizar el servicio)
|
|
'detalle_servicio',
|
|
'detalle_insumos_servicio',
|
|
'resetear_datos_servicio', // Para resetar caja y datos en $_SESSION al ingresar a la vista de actualización
|
|
'agregar_mano_obra'
|
|
];
|
|
|
|
if (in_array($opt, $opcionesservicios, true)) {
|
|
return require __DIR__ . '/../controllers/servicioController.php';
|
|
}
|
|
|
|
// MANEJO GENERAL DE CAJA
|
|
|
|
$opcionescaja = [
|
|
|
|
// MANEJO DE VENTAS
|
|
|
|
'agregar_producto_caja',
|
|
'eliminar_producto',
|
|
'editar_cantidad',
|
|
'vaciar_caja_venta',
|
|
|
|
// MANEJO DE PEDIDOS
|
|
|
|
'agregar_producto_pedido_caja',
|
|
'eliminar_producto_pedido',
|
|
'editar_datos_producto',
|
|
'vaciar_caja_pedido',
|
|
|
|
// MANEJO DE SERVICIOS
|
|
|
|
'agregar_insumo_caja',
|
|
'vaciar_caja_servicio',
|
|
'eliminar_insumo',
|
|
'editar_cantidad_insumo'
|
|
];
|
|
|
|
if (in_array($opt, $opcionescaja, true)) {
|
|
return require __DIR__ . '/../controllers/cajaController.php';
|
|
}
|
|
|
|
// PRESUPUESTOS
|
|
|
|
$opcionespresupuestos = [
|
|
'crear_presupuesto',
|
|
'seleccionar_cliente_presupuesto',
|
|
'eliminar_cliente_presupuesto',
|
|
'agregar_producto_presupuesto',
|
|
'eliminar_producto_presupuesto',
|
|
'vaciar_caja_presupuesto',
|
|
'editar_cantidad_presupuesto',
|
|
'resumen_presupuesto',
|
|
'guardar_datos_presupuesto',
|
|
'generar_presupuesto_pdf'
|
|
];
|
|
|
|
if (in_array($opt, $opcionespresupuestos, true)) {
|
|
return require __DIR__ . '/../controllers/presupuestoController.php';
|
|
}
|
|
|
|
// INFORMES
|
|
|
|
$opcionesinformes = [
|
|
'generar_balance_anual',
|
|
'generar_cuentas_por_cobrar',
|
|
'informe'
|
|
];
|
|
|
|
if (in_array($opt, $opcionesinformes, true)) {
|
|
return require __DIR__ . '/../controllers/informeController.php';
|
|
}
|
|
|
|
// CONFIGURACIÓN DEL SISTEMA (controla configuración general y también backups)
|
|
|
|
$opcionesconfiguracion = [
|
|
'configuracion',
|
|
'actualizar_config',
|
|
'backups',
|
|
'generar_backup',
|
|
'descargar_backup',
|
|
'eliminar_backup',
|
|
'restaurar_backup'
|
|
];
|
|
|
|
if (in_array($opt, $opcionesconfiguracion, true)) {
|
|
return require __DIR__ . '/../controllers/configuracionController.php';
|
|
}
|
|
|
|
// CHATBOT
|
|
|
|
$opcioneschatbot = [
|
|
'chatbot'
|
|
];
|
|
|
|
if (in_array($opt, $opcioneschatbot, true)) {
|
|
|
|
ob_start();
|
|
|
|
require __DIR__ . '/../views/chatbot/chatbotView.php';
|
|
|
|
return ob_get_clean();
|
|
}
|
|
|
|
// DEFAULT (404)
|
|
|
|
ob_start(); // Inicia búfer de salida en PHP, lo guarda en memoria
|
|
require __DIR__ . '/../views/404View.php';
|
|
return ob_get_clean(); // Devuelve el contenido almacenado en el búfer como string
|
|
} |