from django.contrib import admin
from django.utils.translation import gettext_lazy as _
from .models import Booking


@admin.register(Booking)
class BookingAdmin(admin.ModelAdmin):
    """Booking Admin"""
    list_display = ['id', 'place', 'user', 'type', 'date', 'time', 'status', 'created_at']
    list_filter = ['type', 'status', 'date', 'created_at']
    search_fields = ['place__name', 'user__username', 'user__email', 'user__phone']
    raw_id_fields = ['place', 'user']
    readonly_fields = ['created_at', 'updated_at']
    date_hierarchy = 'date'
    ordering = ['-created_at']
    
    fieldsets = (
        (_('Booking Information'), {
            'fields': ('place', 'user', 'type', 'date', 'time', 'number_of_guests', 'special_requests', 'status')
        }),
        (_('Timestamps'), {
            'fields': ('created_at', 'updated_at')
        }),
    )
    
    actions = ['confirm_bookings', 'cancel_bookings', 'complete_bookings']
    
    def confirm_bookings(self, request, queryset):
        queryset.update(status='confirmed')
    confirm_bookings.short_description = _('Confirm selected bookings')
    
    def cancel_bookings(self, request, queryset):
        queryset.update(status='cancelled')
    cancel_bookings.short_description = _('Cancel selected bookings')
    
    def complete_bookings(self, request, queryset):
        queryset.update(status='completed')
    complete_bookings.short_description = _('Complete selected bookings')
