<?php
session_start();
if (!isset($_SESSION['usuario']) || !isset($_SESSION['token'])) {
    die("Acceso no autorizado");
}

require 'conexion.php';

$accion = $_POST['accion'] ?? '';

switch ($accion) {
    case 'registrar':
        $cod_acceso = $_POST['cod_acceso'];
        $tipo_acceso = $_POST['tipo_acceso'];
    
        // Validaciones
        if (empty($cod_acceso) || empty($tipo_acceso)) {
            exit("El código de acceso y el tipo de acceso son obligatorios.");
        }
        
        // Verificar que el código de acceso no exista
        $checkAcceso = $conn->prepare("SELECT cod_acceso FROM Accesos WHERE cod_acceso = ?");
        $checkAcceso->bind_param("s", $cod_acceso);
        $checkAcceso->execute();
        if ($checkAcceso->get_result()->num_rows > 0) {
            exit("El código de acceso '$cod_acceso' ya existe.");
        }
    
        $stmt = $conn->prepare("INSERT INTO Accesos (cod_acceso, tipo_acceso) VALUES (?, ?)");
        $stmt->bind_param("ss", $cod_acceso, $tipo_acceso);
    
        if ($stmt->execute()) {
            echo "Tipo de acceso registrado correctamente.";
        } else {
            echo "Error al guardar: " . $conn->error;
        }
        break;    

    case 'actualizar':
        $id = $_POST['id'];
        $cod_acceso = $_POST['cod_acceso'];
        $tipo_acceso = $_POST['tipo_acceso'];

        // Validaciones
        if (empty($cod_acceso) || empty($tipo_acceso)) {
            exit("El código de acceso y el tipo de acceso son obligatorios.");
        }
        
        // Verificar que el código de acceso no exista en otro registro
        $checkAcceso = $conn->prepare("SELECT cod_acceso FROM Accesos WHERE cod_acceso = ? AND Id != ?");
        $checkAcceso->bind_param("si", $cod_acceso, $id);
        $checkAcceso->execute();
        if ($checkAcceso->get_result()->num_rows > 0) {
            exit("El código de acceso '$cod_acceso' ya existe en otro registro.");
        }

        $sql = "UPDATE Accesos SET cod_acceso=?, tipo_acceso=? WHERE Id=?";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("ssi", $cod_acceso, $tipo_acceso, $id);

        if ($stmt->execute()) {
            echo "Tipo de acceso actualizado correctamente.";
        } else {
            echo "Error: " . $conn->error;
        }
        break;

    case 'eliminar':
        $id = $_POST['id'];
        
        $stmt = $conn->prepare("DELETE FROM Accesos WHERE Id = ?");
        $stmt->bind_param("i", $id);

        if ($stmt->execute()) {
            echo "Tipo de acceso eliminado correctamente.";
        } else {
            echo "Error al eliminar: " . $conn->error;
        }
        break;

    default:
        echo "Acción no reconocida.";
        break;
}