from django.contrib import admin
from django.utils.html import format_html
from .models import Tenant, TenantModule, TenantUser


class TenantModuleInline(admin.TabularInline):
    model = TenantModule
    extra = 0
    fields = ['module', 'is_enabled']


class TenantUserInline(admin.TabularInline):
    model = TenantUser
    extra = 1
    fields = ['user', 'role', 'is_active']


@admin.register(Tenant)
class TenantAdmin(admin.ModelAdmin):
    list_display = [
        'name', 'primary_domain', 'plan', 'is_active', 'is_master',
        'chat_status', 'account_manager', 'created_at'
    ]
    list_filter = ['plan', 'is_active', 'is_master', 'chat_enabled']
    search_fields = ['name', 'primary_domain', 'cms_subdomain']
    list_editable = ['is_active', 'plan']
    prepopulated_fields = {'slug': ('name',)}
    inlines = [TenantModuleInline, TenantUserInline]
    fieldsets = (
        ('Identity', {
            'fields': ('name', 'slug', 'plan', 'is_active', 'is_master')
        }),
        ('Domains', {
            'fields': ('primary_domain', 'cms_subdomain', 'extra_domains')
        }),
        ('Branding', {
            'fields': ('logo', 'favicon', 'accent_colour', 'cms_dark_colour')
        }),
        ('Ownership', {
            'fields': ('owner', 'account_manager')
        }),
        ('AI Chat', {
            'fields': (
                'chat_enabled', 'chat_greeting', 'chat_system_prompt',
                'chat_whatsapp', 'chat_whatsapp_trigger'
            ),
            'classes': ('collapse',),
        }),
        ('Notes', {
            'fields': ('notes',),
            'classes': ('collapse',),
        }),
    )

    def chat_status(self, obj):
        if obj.chat_enabled:
            return format_html('<span style="color:green">&#9679; ON</span>')
        return format_html('<span style="color:#888">&#9675; OFF</span>')
    chat_status.short_description = 'Chat'


@admin.register(TenantModule)
class TenantModuleAdmin(admin.ModelAdmin):
    list_display = ['tenant', 'module', 'is_enabled']
    list_filter = ['tenant', 'is_enabled']
    list_editable = ['is_enabled']
