"""
Commande : crée une offre d'emploi de test pour Senegal Academy.
Usage : python manage.py seed_test_job_offer
"""
from django.core.management.base import BaseCommand
from django.utils import timezone
from django.core.files.base import ContentFile
from datetime import timedelta

from jobs.models import JobOffer


# PDF minimal valide (en-tête + fin)
MINIMAL_PDF = b"""%PDF-1.4
1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj
2 0 obj << /Type /Pages /Kids [3 0 R] /Count 1 >> endobj
3 0 obj << /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] >> endobj
xref
0 4
0000000000 65535 f 
0000000009 00000 n 
0000000052 00000 n 
0000000101 00000 n 
trailer << /Size 4 /Root 1 0 R >>
startxref
178
%%EOF
"""


class Command(BaseCommand):
    help = "Crée une offre d'emploi de test (titre, poste, date limite, document PDF minimal)."

    def add_arguments(self, parser):
        parser.add_argument(
            "--no-document",
            action="store_true",
            help="Créer l'offre sans document (image/document non requis en base).",
        )

    def handle(self, *args, **options):
        deadline = timezone.now().date() + timedelta(days=30)
        offer, created = JobOffer.objects.get_or_create(
            title="AVIS RECRUTEMENT - 2 stagiaires",
            defaults={
                "post": "Stagiaire Communication & Marketing Digital",
                "description": (
                    "Senegal Academy recrute 2 stagiaires pour une durée de 6 mois.\n\n"
                    "Profil recherché : étudiant ou jeune diplômé en communication, marketing ou équivalent.\n"
                    "Missions : support communication, gestion des réseaux sociaux, rédaction de contenus.\n\n"
                    "Envoyez votre CV et lettre de motivation avant la date limite."
                ),
                "deadline": deadline,
                "is_active": True,
            },
        )
        if not created:
            self.stdout.write(self.style.WARNING(f"L'offre de test existe déjà (id={offer.id})."))

        if not options["no_document"] and not offer.document:
            offer.document.save("avis_recrutement_test.pdf", ContentFile(MINIMAL_PDF), save=True)
            self.stdout.write(self.style.SUCCESS("Document PDF de test attaché à l'offre."))

        self.stdout.write(
            self.style.SUCCESS(
                f"Offre de test créée : id={offer.id}, titre=\"{offer.title}\", "
                f"date limite={offer.deadline}. Vous pouvez la voir sur /jobs et dans l'admin."
            )
        )
