# Generated manually to sync DB schema with current CompanyUser model.

import secrets

from django.db import migrations, models


def populate_employment_numbers(apps, schema_editor):
    CompanyUser = apps.get_model('users', 'CompanyUser')

    existing = set(
        CompanyUser.objects.exclude(employment_number__isnull=True)
        .exclude(employment_number='')
        .values_list('employment_number', flat=True)
    )

    for record in CompanyUser.objects.filter(models.Q(employment_number__isnull=True) | models.Q(employment_number='')):
        while True:
            candidate = f"EMP-{secrets.token_hex(4).upper()}"
            if candidate not in existing:
                existing.add(candidate)
                record.employment_number = candidate
                record.save(update_fields=['employment_number'])
                break


class Migration(migrations.Migration):

    dependencies = [
        ('users', '0003_companyuser_status_alter_companyuser_phone_number'),
    ]

    operations = [
        migrations.AddField(
            model_name='companyuser',
            name='employment_number',
            field=models.CharField(blank=True, max_length=35, null=True),
        ),
        migrations.AddField(
            model_name='companyuser',
            name='start_date',
            field=models.DateField(blank=True, null=True),
        ),
        migrations.RunPython(populate_employment_numbers, migrations.RunPython.noop),
        migrations.AlterField(
            model_name='companyuser',
            name='employment_number',
            field=models.CharField(max_length=35, unique=True),
        ),
    ]
