"""
Central helpers for permission-driven UI (sidebar, widgets, routing hints).

These wrap existing checks so templates and views do not re-implement ad-hoc rules.
"""
from __future__ import annotations

from contract.access import can_access_contract_dashboard, has_explicit_contract_dashboard_permission
from contract.models import User


def show_contract_workspace_panel(user) -> bool:
    if not getattr(user, "is_authenticated", False):
        return False
    if getattr(user, "is_superuser", False):
        return True
    if getattr(user, "type", None) in (
        User.Types.ADMIN,
        User.Types.FARMER,
        User.Types.FIELD_OFFICER,
    ):
        return True
    return has_explicit_contract_dashboard_permission(user)


def show_field_officer_cockpit(user) -> bool:
    return getattr(user, "is_authenticated", False) and getattr(user, "type", None) == User.Types.FIELD_OFFICER


def show_farmer_market_summary(user) -> bool:
    return getattr(user, "is_authenticated", False) and getattr(user, "type", None) == User.Types.FARMER


def show_market_admin_cockpit(user) -> bool:
    from market.services import PERM_MARKET_ADMIN_DASHBOARD, is_market_admin, user_has_market_permission

    if not getattr(user, "is_authenticated", False):
        return False
    if getattr(user, "is_superuser", False):
        return True
    return is_market_admin(user) or user_has_market_permission(user, PERM_MARKET_ADMIN_DASHBOARD)


def internal_dashboard_eligible(user) -> bool:
    return can_access_contract_dashboard(user)
