<?php
require_once '../../includes/auth.php';
require_once '../../includes/database.php';
require_once '../../includes/send_email.php';
requireRole('estudiante');

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $from = $_POST['from'] ?? '';
    $subject = $_POST['subject'] ?? '';
    $message = $_POST['message'] ?? '';
    $estudiante_id = $_POST['estudiante_id'] ?? null;
    $recipient_id = $_POST['recipient'] ?? null;

    // Validación básica
    if (empty($from) || empty($subject) || empty($message) || !$estudiante_id || !$recipient_id) {
        $_SESSION['error'] = 'Todos los campos son obligatorios';
        header("Location: enviar_correo.php");
        exit;
    }

    // Obtener datos del destinatario - CORRECCIÓN: Usamos tabla usuarios directamente
    global $db;
    $destinatario = $db->fetchOne("
        SELECT id, nombre, apellido, email, tipo AS rol 
        FROM usuarios
        WHERE id = ?
    ", [$recipient_id]);

    if (!$destinatario) {
        $_SESSION['error'] = 'Destinatario no válido';
        header("Location: enviar_correo.php");
        exit;
    }

    $estudiante = $db->fetchOne("
        SELECT u.nombre, u.apellido, 
               e.seccion, e.grado, e.nivel
        FROM estudiantes e
        JOIN usuarios u ON e.usuario_id = u.id
        WHERE e.id = ?
    ", [$estudiante_id]);

    if (!$estudiante) {
        $_SESSION['error'] = 'Estudiante no encontrado';
        header("Location: enviar_correo.php");
        exit;
    }

    // Agregar firma personalizada con datos académicos
    $messageHTML = nl2br($message);
    $messageHTML .= "<br><br>";
    $messageHTML .= "<div style='border-top: 1px solid #eaeaea; padding-top: 15px; margin-top: 20px; color: #666; font-size: 14px;'>";
    $messageHTML .= "<strong>Enviado por:</strong> {$estudiante['nombre']} {$estudiante['apellido']}<br>";
    $messageHTML .= "<strong>Sección:</strong> {$estudiante['seccion']}<br>";
    $messageHTML .= "<strong>Grado:</strong> {$estudiante['grado']}<br>";
    $messageHTML .= "<strong>Nivel:</strong> {$estudiante['nivel']}<br>";
    $messageHTML .= "<strong>Rol:</strong> Estudiante<br>";
    $messageHTML .= "<strong>Colegio:</strong> " . APP_NAME;
    $messageHTML .= "</div>";

    // Enviar correo
    $success = false;
    $to = $destinatario['email'];
    
    if (filter_var($to, FILTER_VALIDATE_EMAIL)) {
        $success = sendEmail(
            $to, 
            $subject, 
            $messageHTML,
            true,   // isHTML
            [],     // adjuntos
            "{$estudiante['nombre']} {$estudiante['apellido']}", // nombre remitente
            $from   // email remitente
        );
    }

    // Registrar en base de datos
    $db->insert('correos_enviados', [
        'asunto' => $subject,
        'mensaje' => $messageHTML,
        'destinatarios' => $to,
        'adjuntos' => 0,
        'enviado_por' => $_SESSION['user_id'],
        'fecha_envio' => date('Y-m-d H:i:s'),
        'estado' => $success ? 'enviado' : 'fallido'
    ]);

    // Crear notificación para el destinatario
    $titulo = "Mensaje de estudiante";
    $mensaje = "Tienes un nuevo mensaje de {$estudiante['nombre']}: \"$subject\"";
    
    $db->insert('notificaciones', [
        'usuario_id' => $destinatario['id'],
        'titulo' => $titulo,
        'mensaje' => $mensaje,
        'tipo' => 'mensaje',
        'fecha_envio' => date('Y-m-d H:i:s'),
        'leida' => 0,
        'enlace' => "ver_correo.php?correo_id=" . $db->lastInsertId()
    ]);

    // Mensaje de resultado
    if ($success) {
        $_SESSION['success'] = "Mensaje enviado correctamente a {$destinatario['nombre']}";
    } else {
        $_SESSION['error'] = 'Error al enviar el mensaje';
    }
    
    // Redirigir de vuelta al formulario
    header("Location: enviar_correo.php");
    exit;
}

// Si se accede directamente sin POST
$_SESSION['error'] = 'Acceso no autorizado';
header('Location: enviar_correo.php');
exit;