from django.contrib import admin

from .models import APIKey, City, Engagement, Spot, SpotImage, Tag, Ward


@admin.register(City)
class CityAdmin(admin.ModelAdmin):
    list_display = ("name", "region", "created_at")
    search_fields = ("name", "region")


@admin.register(Ward)
class WardAdmin(admin.ModelAdmin):
    list_display = ("ward", "name", "city", "rank", "score", "trend", "total_spots")
    list_filter = ("city",)
    search_fields = ("ward", "name", "city__name")


@admin.register(Spot)
class SpotAdmin(admin.ModelAdmin):
    list_display = ("spot_id", "spot", "spot_name", "kind", "category", "status", "shortlisted", "created_at")
    list_filter = ("kind", "category", "status", "shortlisted", "ward__city")
    search_fields = ("spot_id", "spot_name", "address")
    filter_horizontal = ("tags",)


@admin.register(SpotImage)
class SpotImageAdmin(admin.ModelAdmin):
    list_display = ("spot", "image_type", "url")
    list_filter = ("image_type",)


@admin.register(Tag)
class TagAdmin(admin.ModelAdmin):
    search_fields = ("name",)


@admin.register(Engagement)
class EngagementAdmin(admin.ModelAdmin):
    list_display = ("city", "spot", "engagement_type", "occurred_at")
    list_filter = ("city", "engagement_type")


@admin.register(APIKey)
class APIKeyAdmin(admin.ModelAdmin):
    list_display = ("name", "key_prefix", "plan", "is_active", "created_at", "last_used_at")
    list_filter = ("plan", "is_active")
    search_fields = ("name", "key_prefix")
    readonly_fields = ("key_hash", "key_prefix", "created_at", "last_used_at")
