from django.core.management.base import BaseCommand
from django.db import transaction
from app.models import DashboardProject, ProjectPhase, ProjectSubphase


DEFAULT_PHASES = [
    (1, 'Phase 1 - Études'),
    (2, 'Phase 2 - Fondations'),
    (3, 'Phase 3 - Soubassement'),
    (4, 'Phase 4 - Élévations (Gros Œuvre)'),
    (5, 'Phase 5 - Second Œuvre'),
    (6, 'Phase 6 - Finitions'),
    (7, 'Phase 7 - Livraison'),
    (8, 'Phase 8 - SAV / Garantie'),
]


class Command(BaseCommand):
    help = "Initialise les phases ECOLUX CONNECT pour tous les projets Dashboard et crée un RDC par défaut pour la phase Élévations."

    def add_arguments(self, parser):
        parser.add_argument(
            '--project-id', type=int, default=None,
            help='Initialiser uniquement pour un projet (ID) spécifique.'
        )

    @transaction.atomic
    def handle(self, *args, **options):
        project_id = options.get('project_id')
        qs = DashboardProject.objects.all()
        if project_id:
            qs = qs.filter(id=project_id)

        created_counts = 0
        sub_created_counts = 0

        for project in qs:
            existing_orders = set(project.phases.values_list('order', flat=True))
            for order, name in DEFAULT_PHASES:
                if order not in existing_orders:
                    phase = ProjectPhase.objects.create(
                        project=project,
                        order=order,
                        name=name,
                        status='NOT_STARTED',
                        weight=0,
                        progress_percent=0,
                    )
                    created_counts += 1

                    # Créer un RDC par défaut pour la phase Élévations (ordre = 4)
                    if order == 4:
                        ProjectSubphase.objects.create(
                            phase=phase,
                            name='RDC',
                            type='ELEVATION',
                            order=1,
                            weight=0,
                            progress_percent=0,
                            level_index=0,
                            level_label='RDC',
                        )
                        sub_created_counts += 1

        self.stdout.write(self.style.SUCCESS(
            f"Initialisation terminée. Phases créées: {created_counts}, Sous-phases créées: {sub_created_counts}."
        ))
