from django.contrib import admin
from .models import (
    Group, GroupRule, GroupMembership, GroupPost,
    GroupPostLike, GroupPostComment, GroupInvitation, GroupReport,
    MallReview, MallChatMessage, MallEvent, ProductRequest, ProductRequestResponse
)


@admin.register(Group)
class GroupAdmin(admin.ModelAdmin):
    list_display = ['name', 'group_type', 'category', 'privacy', 'members_count', 'posts_count', 'creator', 'created_at']
    list_filter = ['group_type', 'category', 'privacy', 'is_active']
    search_fields = ['name', 'description']
    prepopulated_fields = {'slug': ('name',)}
    readonly_fields = ['members_count', 'posts_count']


@admin.register(GroupRule)
class GroupRuleAdmin(admin.ModelAdmin):
    list_display = ['group', 'rule_text', 'order']
    list_filter = ['group']


@admin.register(GroupMembership)
class GroupMembershipAdmin(admin.ModelAdmin):
    list_display = ['user', 'group', 'role', 'status', 'joined_at']
    list_filter = ['role', 'status']
    search_fields = ['user__full_name', 'group__name']


@admin.register(GroupPost)
class GroupPostAdmin(admin.ModelAdmin):
    list_display = ['author', 'group', 'post_type', 'status', 'is_pinned', 'likes_count', 'comments_count', 'created_at']
    list_filter = ['post_type', 'status', 'is_pinned', 'is_announcement']
    search_fields = ['content', 'author__full_name']


@admin.register(GroupPostLike)
class GroupPostLikeAdmin(admin.ModelAdmin):
    list_display = ['user', 'post', 'created_at']


@admin.register(GroupPostComment)
class GroupPostCommentAdmin(admin.ModelAdmin):
    list_display = ['user', 'post', 'content', 'is_deleted', 'created_at']
    list_filter = ['is_deleted']


@admin.register(GroupInvitation)
class GroupInvitationAdmin(admin.ModelAdmin):
    list_display = ['inviter', 'invitee', 'group', 'status', 'created_at']
    list_filter = ['status']


@admin.register(GroupReport)
class GroupReportAdmin(admin.ModelAdmin):
    list_display = ['reporter', 'group', 'post', 'reason', 'is_resolved', 'created_at']
    list_filter = ['reason', 'is_resolved']


@admin.register(MallReview)
class MallReviewAdmin(admin.ModelAdmin):
    list_display = ['user', 'group', 'rating', 'created_at']
    list_filter = ['rating']
    search_fields = ['user__full_name', 'group__name']


@admin.register(MallChatMessage)
class MallChatMessageAdmin(admin.ModelAdmin):
    list_display = ['user', 'group', 'content', 'is_pinned', 'is_deleted', 'created_at']
    list_filter = ['is_pinned', 'is_deleted']


@admin.register(MallEvent)
class MallEventAdmin(admin.ModelAdmin):
    list_display = ['title', 'group', 'event_type', 'start_date', 'end_date', 'is_active']
    list_filter = ['event_type', 'is_active']


@admin.register(ProductRequest)
class ProductRequestAdmin(admin.ModelAdmin):
    list_display = ['user', 'group', 'content', 'is_fulfilled', 'created_at']
    list_filter = ['is_fulfilled']


@admin.register(ProductRequestResponse)
class ProductRequestResponseAdmin(admin.ModelAdmin):
    list_display = ['vendor', 'request', 'content', 'created_at']
