from rest_framework.permissions import BasePermission

from apps.usuarios.permissions import is_admin_user


class CanViewExpediente(BasePermission):
    def has_permission(self, request, view):
        user = getattr(request, "user", None)
        return bool(user and user.is_authenticated)


class CanSendToERP(BasePermission):
    def has_permission(self, request, view):
        user = getattr(request, "user", None)
        return bool(user and user.is_authenticated and (is_admin_user(user) or user.has_perm("expediente.enviar_erp")))


class CanReopenBoleta(BasePermission):
    def has_permission(self, request, view):
        user = getattr(request, "user", None)
        return bool(
            user
            and user.is_authenticated
            and (is_admin_user(user) or user.has_perm("expediente.reabrir_boleta"))
        )


class CanResolveDisputa(BasePermission):
    def has_permission(self, request, view):
        user = getattr(request, "user", None)
        return bool(
            user
            and user.is_authenticated
            and (is_admin_user(user) or user.has_perm("expediente.resolver_disputa"))
        )
