<?php
session_start();
include 'modelo.php';
require_once 'config.php';

$tablaSeleccionada = $_GET['tabla'] ?? null;
$id = $_GET['id'] ?? null;
$mensaje = '';
$registro = null; // Inicializa $registro como null

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $tablaSeleccionada = $_POST['tabla'] ?? null;
    $id = $_POST['id'] ?? null;

    if ($tablaSeleccionada && $id) {
        $campos = [];
        $valores = [];

        // Determina los campos y valores a actualizar
        switch ($tablaSeleccionada) {
                case 'temasemanal':
                    $campos = ['titulo', 'cuerpo', 'imagen'];
                    break;
                case 'noticias':
                    $campos = ['titulo', 'cuerpo', 'imagen', 'categoria', 'subcategoria', 'destacadaTendencias', 'destacadaSubcategoria', 'destacadaPortada'];
                    break;
                    case 'usuarios':
                        // Los campos a actualizar
                        $campos = ['nombre', 'apellido', 'correo', 'rol'];
                        // Si la contraseña no está vacía, la añadimos a los campos
                        if (!empty($_POST['contrasena'])) {
                            $campos[] = 'contrasena';
                        }
        
                        // Asignar los valores
                        $valores[] = $_POST['nombre'] ?? null;
                        $valores[] = $_POST['apellido'] ?? null;
                        $valores[] = $_POST['correo'] ?? null;
                        $valores[] = $_POST['rol'] ?? null;
                        // Si se cambia la contraseña, la añadimos
                        if (!empty($_POST['contrasena'])) {
                            $valores[] = password_hash($_POST['contrasena'], PASSWORD_BCRYPT);
                        }
                        break;
                case 'comentarios':
                    $campos = ['usuario_id', 'comentario', 'fecha'];
                    break;
                case 'toplinkedin':
                    $campos = ['titulo', 'imagen', 'cuerpo', 'link', 'fecha'];
                    break;
                default:
                    $mensaje = 'Tabla no válida.';
                    break;
            }
        }

        // Si hay campos y valores a actualizar
        if (count($campos) > 0 && count($valores) > 0) {
            // Añadir el ID al final de los valores para la condición WHERE
            $valores[] = $id;

            // Construir la consulta dinámica
            $consultaActualizar = "UPDATE $tablaSeleccionada SET " . implode(' = ?, ', $campos) . " = ? WHERE id = ?";

            // Ahora ejecutamos la consulta
            try {
                $conexion->ejecutarConsultaPreparada($consultaActualizar, $valores);
                $mensaje = 'Registro actualizado correctamente.';
            } catch (Exception $e) {
                $mensaje = 'Error al actualizar el registro: ' . $e->getMessage();
            }
        } else {
            $mensaje = 'El número de valores no coincide con el número de campos.';
        }
    } else {
        $mensaje = 'No se ha seleccionado una tabla o un ID válido.';
    if ($tablaSeleccionada && isset($_GET['id'])) {
        $id = $_GET['id'];
        $consulta = '';

        switch ($tablaSeleccionada) {
            case 'usuarios':
                $consulta = "SELECT * FROM usuarios WHERE id = ?";
                break;
            case 'temasemanal':
                $consulta = "SELECT * FROM temasemanal WHERE id = ?";
                break;
            case 'noticias':
                $consulta = "SELECT * FROM noticias WHERE id = ?";
                break;
            case 'comentarios':
                $consulta = "SELECT * FROM comentarios WHERE id = ?";
                break;
            case 'toplinkedin':
                $consulta = "SELECT * FROM toplinkedin WHERE id = ?";
                break;
            default:
                $mensaje = 'Tabla no válida.';
                break;
        }

        if ($consulta) {
            $datosExistentes = $conexion->obtenerConsultaPreparada($consulta, [$id]);
            if (empty($datosExistentes)) {
                $mensaje = 'No se encontraron datos para editar.';
            } else {
                $registro = $datosExistentes[0];
            }
        }
    }
}
$conexion->cerrarConexion();
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Editar Registro</title>
    <link rel="stylesheet" href="./css/estiloPanelAdministrador.css">
    <script>
        function validarFormulario() {
            var formulario = document.forms["editarFormulario"];
            var contrasena = formulario["contrasena"].value;

            // Si la contraseña está vacía, no la enviamos
            if (contrasena === "") {
                // Solo actualizamos los campos sin contraseña
                return true;
            }

            // Validación de campos
            for (var i = 0; i < formulario.elements.length; i++) {
                var campo = formulario.elements[i];
                if (campo.required && campo.value === "") {
                    alert("Por favor, complete todos los campos obligatorios.");
                    return false;
                }
            }
            return true;
        }
    </script>
