from django.contrib import admin
from django.utils.translation import gettext_lazy as _
from .models import Governorate, Category, Amenity, Place


@admin.register(Governorate)
class GovernorateAdmin(admin.ModelAdmin):
    """Governorate Admin"""
    list_display = ['name_ar', 'name_ku', 'name_en', 'code']
    search_fields = ['name_ar', 'name_ku', 'name_en', 'code']
    ordering = ['name_ar']


@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    """Category Admin"""
    list_display = ['name_ar', 'name_ku', 'name_en', 'slug', 'is_active']
    list_filter = ['is_active']
    search_fields = ['name_ar', 'name_ku', 'name_en', 'slug']
    prepopulated_fields = {'slug': ('name_ar',)}
    ordering = ['name_ar']


@admin.register(Amenity)
class AmenityAdmin(admin.ModelAdmin):
    """Amenity Admin"""
    list_display = ['name_ar', 'name_ku', 'name_en', 'icon']
    search_fields = ['name_ar', 'name_ku', 'name_en']
    ordering = ['name_ar']


@admin.register(Place)
class PlaceAdmin(admin.ModelAdmin):
    """Place Admin"""
    list_display = ['name', 'category', 'governorate', 'owner', 'rating', 'reviews_count', 'is_verified', 'is_active', 'created_at']
    list_filter = ['category', 'governorate', 'is_verified', 'is_active', 'has_booking', 'is_open']
    search_fields = ['name', 'address', 'owner__username', 'owner__email']
    raw_id_fields = ['owner', 'category', 'governorate']
    filter_horizontal = ['amenities']
    readonly_fields = ['rating', 'reviews_count', 'created_at', 'updated_at']
    fieldsets = (
        (_('Basic Information'), {
            'fields': ('name', 'slug', 'category', 'governorate', 'owner', 'description')
        }),
        (_('Location'), {
            'fields': ('address', 'latitude', 'longitude')
        }),
        (_('Contact'), {
            'fields': ('phone', 'website', 'email')
        }),
        (_('Media'), {
            'fields': ('image', 'gallery')
        }),
        (_('Details'), {
            'fields': ('working_hours', 'amenities', 'price_range', 'is_open', 'has_booking')
        }),
        (_('Status'), {
            'fields': ('is_verified', 'is_active', 'rating', 'reviews_count')
        }),
        (_('Timestamps'), {
            'fields': ('created_at', 'updated_at')
        }),
    )
    prepopulated_fields = {'slug': ('name',)}
    ordering = ['-created_at']
    
    actions = ['verify_places', 'unverify_places', 'activate_places', 'deactivate_places']
    
    def verify_places(self, request, queryset):
        queryset.update(is_verified=True)
    verify_places.short_description = _('Verify selected places')
    
    def unverify_places(self, request, queryset):
        queryset.update(is_verified=False)
    unverify_places.short_description = _('Unverify selected places')
    
    def activate_places(self, request, queryset):
        queryset.update(is_active=True)
    activate_places.short_description = _('Activate selected places')
    
    def deactivate_places(self, request, queryset):
        queryset.update(is_active=False)
    deactivate_places.short_description = _('Deactivate selected places')
