import django_filters as filters
from django_filters import CharFilter, DateFilter
from .models import *
from django.forms.widgets import NumberInput

class NotificationFilter(filters.FilterSet):
    start_date = DateFilter(input_formats=['%Y-%m-%d', '%d-%m-%Y', '%Y/%m/%d', '%d/%m/%Y'], field_name="created", lookup_expr='gte', label='Dates Above', widget=NumberInput(attrs={'type': 'date'}))
    start_date2 = DateFilter(input_formats=['%Y-%m-%d', '%d-%m-%Y', '%Y/%m/%d', '%d/%m/%Y'], field_name="created", lookup_expr='lte', label='Dates Below', widget=NumberInput(attrs={'type': 'date'}))
    created = DateFilter(label="Exact Date", input_formats=['%Y-%m-%d', '%d-%m-%Y', '%Y/%m/%d', '%d/%m/%Y'], lookup_expr='icontains', widget=NumberInput(attrs={'type': 'date'}))

    class Meta:
        model = Notification
        fields = ['term', 'student', 'category', 'method', 'account']

class NotificationFilter2(filters.FilterSet):
    start_date = DateFilter(input_formats=['%Y-%m-%d', '%d-%m-%Y', '%Y/%m/%d', '%d/%m/%Y'], field_name="created", lookup_expr='gte', label='Dates Above', widget=NumberInput(attrs={'type': 'date'}))
    start_date2 = DateFilter(input_formats=['%Y-%m-%d', '%d-%m-%Y', '%Y/%m/%d', '%d/%m/%Y'], field_name="created", lookup_expr='lte', label='Dates Below', widget=NumberInput(attrs={'type': 'date'}))
    created = DateFilter(label="Exact Date", input_formats=['%Y-%m-%d', '%d-%m-%Y', '%Y/%m/%d', '%d/%m/%Y'], lookup_expr='icontains', widget=NumberInput(attrs={'type': 'date'}))
    receipt_id = CharFilter(field_name='receipt_id', lookup_expr='icontains', label="Receipt ID")

    class Meta:
        model = Notification
        fields = ['term', 'student', 'category', 'method', 'account']

class NotificationFilter3(filters.FilterSet):
    start_date = DateFilter(input_formats=['%Y-%m-%d', '%d-%m-%Y', '%Y/%m/%d', '%d/%m/%Y'], field_name="created", lookup_expr='gte', label='Dates Above', widget=NumberInput(attrs={'type': 'date'}))
    start_date2 = DateFilter(input_formats=['%Y-%m-%d', '%d-%m-%Y', '%Y/%m/%d', '%d/%m/%Y'], field_name="created", lookup_expr='lte', label='Dates Below', widget=NumberInput(attrs={'type': 'date'}))
    created = DateFilter(label="Exact Date", input_formats=['%Y-%m-%d', '%d-%m-%Y', '%Y/%m/%d', '%d/%m/%Y'], lookup_expr='icontains', widget=NumberInput(attrs={'type': 'date'}))

    class Meta:
        model = Notification
        fields = ['term', 'category']

class NotificationFilter4(filters.FilterSet):
    class Meta:
        model = Notification
        fields = ['term', 'student', 'category']

class CategoryFilter(filters.FilterSet):
    class Meta:
        model = Category
        fields = ['category']

class AccountFilter(filters.FilterSet):
    class Meta:
        model = Account
        fields = ['number']
