from django import forms
from .models import ApparelRequest, TShirtType, TShirtSize

class VerificationForm(forms.Form):
    registration_code = forms.CharField(max_length=20)

class ApparelRequestForm(forms.ModelForm):
    registration_code = forms.CharField(
        max_length=20, 
        required=True,
        widget=forms.TextInput(attrs={
            'class': 'form-control',
            'placeholder': 'Enter your registration code'
        })
    )
    tshirt_type = forms.ModelChoiceField(
        queryset=TShirtType.objects.filter(is_active=True),
        empty_label="Select Shirt Type",
        widget=forms.Select(attrs={
            'class': 'form-select'
        })
    )
    tshirt_size = forms.ModelChoiceField(
        queryset=TShirtSize.objects.filter(is_active=True),
        empty_label="Select Shirt Size",
        widget=forms.Select(attrs={
            'class': 'form-select'
        })
    )
    additional_notes = forms.CharField(
        required=False,
        widget=forms.Textarea(attrs={
            'class': 'form-control',
            'placeholder': 'Any additional information or special requests',
            'rows': 3
        })
    )

    class Meta:
        model = ApparelRequest
        fields = ['registration_code', 'tshirt_type', 'tshirt_size', 'additional_notes']

    def clean(self):
        cleaned_data = super().clean()
        registration_code = cleaned_data.get('registration_code')

        # Validate that the registration code exists
        from attendance.models import RegisteredUser
        try:
            RegisteredUser.objects.get(registration_code=registration_code)
        except RegisteredUser.DoesNotExist:
            self.add_error('registration_code', 'Invalid registration code. Please check and try again.')

        return cleaned_data
