from django import forms

from apps.organization.models import Company
from .models import ImportJob


class ImportUploadForm(forms.ModelForm):
    class Meta:
        model = ImportJob
        fields = ["company", "import_type", "source_file"]

    import_type = forms.ChoiceField(choices=[
        ("EMPLOYEE", "Employees"),
        ("SALARY", "Salary Opening"),
        ("LEAVE", "Leave Opening Balance"),
        ("LOAN", "Loan / Advance Opening"),
        ("ATTENDANCE", "Attendance"),
    ])

    def __init__(self, *args, company_ids=None, **kwargs):
        super().__init__(*args, **kwargs)
        if company_ids is not None:
            self.fields["company"].queryset = Company.objects.filter(pk__in=company_ids, is_active=True)

    def clean_source_file(self):
        f = self.cleaned_data["source_file"]
        if not f.name.lower().endswith(".csv"):
            raise forms.ValidationError("Only CSV files are accepted for controlled migration.")
        if f.size > 10 * 1024 * 1024:
            raise forms.ValidationError("CSV file exceeds 10 MB limit.")
        return f
