import os

from django.conf import settings
from django.core.management.base import BaseCommand

from apps.core.authentication.models import Institution
from apps.core.seeders.core_seeder import seed_superuser


class Command(BaseCommand):
    help = "Seed default institution and superuser from environment variables."

    def add_arguments(self, parser):
        parser.add_argument(
            "--volume",
            choices=("minimal", "demo", "heavy"),
            default="demo",
            help="Accepted for API symmetry with seed_all; ignored here.",
        )

    def handle(self, *args, **options):
        Institution.objects.get_or_create(
            name="Unassigned",
            defaults={"country": ""},
        )
        email = (os.getenv("DJANGO_SUPERUSER_EMAIL") or "").strip()
        password = (os.getenv("DJANGO_SUPERUSER_PASSWORD") or "").strip()
        if not email:
            self.stdout.write("DJANGO_SUPERUSER_EMAIL not set; skipped superuser.")
            return
        if not password:
            if settings.DEBUG:
                password = "password123"
                self.stdout.write(
                    "DJANGO_SUPERUSER_PASSWORD empty — using DEBUG default password123.",
                )
            else:
                self.stdout.write(
                    self.style.WARNING(
                        "DJANGO_SUPERUSER_PASSWORD not set; skipped superuser (required when DEBUG=False).",
                    ),
                )
                return
        seed_superuser(email=email, password=password)
        self.stdout.write(self.style.SUCCESS(f"Superuser ensured: {email}"))
