from rest_framework import viewsets, status
from rest_framework.decorators import action
from rest_framework.response import Response
from django.utils import timezone
from .models import Producto
from .serializers import ProductoSerializer

class ProductoViewSet(viewsets.ModelViewSet):
    queryset = Producto.objects.filter(deleted_at__isnull=True)
    serializer_class = ProductoSerializer

    def perform_destroy(self, instance):
        instance.deleted_at = timezone.now()
        instance.save()
    
    @action(detail=False, methods=['get'])
    def search(self, request):
        query = request.query_params.get('q', '')
        if query:
            from django.db.models import Q
            productos = self.queryset.filter(
                Q(nombre__icontains=query) | Q(codigo__icontains=query)
            )
        else:
            # Si no hay query, devolvemos todos (limitados) o vacio? 
            # Mejor todos para que el select pueda mostrar opciones iniciales
            productos = self.queryset.all()[:20]
        
        serializer = self.get_serializer(productos, many=True)
        return Response(serializer.data)