</head>
<body>
    <div class="container">
        <h1 class="titulo">Editar Registro</h1>

        <!-- Mensaje de éxito o error -->
        <?php if ($mensaje): ?>
            <p><?php echo htmlspecialchars($mensaje); ?></p>
        <?php endif; ?>

        <?php if (!empty($registro)): ?>
            <form name="editarFormulario" method="POST" action="editar.php" enctype="multipart/form-data" class="formulario" onsubmit="return validarFormulario()">
                <input type="hidden" name="tabla" value="<?php echo htmlspecialchars($tablaSeleccionada); ?>">
                <input type="hidden" name="id" value="<?php echo htmlspecialchars($id); ?>">

                <?php if ($tablaSeleccionada === 'usuarios'): ?>
                    <label for="nombre">Nombre</label>
                    <input type="text" id="nombre" name="nombre" value="<?php echo htmlspecialchars($registro->nombre); ?>" required>
                    
                    <label for="apellido">Apellido</label>
                    <input type="text" id="apellido" name="apellido" value="<?php echo htmlspecialchars($registro->apellido); ?>" required>
                    
                    <label for="correo">Correo</label>
                    <input type="mail" id="correo" name="correo" value="<?php echo htmlspecialchars($registro->correo); ?>" required>
                    
                    <label for="contrasena">Contraseña (dejar en blanco para no cambiar)</label>
                    <input type="password" id="contrasena" name="contrasena">
                    
                    <label for="rol">Rol</label>
                    <select id="rol" name="rol">
                        <option value="1" <?php echo $registro->rol == 1 ? 'selected' : ''; ?>>Administrador</option>
                        <option value="2" <?php echo $registro->rol == 2 ? 'selected' : ''; ?>>Editor</option>
                        <option value="3" <?php echo $registro->rol == 3 ? 'selected' : ''; ?>>Usuario</option>
                        <option value="4" <?php echo $registro->rol == 4 ? 'selected' : ''; ?>>Invitado</option>
                    </select>
                <?php endif; ?>

                <?php if ($tablaSeleccionada === 'toplinkedin'): ?>
                    <label for="titulo">Título</label>
                    <input type="text" id="titulo" name="titulo" value="<?php echo htmlspecialchars($registro->titulo); ?>" required>

                    <label for="cuerpo">Cuerpo</label>
                    <textarea id="cuerpo" name="cuerpo" required><?php echo htmlspecialchars($registro->cuerpo); ?></textarea>

                    <label for="imagen">Imagen</label>
                    <input type="file" id="imagen" name="imagen">
                    <br>
                    <!-- Mostrar la imagen actual si existe -->
                    <?php if ($registro->imagen): ?>
                        <img src="<?php echo htmlspecialchars($registro->imagen); ?>" alt="Imagen actual" width="200">
                    <?php endif; ?>

                    <label for="link">Link</label>
                    <input type="url" id="link" name="link" value="<?php echo htmlspecialchars($registro->link); ?>" required>

                <?php elseif ($tablaSeleccionada === 'temasemanal'): ?>
                    <label for="titulo">Título</label>
                    <input type="text" id="titulo" name="titulo" value="<?php echo htmlspecialchars($registro->titulo); ?>" required>

                    <label for="cuerpo">Cuerpo</label>
                    <textarea id="cuerpo" name="cuerpo" required><?php echo htmlspecialchars($registro->cuerpo); ?></textarea>

                    <label for="imagen">Imagen</label>
                    <input type="file" id="imagen" name="imagen">
                    <br>
                    <!-- Mostrar la imagen actual si existe -->
                    <?php if ($registro->imagen): ?>
                        <img src="<?php echo htmlspecialchars($registro->imagen); ?>" alt="Imagen actual" width="200">
                    <?php endif; ?>

                <?php elseif ($tablaSeleccionada === 'noticias'): ?>
                    <label for="titulo">Título</label>
                    <input type="text" id="titulo" name="titulo" value="<?php echo htmlspecialchars($registro->titulo); ?>" required>

                    <label for="cuerpo">Cuerpo</label>
                    <textarea id="cuerpo" name="cuerpo" required><?php echo htmlspecialchars($registro->cuerpo); ?></textarea>

                    <label for="imagen">Imagen</label>
                    <input type="file" id="imagen" name="imagen">
                    <br>
                    <?php if ($registro->imagen): ?>
                        <img src="<?php echo htmlspecialchars($registro->imagen); ?>" alt="Imagen actual" width="200">
                    <?php endif; ?>

                    <label for="categoria">Categoría</label>
                    <select id="categoria" name="categoria" required>
                        <option value="Profesional" <?php echo $registro->categoria === 'Profesional' ? 'selected' : ''; ?>>Profesional</option>
                        <option value="Productores" <?php echo $registro->categoria === 'Productores' ? 'selected' : ''; ?>>Productores</option>
                    </select>

                    <label for="subcategoria">Subcategoría</label>
                    <input type="text" id="subcategoria" name="subcategoria" value="<?php echo htmlspecialchars($registro->subcategoria); ?>">

                    <label for="destacadaTendencias">Destacada en Tendencias</label>
                    <input type="checkbox" id="destacadaTendencias" name="destacadaTendencias" <?php echo $registro->destacadaTendencias ? 'checked' : ''; ?>>

                    <label for="destacadaSubcategoria">Destacada en Subcategoría</label>
                    <input type="checkbox" id="destacadaSubcategoria" name="destacadaSubcategoria" <?php echo $registro->destacadaSubcategoria ? 'checked' : ''; ?>>

                    <label for="destacadaPortada">Destacada en Portada</label>
                    <input type="checkbox" id="destacadaPortada" name="destacadaPortada" <?php echo $registro->destacadaPortada ? 'checked' : ''; ?>>
                <?php endif; ?>

                <button type="submit">Actualizar</button>
            </form>
        <?php endif; ?>
    </div>
</body>
</html>
