from django.contrib import admin
from django.utils.translation import gettext_lazy as _
from .models import Review, ReviewHelpful


@admin.register(Review)
class ReviewAdmin(admin.ModelAdmin):
    """Review Admin"""
    list_display = ['id', 'place', 'user', 'rating', 'is_verified', 'is_active', 'helpful_count', 'created_at']
    list_filter = ['rating', 'is_verified', 'is_active', 'created_at']
    search_fields = ['place__name', 'user__username', 'comment']
    raw_id_fields = ['place', 'user']
    readonly_fields = ['created_at', 'updated_at', 'place_response_at']
    ordering = ['-created_at']
    
    fieldsets = (
        (_('Review Information'), {
            'fields': ('place', 'user', 'rating', 'comment', 'images')
        }),
        (_('Status'), {
            'fields': ('is_verified', 'is_active', 'helpful_count')
        }),
        (_('Place Response'), {
            'fields': ('place_response', 'place_response_at')
        }),
        (_('Timestamps'), {
            'fields': ('created_at', 'updated_at')
        }),
    )
    
    actions = ['verify_reviews', 'unverify_reviews', 'activate_reviews', 'deactivate_reviews']
    
    def verify_reviews(self, request, queryset):
        queryset.update(is_verified=True)
    verify_reviews.short_description = _('Verify selected reviews')
    
    def unverify_reviews(self, request, queryset):
        queryset.update(is_verified=False)
    unverify_reviews.short_description = _('Unverify selected reviews')
    
    def activate_reviews(self, request, queryset):
        queryset.update(is_active=True)
    activate_reviews.short_description = _('Activate selected reviews')
    
    def deactivate_reviews(self, request, queryset):
        queryset.update(is_active=False)
    deactivate_reviews.short_description = _('Deactivate selected reviews')


@admin.register(ReviewHelpful)
class ReviewHelpfulAdmin(admin.ModelAdmin):
    """Review Helpful Admin"""
    list_display = ['review', 'user', 'created_at']
    list_filter = ['created_at']
    search_fields = ['review__comment', 'user__username']
    raw_id_fields = ['review', 'user']
    ordering = ['-created_at']
