from rest_framework import viewsets
from .models import Marca, Tipo, Modelo
from .serializers import MarcaSerializer, TipoSerializer, ModeloSerializer
from rest_framework import viewsets
from django_filters.rest_framework import DjangoFilterBackend
from .models import Modelo
from .serializers import ModeloSerializer


class MarcaViewSet(viewsets.ModelViewSet):
    queryset = Marca.objects.all().order_by('nombre')
    serializer_class = MarcaSerializer
    pagination_class = None

class TipoViewSet(viewsets.ModelViewSet):
    queryset = Tipo.objects.all().order_by('nombre')
    serializer_class = TipoSerializer
    pagination_class = None




class ModeloViewSet(viewsets.ModelViewSet):
    queryset = Modelo.objects.all().select_related('marca', 'tipo')
    serializer_class = ModeloSerializer
    pagination_class = None
    filter_backends = [DjangoFilterBackend]
    filterset_fields = {
        'marca__nombre': ['exact', 'icontains'],
        'tipo__nombre': ['exact', 'icontains'],
        'nombre': ['icontains'],
    }

    def get_queryset(self):
        queryset = super().get_queryset()
        
        # Filtro combinado para marca y tipo
        marca_nombre = self.request.query_params.get('marca')
        tipo_nombre = self.request.query_params.get('tipo')
        
        if marca_nombre:
            queryset = queryset.filter(marca__nombre__iexact=marca_nombre)
        if tipo_nombre:
            queryset = queryset.filter(tipo__nombre__iexact=tipo_nombre)
            
        return queryset.order_by('-fecha_creacion')