from rest_framework.permissions import IsAuthenticated
from account.permissions import (
    HasTabPermission,
    user_can_see_all_shop_data,
    get_user_data_filter,
)
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter
from shop_management.views.data.base import DataRootViewSet
from shop_management.views.data.pagination import CustomPagination
from shop_management.serializers.data.customer import Customer,CustomerSerializer

class CustomerViewSet(DataRootViewSet):
    serializer_class = CustomerSerializer
    permission_classes = [IsAuthenticated, HasTabPermission]
    required_tab = "customers"
    filter_backends = [DjangoFilterBackend, SearchFilter]
    filterset_fields = ['shop']
    search_fields = ['name', 'email', 'contact', 'address']
    pagination_class = CustomPagination

    def get_queryset(self):
        if user_can_see_all_shop_data(self.request.user, self.required_tab):
            return Customer.objects.all().order_by('-id')
        return Customer.objects.filter(get_user_data_filter(self.request.user, "shop")).distinct().order_by('-id')
