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

# Device OS Type


class DeviceOSTypeListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    queryset = DeviceOSType.objects.all()
    serializer_class = DeviceOSTypeSerializer


class DeviceOSTypeListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = DeviceOSType.objects.all()
    serializer_class = DeviceOSTypeSerializer


class DeviceOSTypeDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    lookup_field = "id"
    queryset = DeviceOSType.objects.all()
    serializer_class = DeviceOSTypeSerializer


# Language Views


class LanguageListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    queryset = Language.objects.filter(isEnabled=True)
    serializer_class = LanguageSerializer


class LanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = Language.objects.all()
    serializer_class = LanguageSerializer


class LanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = Language.objects.all()
    lookup_field = "id"
    serializer_class = LanguageSerializer


# Child Type Views


class ChildTypeListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    queryset = ChildType.objects.all()
    serializer_class = ChildTypeSerializer


# Gender Views


class GenderListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    queryset = Gender.objects.all()
    serializer_class = GenderSerializer


# Symptom Type Views


class SymptomTypeListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    queryset = SymptomType.objects.all()
    serializer_class = SymptomTypeSerializer


class SymptomTypeListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = SymptomType.objects.all()
    serializer_class = SymptomTypeSerializer


class SymptomTypeDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = SymptomType.objects.all()
    lookup_field = "id"
    serializer_class = SymptomTypeSerializer


class SymptomTypeLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = SymptomTypeLanguage.objects.all()
    serializer_class = SymptomTypeLanguageSerializer


class SymptomTypeLanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = SymptomTypeLanguage.objects.all()
    lookup_field = "id"
    serializer_class = SymptomTypeLanguageSerializer


# Kick Tracker Status Views


class KickTrackerStatusListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    queryset = KickTrackerStatus.objects.all()
    serializer_class = KickTrackerStatusSerializer


# BMI Case Type


class BMICaseTypeListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    queryset = BMICaseType.objects.all()
    serializer_class = BMICaseTypeSerializer


class BMICaseTypeListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = BMICaseType.objects.all()
    serializer_class = BMICaseTypeSerializer


class BMICaseTypeDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = BMICaseType.objects.all()
    lookup_field = "id"
    serializer_class = BMICaseTypeSerializer


class BMICaseTypeLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = BMICaseTypeLanguage.objects.all()
    serializer_class = BMICaseTypeLanguageSerializer


class BMICaseTypeLanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = BMICaseTypeLanguage.objects.all()
    lookup_field = "id"
    serializer_class = BMICaseTypeLanguageSerializer


# BMI Case Type


class BMICaseListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = BMICase.objects.all()
    serializer_class = BMICaseSerializer


class BMICaseDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = BMICase.objects.all()
    lookup_field = "id"
    serializer_class = BMICaseSerializer


class BMICaseLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = BMICaseLanguage.objects.all()
    serializer_class = BMICaseLanguageSerializer


class BMICaseLanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = BMICaseLanguage.objects.all()
    lookup_field = "id"
    serializer_class = BMICaseLanguageSerializer


# BMI Case Weight Gain


class BMICaseWeightGainListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = BMICaseWeightGain.objects.all()
    serializer_class = BMICaseWeightGainSerializer


class BMICaseWeightGainDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = BMICaseWeightGain.objects.all()
    lookup_field = "id"
    serializer_class = BMICaseWeightGainSerializer


# Calculation Method


class CalculationMethodListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    queryset = CalculationMethod.objects.all()
    serializer_class = CalculationMethodSerializer


class CalculationMethodListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = CalculationMethod.objects.all()
    serializer_class = CalculationMethodSerializer


class CalculationMethodDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    lookup_field = "id"
    queryset = CalculationMethod.objects.all()
    serializer_class = CalculationMethodSerializer


# Calculation Method Language


class CalculationMethodLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    queryset = CalculationMethodLanguage.objects.all()
    serializer_class = CalculationMethodLanguageSerializer


class CalculationMethodLanguageDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    lookup_field = "id"
    queryset = CalculationMethodLanguage.objects.all()
    serializer_class = CalculationMethodLanguageSerializer


# Pregnancy Week


class PregnancyWeekListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyWeek.objects.all()
    serializer_class = PregnancyWeekBasicSerializer


