<?php
// ajax/enviar_ride.php
// Script para enviar el RIDE por correo electrónico
// Autor: Gemini Agent

require_once "../config/Conexion.php";

$claveAcceso = isset($_POST['claveAcceso']) ? $_POST['claveAcceso'] : '';
$emailDestino = isset($_POST['email']) ? $_POST['email'] : '';

if (empty($claveAcceso)) {
    echo json_encode(['success' => false, 'message' => 'Clave de acceso requerida']);
    exit;
}

// 1. Obtener datos de la factura para saber el email si no se envió
if (empty($emailDestino)) {
    $sql = "SELECT email_cliente, nombre_cliente FROM facturas_sri WHERE clave_acceso='$claveAcceso'";
    $fila = ejecutarConsultaSimpleFila($sql);
    if ($fila && !empty($fila['email_cliente'])) {
        $emailDestino = $fila['email_cliente'];
        $nombreCliente = $fila['nombre_cliente'];
    } else {
        echo json_encode(['success' => false, 'message' => 'No hay email registrado para esta factura.']);
        exit;
    }
}

// 2. Generar el PDF (RIDE)
// Definimos variables para que generar_ride.php funcione como queremos
$_GET['claveAcceso'] = $claveAcceso;
$returnPdfString = true;

// Capturamos el contenido por si generar_ride tiene algún echo
ob_start();
$pdfContent = require 'generar_ride.php';
$output = ob_get_clean();

if (empty($pdfContent) || substr($pdfContent, 0, 4) !== '%PDF') {
    // Si falló el return del require, quizás generar_ride no retornó nada o falló
    // Como modificamos generar_ride para hacer return, debería funcionar si $returnPdfString está set
    // Pero generar_ride hace 'require' de config, que ya hicimos. 
    // Nota: generar_ride hace require_once, asi que no hay conflicto.
    echo json_encode(['success' => false, 'message' => 'Error al generar el PDF: ' . $output]);
    exit;
}

// 3. Obtener el XML Autorizado
$rutaXml = __DIR__ . '/../files/sri/autorizados/' . $claveAcceso . '.xml';
if (!file_exists($rutaXml)) {
    // Intento fallback
    $rutaXml = __DIR__ . '/../files/sri/firmados/' . $claveAcceso . '.xml';
}
$xmlContent = file_exists($rutaXml) ? file_get_contents($rutaXml) : '';


// 4. Enviar Email con Adjuntos (PDF y XML)
$asunto = "Comprobante Electrónico - Factura " . $claveAcceso;
$mensaje = "Estimado cliente,\n\nAdjunto encontrará su Factura Electrónica y el archivo XML correspondiente.\n\nAtentamente,\nSISTEMA MEDICOS";

$separator = md5(time());
$eol = "\r\n";

// Headers principales
// $headers = "From: Facturación Electrónica <no-reply@sistema.com>" . $eol; // Ajustar remitente
// Mejor recuperar email de la configuración si es posible, o usar uno genérico
$headers = "From: Facturacion Electronica <no-reply@tudominio.com>" . $eol;
$headers .= "MIME-Version: 1.0" . $eol;
$headers .= "Content-Type: multipart/mixed; boundary=\"" . $separator . "\"" . $eol;

// Cuerpo del mensaje
$body = "--" . $separator . $eol;
$body .= "Content-Type: text/plain; charset=\"UTF-8\"" . $eol;
$body .= "Content-Transfer-Encoding: 8bit" . $eol . $eol;
$body .= $mensaje . $eol . $eol;

// Adjunto PDF
$body .= "--" . $separator . $eol;
$body .= "Content-Type: application/pdf; name=\"RIDE_$claveAcceso.pdf\"" . $eol;
$body .= "Content-Transfer-Encoding: base64" . $eol;
$body .= "Content-Disposition: attachment; filename=\"RIDE_$claveAcceso.pdf\"" . $eol . $eol;
$body .= chunk_split(base64_encode($pdfContent)) . $eol;

// Adjunto XML (si existe)
if (!empty($xmlContent)) {
    $body .= "--" . $separator . $eol;
    $body .= "Content-Type: text/xml; name=\"$claveAcceso.xml\"" . $eol;
    $body .= "Content-Transfer-Encoding: base64" . $eol;
    $body .= "Content-Disposition: attachment; filename=\"$claveAcceso.xml\"" . $eol . $eol;
    $body .= chunk_split(base64_encode($xmlContent)) . $eol;
}

$body .= "--" . $separator . "--";

// Enviar
if (mail($emailDestino, $asunto, $body, $headers)) {
    echo json_encode(['success' => true, 'message' => 'Correo enviado correctamente a ' . $emailDestino]);
} else {
    echo json_encode(['success' => false, 'message' => 'Error al enviar el correo. Verifique configuración del servidor.']);
}
?>