import datetime
from django.core.mail import EmailMultiAlternatives
from django.conf import settings
from django.template.loader import render_to_string # Usaremos esto para templates más limpios

def send_invitation_email_service(recipient_email, invitation_url):
    """
    Servicio para manejar la lógica del envío del correo de invitación.
    Recibe el correo destinatario y la URL de registro.
    
    NOTA: Asume que la configuración de correo (EMAIL_HOST, etc.) está en settings.py.
    """
    subject = "Invitación a registrarte en JOLI"
    
    # 1. Definir el cuerpo del correo basado en tu HTML original
    # Usamos f-string para insertar la URL dinámicamente
    html_body = f"""
    <html>
    <body style="font-family: Arial, sans-serif; background-color: #f5f6f8; color: #333; margin: 0; padding: 0;">
        <table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="max-width: 600px; margin: 30px auto; background: #ffffff; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.08);">
        <tr>
            <td style="padding: 30px; text-align: center;">
            
            <div style="margin-bottom: 20px;">
                <!-- Reemplazar 'cid:logo_img' con una URL pública o embed base64 (Django no soporta CID fácilmente aquí) -->
                <!-- Usamos una URL de placeholder o la URL real de tu logo -->
                <img src="https://bi.jolifoods.co/model/src/logo.png" style="width: 20%; max-width: 120px;"><br>
                <b>¡Bienvenido a JOLI!</b>
            </div>

            <p style="font-size: 16px;">
                Has sido invitado a registrarte en la plataforma de TIC.
            </p>

            <p style="text-align: center; margin: 30px 0;">
                <a href="{invitation_url}" 
                style="display: inline-block; padding: 12px 30px; font-size: 16px; color: #fff; background-color: #0d6efd; border-radius: 8px; text-decoration: none; font-family: Arial, sans-serif;">
                    Ir a la página de registro
                </a>
            </p>
            <p style="font-size: 13px; color: #666;">
                Si tienes dudas, por favor contacta al administrador para más detalles.
            </p>
            
            <hr style="border: none; border-top: 1px solid #eee; margin: 25px 0;">

            <p style="font-size: 12px; color: #999; text-align: center;">
                © {datetime.datetime.now().year} - JOLI. Todos los derechos reservados.
            </p>

            </td>
        </tr>
        </table>
    </body>
    </html>
    """
    
    # 2. Enviar el correo usando el sistema de Django
    try:
        # El cuerpo en texto plano para clientes que no soportan HTML
        text_body = f"Has sido invitado. Usa este enlace para registrarte: {invitation_url}"
        
        email_message = EmailMultiAlternatives(
            subject=subject,
            body=text_body,
            from_email=settings.EMAIL_HOST_USER, # Usamos el correo configurado en settings
            to=[recipient_email],
        )
        email_message.attach_alternative(html_body, "text/html")
        email_message.send(fail_silently=False)
        return True
    except Exception as e:
        # Si el envío falla, lanzamos una excepción de negocio que será capturada en el servicio principal
        raise Exception(f"Error al enviar el correo de invitación: {e}")