"""revenue/filters.py"""

import django_filters
from django import forms

from horilla.filters import HorillaFilterSet

from .models import RevenueHead, RevenueItem, RevenueRecord, RevenueSubHead


class RevenueHeadFilter(HorillaFilterSet):
    name = django_filters.CharFilter(lookup_expr="icontains",
                                     widget=forms.TextInput(attrs={"class": "oh-input w-100"}))

    class Meta:
        model = RevenueHead
        fields = ["name", "is_active"]


class RevenueSubHeadFilter(HorillaFilterSet):
    name = django_filters.CharFilter(lookup_expr="icontains",
                                     widget=forms.TextInput(attrs={"class": "oh-input w-100"}))
    head = django_filters.ModelChoiceFilter(
        queryset=RevenueHead.objects.filter(is_active=True),
        widget=forms.Select(attrs={"class": "oh-select oh-select-2"}),
    )

    class Meta:
        model = RevenueSubHead
        fields = ["name", "head", "is_active"]


class RevenueItemFilter(HorillaFilterSet):
    name = django_filters.CharFilter(lookup_expr="icontains",
                                     widget=forms.TextInput(attrs={"class": "oh-input w-100"}))
    sub_head = django_filters.ModelChoiceFilter(
        queryset=RevenueSubHead.objects.filter(is_active=True),
        widget=forms.Select(attrs={"class": "oh-select oh-select-2"}),
    )

    class Meta:
        model = RevenueItem
        fields = ["name", "sub_head", "is_active"]


class RevenueRecordFilter(HorillaFilterSet):
    item = django_filters.ModelChoiceFilter(
        queryset=RevenueItem.objects.filter(is_active=True),
        widget=forms.Select(attrs={"class": "oh-select oh-select-2"}),
    )
    transaction_date = django_filters.DateFromToRangeFilter(
        widget=django_filters.widgets.DateRangeWidget(
            attrs={"class": "oh-input w-100", "type": "date"}
        ),
    )

    class Meta:
        model = RevenueRecord
        fields = ["item", "department", "transaction_date"]
