# agency/templatetags/dashboard_extras.py
from django import template
from django.utils.safestring import mark_safe
import json

register = template.Library()

@register.filter(name='mul')
def mul(value, arg):
    """Multiplica dos números"""
    try:
        return float(value) * float(arg)
    except (ValueError, TypeError):
        return 0

@register.filter
def div(value, arg):
    """Divide dos números"""
    try:
        return float(value) / float(arg) if float(arg) != 0 else 0
    except (ValueError, TypeError):
        return 0

@register.filter
def percentage(value, total):
    """Calcula el porcentaje"""
    try:
        if total == 0:
            return 0
        return round((float(value) / float(total)) * 100, 1)
    except (ValueError, TypeError):
        return 0

@register.filter
def format_price(value):
    """Formatea precios con separadores de miles"""
    try:
        return f"${int(value):,}".replace(',', '.')
    except (ValueError, TypeError):
        return "$0"

@register.filter
def to_json(value):
    """Convierte un valor a JSON para usar en JavaScript"""
    return mark_safe(json.dumps(value))

@register.simple_tag
def property_status_badge(is_available, is_featured, is_verified):
    """Genera badges de estado para propiedades"""
    badges = []
    
    if is_available:
        badges.append('<span class="badge badge-success">Disponible</span>')
    else:
        badges.append('<span class="badge badge-secondary">No Disponible</span>')
    
    if is_featured:
        badges.append('<span class="badge badge-warning">Destacada</span>')
    
    if is_verified:
        badges.append('<span class="badge badge-info">Verificada</span>')
    
    return mark_safe(' '.join(badges))

@register.inclusion_tag('admin/dashboard_metric_card.html')
def metric_card(title, value, icon, color="primary", subtitle=None):
    """Template tag para crear tarjetas de métricas"""
    return {
        'title': title,
        'value': value,
        'icon': icon,
        'color': color,
        'subtitle': subtitle
    }