from django.contrib import admin
from .models import Menu, MenuCategory, MenuItem, MenuItemVariant, MenuLike, MenuSave


class MenuCategoryInline(admin.TabularInline):
    model = MenuCategory
    extra = 0


class MenuItemInline(admin.TabularInline):
    model = MenuItem
    extra = 0


@admin.register(Menu)
class MenuAdmin(admin.ModelAdmin):
    list_display = ['name', 'vendor', 'menu_type', 'status', 'views', 'qr_scans', 'created_at']
    list_filter = ['menu_type', 'status', 'created_at']
    search_fields = ['name', 'vendor__shop_name', 'description']
    prepopulated_fields = {'slug': ('name',)}
    inlines = [MenuCategoryInline]


@admin.register(MenuCategory)
class MenuCategoryAdmin(admin.ModelAdmin):
    list_display = ['name', 'menu', 'display_order', 'is_active', 'created_at']
    list_filter = ['is_active', 'created_at']
    search_fields = ['name', 'menu__name']
    inlines = [MenuItemInline]


@admin.register(MenuItem)
class MenuItemAdmin(admin.ModelAdmin):
    list_display = ['name', 'category', 'price', 'price_type', 'is_available', 'is_popular', 'views']
    list_filter = ['is_available', 'is_popular', 'is_new', 'price_type']
    search_fields = ['name', 'category__name', 'description']


@admin.register(MenuItemVariant)
class MenuItemVariantAdmin(admin.ModelAdmin):
    list_display = ['item', 'group_name', 'option_name', 'price_adjustment', 'display_order']
    list_filter = ['group_name']
    search_fields = ['item__name', 'option_name']


@admin.register(MenuLike)
class MenuLikeAdmin(admin.ModelAdmin):
    list_display = ['user', 'menu', 'created_at']
    list_filter = ['created_at']


@admin.register(MenuSave)
class MenuSaveAdmin(admin.ModelAdmin):
    list_display = ['user', 'menu', 'created_at']
    list_filter = ['created_at']
