from django import template

register = template.Library()

@register.simple_tag
def get_company_profile():
    from settings.models import CompanyProfile
    try:
        return CompanyProfile.objects.first()
    except CompanyProfile.DoesNotExist:
        return None

@register.simple_tag
def get_setting(category, key):
    """Get a system setting value by category and key"""
    from settings.models import SystemSettings
    try:
        setting = SystemSettings.objects.get(category=category, key=key)
        return setting.value
    except SystemSettings.DoesNotExist:
        return None

@register.simple_tag
def get_system_setting(key, default=None):
    """Get a system setting value by key"""
    from settings.models import SystemSettings
    try:
        setting = SystemSettings.objects.get(key=key)
        return setting.value
    except SystemSettings.DoesNotExist:
        return default

@register.simple_tag
def get_company_name():
    """Get the company name"""
    from settings.models import CompanyProfile
    try:
        profile = CompanyProfile.objects.first()
        return profile.company_name if profile else "Optinet Global Links"
    except CompanyProfile.DoesNotExist:
        return "Optinet Global Links"

@register.simple_tag
def get_company_logo():
    """Get the company logo URL"""
    from settings.models import CompanyProfile
    try:
        profile = CompanyProfile.objects.first()
        return profile.company_logo.url if profile and profile.company_logo else None
    except CompanyProfile.DoesNotExist:
        return None

@register.simple_tag
def get_company_favicon():
    """Get the company favicon URL"""
    from settings.models import CompanyProfile
    try:
        profile = CompanyProfile.objects.first()
        if profile and profile.favicon:
            return profile.favicon.url
    except:
        pass
    return None

@register.filter
def setting(key, default=None):
    """Template filter to get system settings"""
    from settings.models import SystemSettings
    try:
        setting = SystemSettings.objects.get(key=key)
        return setting.value
    except SystemSettings.DoesNotExist:
        return default