"""
Forms for the enrollments app.
"""
from django import forms
from apps.enrollments.models import Enrollment


class PaymentProofForm(forms.ModelForm):
    """Form for uploading payment proof after enrollment request."""
    class Meta:
        model = Enrollment
        fields = ('payment_proof', 'payment_note')
        widgets = {
            'payment_proof': forms.FileInput(attrs={'class': 'form-control'}),
            'payment_note': forms.Textarea(attrs={
                'class': 'form-control',
                'rows': 3,
                'placeholder': 'Optional: Add a note about your payment (e.g. transaction ID)'
            }),
        }


class EnrollmentReviewForm(forms.ModelForm):
    """Form for admin to approve or reject an enrollment."""
    class Meta:
        model = Enrollment
        fields = ('status', 'rejection_reason')
        widgets = {
            'status': forms.Select(attrs={'class': 'form-select'}),
            'rejection_reason': forms.Textarea(attrs={
                'class': 'form-control',
                'rows': 3,
                'placeholder': 'Reason for rejection (required if rejecting)'
            }),
        }

    def clean(self):
        cleaned_data = super().clean()
        status = cleaned_data.get('status')
        rejection_reason = cleaned_data.get('rejection_reason')
        if status == 'rejected' and not rejection_reason:
            raise forms.ValidationError("Please provide a rejection reason.")
        return cleaned_data
