"""Resend email wrapper (async-safe)."""
import os
import asyncio
import logging
from typing import Optional

import resend

logger = logging.getLogger(__name__)


def _configure():
    api_key = os.environ.get("RESEND_API_KEY")
    if api_key:
        resend.api_key = api_key


_configure()


async def send_email(to: str, subject: str, html: str, reply_to: Optional[str] = None) -> dict:
    """Send via Resend. Returns dict with ok/id/error keys; never raises."""
    sender = os.environ.get("SENDER_EMAIL", "onboarding@resend.dev")
    params = {"from": sender, "to": [to], "subject": subject, "html": html}
    if reply_to:
        params["reply_to"] = reply_to
    try:
        result = await asyncio.to_thread(resend.Emails.send, params)
        return {"ok": True, "id": (result or {}).get("id")}
    except Exception as e:
        logger.error(f"Resend send failed: {e}")
        return {"ok": False, "error": str(e)}


def render_contact_admin(name: str, email: str, company: str, message: str) -> str:
    return f"""
    <div style="font-family:Arial,Helvetica,sans-serif;background:#0a0a0a;color:#ffffff;padding:24px;">
      <h2 style="color:#00E599;margin:0 0 16px;">Nuevo contacto desde 5to sueño</h2>
      <table style="width:100%;border-collapse:collapse;">
        <tr><td style="padding:8px 0;color:#A1A1AA;">Nombre</td><td style="padding:8px 0;">{name}</td></tr>
        <tr><td style="padding:8px 0;color:#A1A1AA;">Email</td><td style="padding:8px 0;">{email}</td></tr>
        <tr><td style="padding:8px 0;color:#A1A1AA;">Empresa</td><td style="padding:8px 0;">{company or '—'}</td></tr>
      </table>
      <div style="margin-top:16px;padding:16px;border:1px solid #222;border-radius:8px;background:#111;">{message}</div>
    </div>
    """


def render_invite(name: str, email: str, password: str, role: str, login_url: str) -> str:
    return f"""
    <div style="font-family:Arial,Helvetica,sans-serif;background:#0a0a0a;color:#ffffff;padding:24px;">
      <h2 style="color:#00E599;margin:0 0 16px;">Bienvenido a 5to sueño</h2>
      <p>Hola {name}, se ha creado tu cuenta con el rol <strong style="color:#00E599;">{role}</strong>.</p>
      <p style="color:#A1A1AA;">Para activar tu cuenta, haz clic en el siguiente enlace. Te pediremos establecer una nueva contraseña.</p>
      <p style="margin:24px 0;">
        <a href="{login_url}" style="display:inline-block;background:#00E599;color:#000;padding:14px 28px;text-decoration:none;font-weight:bold;border-radius:4px;">Activar mi cuenta</a>
      </p>
      <table style="border-collapse:collapse;margin:16px 0;background:#111;border:1px solid #222;padding:8px;">
        <tr><td style="padding:8px;color:#A1A1AA;">Email</td><td style="padding:8px;">{email}</td></tr>
        <tr><td style="padding:8px;color:#A1A1AA;">Contraseña temporal</td><td style="padding:8px;font-family:monospace;">{password}</td></tr>
      </table>
      <p style="color:#71717A;font-size:12px;">El enlace expira en 7 días. Si tienes dudas, contacta a tu administrador.</p>
    </div>
    """


def render_notification(title: str, body: str, link: str = "") -> str:
    btn = ""
    if link:
        btn = f'<p style="margin:24px 0;"><a href="{link}" style="display:inline-block;background:#00E599;color:#000;padding:12px 24px;text-decoration:none;font-weight:bold;border-radius:4px;">Ver detalles</a></p>'
    return f"""
    <div style="font-family:Arial,Helvetica,sans-serif;background:#0a0a0a;color:#ffffff;padding:24px;">
      <h2 style="color:#00E599;margin:0 0 16px;">{title}</h2>
      <p>{body}</p>
      {btn}
    </div>
    """


def render_status_update(project_name: str, milestone: str, message: str) -> str:
    return f"""
    <div style="font-family:Arial,Helvetica,sans-serif;background:#0a0a0a;color:#ffffff;padding:24px;">
      <h2 style="color:#00E599;margin:0 0 16px;">Actualización del proyecto</h2>
      <p style="color:#A1A1AA;">Proyecto: <strong style="color:#fff;">{project_name}</strong></p>
      <p style="color:#A1A1AA;">Nuevo hito alcanzado: <strong style="color:#fff;">{milestone}</strong></p>
      <div style="margin-top:16px;padding:16px;border:1px solid #222;border-radius:8px;background:#111;">{message}</div>
    </div>
    """
