from rest_framework import viewsets, status
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated, AllowAny
from .models import Conversacion, Mensaje
from .serializers import ConversacionSerializer, MensajeSerializer
from django.db.models import Q

class ConversacionViewSet(viewsets.ModelViewSet):
    queryset = Conversacion.objects.all()
    serializer_class = ConversacionSerializer
    permission_classes = [AllowAny] 

    def get_queryset(self):
        # Filter by logged in user if necessary, or return all for admins/supervisors
        # For now, return all conversations ordered by last activity
        return Conversacion.objects.all().order_by('-ultima_actividad')

    @action(detail=False, methods=['get'])
    def by_phone(self, request):
        phone = request.query_params.get('phone')
        if not phone:
            return Response({"error": "Phone parameter required"}, status=status.HTTP_400_BAD_REQUEST)
        
        # Normalize phone if needed
        # Assuming database has normalized phones
        
        conversations = self.get_queryset().filter(cliente_phone__icontains=phone)
        serializer = self.get_serializer(conversations, many=True)
        return Response(serializer.data)

class MensajeViewSet(viewsets.ModelViewSet):
    queryset = Mensaje.objects.all()
    serializer_class = MensajeSerializer
    permission_classes = [AllowAny]

    def get_queryset(self):
        conversacion_id = self.request.query_params.get('conversacion_id')
        if conversacion_id:
            return Mensaje.objects.filter(conversacion_id=conversacion_id).order_by('timestamp')
        return Mensaje.objects.all()
