import django_filters
from django.db.models import Q

from apps.stores.models import Store


class StoreFilter(django_filters.FilterSet):
    category = django_filters.NumberFilter(field_name="categories__id")
    search = django_filters.CharFilter(method="filter_search")
    is_top = django_filters.BooleanFilter()
    is_recommended = django_filters.BooleanFilter()
    has_deals = django_filters.BooleanFilter()
    supports_installments = django_filters.BooleanFilter()

    class Meta:
        model = Store
        fields = ["category", "is_top", "is_recommended", "has_deals", "supports_installments"]

    def filter_search(self, queryset, name, value):
        return queryset.filter(Q(name_en__icontains=value) | Q(name_ar__icontains=value))
