from django.db.models import Q
from apps.calls.models import TonyCall

class TonyCallRepository:
    """
    Encapsulate DB access for TonyCall to keep view/service thin and testable.
    """

    @staticmethod
    def base_queryset():
        return TonyCall.objects.select_related("company").all()

    @staticmethod
    def get_by_id(pk):
        return TonyCall.objects.select_related("company").filter(pk=pk).first()

    @staticmethod
    def filtered_queryset(filters_qs=None, order_by=None):
        qs = TonyCallRepository.base_queryset()
        if filters_qs is not None:
            qs = qs.filter(filters_qs)
        if order_by:
            qs = qs.order_by(*order_by)
        return qs
