from django.db.models import Q, F
from apps.access.authorization import authorized_queryset
from apps.organization.models import Company, ServiceCenter
from .models import Notification


def companies(actor, permission):
    return authorized_queryset(user=actor, permission=permission, queryset=Company.objects.all())


def history(actor, permission="communications.view_notification"):
    centers = authorized_queryset(user=actor, permission=permission, queryset=ServiceCenter.objects.all())
    return Notification.objects.filter(
        Q(service_center__in=centers, company_id=F("service_center__company_id"))
        | Q(service_center=None, company__in=companies(actor, permission)))
