import logging

from rest_framework.generics import ListAPIView
from rest_framework.permissions import IsAuthenticated
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters.rest_framework import DjangoFilterBackend

from apps.support.models import SupportTicket
from apps.support.serializers import SupportTicketListSerializer
from utils.paginations import LimitOffsetPagination

logger = logging.getLogger(__name__)


class SupportTicketListView(ListAPIView):
    """
    List logged-in user's support tickets (minimal data).
    """
    permission_classes = [IsAuthenticated]
    serializer_class = SupportTicketListSerializer
    pagination_class = LimitOffsetPagination

    filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
    search_fields = ["description", "status"]
    ordering_fields = ["id", "created_at"]

    def get_queryset(self):
        return (
            SupportTicket.objects
            .filter(user=self.request.user)
            .only("id", "status", "created_at")
            .order_by("-created_at")
        )
