# Generated by Django 5.2.13 on 2026-04-26 19:51

import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ("core", "0019_conversation_message_toolcall_and_more"),
    ]

    operations = [
        migrations.CreateModel(
            name="NotificationTemplate",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
                    ),
                ),
                (
                    "verb",
                    models.CharField(
                        choices=[
                            ("grant_awarded", "Grant awarded"),
                            ("deadline_reminder", "Deadline reminder"),
                            ("application_status", "Application status"),
                            ("call_published", "Call published"),
                            ("reviewer_assigned", "Reviewer assigned"),
                            ("review_intake_manager", "Grants — assign reviewers"),
                            ("interview_completed", "Interview completed"),
                            ("milestone_overdue", "Milestone overdue"),
                            ("finance_disbursement", "Finance disbursement"),
                            ("rep_certificate_issued", "Course certificate issued"),
                            ("rep_course_published", "REP course published"),
                            ("rep_course_unpublished", "REP course returned to draft"),
                            (
                                "rep_course_review_submitted",
                                "REP course submitted for publish review",
                            ),
                            ("rep_course_review_returned", "REP publish review returned"),
                            (
                                "rep_assignment_deadline_extended",
                                "REP assignment deadline extended",
                            ),
                            ("repo_doc_submitted", "Repository document submitted"),
                            ("repo_qa_assigned", "Repository QA review assigned"),
                            ("repo_doc_approved", "Repository document approved"),
                            ("repo_doc_rejected", "Repository document rejected"),
                            ("repo_doc_revision_required", "Repository document revision required"),
                            ("repo_doc_published", "Repository document published"),
                            ("repo_doc_withdrawn", "Repository document withdrawn"),
                            ("repo_access_requested", "Repository access requested"),
                            ("repo_access_granted", "Repository access granted"),
                            ("repo_retention_due", "Repository retention due"),
                            ("repo_rep_link_broken", "REP link to withdrawn document"),
                            ("mel_indicator_off_track", "M&EL — indicator off track"),
                            ("mel_activity_delayed", "M&EL — activity delayed"),
                            ("mel_data_point_rejected", "M&EL — data point rejected"),
                            ("alumni_profile_created", "Alumni — profile created"),
                            ("alumni_milestone_added", "Alumni — milestone added"),
                            ("alumni_orcid_sync_failed", "Alumni — ORCID sync failed"),
                            ("alumni_mentorship_requested", "Alumni — mentorship requested"),
                            ("alumni_mentorship_accepted", "Alumni — mentorship accepted"),
                            ("alumni_mentorship_declined", "Alumni — mentorship declined"),
                            ("alumni_event_registered", "Alumni — event registered"),
                            ("alumni_event_reminder", "Alumni — event reminder"),
                            ("alumni_tracer_survey_invited", "Alumni — tracer survey invitation"),
                            ("alumni_group_new_event", "Alumni — new event in your group"),
                            ("alumni_group_event_nudge", "Alumni — upcoming group event reminder"),
                            ("alumni_group_announcement", "Alumni — group announcement"),
                            (
                                "alumni_group_member_promoted",
                                "Alumni — promoted to group moderator",
                            ),
                            (
                                "alumni_mentorship_session_logged",
                                "Alumni — mentorship session logged",
                            ),
                            ("alumni_mentorship_completed", "Alumni — mentorship completed"),
                            (
                                "alumni_mentorship_withdrawn",
                                "Alumni — mentorship request withdrawn",
                            ),
                            ("smehub_registration_verify_email", "SME-Hub — verify your email"),
                            ("smehub_entrepreneur_verified", "SME-Hub — entrepreneur verified"),
                            ("smehub_entrepreneur_rejected", "SME-Hub — entrepreneur rejected"),
                            (
                                "smehub_entrepreneur_more_info",
                                "SME-Hub — more information requested",
                            ),
                            (
                                "smehub_business_pending_review",
                                "SME-Hub — business awaiting review",
                            ),
                            ("smehub_business_verified", "SME-Hub — business verified"),
                            ("smehub_business_rejected", "SME-Hub — business rejected"),
                            ("smehub_business_revoked", "SME-Hub — business revoked"),
                            (
                                "smehub_programme_published",
                                "SME-Hub — incubation programme published",
                            ),
                            (
                                "smehub_programme_eligible",
                                "SME-Hub — you are eligible for a programme",
                            ),
                            ("smehub_application_received", "SME-Hub — application received"),
                            (
                                "smehub_application_returned",
                                "SME-Hub — application returned for info",
                            ),
                            ("smehub_judge_assigned", "SME-Hub — judge assignment"),
                            ("smehub_judge_reminder", "SME-Hub — judge scoring reminder"),
                            ("smehub_cohort_accepted", "SME-Hub — accepted into cohort"),
                            ("smehub_cohort_rejected", "SME-Hub — application not selected"),
                            ("smehub_mentor_assigned", "SME-Hub — mentor assigned"),
                            ("smehub_session_scheduled", "SME-Hub — mentorship session scheduled"),
                            ("smehub_session_cancelled", "SME-Hub — mentorship session cancelled"),
                            ("smehub_programme_complete", "SME-Hub — programme completed"),
                            ("smehub_certificate_issued", "SME-Hub — certificate issued"),
                            (
                                "smehub_connection_requested",
                                "SME-Hub — connection request received",
                            ),
                            ("smehub_connection_accepted", "SME-Hub — connection accepted"),
                            ("smehub_connection_declined", "SME-Hub — connection declined"),
                            ("smehub_mou_drafted", "SME-Hub — MoU draft ready for review"),
                            ("smehub_mou_formalised", "SME-Hub — MoU formalised"),
                            ("smehub_market_demand_match", "SME-Hub — new market demand for you"),
                            ("smehub_demand_response", "SME-Hub — demand response received"),
                            ("smehub_advisory_booked", "SME-Hub — advisory session booked"),
                            ("smehub_advisory_cancelled", "SME-Hub — advisory session cancelled"),
                            ("smehub_showcase_published", "SME-Hub — showcase event published"),
                            ("smehub_challenge_published", "SME-Hub — innovation challenge open"),
                            (
                                "smehub_showcase_participant_confirmed",
                                "SME-Hub — confirmed for showcase",
                            ),
                            ("smehub_deal_room_opened", "SME-Hub — deal room opened"),
                            ("smehub_deal_room_message", "SME-Hub — new message in deal room"),
                            ("smehub_deal_room_document", "SME-Hub — new document in deal room"),
                            ("smehub_deal_room_expired", "SME-Hub — deal room expired"),
                            ("smehub_agreement_formalised", "SME-Hub — agreement formalised"),
                            ("smehub_funding_call_published", "SME-Hub — funding call published"),
                            (
                                "smehub_funding_call_match",
                                "SME-Hub — funding match for your business",
                            ),
                            ("smehub_funding_outcome", "SME-Hub — funding application outcome"),
                            ("smehub_investor_request", "SME-Hub — investor pitch request"),
                            (
                                "smehub_investor_accepted",
                                "SME-Hub — investor accepted your request",
                            ),
                            (
                                "smehub_investor_declined",
                                "SME-Hub — investor declined your request",
                            ),
                            ("smehub_funding_secured", "SME-Hub — funding secured"),
                            ("smehub_feedback_survey", "SME-Hub — share your feedback"),
                            ("generic", "Generic"),
                        ],
                        help_text="Notification verb this template applies to.",
                        max_length=64,
                        unique=True,
                    ),
                ),
                (
                    "name",
                    models.CharField(
                        help_text="Human-readable label shown in the admin UI.", max_length=120
                    ),
                ),
                (
                    "subject",
                    models.CharField(
                        help_text="Email subject. Django template syntax (e.g. {{ recipient_name }}) is supported.",
                        max_length=255,
                    ),
                ),
                (
                    "body_text",
                    models.TextField(
                        blank=True, help_text="Plain-text body. Falls back to message if empty."
                    ),
                ),
                (
                    "body_html",
                    models.TextField(
                        blank=True,
                        help_text="Optional HTML body. Wrapped by the generic email shell when set.",
                    ),
                ),
                (
                    "action_label_default",
                    models.CharField(
                        blank=True,
                        default="Open in IILMP",
                        help_text="Default CTA label, used when email_context does not provide one.",
                        max_length=120,
                    ),
                ),
                (
                    "headline_default",
                    models.CharField(
                        blank=True,
                        help_text="Default headline shown above the body in the HTML shell.",
                        max_length=255,
                    ),
                ),
                ("is_active", models.BooleanField(default=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                (
                    "updated_by",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="+",
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
            ],
            options={
                "ordering": ["verb"],
            },
        ),
    ]
