namespace Meezi.Infrastructure.Data;

/// <summary>Rotating menu templates for discover showcase cafés.</summary>
public static class DiscoverShowcaseMenus
{
    public sealed record MenuTemplate(
        IReadOnlyList<DemoMenuCatalog.CategorySeed> Categories,
        IReadOnlyList<DemoMenuCatalog.ItemSeed> Items);

    public static IReadOnlyList<MenuTemplate> Templates { get; } =
    [
        CoffeeShopTemplate(),
        BrunchTemplate(),
        RestaurantTemplate(),
        DessertTemplate(),
        TraditionalTemplate(),
    ];

    private static MenuTemplate CoffeeShopTemplate() => new(
        [
            new("cat_sc_hot", "قهوه تخصصی", "Specialty coffee", null, 1, IconPresetId: "drinks-hot", IconStyle: "gradient"),
            new("cat_sc_cold", "نوشیدنی سرد", "Cold drinks", null, 2, IconPresetId: "drinks-cold", IconStyle: "modern"),
            new("cat_sc_snack", "میان‌وعده", "Snacks", null, 3, IconPresetId: "food-mains", IconStyle: "flat"),
        ],
        [
            new("item_sc_espresso", "cat_sc_hot", "اسپرسو", "Espresso", null, "دوبل سینگل", 70_000, 0, "espresso"),
            new("item_sc_latte", "cat_sc_hot", "لاته", "Latte", null, "شیر بخار", 125_000, 0, "latte"),
            new("item_sc_mocha", "cat_sc_hot", "موکا", "Mocha", null, null, 140_000, 0, "mocha"),
            new("item_sc_iced", "cat_sc_cold", "آیس آمریکانو", "Iced americano", null, null, 115_000, 0, "iced_coffee"),
            new("item_sc_cake", "cat_sc_snack", "چیزکیک", "Cheesecake", null, null, 165_000, 10, "cheesecake"),
        ]);

    private static MenuTemplate BrunchTemplate() => new(
        [
            new("cat_sc_br", "صبحانه", "Breakfast", null, 1, IconPresetId: "breakfast", IconStyle: "pastel"),
            new("cat_sc_br_d", "نوشیدنی", "Drinks", null, 2, IconPresetId: "drinks-hot"),
        ],
        [
            new("item_sc_omelette", "cat_sc_br", "املت", "Omelette", null, "نان سنگک", 155_000, 0, "omelette"),
            new("item_sc_avocado", "cat_sc_br", "توست آووکادو", "Avocado toast", null, null, 195_000, 0, "avocado_toast"),
            new("item_sc_tea", "cat_sc_br_d", "چای", "Tea", null, null, 65_000, 0, "miso_soup"),
        ]);

    private static MenuTemplate RestaurantTemplate() => new(
        [
            new("cat_sc_main", "غذای اصلی", "Mains", null, 1, IconPresetId: "food-mains", IconStyle: "bold"),
            new("cat_sc_salad", "سالاد", "Salads", null, 2, IconPresetId: "food-mains"),
            new("cat_sc_drink", "نوشیدنی", "Drinks", null, 3, IconPresetId: "drinks-cold"),
        ],
        [
            new("item_sc_burger", "cat_sc_main", "همبرگر", "Burger", null, null, 265_000, 0, "hamburger"),
            new("item_sc_pasta", "cat_sc_main", "پاستا", "Pasta", null, null, 245_000, 0, "spaghetti_bolognese"),
            new("item_sc_salad", "cat_sc_salad", "سالاد سزار", "Caesar salad", null, null, 185_000, 0, "caesar_salad"),
            new("item_sc_lemon", "cat_sc_drink", "لیموناد", "Lemonade", null, null, 95_000, 0, "lemonade"),
        ]);

    private static MenuTemplate DessertTemplate() => new(
        [
            new("cat_sc_des", "دسر", "Desserts", null, 1, IconPresetId: "dessert", IconStyle: "soft"),
            new("cat_sc_des_d", "قهوه", "Coffee", null, 2, IconPresetId: "drinks-hot"),
        ],
        [
            new("item_sc_tiramisu", "cat_sc_des", "تیرامیسو", "Tiramisu", null, null, 175_000, 0, "tiramisu"),
            new("item_sc_macaron", "cat_sc_des", "ماکارون", "Macaron", null, null, 95_000, 0, "macarons"),
            new("item_sc_capp", "cat_sc_des_d", "کاپوچینو", "Cappuccino", null, null, 110_000, 0, "cappuccino"),
        ]);

    private static MenuTemplate TraditionalTemplate() => new(
        [
            new("cat_sc_tr", "نوشیدنی سنتی", "Traditional drinks", null, 1, IconPresetId: "drinks-hot", IconStyle: "duotone"),
            new("cat_sc_tr_f", "غذا", "Food", null, 2, IconPresetId: "food-mains"),
        ],
        [
            new("item_sc_tea_tr", "cat_sc_tr", "چای ایرانی", "Persian tea", null, null, 55_000, 0, "miso_soup"),
            new("item_sc_kebab", "cat_sc_tr_f", "چلوکباب", "Kebab plate", null, null, 320_000, 0, "steak"),
            new("item_sc_soup", "cat_sc_tr_f", "سوپ", "Soup", null, null, 120_000, 0, "miso_soup"),
        ]);
}
