<?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 {
    // =========================
    // 1. Datos recibidos del POST
    // =========================
    $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.');
    }

    // Nombre (opcional: puedes mejorar con regex si es necesario)
    $nombre = $remitente;
    $fecha = date("Y-m-d H:i:s");

    // =========================
    // 2. Configuración PHPMailer
    // =========================
    $mail = new PHPMailer(true);
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'pthe51744@gmail.com'; // Cambia por tu correo
    $mail->Password = 'wysixgqpheopqeum'; // Cambia por tu contraseña de aplicación
    $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;

    // =========================
    // 3. Contenido con estilos
    // =========================
    $mail->Body = "
    <html>
    <head>
        <meta charset='UTF-8'>
        <style>
            body { font-family: Arial, sans-serif; color: #333; background-color: #f4f4f9; padding: 20px; }
            .header { text-align: center; background-color: #009DFF ; color: white; padding: 10px; }
            .content { margin: 20px 0; }
            .footer { margin-top: 30px; font-size: 12px; color: #888; text-align: center; }
            table { border-collapse: collapse; width: 100%; }
            th, td { padding: 8px; text-align: left; border: 1px solid #ddd; }
            th { background-color: #f2f2f2; }
        </style>
    </head>
    <body>
        <div class='header'>
            <h2>Dahs S.A de C.V.</h2>
        </div>
        <div class='content'>
            <h2>Estimado(a) {$nombre},</h2>
            <p><strong>Fecha de correo:</strong> " . date("d-m-Y", strtotime($fecha)) . "</p>            
            <p><strong>Asunto:</strong> {$asunto}</p>
            <p><strong>Mensaje:</strong></p>
            <p>{$mensaje}</p> 
        </div>
        <div class='footer'>
            <p>Este correo fue generado automáticamente. Por favor no responda a este mensaje.</p>
        </div>
    </body>
    </html>
    ";

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

    // Enviar correo
    $mail->send();

    // =========================
    // 4. Insertar registro en 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
    ]);

    // Obtener ID usando generador
    $idCorreo = $pdo->query("SELECT NEXT VALUE FOR GEN_CORREO_ID FROM RDB\$DATABASE")->fetchColumn();

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

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

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

// Limpiar buffer y enviar JSON
file_put_contents(__DIR__ . '/debug_output.log', ob_get_contents());
ob_end_clean();

echo json_encode($response);
exit; 