


def brand_logo_upload_path(instance, filename):
    """Generate upload path for brand logos"""
    return f'brands/logos/{instance.agency.name if instance.agency else "no_agency"}/{filename}'


def advertiser_logo_upload_path(instance, filename):
    """Generate upload path for advertiser logos"""
    return f'advertisers/logos/{instance.brand.name if instance.brand else "no_brand"}/{filename}'


def agency_logo_upload_path(instance, filename):
    """Generate upload path for agency logos"""
    return f'agencies/logos/{instance.name if instance.name else "no_name"}/{filename}'

def get_agency_stats(user=None):
    """
    Get comprehensive agency statistics.
    """
    from apps.agencies.models import Agency
    
    queryset = Agency.objects.all()
    if user and not user.is_superuser:
        queryset = queryset.filter(owner=user)
    
    stats = {
        'total_agencies': queryset.count(),
        'active_agencies': queryset.filter(is_active=True, is_deleted=False).count(),
        'inactive_agencies': queryset.filter(is_active=False, is_deleted=False).count(),
        'verified_agencies': queryset.filter(is_verified=True, is_deleted=False).count(),
        'featured_agencies': queryset.filter(is_featured=True, is_deleted=False).count(),
        'deleted_agencies': queryset.filter(is_deleted=True).count(),
    }
    
    return stats


def get_agency_context_data(agency):
    """
    Get additional context data for agency detail views.
    """
    context = {}
    
    # Get brand count
    try:
        from apps.agencies.models import Brand
        context['brands_count'] = Brand.objects.filter(agency=agency).count()
        context['brands'] = Brand.objects.filter(agency=agency).order_by('name')[:10]  # First 10 for display
    except:
        context['brands_count'] = 0
        context['brands'] = []
    
    # Get campaign count (if campaigns model exists)
    try:
        from apps.campaigns.models import Campaigns
        context['campaigns_count'] = Campaigns.objects.filter(agency=agency).count()
    except:
        context['campaigns_count'] = 0
    
    # Get team members count is already available via agency.team_members.count()
    
    return context