class PregnancyWeekDetailMobileView(generics.RetrieveAPIView):
    authentication_classes = [APIKeyAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyWeek.objects.all()
    serializer_class = PregnancyWeekDetailSerializer


class PregnancyWeekListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyWeek.objects.all()
    serializer_class = PregnancyWeekDetailSerializer


class PregnancyWeekDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyWeek.objects.all()
    serializer_class = PregnancyWeekDetailSerializer


class PregnancyWeekLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyWeekLanguage.objects.all()
    serializer_class = PregnancyWeekLanguageSerializer


class PregnancyWeekLanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyWeekLanguage.objects.all()
    serializer_class = PregnancyWeekLanguageSerializer


# Pregnancy Symptom


class PregnancySymptomListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancySymptom.objects.all()
    serializer_class = PregnancySymptomSerializer


class PregnancySymptomDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancySymptom.objects.all()
    serializer_class = PregnancySymptomSerializer


class PregnancySymptomLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancySymptomLanguage.objects.all()
    serializer_class = PregnancySymptomLanguageSerializer


class PregnancySymptomLanguageDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancySymptomLanguage.objects.all()
    serializer_class = PregnancySymptomLanguageSerializer


# Pregnancy CheckList


class PregnancyCheckListListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyCheckList.objects.all()
    serializer_class = PregnancyCheckListSerializer


class PregnancyCheckListDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyCheckList.objects.all()
    serializer_class = PregnancyCheckListSerializer


class PregnancyCheckListLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyCheckListLanguage.objects.all()
    serializer_class = PregnancyCheckListLanguageSerializer


class PregnancyCheckListLanguageDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyCheckListLanguage.objects.all()
    serializer_class = PregnancyCheckListLanguageSerializer


# Pregnancy Nutrition


class PregnancyNutritionListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyNutrition.objects.all()
    serializer_class = PregnancyNutritionSerializer


class PregnancyNutritionDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyNutrition.objects.all()
    serializer_class = PregnancyNutritionSerializer


class PregnancyNutritionLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyNutritionLanguage.objects.all()
    serializer_class = PregnancyNutritionLanguageSerializer


class PregnancyNutritionLanguageDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyNutritionLanguage.objects.all()
    serializer_class = PregnancyNutritionLanguageSerializer


# Pregnancy Baby Size


class PregnancyBabySizeListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyBabySize.objects.all()
    serializer_class = PregnancyBabySizeDetailSerializer


class PregnancyBabySizeDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyBabySize.objects.all()
    serializer_class = PregnancyBabySizeDetailSerializer


class PregnancyBabySizeLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = PregnancyBabySizeLanguage.objects.all()
    serializer_class = PregnancyBabySizeLanguageSerializer


class PregnancyBabySizeLanguageDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = PregnancyBabySizeLanguage.objects.all()
    serializer_class = PregnancyBabySizeLanguageSerializer


# Monthly Tips


class MonthlyTipListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = MonthlyTip.objects.all()
    serializer_class = MonthlyTipSerializer


class MonthlyTipDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = MonthlyTip.objects.all()
    serializer_class = MonthlyTipSerializer


class MonthlyTipLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = MonthlyTipLanguage.objects.all()
    serializer_class = MonthlyTipLanguageSerializer


class MonthlyTipLanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = MonthlyTipLanguage.objects.all()
    serializer_class = MonthlyTipLanguageSerializer


# Tip


class TipListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = Tip.objects.all()
    serializer_class = TipSerializer


class TipDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = Tip.objects.all()
    serializer_class = TipSerializer


class TipLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = TipLanguage.objects.all()
    serializer_class = TipLanguageSerializer


class TipLanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = TipLanguage.objects.all()
    serializer_class = TipLanguageSerializer


# 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


# Checkup Status


class CheckUpStatusListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = CheckUpStatus.objects.all()
    serializer_class = CheckUpStatusSerializer


class CheckUpStatusListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = CheckUpStatus.objects.all()
    serializer_class = CheckUpStatusSerializer


class CheckUpStatusDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = CheckUpStatus.objects.all()
    serializer_class = CheckUpStatusSerializer


class CheckUpStatusLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = CheckUpStatusLanguage.objects.all()
    serializer_class = CheckUpStatusLanguageSerializer


class CheckUpStatusLanguageDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = CheckUpStatusLanguage.objects.all()
    serializer_class = CheckUpStatusLanguageSerializer


# Subscription Plan


class SubscriptionPlanListMobileView(generics.ListAPIView):
    authentication_classes = [APIKeyAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = SubscriptionPlan.objects.all()
    serializer_class = SubscriptionPlanBasicSerializer


class SubscriptionPlanListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = SubscriptionPlan.objects.all()
    serializer_class = SubscriptionPlanSerializer


class SubscriptionPlanDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = SubscriptionPlan.objects.all()
    serializer_class = SubscriptionPlanSerializer


class SubscriptionPlanLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = SubscriptionPlanLanguage.objects.all()
    serializer_class = SubscriptionPlanLanguageSerializer


class SubscriptionPlanLanguageDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = SubscriptionPlanLanguage.objects.all()
    serializer_class = SubscriptionPlanLanguageSerializer


# Subscription Plan Detail


class SubscriptionPlanDetailListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = SubscriptionPlanDetail.objects.all()
    serializer_class = SubscriptionPlanDetailSerializer


class SubscriptionPlanDetailDetailDashboardView(generics.RetrieveUpdateDestroyAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = SubscriptionPlanDetail.objects.all()
    serializer_class = SubscriptionPlanDetailSerializer


class SubscriptionPlanDetailLanguageListDashboardView(generics.ListCreateAPIView):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    queryset = SubscriptionPlanDetailLanguage.objects.all()
    serializer_class = SubscriptionPlanDetailLanguageSerializer


class SubscriptionPlanDetailLanguageDetailDashboardView(
    generics.RetrieveUpdateDestroyAPIView
):
    authentication_classes = [APIKeyAuthentication, DashboardTokenAuthentication]
    filter_backends = [DjangoFilterBackend]
    lookup_field = "id"
    queryset = SubscriptionPlanDetailLanguage.objects.all()
    serializer_class = SubscriptionPlanDetailLanguageSerializer
