from django.contrib import admin
from .models import Conversation, Message, UserPreferenceProfile


class MessageInline(admin.TabularInline):
    model = Message
    extra = 0
    readonly_fields = ["role", "content", "product_data", "metadata", "created_at"]
    can_delete = False


@admin.register(Conversation)
class ConversationAdmin(admin.ModelAdmin):
    list_display = ["__str__", "user", "created_at", "updated_at", "message_count"]
    list_filter = ["created_at"]
    search_fields = ["title", "user__username"]
    readonly_fields = ["id", "created_at", "updated_at"]
    inlines = [MessageInline]

    def message_count(self, obj):
        return obj.messages.count()


@admin.register(Message)
class MessageAdmin(admin.ModelAdmin):
    list_display = ["short_content", "role", "conversation", "created_at"]
    list_filter = ["role", "created_at"]
    readonly_fields = ["conversation", "role", "content", "product_data", "metadata", "created_at"]

    def short_content(self, obj):
        return obj.content[:80]
    short_content.short_description = "Content"


@admin.register(UserPreferenceProfile)
class UserPreferenceProfileAdmin(admin.ModelAdmin):
    list_display = ["user", "gender", "budget_min", "budget_max", "updated_at"]
    search_fields = ["user__username"]
