"""Seed the SME-Hub demo dataset.

Runs SP1 onboarding → SP2 incubation → SP3 linkage + marketplace → SP4 showcasing → SP5 investment.
Idempotent — re-running fills in any missing rows.
"""
from __future__ import annotations

from django.core.management.base import BaseCommand


class Command(BaseCommand):
    help = "Seed SME-Hub demo data (SP1 → SP5)."

    def add_arguments(self, parser):
        parser.add_argument(
            "--volume",
            choices=("minimal", "demo", "heavy"),
            default="demo",
            help="Scale entrepreneur cohort sizes per SP stage.",
        )

    def handle(self, *args, **options):
        from apps.mel.indicators.seeders.smehub_indicators_seeder import seed_smehub_indicators
        from apps.smehub.incubation.seeders.incubation_seeder import seed as seed_incubation
        from apps.smehub.investment.seeders.investment_seeder import seed as seed_investment
        from apps.smehub.linkage.seeders.linkage_seeder import seed as seed_linkage
        from apps.smehub.marketplace.seeders.marketplace_seeder import seed as seed_marketplace
        from apps.smehub.onboarding.seeders.onboarding_seeder import seed as seed_onboarding
        from apps.smehub.showcasing.seeders.showcasing_seeder import seed as seed_showcasing

        sp1 = seed_onboarding()
        self.stdout.write(self.style.SUCCESS(f"SP1 onboarding seeded: {sp1}"))

        sp2 = seed_incubation()
        self.stdout.write(self.style.SUCCESS(f"SP2 incubation seeded: {sp2}"))

        sp3a = seed_linkage()
        self.stdout.write(self.style.SUCCESS(f"SP3a linkage seeded: {sp3a}"))

        sp3b = seed_marketplace()
        self.stdout.write(self.style.SUCCESS(f"SP3b marketplace seeded: {sp3b}"))

        sp4 = seed_showcasing()
        self.stdout.write(self.style.SUCCESS(f"SP4 showcasing seeded: {sp4}"))

        sp5 = seed_investment()
        self.stdout.write(self.style.SUCCESS(f"SP5 investment seeded: {sp5}"))

        seed_smehub_indicators()
        self.stdout.write(self.style.SUCCESS("SP6 M&EL indicators seeded"))

        # Replay every existing entrepreneur's SP1–SP5 history into
        # SMEHubTrackingRecord rows so the M&EL dashboards have data on the
        # very first boot. Idempotent — safe to re-run.
        from django.core.management import call_command

        call_command("backfill_smehub_tracking", verbosity=0)
        self.stdout.write(self.style.SUCCESS("SP6 tracking records backfilled"))
