# context_processors.py
from .models import *

def notifications_context(request):
    if not request.user.is_authenticated:
        return {
            "combined_notifications": [],
            "notification_count": 0,
            "unread_messages_count": 0
        }

    user = request.user
    notifications = Notification.objects.none()
    messages = Message.objects.none()

    if user.user_role == 'admin':
        # Admin: only system/user_event notifs
        notifications = Notification.objects.filter(
            category__in=['user_event', 'system_alert']
        )
        messages = Message.objects.filter(receiver=user)
    else:
        # Owner/User: only notifs sent to them
        notifications = Notification.objects.filter(recipient_user=user)
        messages = Message.objects.filter(receiver=user)

    # Combine all for dropdown
    combined = list(notifications) + list(messages)
    sorted_combined = sorted(combined, key=lambda x: x.created_at, reverse=True)

    # Total unread count (for badge)
    notification_unread = notifications.filter(is_viewed=False).count()
    message_unread = messages.filter(read=False).count()

    return {
        "combined_notifications": sorted_combined,
        "notification_count": notification_unread + message_unread,
        "unread_messages_count": message_unread  # ✅ Dedicated count
    }