Carpeta controllers
This commit is contained in:
@@ -0,0 +1,324 @@
|
||||
<?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
|
||||
}
|
||||
Reference in New Issue
Block a user