from rest_framework import viewsets, filters
from django_filters.rest_framework import DjangoFilterBackend
from .models import Kupac
from .serializers import KupacSerializer, KupacDetaljiSerializer, KupacListaSerializer

class KupacViewSet(viewsets.ModelViewSet):
    """
    API endpoint koji omogućuje pregled, pretragu i uređivanje kupaca.
    """
    # Optimizacija: prefetch_related smanjuje broj upita jer odmah vuče strojeve
    queryset = Kupac.objects.all().prefetch_related('strojevi')
    serializer_class = KupacSerializer
    
    # Dodajemo filter backende
    filter_backends = [
        DjangoFilterBackend, 
        filters.SearchFilter, 
        filters.OrderingFilter
    ]
    
    # 1. Točno filtriranje (npr. ?tip=pravno)
    filterset_fields = ['tip', 'aktivno', 'grad']
    
    # 2. Pretraga (npr. ?search=gradnja)
    # Pretražuje naziv ili OIB
    search_fields = ['naziv', 'oib']
    
    # 3. Sortiranje (npr. ?ordering=-datum_kreiranja)
    ordering_fields = ['naziv', 'datum_kreiranja']
    ordering = ['naziv'] # Defaultno sortiranje

    def get_serializer_class(self):
        if self.action == 'retrieve': # Ako se gleda pojedinačni kupac
            return KupacDetaljiSerializer # Onaj s ugniježđenim strojevima
        return KupacListaSerializer # Obični bez strojeva