# Generated by Django 6.0.6 on 2026-07-22 10:00

import re

from django.db import migrations, models


def seed_sequence(apps, schema_editor):
    """Start the counter above the highest existing EMP-#### id so newly
    generated ids never collide with or reuse any pre-existing value."""
    User = apps.get_model("users", "User")
    EmployeeIdSequence = apps.get_model("users", "EmployeeIdSequence")

    max_num = 0
    for emp_id in User.objects.exclude(employee_id__isnull=True).exclude(
        employee_id=""
    ).values_list("employee_id", flat=True):
        m = re.fullmatch(r"EMP-(\d+)", (emp_id or "").strip(), re.IGNORECASE)
        if m:
            max_num = max(max_num, int(m.group(1)))

    EmployeeIdSequence.objects.update_or_create(pk=1, defaults={"last_value": max_num})


def unseed_sequence(apps, schema_editor):
    apps.get_model("users", "EmployeeIdSequence").objects.filter(pk=1).delete()


class Migration(migrations.Migration):

    dependencies = [
        ('users', '0007_user_department_user_employee_id'),
    ]

    operations = [
        migrations.CreateModel(
            name='EmployeeIdSequence',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('last_value', models.PositiveIntegerField(default=0)),
            ],
            options={
                'db_table': 'employee_id_sequence',
            },
        ),
        migrations.RunPython(seed_sequence, unseed_sequence),
    ]
