from django import forms
from django.contrib.auth import get_user_model

from .models import Conversation, Message


User = get_user_model()


class ConversationCreateForm(forms.ModelForm):
    first_message = forms.CharField(
        required=False,
        label='Premier message',
        widget=forms.Textarea(attrs={'rows': 3, 'placeholder': 'Ecrire un premier message (optionnel)...'}),
    )

    class Meta:
        model = Conversation
        fields = ['title', 'participants']
        widgets = {
            'title': forms.TextInput(attrs={'placeholder': 'Ex: Suivi dossier Dupont'}),
            'participants': forms.SelectMultiple(attrs={'size': 8}),
        }

    def __init__(self, *args, **kwargs):
        request_user = kwargs.pop('request_user', None)
        super().__init__(*args, **kwargs)

        queryset = User.objects.filter(is_active=True).order_by('last_name', 'first_name', 'username')
        if request_user and request_user.is_authenticated:
            queryset = queryset.exclude(pk=request_user.pk)
        self.fields['participants'].queryset = queryset
        self.fields['title'].widget.attrs.update({'class': 'form-control'})
        self.fields['participants'].widget.attrs.update({'class': 'form-select'})
        self.fields['first_message'].widget.attrs.update({'class': 'form-control'})


class MessageForm(forms.ModelForm):
    class Meta:
        model = Message
        fields = ['body']
        widgets = {
            'body': forms.Textarea(attrs={'rows': 2, 'placeholder': 'Ecrire votre message...'}),
        }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['body'].widget.attrs.update({'class': 'form-control'})