from rest_framework import generics
from .models import *
from .serializers import *
from django_filters.rest_framework import DjangoFilterBackend
from common.views import *

# Create your views here.

# Subscription Order

# class SubscriptionOrderListMobileView(generics.ListCreateAPIView):
#     authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
#     filter_backends = [DjangoFilterBackend]
#     filterset_fields = ["financialProfileId"]
#     pagination_class = StandardSetPagination
#     queryset = SubscriptionOrder.objects.all()
#     serializer_class = SubscriptionOrderSerializer


# class SubscriptionOrderDetailMobileView(generics.RetrieveUpdateAPIView):
#     authentication_classes = [APIKeyAuthentication, MobileTokenAuthentication]
#     filter_backends = [DjangoFilterBackend]
#     lookup_field = "id"
#     queryset = SubscriptionOrder.objects.all()
#     serializer_class = SubscriptionOrderSerializer


class SubscriptionOrderListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["financialProfileId", "subscriptionPlanId"]
    pagination_class = StandardSetPagination
    queryset = SubscriptionOrder.objects.all()
    serializer_class = SubscriptionOrderSerializer


class SubscriptionOrderDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = SubscriptionOrder.objects.all()
    serializer_class = SubscriptionOrderSerializer

class SubscriptionTransactionListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = SubscriptionTransaction.objects.all()
    serializer_class = SubscriptionTransactionSerializer

class SubscriptionTransactionDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = SubscriptionTransaction.objects.all()
    serializer_class = SubscriptionTransactionSerializer

class SubscriptionOrderTransactionMobile(generics.GenericAPIView):
    authentication_classes = [APIKeyAuthentication,MobileTokenAuthentication]
    serializer_class = SubscriptionOrderTransactionSerializer
    queryset = []

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        result = serializer.save()
        return result