from rest_framework import generics
from .models import *
from .serializers import *
from common.views import *
from django_filters.rest_framework import DjangoFilterBackend
# Create your views here.

# FAQ Category

class FAQCategoryListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = FAQCategory.objects.all()
    serializer_class = FAQCategorySerializer


class FAQCategoryListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = FAQCategory.objects.all()
    serializer_class = FAQCategorySerializer


class FAQCategoryDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = FAQCategory.objects.all()
    serializer_class = FAQCategorySerializer


class FAQCategoryLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = FAQCategoryLanguage.objects.all()
    serializer_class = FAQCategoryLanguageSerializer


class FAQCategoryLanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = FAQCategoryLanguage.objects.all()
    serializer_class = FAQCategoryLanguageSerializer


# FAQ


class FAQListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = FAQ.objects.all()
    serializer_class = FAQSerializer


class FAQListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = FAQ.objects.all()
    serializer_class = FAQSerializer


class FAQDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = FAQ.objects.all()
    serializer_class = FAQSerializer


class FAQLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = FAQLanguage.objects.all()
    serializer_class = FAQLanguageSerializer


class FAQLanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = FAQLanguage.objects.all()
    serializer_class = FAQLanguageSerializer

#Information Type

class InformationTypeListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["keyName"]
    queryset = InformationType.objects.all()
    serializer_class = InformationTypeSerializer

class InformationTypeListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = InformationType.objects.all()
    serializer_class = InformationTypeSerializer


class InformationTypeDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = InformationType.objects.all()
    serializer_class = InformationTypeSerializer

#Information

class InformationListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = Information.objects.all()
    serializer_class = InformationSerializer


class InformationDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    lookup_field = "id"
    queryset = Information.objects.all()
    serializer_class = InformationSerializer

class InformationLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["informationId", "languageId"]

    pagination_class = StandardSetPagination
    queryset = InformationLanguage.objects.all()
    serializer_class = InformationLanguageSerializer


class InformationLanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["informationId", "languageId"]

    lookup_field = "id"
    queryset = InformationLanguage.objects.all()
    serializer_class = InformationLanguageSerializer


#Section

class SectionListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["informationId"]

    pagination_class = StandardSetPagination
    queryset = Section.objects.all()
    serializer_class = SectionSerializer


class SectionDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["informationId"]

    lookup_field = "id"
    queryset = Section.objects.all()
    serializer_class = SectionSerializer

class SectionLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["sectionId", "languageId"]

    pagination_class = StandardSetPagination
    queryset = SectionLanguage.objects.all()
    serializer_class = SectionLanguageSerializer


class SectionLanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["sectionId", "languageId"]

    lookup_field = "id"
    queryset = SectionLanguage.objects.all()
    serializer_class = SectionLanguageSerializer



#Content

class ContentListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["sectionId"]

    pagination_class = StandardSetPagination
    queryset = Content.objects.all()
    serializer_class = ContentSerializer


class ContentDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["sectionId"]

    lookup_field = "id"
    queryset = Content.objects.all()
    serializer_class = ContentSerializer


class ContentLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["contentId", "languageId"]

    pagination_class = StandardSetPagination
    queryset = ContentLanguage.objects.all()
    serializer_class = ContentLanguageSerializer


class ContentLanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ["contentId", "languageId"]

    lookup_field = "id"
    queryset = ContentLanguage.objects.all()
    serializer_class = ContentLanguageSerializer
