Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
Asistencia_Capacitacion
/
Controladores
:
AdminController.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php // Archivo: Controladores/AdminController.php require_once 'BaseController.php'; require_once 'Modelos/AdminModel.php'; class AdminController extends BaseController { private $adminModel; public function __construct() { if (session_status() == PHP_SESSION_NONE) { session_start(); } $this->adminModel = new AdminModel(); // Solo GRADO 1 puede acceder if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true) { $this->redirect(BASE_URL . '/index.php?url=login/index'); } if (($_SESSION['grado'] ?? 99) !== 1) { $this->redirect(BASE_URL . '/index.php?url=menu/index'); } } /** * GET/POST → index.php?url=admin/crearUsuario * Muestra el formulario de creación y la tabla de usuarios. * Detecta ?editar=USR para activar el modo edición. */ public function crearUsuario() { $mensaje = $_SESSION['feedback_message'] ?? ''; unset($_SESSION['feedback_message']); $empresas = $this->adminModel->getEmpresas(); // Array de strings: ['Avicampo', 'Sanmarino', ...] $usuarios = $this->adminModel->getUsuarios(); $editando = null; // Modo edición: GET con ?editar=USR if (!empty($_GET['editar'])) { $registro = $this->adminModel->getUsuarioPorUsr(trim($_GET['editar'])); if ($registro) { $editando = $registro; } } // POST: crear nuevo usuario if ($_SERVER['REQUEST_METHOD'] === 'POST') { $usr = trim($_POST['USR'] ?? ''); $nombre = trim($_POST['NOMBRE'] ?? ''); $password = $_POST['PASSWORD'] ?? ''; $grado = (int)($_POST['GRADO'] ?? 0); $empresa = trim($_POST['EMPRESA'] ?? ''); if (empty($usr) || empty($nombre) || empty($password) || !in_array($grado, [1,2,3]) || empty($empresa)) { $mensaje = $this->formatAlert('Todos los campos son obligatorios y válidos.', 'danger'); } else { $resultado = $this->adminModel->insertarUsuario($usr, $nombre, $password, $grado, $empresa); if ($resultado['success']) { $_SESSION['feedback_message'] = $this->formatAlert("Usuario '$usr' creado con éxito.", 'success'); $this->redirect(BASE_URL . '/index.php?url=admin/crearUsuario'); return; } $mensaje = $this->formatAlert($resultado['error'], 'danger'); } } $this->view('admin/crearUsuario', [ 'empresas' => $empresas, 'usuarios' => $usuarios, 'mensaje' => $mensaje, 'editando' => $editando, ]); } /** * POST → index.php?url=admin/actualizarUsuario */ public function actualizarUsuario() { if ($_SERVER['REQUEST_METHOD'] !== 'POST') { $this->redirect(BASE_URL . '/index.php?url=admin/crearUsuario'); return; } $usr = trim($_POST['USR'] ?? ''); $nombre = trim($_POST['NOMBRE'] ?? ''); $password = $_POST['PASSWORD'] ?? ''; $grado = (int)($_POST['GRADO'] ?? 0); $empresa = trim($_POST['EMPRESA'] ?? ''); $resultado = $this->adminModel->actualizarUsuario($usr, $nombre, $password, $grado, $empresa); if ($resultado['success']) { $_SESSION['feedback_message'] = $this->formatAlert("Usuario '$usr' actualizado con éxito.", 'success'); } else { $_SESSION['feedback_message'] = $this->formatAlert($resultado['error'], 'danger'); } $this->redirect(BASE_URL . '/index.php?url=admin/crearUsuario'); } /** * POST → index.php?url=admin/eliminarUsuario */ public function eliminarUsuario() { if ($_SERVER['REQUEST_METHOD'] !== 'POST') { $this->redirect(BASE_URL . '/index.php?url=admin/crearUsuario'); return; } $usr = trim($_POST['USR'] ?? ''); $usuarioActual = $_SESSION['user'] ?? ''; $resultado = $this->adminModel->eliminarUsuario($usr, $usuarioActual); if ($resultado['success']) { $_SESSION['feedback_message'] = $this->formatAlert("Usuario '$usr' eliminado con éxito.", 'success'); } else { $_SESSION['feedback_message'] = $this->formatAlert($resultado['error'], 'danger'); } $this->redirect(BASE_URL . '/index.php?url=admin/crearUsuario'); } private function formatAlert($message, $type) { return '<div class="alert alert-' . $type . ' alert-dismissible fade show" role="alert">' . htmlspecialchars($message) . '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>' . '</div>'; } }