<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

include("conexion.php");
header('Content-Type: application/json');

// Obtener los datos del formulario
$nombre_usuario = $_POST['nombre_usuario'] ?? '';
$nom_completo = $_POST['nom_completo'] ?? '';
$correo = $_POST['correo'] ?? '';
$password_raw = $_POST['password'] ?? '';
$rol = $_POST['rol'] ?? '';
$id_empresa = $_POST['id_empresa'] ?? '';
$id_bodega = $_POST['id_bodega'] ?? '';  // Cambié a una cadena vacía en vez de null

// Validaciones mínimas
if (!$nombre_usuario || !$nom_completo || !$password_raw || !$rol || !$id_empresa) {
    echo json_encode(['status' => 'error', 'message' => 'Por favor, complete todos los campos requeridos.']);
    exit;
}

// Si el id_bodega está vacío, lo asignamos a null
if (empty($id_bodega)) {
    $id_bodega = null;
}

// Si el rol es 'admin_general', no se debe requerir id_bodega
if ($rol === 'admin_general') {
    $id_bodega = null;  // Aseguramos que id_bodega sea null si el rol es 'admin_general'
} elseif ($id_bodega !== null) {
    // Validar que el id_bodega exista en la tabla bodegas
    $checkBodega = $conexion->prepare("SELECT id_bodega FROM bodegas WHERE id_bodega = ?");
    $checkBodega->bind_param("i", $id_bodega);
    $checkBodega->execute();
    $resultBodega = $checkBodega->get_result();

    if ($resultBodega->num_rows === 0) {
        echo json_encode(['status' => 'error', 'message' => 'La bodega seleccionada no existe.']);
        exit;
    }
}

// Encriptar la contraseña
$password = password_hash($password_raw, PASSWORD_DEFAULT);

// Preparar la consulta de inserción en la base de datos
if ($id_bodega === null) {
    // Si el id_bodega es null, no lo incluimos en la consulta
    $stmt = $conexion->prepare("INSERT INTO usuarios_sistema (nombre_usuario, nom_completo, correo, rol, id_empresa, password) VALUES (?, ?, ?, ?, ?, ?)");
    $stmt->bind_param("ssssss", $nombre_usuario, $nom_completo, $correo, $rol, $id_empresa, $password);
} else {
    // Si se proporciona un id_bodega, lo incluimos en la consulta
    $stmt = $conexion->prepare("INSERT INTO usuarios_sistema (nombre_usuario, nom_completo, correo, rol, id_empresa, id_bodega, password) VALUES (?, ?, ?, ?, ?, ?, ?)");
    $stmt->bind_param("sssssis", $nombre_usuario, $nom_completo, $correo, $rol, $id_empresa, $id_bodega, $password);
}

// Ejecutar la consulta y verificar si fue exitosa
if ($stmt->execute()) {
    echo json_encode(['status' => 'success', 'message' => 'Usuario registrado con éxito.']);
} else {
    echo json_encode(['status' => 'error', 'message' => 'Error al registrar usuario: ' . $stmt->error]);
}
?>
