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

require 'conexion.php';

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

switch ($accion) {
    case 'registrar':
        $nombres    = $_POST['nombres'];
        $apellidos  = $_POST['apellidos'];
        $correo     = $_POST['correo'];
        $telefono   = $_POST['telefono'];
        $acceso_id  = $_POST['acceso'];
        $habilitado = $_POST['habilitado'];
        $pass       = $_POST['contrasena'];
        $conf       = $_POST['confirmar'];
    
        if (empty($pass) || empty($conf)) {
            exit("La contraseña y su confirmación son obligatorias.");
        }
        
        if ($pass !== $conf) {
            exit("Las contraseñas no coinciden.");
        }        
    
        $hash = password_hash($pass, PASSWORD_DEFAULT);
        $nom_usuario = "$nombres $apellidos";
        
        // Capturar fecha actual automáticamente
        $fecha_registro = date('Y-m-d');
    
        $stmt = $conn->prepare("INSERT INTO Usuarios (usuario, nombres, apellidos, nom_usuario, acceso_id, contrasenna, telefono, habilitado, fecha_registro) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
        $stmt->bind_param("sssssssss", $correo, $nombres, $apellidos, $nom_usuario, $acceso_id, $hash, $telefono, $habilitado, $fecha_registro);
    
        if ($stmt->execute()) {
            require 'correo_registro.php';
            $correoEnviado = enviarCorreoRegistro($correo, $nom_usuario, $pass);
    
            if ($correoEnviado) {
                echo "Usuario registrado correctamente. Revisa tu correo.";
            } else {
                echo "Usuario registrado, pero no se pudo enviar el correo.";
            }
        } else {
            echo "Error al guardar: " . $conn->error;
        }
        break;    

    case 'actualizar':
        $id        = $_POST['id'];
        $nombres   = $_POST['nombres'];
        $apellidos = $_POST['apellidos'];
        $correo    = $_POST['correo'];
        $telefono  = $_POST['telefono'];
        $acceso_id = $_POST['acceso'];
        $habilitado = $_POST['habilitado'];
        $pass      = $_POST['contrasena'];
        $conf      = $_POST['confirmar'];
        $fecha_registro = $_POST['fecha_registro'] ?? null;

        if ($pass !== $conf) {
            exit("Las contraseñas no coinciden.");
        }

        $nom_usuario = "$nombres $apellidos";

        if ($pass) {
            // Actualizar con contraseña y fecha_registro
            $hash = password_hash($pass, PASSWORD_DEFAULT);
            $sql = "UPDATE Usuarios SET usuario=?, nombres=?, apellidos=?, nom_usuario=?, acceso_id=?, contrasenna=?, telefono=?, habilitado=?, fecha_registro=? WHERE Id=?";
            $stmt = $conn->prepare($sql);
            $stmt->bind_param("sssssssssi", $correo, $nombres, $apellidos, $nom_usuario, $acceso_id, $hash, $telefono, $habilitado, $fecha_registro, $id);
        } else {
            // Actualizar sin contraseña pero con fecha_registro
            $sql = "UPDATE Usuarios SET usuario=?, nombres=?, apellidos=?, nom_usuario=?, acceso_id=?, telefono=?, habilitado=?, fecha_registro=? WHERE Id=?";
            $stmt = $conn->prepare($sql);
            $stmt->bind_param("ssssssssi", $correo, $nombres, $apellidos, $nom_usuario, $acceso_id, $telefono, $habilitado, $fecha_registro, $id);
        }

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

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

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

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