"""
Forms for support tickets.
"""
from django import forms

from apps.support.models import CONTACT_TOPIC_CHOICES, ContactInquiry, SupportTicket, TicketMessage
from utils.choices import (
    TICKET_CATEGORY_CHOICES, TICKET_PRIORITY_CHOICES, TICKET_STATUS_CHOICES,
)


class ContactInquiryForm(forms.ModelForm):
    class Meta:
        model = ContactInquiry
        fields = ('name', 'email', 'phone', 'topic', 'subject', 'message')
        widgets = {
            'name': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Your full name'}),
            'email': forms.EmailInput(attrs={'class': 'form-control', 'placeholder': 'you@example.com'}),
            'phone': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Phone (optional)'}),
            'topic': forms.Select(attrs={'class': 'form-select'}),
            'subject': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'How can we help?'}),
            'message': forms.Textarea(attrs={
                'class': 'form-control',
                'rows': 5,
                'placeholder': 'Share details so we can assist you quickly…',
            }),
        }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['topic'].choices = CONTACT_TOPIC_CHOICES


class SupportTicketCreateForm(forms.ModelForm):
    message = forms.CharField(
        label='Describe your issue',
        widget=forms.Textarea(attrs={
            'class': 'form-control',
            'rows': 5,
            'placeholder': 'Tell us what you need help with…',
        }),
    )

    class Meta:
        model = SupportTicket
        fields = ('subject', 'category', 'priority')
        widgets = {
            'subject': forms.TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'Short summary of the issue',
            }),
            'category': forms.Select(attrs={'class': 'form-select'}),
            'priority': forms.Select(attrs={'class': 'form-select'}),
        }


class TicketReplyForm(forms.ModelForm):
    class Meta:
        model = TicketMessage
        fields = ('body',)
        widgets = {
            'body': forms.Textarea(attrs={
                'class': 'form-control',
                'rows': 4,
                'placeholder': 'Write your reply…',
            }),
        }
        labels = {'body': 'Reply'}


class TicketStatusForm(forms.ModelForm):
    class Meta:
        model = SupportTicket
        fields = ('status', 'priority')
        widgets = {
            'status': forms.Select(attrs={'class': 'form-select'}),
            'priority': forms.Select(attrs={'class': 'form-select'}),
        }
