from django.contrib import admin
from .models import MarketSurvey, SurveyResponse


class SurveyResponseInline(admin.TabularInline):
    model = SurveyResponse
    extra = 0
    max_num = 20
    show_change_link = True
    readonly_fields = ("created_at",)
    fields = ("respondent_name", "age_range", "gender", "location", "interest_level", "created_at")


@admin.register(MarketSurvey)
class MarketSurveyAdmin(admin.ModelAdmin):
    list_display = ("entrepreneur", "response_count", "is_validated", "created_at")
    list_filter = ("is_validated", "created_at")
    search_fields = ("entrepreneur__email",)
    readonly_fields = ("created_at",)
    inlines = [SurveyResponseInline]
    fieldsets = (
        (None, {"fields": ("entrepreneur", "is_validated")}),
        ("Dates", {"fields": ("created_at",), "classes": ("collapse",)}),
    )

    def response_count(self, obj):
        return obj.responses.count()
    response_count.short_description = "Nb réponses"


@admin.register(SurveyResponse)
class SurveyResponseAdmin(admin.ModelAdmin):
    list_display = ("id", "study", "respondent_name", "age_range", "gender", "location", "interest_level", "created_at")
    list_filter = ("age_range", "gender", "interest_level", "general_price_perception")
    search_fields = ("respondent_name", "location", "current_competitors", "pain_points")
    readonly_fields = ("created_at",)
    date_hierarchy = "created_at"
    fieldsets = (
        ("Étude", {"fields": ("study", "created_at")}),
        ("Informations générales", {"fields": ("respondent_name", "age_range", "gender", "location")}),
        ("Comportements", {"fields": ("purchase_frequency", "preferred_channels", "decision_factors")}),
        ("Attentes", {"fields": ("desired_features", "pain_points", "interest_level")}),
        ("Concurrence", {"fields": ("current_competitors", "competitor_feedback", "general_price_perception")}),
        ("Détails concurrent", {"fields": ("competitor_product_types", "competitor_avg_price_perception", "competitor_marketing_channels", "competitor_service_rating", "competitor_service_strengths_weaknesses"), "classes": ("collapse",)}),
        ("Conclusion", {"fields": ("interested_in_future", "additional_comments")}),
    )
