"""Shared choice lists for SME-Hub forms.

Centralised here so SP1 onboarding and SP2 incubation forms reuse the same
country / sector / language / service vocabulary. Lists lean toward the
RUFORUM member geography but include a sensible fallback for outside-network
entries.
"""
from __future__ import annotations

from apps.core.countries import ALL_COUNTRY_CHOICES

# Country values are stored as canonical full names platform-wide (e.g. "Uganda"),
# so SME-Hub shares the SAME list as the canonical CountryChoiceField. Both the
# value and label are the full name; forms validate against this single source.
COUNTRIES: list[tuple[str, str]] = list(ALL_COUNTRY_CHOICES)

# Business sectors — broad enough to slot any RUFORUM-supported venture.
SECTORS: list[tuple[str, str]] = [
    ("Agriculture", "Agriculture"),
    ("Agribusiness", "Agribusiness"),
    ("Aquaculture", "Aquaculture"),
    ("Livestock", "Livestock"),
    ("Forestry", "Forestry"),
    ("Energy", "Energy & climate"),
    ("Water", "Water & sanitation"),
    ("Health", "Health"),
    ("Education", "Education & EdTech"),
    ("FinTech", "Finance & FinTech"),
    ("Tech", "Technology & ICT"),
    ("Manufacturing", "Manufacturing"),
    ("Trade", "Trade & retail"),
    ("Transport", "Transport & logistics"),
    ("Tourism", "Tourism & hospitality"),
    ("Creative", "Creative industries"),
    ("Construction", "Construction & real estate"),
    ("Mining", "Mining & extractives"),
    ("Other", "Other"),
]

# Business stages mirror BusinessStage TextChoices on the model.
BUSINESS_STAGES: list[tuple[str, str]] = [
    ("idea", "Idea / pre-seed"),
    ("mvp", "MVP / prototype"),
    ("early_revenue", "Early revenue"),
    ("growth", "Growth"),
    ("scale", "Scale"),
]

# Languages commonly spoken across the RUFORUM network.
LANGUAGES: list[tuple[str, str]] = [
    ("en", "English"),
    ("fr", "French"),
    ("pt", "Portuguese"),
    ("ar", "Arabic"),
    ("sw", "Swahili"),
    ("am", "Amharic"),
    ("ha", "Hausa"),
    ("yo", "Yoruba"),
    ("ig", "Igbo"),
    ("zu", "Zulu"),
    ("xh", "Xhosa"),
    ("af", "Afrikaans"),
    ("rw", "Kinyarwanda"),
    ("rn", "Kirundi"),
    ("lg", "Luganda"),
    ("om", "Oromo"),
    ("so", "Somali"),
    ("ti", "Tigrinya"),
    ("wo", "Wolof"),
    ("mg", "Malagasy"),
    ("nso", "Sesotho"),
    ("ny", "Chichewa"),
    ("sn", "Shona"),
    ("other", "Other"),
]

# Service-provider offerings (FRSME-MPL003 service categories).
SERVICE_OFFERINGS: list[tuple[str, str]] = [
    ("legal", "Legal & compliance"),
    ("finance", "Finance & accounting"),
    ("certification", "Certification & standards"),
    ("packaging", "Packaging & branding"),
    ("qa", "Quality assurance"),
    ("ip", "Intellectual property"),
    ("marketing", "Marketing & communications"),
    ("logistics", "Logistics & distribution"),
    ("hr", "HR & recruitment"),
    ("tech", "Technology & software"),
    ("training", "Training & capacity-building"),
    ("market_research", "Market research"),
    ("other", "Other"),
]

# Mentor / partner / investor / buyer organisation types.
ORG_TYPES: list[tuple[str, str]] = [
    ("government", "Government"),
    ("corporate", "Corporate"),
    ("ngo", "NGO / non-profit"),
    ("university", "University / research institute"),
    ("foundation", "Foundation"),
    ("dfi", "Development finance institution"),
    ("vc", "Venture capital"),
    ("angel", "Angel investor"),
    ("donor", "Donor"),
    ("cooperative", "Cooperative"),
    ("other", "Other"),
]

# Revenue ranges mirror RevenueRange TextChoices on the model.
REVENUE_RANGES: list[tuple[str, str]] = [
    ("none", "No revenue yet"),
    ("under_1k", "Under $1k / month"),
    ("1k_10k", "$1k–10k / month"),
    ("10k_50k", "$10k–50k / month"),
    ("50k_250k", "$50k–250k / month"),
    ("over_250k", "Over $250k / month"),
]
