from rest_framework.generics import ListAPIView
from rest_framework import permissions, status
from rest_framework.response import Response
from rest_framework.views import APIView
from . import serializers
from . import models


class SiteSettingDetails(APIView):
    """
        page should be one of these words:
        index : for main page
        about : for about page
        brand : for brands page
        rules : for rules and privacy page
        terms : for sending, return and payment procedures
        sending : get sending procedure description
        return : get return procedure description
        payment : get payment procedure description
        contract : for contract page
        help : for help page
        seller_help : for seller panel help page
        questions : for common questions page
        signup : for signup description
        inquiry : for inquiry time
    """
    permission_classes = [permissions.AllowAny]

    @staticmethod
    def get(request, page):
        obj = models.SiteSetting.get_solo()
        fields = ()
        if page == 'index':
            fields = ('whatsapp', 'whatsapp2', 'instagram', 'phone', 'phone2', 'phone3', 'welcome', 'banner',
                      'banner_enable')
        elif page == 'about':
            fields = ('whatsapp', 'whatsapp2', 'instagram', 'phone', 'phone2', 'phone3', 'address', 'about')
        elif page == 'brand':
            fields = ('whatsapp', 'whatsapp2', 'instagram', 'phone', 'phone2', 'phone3')
        elif page == 'rules':
            fields = ('whatsapp', 'whatsapp2', 'instagram', 'phone', 'phone2', 'phone3', 'rules')
        elif page == 'terms':
            fields = ('whatsapp', 'whatsapp2', 'instagram', 'phone', 'phone2', 'phone3',
                      'sending_procedure', 'return_procedure', 'payment_procedure')
        elif page == 'sending':
            fields = ('whatsapp', 'whatsapp2', 'instagram', 'phone', 'phone2', 'phone3', 'sending_procedure')
        elif page == 'return':
            fields = ('whatsapp', 'whatsapp2', 'instagram', 'phone', 'phone2', 'phone3', 'return_procedure')
        elif page == 'payment':
            fields = ('whatsapp', 'whatsapp2', 'instagram', 'phone', 'phone2', 'phone3', 'payment_procedure')
        elif page == 'contract':
            fields = ('contract',)
        elif page == 'help':
            fields = ('whatsapp', 'whatsapp2', 'instagram', 'phone', 'phone2', 'phone3', 'help')
        elif page == 'seller_help':
            fields = ('whatsapp', 'whatsapp2', 'instagram', 'phone', 'phone2', 'phone3', 'seller_help')
        elif page == 'questions':
            fields = ('whatsapp', 'whatsapp2', 'instagram', 'phone', 'phone2', 'phone3', 'questions')
        elif page == 'signup':
            fields = ('whatsapp', 'whatsapp2', 'instagram', 'phone', 'phone2', 'phone3', 'signup')
        elif page == 'inquiry':
            fields = ('inquiry_time',)
        serializer = serializers.SiteSettingSerializer(obj, fields=fields)
        return Response(serializer.data)


class VideosList(ListAPIView):
    permission_classes = [permissions.AllowAny]
    serializer_class = serializers.VideosListSerializer
    queryset = models.Videos.objects.all()


class SlidesList(ListAPIView):
    permission_classes = [permissions.AllowAny]
    serializer_class = serializers.SlidesListSerializer
    queryset = models.IndexSlide.objects.all()


class SeoSettingDetails(APIView):
    """
        page should be one of these words:
        index : for main page
        brands : for brands list page
        car_articles : for car articles list page
        product_articles : for product articles list page
        other_articles : for other articles list page
        news : for news list page
    """
    permission_classes = [permissions.AllowAny]

    @staticmethod
    def get(request, page):
        obj = models.SeoSetting.get_solo()
        fields = ()
        if page == 'index':
            fields = ('main_page_h1', 'main_page_h2', 'main_page_meta_title', 'main_page_meta_description')
        elif page == 'brands':
            fields = ('brands_description', 'brands_page_meta_title', 'brands_page_meta_description')
        elif page == 'car_articles':
            fields = ('car_articles_page_meta_title', 'car_articles_page_meta_description')
        elif page == 'product_articles':
            fields = ('product_articles_page_meta_title', 'product_articles_page_meta_description')
        elif page == 'other_articles':
            fields = ('other_articles_page_meta_title', 'other_articles_page_meta_description')
        elif page == 'news':
            fields = ('news_page_meta_title', 'news_page_meta_description')
        serializer = serializers.SeoSettingSerializer(obj, fields=fields)
        return Response(serializer.data)
