from django.contrib import admin

from learning.models import Attempt, LearningProfile, Question, Recommendation, TopicMastery


class TopicMasteryInline(admin.TabularInline):
    model = TopicMastery
    extra = 0
    fields = ("topic", "mastery", "correct_count", "incorrect_count", "last_attempt_at")


@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
    list_display = ("statement", "course", "topic", "difficulty", "question_type", "is_published")
    list_filter = ("course", "difficulty", "question_type", "is_published")
    search_fields = ("statement", "skills")


@admin.register(Attempt)
class AttemptAdmin(admin.ModelAdmin):
    list_display = ("student", "question", "is_correct", "time_spent", "attempt_number", "created_at")
    list_filter = ("is_correct", "question__course")
    search_fields = ("student__username", "question__statement")


@admin.register(LearningProfile)
class LearningProfileAdmin(admin.ModelAdmin):
    list_display = ("student", "updated_at")
    inlines = [TopicMasteryInline]


@admin.register(TopicMastery)
class TopicMasteryAdmin(admin.ModelAdmin):
    list_display = ("profile", "topic", "mastery", "correct_count", "incorrect_count")
    list_filter = ("topic__course",)
    search_fields = ("profile__student__username", "topic__name")


@admin.register(Recommendation)
class RecommendationAdmin(admin.ModelAdmin):
    list_display = ("student", "topic", "question", "priority", "status", "created_at")
    list_filter = ("status", "priority")
    search_fields = ("student__username", "topic__name")
