package com.escolapios.fctmongo.service;

import jakarta.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

@Service
public class EmailService {

    @Autowired
    private JavaMailSender mailSender;

    @Async // 🟢 Se ejecuta en segundo plano para que el usuario no espere en el frontal
    public void enviarSolicitudAprobacion(String numeroAcuerdo, String nombreEmpresa, byte[] pdfBytes, String documentoId, String tipoDocumento) {
        try {
            MimeMessage message = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
            // 1. Normalizamos el tipo de documento para los textos amigables
            String tipoFormateado = tipoDocumento.toUpperCase().replace("_", " ");
            // 2. Personalizamos el Asunto según el tipo de documento
            String asunto = "📋 Circuito de Aprobación: " + tipoFormateado + " - Acuerdo " + numeroAcuerdo;
            // 3. Personalizamos el encabezado principal del HTML
            String tituloEncabezado = "Revisión de " + tipoFormateado + " de Prácticas FCT";
            // email jefe de estudios
           // helper.setTo("coor_fp@escolapiosdegetafe.es");
            helper.setTo("josevegas@escolapiosdegetafe.es");
            //helper.setSubject(asunto);
            // Generamos las URLs dinámicas con el ID del documento
            String enlaceAprobar = "http://localhost:8080/api/documentos/validar/aprobar/" + documentoId;
            String enlaceRechazar = "http://localhost:8080/api/documentos/validar/rechazar/" + documentoId;
            // 4. Inyectamos los textos e hilos dinámicos en el bloque HTML
            String cuerpoHtml = "<h3>" + tituloEncabezado + "</h3>"
                    + "<p>Se ha generado un nuevo documento que requiere su validación previa:</p>"
                    + "<ul>"
                    + "  <li><b>Tipo de Documento:</b> " + tipoFormateado + "</li>"
                    + "  <li><b>Número de Acuerdo:</b> " + numeroAcuerdo + "</li>"
                    + "  <li><b>Empresa:</b> " + nombreEmpresa + "</li>"
                    + "</ul>"
                    + "<p>Adjunto encontrará el borrador del documento en PDF.</p>"
                    + "<br>"
                    + "<div style='margin-top: 25px; margin-bottom: 25px; font-family: sans-serif;'>"
                    + "  <a href='" + enlaceAprobar + "' style='background-color: #198754; color: white; padding: 12px 20px; text-decoration: none; font-weight: bold; border-radius: 4px; display: inline-block; margin-right: 10px;'>"
                    + "     ✅ Aprobar y Autorizar"
                    + "  </a>"
                    + "  <a href='" + enlaceRechazar + "' style='background-color: #dc3545; color: white; padding: 12px 20px; text-decoration: none; font-weight: bold; border-radius: 4px; display: inline-block;'>"
                    + "     ❌ Rechazar Documento"
                    + "  </a>"
                    + "</div>"
                    + "<br><p>Saludos cordiales,<br><i>Plataforma de Gestión FCT Escolapios</i></p>";
            helper.setText(cuerpoHtml, true);
            // Nombre dinámico para el archivo adjunto según su tipo real
            String nombreAdjunto = tipoFormateado.replace(" ", "_") + "_" + numeroAcuerdo + ".pdf";
            helper.addAttachment(nombreAdjunto, new ByteArrayResource(pdfBytes));
            mailSender.send(message);
            System.out.println("📧 Correo dinámico [" + tipoFormateado + "] enviado con éxito al Jefe de Estudios.");
        } catch (Exception e) {
            System.err.println("❌ Fallo al despachar el correo de validación dinámico: " + e.getMessage());
        }
    }

}
