from orders.models import Orders
from shops.models import Shop

def order_counts(request):
    if not request.user.is_authenticated:
        return {}
    
    user_type = getattr(request.user, 'user_type', '')
    if user_type not in ['Shop Admin', 'PU Admin']:
        return {}

    shop_qs = Shop.objects.filter(unit_admin_user__uuid=request.user.uuid)
    shop_id = shop_qs[0] if shop_qs else None

    counts = {
        'local_web_count': 0,
        'local_mobile_count': 0,
        'custom_web_count': 0,
        'custom_mobile_count': 0,
        'long_distance_count': 0,
    }

    mobile_platforms = ["IOS", "Andriod", "Android", "Flutter_web_app"]
    web_platforms = ["Web", "Other"]

    if shop_id and user_type == 'Shop Admin':
        counts['local_web_count'] = Orders.objects.filter(
            store_uuid=shop_id,
            order_type__in=["Local Orders", "Pick Up"],
            order_status="Confirmed",
            platform__in=web_platforms
        ).count()

        counts['local_mobile_count'] = Orders.objects.filter(
            store_uuid=shop_id,
            order_type__in=["Local Orders", "Pick Up"],
            order_status="Confirmed",
            platform__in=mobile_platforms
        ).count()

        counts['custom_web_count'] = Orders.objects.filter(
            store_uuid=shop_id,
            order_type="Custom Orders",
            order_status="Confirmed",
            platform__in=web_platforms
        ).count()

        counts['custom_mobile_count'] = Orders.objects.filter(
            store_uuid=shop_id,
            order_type="Custom Orders",
            order_status="Confirmed",
            platform__in=mobile_platforms
        ).count()

    if user_type == 'PU Admin':
        counts['long_distance_count'] = Orders.objects.filter(
            order_type="Long Distance Orders",
            order_status="Confirmed"
        ).count()

    return counts