from django.db import migrations, models

from jobs.application_requirements import DEFAULT_CANDIDATE_FIELDS, DEFAULT_DOCUMENTS


def backfill_pezajob_requirements(apps, schema_editor):
    Job = apps.get_model('jobs', 'Job')
    for job in Job.objects.all():
        methods = list(job.application_methods or [])
        if not methods and job.application_method:
            methods = [job.application_method]
        if 'ats' not in methods:
            continue
        updates = []
        if not job.application_candidate_fields:
            job.application_candidate_fields = list(DEFAULT_CANDIDATE_FIELDS)
            updates.append('application_candidate_fields')
        if not job.application_documents:
            job.application_documents = list(DEFAULT_DOCUMENTS)
            updates.append('application_documents')
        if updates:
            job.save(update_fields=updates)


class Migration(migrations.Migration):

    dependencies = [
        ('jobs', '0019_job_application_methods'),
    ]

    operations = [
        migrations.AddField(
            model_name='job',
            name='application_candidate_fields',
            field=models.JSONField(blank=True, default=list, help_text='Candidate information required for PezaJob applications.'),
        ),
        migrations.AddField(
            model_name='job',
            name='application_documents',
            field=models.JSONField(blank=True, default=list, help_text='Documents required for PezaJob applications.'),
        ),
        migrations.AddField(
            model_name='job',
            name='screening_questions_enabled',
            field=models.BooleanField(default=False),
        ),
        migrations.AddField(
            model_name='job',
            name='screening_questions',
            field=models.JSONField(blank=True, default=list, help_text='Additional screening questions for PezaJob applicants.'),
        ),
        migrations.AddField(
            model_name='jobapplication',
            name='portfolio_file',
            field=models.FileField(blank=True, null=True, upload_to='applications/portfolio/'),
        ),
        migrations.AddField(
            model_name='jobapplication',
            name='qualification_file',
            field=models.FileField(blank=True, null=True, upload_to='applications/qualifications/'),
        ),
        migrations.AddField(
            model_name='jobapplication',
            name='other_document',
            field=models.FileField(blank=True, null=True, upload_to='applications/other/'),
        ),
        migrations.AddField(
            model_name='jobapplication',
            name='screening_answers',
            field=models.JSONField(blank=True, default=dict),
        ),
        migrations.RunPython(backfill_pezajob_requirements, migrations.RunPython.noop),
    ]
