from django.contrib import admin
from .models import (
    Business, Resource, AppointmentType, AvailabilityRule,
    BlockedPeriod, ExceptionDay, CustomField
)


@admin.register(Business)
class BusinessAdmin(admin.ModelAdmin):
    list_display = ['name', 'user', 'business_status', 'created_at']
    search_fields = ['name', 'user__email']
    list_filter = ['business_status', 'created_at']
    readonly_fields = ['created_at']


@admin.register(Resource)
class ResourceAdmin(admin.ModelAdmin):
    list_display = ['name', 'user', 'email', 'is_active', 'created_at']
    search_fields = ['name', 'email', 'user__email']
    list_filter = ['is_active', 'user']
    readonly_fields = ['created_at', 'deleted_at']


@admin.register(AppointmentType)
class AppointmentTypeAdmin(admin.ModelAdmin):
    list_display = ['name', 'user', 'duration_minutes', 'slot_capacity', 'is_active', 'created_at']
    search_fields = ['name', 'slug', 'user__email']
    list_filter = ['is_active', 'user', 'created_at']
    readonly_fields = ['created_at', 'deleted_at']


@admin.register(AvailabilityRule)
class AvailabilityRuleAdmin(admin.ModelAdmin):
    list_display = ['user', 'resource', 'weekday', 'start_time', 'end_time', 'is_active']
    list_filter = ['weekday', 'is_active', 'user']
    search_fields = ['user__email']


@admin.register(BlockedPeriod)
class BlockedPeriodAdmin(admin.ModelAdmin):
    list_display = ['user', 'resource', 'start_date', 'end_date', 'reason', 'is_active']
    list_filter = ['is_active', 'user', 'start_date']
    search_fields = ['reason', 'user__email']
    date_hierarchy = 'start_date'


@admin.register(ExceptionDay)
class ExceptionDayAdmin(admin.ModelAdmin):
    list_display = ['user', 'resource', 'date', 'is_available', 'reason']
    list_filter = ['is_available', 'date', 'user']
    search_fields = ['reason', 'user__email']
    date_hierarchy = 'date'


@admin.register(CustomField)
class CustomFieldAdmin(admin.ModelAdmin):
    list_display = ['label', 'user', 'appointment_type', 'field_type', 'is_required']
    list_filter = ['field_type', 'is_required', 'user']
    search_fields = ['label', 'slug', 'user__email']