from django.contrib import admin
from simple_history.admin import SimpleHistoryAdmin

from apps.mel.feedback.models import (
    CourseEvaluation,
    FeedbackChannel,
    FeedbackSubmission,
    TracerResponse,
    TracerStudy,
)


@admin.register(FeedbackChannel)
class FeedbackChannelAdmin(admin.ModelAdmin):
    list_display = ("name", "type", "is_public", "is_active", "created_at")
    list_filter = ("type", "is_public", "is_active")
    search_fields = ("name", "slug")
    readonly_fields = ("token",)
    prepopulated_fields = {"slug": ("name",)}


@admin.register(FeedbackSubmission)
class FeedbackSubmissionAdmin(SimpleHistoryAdmin):
    list_display = ("channel", "severity", "status", "submitter_name", "submitter_email", "created_at")
    list_filter = ("status", "severity", "channel__type")
    search_fields = ("submitter_email", "submitter_name", "narrative")
    readonly_fields = ("created_at",)


@admin.register(TracerStudy)
class TracerStudyAdmin(admin.ModelAdmin):
    list_display = ("name", "slug", "is_active", "opens_at", "closes_at")
    list_filter = ("is_active",)
    search_fields = ("name", "slug")
    prepopulated_fields = {"slug": ("name",)}


@admin.register(TracerResponse)
class TracerResponseAdmin(admin.ModelAdmin):
    list_display = ("study", "respondent_name", "respondent_email", "employer", "submitted_at")
    list_filter = ("study",)
    search_fields = ("respondent_email", "respondent_name")


@admin.register(CourseEvaluation)
class CourseEvaluationAdmin(admin.ModelAdmin):
    list_display = ("source_system", "course_slug", "period_label", "aggregate_score", "response_count", "ingested_at")
    list_filter = ("source_system",)
    search_fields = ("course_slug", "course_name")
