import django_filters
from django import forms
from django.contrib.auth.models import User
from .models import PerformanceReview
#-----------------------------------------------------------------------
class ReviewFilter(django_filters.FilterSet):

    year = django_filters.ChoiceFilter(
        field_name='review_period', 
        lookup_expr='icontains', 
        label='', 
        widget=forms.Select(attrs={
            'id': 'year-filter-select', 
            'placeholder': '請選擇年份...',
            'class': 'form-select',
        })
    )

    department = django_filters.ChoiceFilter(
        field_name='employee__hremployee__dept',
        label='',
        widget=forms.Select(attrs={'id': 'dept-filter-select','class': 'form-select', 'placeholder': '請選擇部門...'})
    )

    employee_id = django_filters.ChoiceFilter(
        field_name='employee__hremployee__emp_id',
        label='',
        widget=forms.Select(attrs={'id': 'empid-filter-select','class': 'form-select', 'placeholder': '請選擇工號...'})
    )

    employee = django_filters.ModelChoiceFilter(
        queryset=User.objects.none(),
        label='',
        widget=forms.Select(attrs={
            'id': 'employee-filter-select', 
            'class': 'form-select',
            'placeholder': '請輸入或選擇人員...'
        })
    )

    PERIOD_CHOICES = (
        ('', '所有階段'),
        ('期初目標訂定', '期初目標訂定'),
        ('期中檢討', '期中檢討'),
        ('期末評核', '期末評核'),
    )
    
    period_type = django_filters.ChoiceFilter(
        field_name='review_period',
        lookup_expr='icontains',
        label='',
        choices=PERIOD_CHOICES,
        widget=forms.Select(attrs={
            'id': 'period-filter-select', 
            'class': 'form-select',
            'placeholder': '請輸入或選擇階段...' 
        })
    )
    
    class Meta:
        model = PerformanceReview
        fields = ['year', 'department', 'employee_id', 'employee', 'period_type']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        all_periods = self.queryset.values_list('review_period', flat=True).distinct()
        years = sorted(list(set([p.split()[0] for p in all_periods if p and p.split()])))
        year_choices = [('', '所有年份')] + [(year, year) for year in years]
        self.filters['year'].field.choices = year_choices