# Refonte : JobOffer (AVIS RECRUTEMENT, poste, deadline, image/pdf) + JobApplication (candidatures, numéro dépôt)

from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone


def default_deadline():
    from datetime import timedelta
    return django.utils.timezone.now().date() + timedelta(days=30)


class Migration(migrations.Migration):

    dependencies = [
        ("jobs", "0001_initial"),
    ]

    operations = [
        # Nouveaux champs sur JobOffer (on garde title, description, is_active, created_at)
        migrations.AddField(model_name="joboffer", name="post", field=models.CharField(max_length=255, verbose_name="Intitulé du poste", default=""), preserve_default=False),
        migrations.AddField(model_name="joboffer", name="deadline", field=models.DateField(default=default_deadline, verbose_name="Date limite de candidature"), preserve_default=False),
        migrations.AddField(model_name="joboffer", name="image", field=models.ImageField(blank=True, null=True, upload_to="jobs/offers/", verbose_name="Photo / image")),
        migrations.AddField(model_name="joboffer", name="document", field=models.FileField(blank=True, null=True, upload_to="jobs/offers/", verbose_name="Document PDF")),
        migrations.AddField(model_name="joboffer", name="updated_at", field=models.DateTimeField(auto_now=True)),
        migrations.AlterField(model_name="joboffer", name="title", field=models.CharField(max_length=300, verbose_name="Titre (ex: AVIS RECRUTEMENT - 2 stagiaires)")),
        migrations.AlterField(model_name="joboffer", name="description", field=models.TextField(blank=True, default="", verbose_name="Description")),
        # Suppression des anciens champs
        migrations.RemoveField(model_name="joboffer", name="company_name"),
        migrations.RemoveField(model_name="joboffer", name="contact_name"),
        migrations.RemoveField(model_name="joboffer", name="contact_email"),
        migrations.RemoveField(model_name="joboffer", name="contact_phone"),
        migrations.RemoveField(model_name="joboffer", name="location"),
        migrations.RemoveField(model_name="joboffer", name="contract_type"),
        migrations.RemoveField(model_name="joboffer", name="salary_min"),
        migrations.RemoveField(model_name="joboffer", name="salary_max"),
        # Modèle JobApplication
        migrations.CreateModel(
            name="JobApplication",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("first_name", models.CharField(max_length=150, verbose_name="Prénom")),
                ("last_name", models.CharField(max_length=150, verbose_name="Nom")),
                ("email", models.EmailField(max_length=254, verbose_name="Email")),
                ("phone", models.CharField(max_length=50, verbose_name="Contact / Téléphone")),
                ("address", models.CharField(max_length=255, verbose_name="Adresse")),
                ("region", models.CharField(max_length=150, verbose_name="Région")),
                ("cv_file", models.FileField(blank=True, null=True, upload_to="jobs/cvs/", verbose_name="CV (PDF)")),
                ("cv_url", models.URLField(blank=True, default="", verbose_name="Lien CV (URL)")),
                ("cover_letter_text", models.TextField(blank=True, default="", verbose_name="Lettre de motivation (texte)")),
                ("cover_letter_file", models.FileField(blank=True, null=True, upload_to="jobs/letters/", verbose_name="Lettre de motivation (PDF)")),
                ("deposit_number", models.CharField(editable=False, max_length=30, unique=True, verbose_name="Numéro de dépôt", default="SA-2025-00000")),
                ("status", models.CharField(choices=[("PENDING", "En attente"), ("VALIDATED", "Validée"), ("REJECTED", "Non retenu")], default="PENDING", max_length=20)),
                ("start_date", models.DateField(blank=True, null=True, verbose_name="Date de début (si validée)")),
                ("admin_notes", models.TextField(blank=True, default="", verbose_name="Notes admin")),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("job_offer", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="applications", to="jobs.joboffer")),
            ],
            options={"ordering": ["-created_at"], "verbose_name": "Candidature", "verbose_name_plural": "Candidatures"},
        ),
    ]
