from rest_framework import generics
from user_ads_package.models.userpackage import UserPackage
from user_ads_package.serializers.userpackage_serializer import UserPackageSerializer

from rest_framework.permissions import IsAuthenticated
# from rest_framework_simplejwt.authentication import JWTAuthentication
from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from drf_yasg.utils import swagger_auto_schema
from drf_yasg import openapi
from rest_framework.permissions import AllowAny

class UserPackageView(generics.ListCreateAPIView):
    serializer_class = UserPackageSerializer
    queryset = UserPackage.objects.all()
    permission_classes = [IsAuthenticated]

    
    
    def get(self, request, *args, **kwargs):
        return super().get(request, *args, **kwargs)
    
    def get_queryset(self):
        queryset = UserPackage.objects.all().select_related('user','package')
        if not self.request.user.is_staff:  
            queryset = queryset.filter(user=self.request.user)
        user_id = self.request.query_params.get("user")
        if user_id:
            queryset = queryset.filter(user_id=user_id)

        return queryset

class UserPackageDetailView(generics.RetrieveUpdateDestroyAPIView):
    serializer_class = UserPackageSerializer
    queryset = UserPackage.objects.all()
    lookup_field = 'pk'
    permission_classes = [IsAuthenticated]

    def get(self, request, *args, **kwargs):
        return super().get(request, *args, **kwargs)