from django_filters import rest_framework as filters
from .models import ContactUs
from django.db.models import Q


class ContactUsFilter(filters.FilterSet):
    search = filters.CharFilter(method="filter_by_search", label="Search")
    status = filters.CharFilter(field_name="status", lookup_expr="iexact")
    start_date = filters.DateFilter(field_name="created_at", lookup_expr="date__gte")
    end_date = filters.DateFilter(field_name="created_at", lookup_expr="date__lte")

    class Meta:
        model = ContactUs
        fields = ["search", "status", "start_date", "end_date"]

    def filter_by_search(self, queryset, name, value):
        queryset = queryset.filter(
            Q(first_name__icontains=value)
            | Q(last_name__icontains=value)
            | Q(email__icontains=value)
        )
        return queryset
