from __future__ import annotations

from django import forms

from apps.alumni.engagement.models import AlumniEvent, MentorshipPairing, NetworkGroup


class AlumniEventForm(forms.ModelForm):
    class Meta:
        model = AlumniEvent
        fields = [
            "title",
            "description",
            "start_at",
            "end_at",
            "location",
            "virtual_url",
            "cover_image",
            "capacity",
            "visibility",
            "groups",
        ]
        widgets = {
            "start_at": forms.DateTimeInput(attrs={"type": "datetime-local"}),
            "end_at": forms.DateTimeInput(attrs={"type": "datetime-local"}),
            "description": forms.Textarea(
                attrs={
                    "rows": 6,
                    "class": "js-quill",
                    "data-quill-toolbar": "full",
                    "placeholder": "Agenda, speakers, expected outcomes…",
                }
            ),
        }


class NetworkGroupForm(forms.ModelForm):
    class Meta:
        model = NetworkGroup
        fields = ["title", "kind", "description", "banner_image"]
        widgets = {
            "description": forms.Textarea(
                attrs={
                    "rows": 6,
                    "class": "js-quill",
                    "data-quill-toolbar": "full",
                    "placeholder": "Who should join, what the group does, cadence of activities…",
                }
            ),
        }


class MentorshipRequestForm(forms.ModelForm):
    class Meta:
        model = MentorshipPairing
        fields = ["topic", "goals", "cadence", "duration_months"]
        widgets = {
            "topic": forms.TextInput(
                attrs={"placeholder": "e.g. Publishing high-impact research"}
            ),
            "goals": forms.Textarea(
                attrs={
                    "rows": 5,
                    "class": "js-quill",
                    "data-quill-toolbar": "compact",
                    "placeholder": "What you want from this pairing — stage, what you've tried, what good support looks like…",
                }
            ),
            "duration_months": forms.NumberInput(
                attrs={"min": 1, "max": 24, "placeholder": "6"}
            ),
        }


class SessionLogForm(forms.Form):
    """Free-form session note — either party can log."""

    content = forms.CharField(
        label="Session notes",
        widget=forms.Textarea(
            attrs={
                "rows": 4,
                "class": "js-quill",
                "data-quill-toolbar": "compact",
                "placeholder": "What you discussed, commitments, next steps…",
            }
        ),
    )


class MentorshipCompleteForm(forms.Form):
    """Captured when either party marks a pairing complete."""

    outcome = forms.CharField(
        label="Outcome summary",
        widget=forms.Textarea(
            attrs={
                "rows": 4,
                "class": "js-quill",
                "data-quill-toolbar": "compact",
                "placeholder": "What was achieved? What's next for the mentee? (visible to both parties)",
            }
        ),
        required=True,
    )
    outcome_rating = forms.TypedChoiceField(
        label="How impactful was this mentorship?",
        choices=[
            ("", "—"),
            (1, "1 — no measurable impact"),
            (2, "2 — some value"),
            (3, "3 — helpful"),
            (4, "4 — very impactful"),
            (5, "5 — transformational"),
        ],
        coerce=int,
        required=False,
        empty_value=None,
    )
