from django.contrib import admin
from .models import (
    Event, VisitorUser, Page, Gallery, Menu, Testimonial, TestimonialImage,
    MessageContact, AboutSection, Slider, Settings, Statistics, Partner, Reservation ,ProfileUser
)

# Enregistrement du modèle Settings
admin.site.register(Settings)

# Enregistrement du modèle VisitorUser
@admin.register(VisitorUser)
class VisitorUserAdmin(admin.ModelAdmin):
    list_display = ('username', 'email', 'is_admin', 'created_at')
    list_filter = ('is_admin', 'is_active')
    search_fields = ('username', 'email')
    ordering = ('-created_at',)
    
    filter_horizontal = ()
    fieldsets = ()

# Enregistrement du modèle Statistics
@admin.register(Statistics)
class StatisticsAdmin(admin.ModelAdmin):
    list_display = ('clients_served', 'kilometers_traveled', 'events_organized', 'happy_clients')

# Enregistrement du modèle Partner
@admin.register(Partner)
class PartnerAdmin(admin.ModelAdmin):
    list_display = ('name', 'logo')

# Enregistrement du modèle Event
@admin.register(Event)
class EventAdmin(admin.ModelAdmin):
    list_display = ('title', 'date', 'category', 'price', 'latitude', 'longitude')
    list_filter = ('category', 'date')
    search_fields = ('title', 'localisation')
    ordering = ('date',)
    fieldsets = (
        ("Informations générales", {"fields": ("title", "description", "category", "date", "localisation", "latitude", "longitude", "price")}),
        ("Média", {"fields": ("image",)}),
        ("Dates", {"fields": ("created_at", "updated_at")}),
    )
    readonly_fields = ("created_at", "updated_at")

# Enregistrement des autres modèles
admin.site.register(Page)
admin.site.register(Gallery)
admin.site.register(Menu)
admin.site.register(Testimonial)
admin.site.register(TestimonialImage)

# Enregistrement du modèle AboutSection
@admin.register(AboutSection)
class AboutSectionAdmin(admin.ModelAdmin):
    list_display = ('title', 'why_description', 'mission_description', 'services_description')
    fields = ('title', 'content', 'image', 'why_description', 'mission_description', 'services_description')

# Enregistrement du modèle MessageContact
@admin.register(MessageContact)
class MessageContactAdmin(admin.ModelAdmin):
    list_display = ('name', 'email', 'phone', 'message')
    search_fields = ('name', 'email', 'message')
    list_filter = ('email',)

# Enregistrement du modèle Slider
@admin.register(Slider)
class SliderAdmin(admin.ModelAdmin):
    list_display = ('title', 'order')
    list_editable = ('order',)
    ordering = ('order',)

# Enregistrement du modèle Reservation
@admin.register(Reservation)
class ReservationAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'email', 'phone_number', 'birth_date', 'passenger_count', 'reservation_date')
    list_filter = ('reservation_date',)
    search_fields = ('first_name', 'last_name', 'email')
    ordering = ('-reservation_date',)

@admin.register(ProfileUser)
class ProfileUserAdmin(admin.ModelAdmin):
    list_display = ('user', 'bio', 'address', 'city', 'profile_picture')
    search_fields = ('user__username', 'user__email')
    ordering = ('user',)