import logging
from rest_framework import viewsets
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters.rest_framework import DjangoFilterBackend

from apps.calls.filters import CallFilter
from apps.calls.pagination import CallLimitOffsetPagination
from apps.calls.repositories import CallsRepository
from apps.calls.serializers import CallDetailSerializer
from apps.permissions.permissions import CompanyPermission


logger = logging.getLogger(__name__)


class DealershipCallViewSet(viewsets.ModelViewSet):
    serializer_class = CallDetailSerializer
    pagination_class = CallLimitOffsetPagination
    filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
    filterset_class = CallFilter
    search_fields = [
        'from_number',
        'dealership__name',
    ]
    ordering_fields = [
        'created_at',
        'dealership__name',
        'from_number',
        'call_time_category',
        'sentiment',
        'transfer_status',
        'duration',
        'cost'
    ]
    ordering = ['-created_at']

    def get_permissions(self):
        return [CompanyPermission('dealership_group_view_calls')]

    def get_queryset(self):
        user = self.request.user

        return CallsRepository.get_dealership_calls(user)
