from django.contrib import admin
from .models import StoreRegistry, StoreHealthLog, ACASettings


@admin.register(ACASettings)
class ACASettingsAdmin(admin.ModelAdmin):
    list_display = [
        "llm_provider", "anthropic_api_key_masked", "openai_api_key_masked",
        "llm_model", "openai_model", "vendor_registration_fee", "vendor_registration_free",
    ]
    readonly_fields = ["updated_at"]
    fieldsets = (
        ("AI Provider", {
            "fields": ("llm_provider",),
            "description": (
                "Choose which AI provider powers the shopping assistant. "
                "Switching takes effect immediately — no restart needed."
            ),
        }),
        ("Anthropic Claude", {
            "fields": ("anthropic_api_key", "llm_model", "llm_max_tokens"),
            "classes": ("collapse",),
        }),
        ("OpenAI ChatGPT", {
            "fields": ("openai_api_key", "openai_model"),
            "classes": ("collapse",),
        }),
        ("Vendor Subscriptions", {
            "fields": (
                "vendor_registration_free",
                "vendor_free_duration_months",
                "vendor_registration_fee",
                "vendor_subscription_months",
            ),
            "description": (
                "When 'vendor_registration_free' is checked, vendors register for free "
                "for 'vendor_free_duration_months' months. When unchecked, they pay "
                "'vendor_registration_fee' (GHS) via Paystack for 'vendor_subscription_months' months."
            ),
        }),
    )

    def anthropic_api_key_masked(self, obj):
        return obj.masked_key or "—"
    anthropic_api_key_masked.short_description = "Claude Key"

    def openai_api_key_masked(self, obj):
        return obj.masked_openai_key or "—"
    openai_api_key_masked.short_description = "OpenAI Key"


@admin.register(StoreRegistry)
class StoreRegistryAdmin(admin.ModelAdmin):
    list_display = [
        "name", "slug", "is_active", "priority", "auth_method", "base_api_url", "updated_at",
    ]
    list_filter = ["is_active", "auth_method"]
    list_editable = ["is_active", "priority"]
    search_fields = ["name", "slug", "base_api_url"]
    prepopulated_fields = {"slug": ("name",)}
    readonly_fields = ["added_at", "updated_at"]


@admin.register(StoreHealthLog)
class StoreHealthLogAdmin(admin.ModelAdmin):
    list_display = ["store", "checked_at", "status_code", "response_time_ms", "success"]
    list_filter = ["success", "store"]
    readonly_fields = ["store", "checked_at", "status_code", "response_time_ms", "success", "error_message"]
    ordering = ["-checked_at"]

    def has_add_permission(self, request):
        return False