<?php
    require('conexion.php'); // Incluye la conexión a la base de datos
    require('password.php');
    require('menus.php');
    session_start();

    // Función para manejar errores de MySQL y mostrar mensajes personalizados
    function handle_sql_error($error, $error_message) {
        // Analiza el código de error de MySQL
        switch ($error) {
            case 1062:
                // Error de duplicación de clave única
                if (strpos($error_message, 'for key \'documento\'') !== false) {
                    $message = "El documento ya está registrado.";
                } else if (strpos($error_message, 'for key \'correo\'') !== false) {
                    $message = "El correo electrónico ya está registrado.";
                } else {
                    $message = "Registro duplicado.";
                }
                break;
            case 1048:
                // Error de columna no puede ser nula
                if (strpos($error_message, '\'usuario_id\'') !== false) {
                    $message = "Ocurrió un error al crear el usuario. Inténtelo de nuevo más tarde.";
                } else {
                    $message = "Todos los campos son obligatorios.";
                }
                break;
            default:
                // Error genérico
                $message = "Ocurrió un error inesperado. Por favor, inténtelo de nuevo.";
                break;
        }
        return $message;
    }
    // Asegúrate de que el formulario se haya enviado
    if ($_SERVER["REQUEST_METHOD"] == "POST") {

        // Asigna variables por cada campo del formulario
        $titulo = $conn->real_escape_string($_POST['titulo']);
        $contenido = $conn->real_escape_string($_POST['contenido']);
        $categoria = $conn->real_escape_string($_POST['categoria']);
        $tag = $conn->real_escape_string($_POST['tag']);
        $usuario_id = sesion_paciente();
    
        // Mostrar los valores recibidos (puedes comentar esto en producción)
        echo "<h3>Valores recibidos del formulario:</h3>";
        echo "Titulo: $titulo<br>";
        echo "Contenido: $contenido<br>";
        echo "Id Usuario: $usuario_id<br>";
        echo "Categoria: $categoria<br>";
        echo "Tag: $tag<br>";
    
                // Imprimir $sql_publicaciones en la consola del navegador
                echo "<script>";
                echo "console.log('Valor de \$categoria: ', " . json_encode($categoria) . ");";
                echo "</script>";
        // Prepara la consulta SQL para insertar datos
        $sqlPublicacion = "INSERT INTO publicaciones(usuario_id, titulo, contenido, categoria) VALUES (?, ?, ?, ?)";
    
        // Prepara la declaración
        $stmtPublicacion = $conn->prepare($sqlPublicacion);
    
        // Vincula parámetros
        $stmtPublicacion->bind_param("isss", $usuario_id, $titulo, $contenido, $categoria); // 'i' para usuario_id (entero), 's' para los demás (cadenas)
    
        // Ejecuta la declaración
        if ($stmtPublicacion->execute()) {
            echo "Registro exitoso<br>";
    
            // Obtiene el ID de la publicación recién insertada
            $publicacionId = $conn->insert_id;
            echo "ID de la publicación insertada: $publicacionId<br>";
    
            // Ejemplo: Insertar datos en la tabla publicaciones_tags
            if (!empty($tag)) {
                $sqlTag = "INSERT INTO publicaciones_tags (publicacion_id, tag) VALUES (?, ?)";
                $stmtTag = $conn->prepare($sqlTag);
                $stmtTag->bind_param("is", $publicacionId, $tag);
                if ($stmtTag->execute()) {
                    echo "Tag registrado exitosamente<br>";
                } else {
                    echo "Error al registrar el tag: " . $stmtTag->error . "<br>";
                    $errorTag = htmlspecialchars($stmtTag->error, ENT_QUOTES, 'UTF-8');
                    echo "<script>alert('ERROR2: $errorTag');</script>";
                }
                $stmtTag->close();
            }
    
            echo "<script>alert('Registro exitoso.');</script>";
            header("Location: comunidad.php");
            exit();
    
        } else {
            echo "Error: " . $stmtPublicacion->error . "<br>";
            $error = htmlspecialchars($stmtPublicacion->error, ENT_QUOTES, 'UTF-8');
            echo "<script>alert('ERROR1: $error');</script>";
        }
    
        // Cierra la declaración y la conexión
        $stmtPublicacion->close();
        $conn->close();
    
    } else {
        // Redirige de nuevo al formulario si no hay datos POST
        echo "<script>alert('Todos los campos son obligatorios.'); window.history.back();</script>";
        exit();
    }
?>