from django.core.management.base import BaseCommand
from departments.models import Department
from status.models import Status
from batch.models import Batch
from django.utils.text import slugify

class Command(BaseCommand):
    help = 'Adds default batch data'

    def handle(self, *args, **kwargs):
        self.stdout.write("Adding default batch data...")

        # Ensure 'Active' status exists for batch type
        active_status, created = Status.objects.get_or_create(
            title='Active', type='batch', defaults={'description': 'Batch is currently active'}
        )
        if created:
            self.stdout.write(self.style.SUCCESS(f'Successfully created status: {active_status.title} ({active_status.type})'))
        else:
            self.stdout.write(f'Status \'{active_status.title}\' (\'{active_status.type}\') already exists.')

        

        # Batches to be added
        batches = [
            {
                'batch_name': '1st Batch',
                'department_code': 'CSE',
                'start_year': 2023,
                'end_year': 2027,
            },
            {
                'batch_name': '2nd Batch',
                'department_code': 'CSE',
                'start_year': 2024,
                'end_year': 2028,
            },
            {
                'batch_name': '3rd Batch',
                'department_code': 'CSE',
                'start_year': 2025,
                'end_year': 2029,
            },
        ]

        for batch_data in batches:
            department, created = Department.objects.get_or_create(
                department_code=batch_data['department_code'], 
                defaults={'department_name': f"Department of {batch_data['department_code']}"}
            )
            if created:
                self.stdout.write(self.style.SUCCESS(f"Successfully created department: {department.department_name}"))
            else:
                self.stdout.write(f"Department '{department.department_name}' already exists.")

            batch_slug = f"{department.department_name}-{batch_data['batch_name']}"
            batch, created = Batch.objects.get_or_create(
                batch_name=batch_data['batch_name'],
                department=department,
                start_year=batch_data['start_year'],
                end_year=batch_data['end_year'],
                defaults={'status': active_status, 'slug': slugify(batch_slug)}
            )

            if created:
                self.stdout.write(self.style.SUCCESS(f"Successfully added batch: {batch.batch_name}"))
            else:
                self.stdout.write(f"Batch '{batch.batch_name}' already exists.")

        self.stdout.write("Default batch data addition complete.")