# Generated by ChatGPT on 2026-02-06
from django.db import migrations, models
import django.db.models.deletion
import re


def seed_levels_and_pathways(apps, schema_editor):
    EducationLevel = apps.get_model('schools', 'EducationLevel')
    Pathway = apps.get_model('schools', 'Pathway')
    Subject = apps.get_model('schools', 'Subject')
    ClassRoom = apps.get_model('schools', 'ClassRoom')
    School = apps.get_model('schools', 'School')

    level_names = ['Primary', 'Junior', 'Senior']
    levels = {}
    for name in level_names:
        level, _ = EducationLevel.objects.get_or_create(name=name)
        levels[name] = level

    pathways = [
        ('STEM', 'Science, Technology, Engineering & Mathematics'),
        ('ARTS', 'Arts and Sports Science'),
        ('SOCIAL', 'Social Sciences'),
    ]
    for code, name in pathways:
        Pathway.objects.get_or_create(code=code, defaults={'name': name})

    primary = levels['Primary']
    Subject.objects.filter(education_level__isnull=True).update(education_level=primary)

    for classroom in ClassRoom.objects.filter(level__isnull=True):
        level = primary
        match = re.search(r'(\d+)', (classroom.name or '').lower())
        if match:
            grade = int(match.group(1))
            if grade >= 10:
                level = levels['Senior']
            elif grade >= 7:
                level = levels['Junior']
        classroom.level = level
        classroom.save(update_fields=['level'])

    for school in School.objects.all():
        school.system_type = 'CBE' if school.school_type == 'CBE' else '844'
        school.save(update_fields=['system_type'])


def noop_reverse(apps, schema_editor):
    pass


class Migration(migrations.Migration):

    dependencies = [
        ('schools', '0029_remove_classroom_class_teacher_stream_and_more'),
    ]

    operations = [
        migrations.CreateModel(
            name='EducationLevel',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=50)),
            ],
            options={
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='Pathway',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('code', models.CharField(max_length=10)),
            ],
            options={
                'ordering': ['code'],
            },
        ),
        migrations.AddField(
            model_name='school',
            name='system_type',
            field=models.CharField(choices=[('844', '8-4-4'), ('CBE', 'Competency Based EDUCATION')], default='844', max_length=10),
        ),
        migrations.AddField(
            model_name='classroom',
            name='level',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='schools.educationlevel'),
        ),
        migrations.AddField(
            model_name='subject',
            name='education_level',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='schools.educationlevel'),
        ),
        migrations.AddField(
            model_name='subject',
            name='pathway',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='schools.pathway'),
        ),
        migrations.RunPython(seed_levels_and_pathways, noop_reverse),
    ]
