<?php
include("../config/conexion.php");

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Obtener los datos del formulario
    $idcita = $_POST['idcita'];
    $fecha = $_POST['fecha'];
    $usuario = $_POST['usuario'];
    $atendida = $_POST['atendida'];
    $carnet = $_POST['carnet'];
    $comentario = $_POST['comentario'];

    // Consultar la cita original desde la base de datos
    $sql_original = "SELECT idcita, fecha, usuario, atendida, carnet, comentario FROM cita WHERE idcita = ?";
    $stmt_original = $conexion->prepare($sql_original);
    $stmt_original->bind_param("i", $idcita);
    $stmt_original->execute();

    // Usar bind_result() en lugar de get_result()
    $stmt_original->bind_result($idcita_original, $fecha_original, $usuario_original, $atendida_original, $carnet_original, $comentario_original);

    // Obtener el resultado
    if ($stmt_original->fetch()) {
        // Si la cita existe, asignamos los valores a las variables
        $cita_original = [
            'idcita' => $idcita_original,
            'fecha' => $fecha_original,
            'usuario' => $usuario_original,
            'atendida' => $atendida_original,
            'carnet' => $carnet_original,
            'comentario' => $comentario_original
        ];
    } else {
        // Si no se encontró la cita
        die("No se encontró la cita con ese ID.");
    }

    $stmt_original->close();

    // Validar que los campos no estén vacíos
    if (empty($fecha) || empty($usuario) || empty($atendida) || empty($carnet) || empty($comentario)) {
        $error_message = "Todos los campos son obligatorios. Por favor, rellena todos los campos.";
    } else {
        // Crear un arreglo para los campos que se actualizarán
        $updateFields = [];
        $params = [];
        $types = '';

        // Comparar los campos actuales con los antiguos para ver si hay cambios
        if ($fecha != $cita_original['fecha']) {
            $updateFields[] = "fecha = ?";
            $params[] = $fecha;
            $types .= "s";
        }
        if ($usuario != $cita_original['usuario']) {
            $updateFields[] = "usuario = ?";
            $params[] = $usuario;
            $types .= "s";
        }
        if ($atendida != $cita_original['atendida']) {
            $updateFields[] = "atendida = ?";
            $params[] = $atendida;
            $types .= "s";
        }
        if ($carnet != $cita_original['carnet']) {
            $updateFields[] = "carnet = ?";
            $params[] = $carnet;
            $types .= "s";
        }
        if ($comentario != $cita_original['comentario']) {
            $updateFields[] = "comentario = ?";
            $params[] = $comentario;
            $types .= "s";
        }

        // Si no hay cambios, mostrar mensaje
        if (empty($updateFields)) {
            $error_message = "No se ha modificado ningún dato.";
        } else {
            // Agregar el ID de la cita para la cláusula WHERE (fuera del array de campos)
            $sql_update = "UPDATE cita SET " . implode(", ", $updateFields) . " WHERE idcita = ?";
            // Agregar el ID de la cita a los parámetros
            $params[] = $idcita;
            $types .= "i";

            // Preparar y ejecutar la consulta de actualización
            $stmt_update = $conexion->prepare($sql_update);
            $stmt_update->bind_param($types, ...$params);

            // Ejecutar la actualización
            if ($stmt_update->execute()) {
                // Redirigir con un mensaje de éxito
                header("Location: ../iniciocita.php?success=1");
                exit();
            } else {
                // Manejar error si la actualización falla
                $error_message = "Error al modificar la cita: " . $stmt_update->error;
            }
        }
    }
}

// Si hay un error, mostrarlo
if (isset($error_message)) {
    echo '<div class="alert alert-danger" role="alert">' . htmlspecialchars($error_message, ENT_QUOTES) . '</div>';
}