<?php
error_reporting(E_ALL);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/error.log');

header('Content-Type: application/json; charset=UTF-8');
ob_start();

require __DIR__ . '/vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

$response = ['success' => false];

try {
    $remitente = $_POST['correo_de'] ?? '';
    $destinatario = $_POST['correo_para'] ?? '';
    $asunto = $_POST['asunto'] ?? '';
    $mensaje = $_POST['mensaje'] ?? '';
    $estado = 'ENVIADO';

    if (!$remitente || !$destinatario || !$asunto || !$mensaje) {
        throw new Exception('Faltan datos obligatorios.');
    }

    $mail = new PHPMailer(true);
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'pthe51744@gmail.com';
    $mail->Password = 'wysixgqpheopqeum';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port = 587;

    $mail->setFrom('pthe51744@gmail.com', 'Trax Sistemas');
    $mail->addAddress($destinatario);
    $mail->addReplyTo($remitente);
    $mail->isHTML(true);
    $mail->Subject = $asunto;
    $mail->Body = "<h3>{$asunto}</h3><p>{$mensaje}</p>";

    if (!empty($_FILES['archivo']['tmp_name'])) {
        $mail->addAttachment($_FILES['archivo']['tmp_name'], $_FILES['archivo']['name']);
    }

    $mail->send();

    // Conexión Firebird
    $host = 'localhost';
    $database = 'C:\Program Files (x86)\Common Files\Aspel\Sistemas Aspel\SAE7.00\Ejemplos\Ejemplos.fdb';
    $username = 'SYSDBA';
    $password = 'masterkey';

    $dsn = "firebird:dbname={$host}:{$database};charset=UTF8";
    $pdo = new PDO($dsn, $username, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ]);

    $sql = "INSERT INTO CORREO (REMITENTE, DESTINATARIO, ASUNTO, MENSAJE, FECHA_ENVIO, ESTADO)
            VALUES (:remitente, :destinatario, :asunto, :mensaje, CURRENT_TIMESTAMP, :estado)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([
        ':remitente' => $remitente,
        ':destinatario' => $destinatario,
        ':asunto' => $asunto,
        ':mensaje' => $mensaje,
        ':estado' => $estado
    ]);

    $response = [
        'success' => true,
        'correo' => [
            'remitente' => $remitente,
            'asunto' => $asunto,
            'mensaje' => $mensaje,
            'hora' => date('H:i')
        ]
    ];

} catch (Exception $e) {
    $response['message'] = $e->getMessage();
}

// DEBUG: guardar todo lo que hay en buffer antes de limpiar
file_put_contents(__DIR__ . '/debug_output.log', ob_get_contents());

ob_end_clean();

$responseJson = json_encode($response);
if (json_last_error() !== JSON_ERROR_NONE) {
    error_log('JSON encode error: ' . json_last_error_msg());
    echo json_encode([
        'success' => false,
        'message' => 'Error al codificar JSON: ' . json_last_error_msg()
    ]);
    exit;
}

echo $responseJson;
exit;
