"""Minimal iCalendar (.ics) invite builder + emailer (R2-002).
No external calendar API needed — .ics opens in Google/Outlook/Apple Calendar."""
from datetime import timedelta

from django.conf import settings
from django.core.mail import EmailMessage


def _fmt(dt):
    return dt.strftime("%Y%m%dT%H%M%S")


def build_ics(summary, start_dt, duration_minutes, location, organizer_email, attendees, description=""):
    end_dt = start_dt + timedelta(minutes=duration_minutes or 45)
    uid = f"{_fmt(start_dt)}-{abs(hash(summary)) % 100000}@ta-ats"
    lines = [
        "BEGIN:VCALENDAR", "VERSION:2.0", "PRODID:-//TA-ATS//Interview//EN",
        "METHOD:REQUEST", "BEGIN:VEVENT",
        f"UID:{uid}", f"DTSTAMP:{_fmt(start_dt)}",
        f"DTSTART:{_fmt(start_dt)}", f"DTEND:{_fmt(end_dt)}",
        f"SUMMARY:{summary}",
        f"DESCRIPTION:{description}",
        f"LOCATION:{location or ''}",
        f"ORGANIZER;CN=TA-ATS:mailto:{organizer_email}",
    ]
    for a in attendees:
        if a:
            lines.append(f"ATTENDEE;RSVP=TRUE;CN={a}:mailto:{a}")
    lines += ["STATUS:CONFIRMED", "END:VEVENT", "END:VCALENDAR"]
    return "\r\n".join(lines)


def send_invite(subject, body, to_emails, ics_content):
    """Email the .ics invite. Returns (ok, error)."""
    to = [e for e in to_emails if e]
    if not to:
        return False, "No recipient email addresses."
    if "console" in settings.EMAIL_BACKEND:
        return False, "SMTP is not configured — invite not delivered (console backend)."
    try:
        msg = EmailMessage(subject, body, settings.DEFAULT_FROM_EMAIL, to)
        msg.attach("invite.ics", ics_content, "text/calendar")
        msg.send(fail_silently=False)
        return True, ""
    except Exception as e:
        return False, str(e)
