from rest_framework import viewsets
from core import models, serializers
from rest_framework.pagination import PageNumberPagination

class EdicoesComemorativasPagination(PageNumberPagination):
    page_size=6


class EdicoesComemorativasViewset(viewsets.ModelViewSet):
    queryset = models.EdicoesComemorativas.objects.all().order_by('id')
    serializer_class = serializers.EdicoesComemorativasSerializer
    pagination_class = EdicoesComemorativasPagination


class Banner1Viewset(viewsets.ModelViewSet):
    queryset = models.Banner1.objects.all().order_by('id')
    serializer_class = serializers.Banner1Serializer


class Banner2Viewset(viewsets.ModelViewSet):
    queryset = models.Banner2.objects.all().order_by('id')
    serializer_class = serializers.Banner2Serializer


class CapasDoePagination(PageNumberPagination):
    page_size=6


class CapasDoeViewset(viewsets.ModelViewSet):
    queryset = models.CapasDoe.objects.all().order_by('id')
    serializer_class = serializers.CapasDoeSerializer
    pagination_class = CapasDoePagination


class LinhaTempoIoaPagination(PageNumberPagination):
    page_size=15


class LinhatempoIoaViewset(viewsets.ModelViewSet):
    queryset = models.LinhatempoIoa.objects.all().order_by('id')
    serializer_class = serializers.LinhatempoIoaSerializer
    pagination_class=LinhaTempoIoaPagination


class LinhatempoPresidentesViewset(viewsets.ModelViewSet):
    queryset = models.LinhatempoPresidentes.objects.all()
    serializer_class = serializers.LinhatempoPresidentesSerializer
        
    def get_queryset(self):
        queryset = super().get_queryset()
        years = self.request.query_params.get('years')
        
        
        if years:
            start_year, end_year = map(int, years.split('-'))
            return queryset.filter(
                ano__range=(start_year, end_year)
            ).order_by('id')
        else:
            return queryset.filter(
                ano__gte=2000
            ).order_by('id')


class AtosRelevantesPagination(PageNumberPagination):
    page_size=6
    

class AtosRelevantesViewset(viewsets.ModelViewSet):
    queryset = models.AtosRelevantes.objects.all().order_by('id')
    serializer_class = serializers.AtosRelevantesSerializer
    pagination_class = AtosRelevantesPagination


class MaquinasdeImpressaoPagination(PageNumberPagination):
    page_size=5


class MaquinasdeImpressaoViewset(viewsets.ModelViewSet):
    #gambiarra
    queryset = models.MaquinasdeImpressao.objects.all().order_by('-id')[:7]
    # queryset = models.MaquinasdeImpressao.objects.all().order_by('id')
    serializer_class = serializers.MaquinasdeImpressaoSerializer
    pagination_class = MaquinasdeImpressaoPagination


class DepoimentosServidoresPagination(PageNumberPagination):
    page_size=8
    
        
class DepoimentosServidoresViewset(viewsets.ModelViewSet):
    queryset = models.DepoimentosServidores.objects.all().order_by('id')
    serializer_class = serializers.DepoimentosServidoresSerializer
    pagination_class = DepoimentosServidoresPagination


class FotosServidoresViewset(viewsets.ModelViewSet):
    queryset = models.FotosServidores.objects.all().order_by('id')
    serializer_class = serializers.FotosServidoresSerializer