from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import Profile, Task

class ExecutiveCreateForm(UserCreationForm):
    first_name = forms.CharField(label='الاسم', max_length=150)
    last_name = forms.CharField(label='اللقب', max_length=150, required=False)
    company = forms.CharField(label='الشركة', max_length=160, required=False)
    title = forms.CharField(label='المنصب', max_length=160, required=False)

    class Meta:
        model = User
        fields = ('username','first_name','last_name','company','title','password1','password2')
        labels = {'username':'اسم المستخدم'}

    def save(self, commit=True):
        user = super().save(commit=False)
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data.get('last_name','')
        if commit:
            user.save()
            Profile.objects.create(user=user, role='executive', company=self.cleaned_data.get('company',''), title=self.cleaned_data.get('title',''))
        return user

class TaskForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ('title','description','assigned_to','priority','due_date')
        labels = {'title':'عنوان المهمة','description':'تفاصيل المهمة','assigned_to':'المدير المكلف','priority':'الأولوية','due_date':'تاريخ الاستحقاق'}
        widgets = {'description': forms.Textarea(attrs={'rows':4}), 'due_date': forms.DateInput(attrs={'type':'date'})}

    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.fields['assigned_to'].queryset = User.objects.filter(profile__role='executive', is_active=True).order_by('first_name','username')

class CompletionForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ('completion_note',)
        labels = {'completion_note':'ملاحظة الإكمال (اختياري)'}
        widgets = {'completion_note': forms.Textarea(attrs={'rows':3})}
