import { PrismaClient } from '@prisma/client'

export async function seedDemoData(prisma: PrismaClient) {
  await prisma.orderItem.deleteMany()
  await prisma.order.deleteMany()
  await prisma.menuItem.deleteMany()
  await prisma.category.deleteMany()
  await prisma.table.deleteMany()

  const categories = [
    { name: 'Cocktails', sortOrder: 0 },
    { name: 'Beer & Seltzers', sortOrder: 1 },
    { name: 'Wine & Spirits', sortOrder: 2 },
    { name: 'Shots', sortOrder: 3 },
    { name: 'Non-Alcoholic', sortOrder: 4 },
    { name: 'Appetizers', sortOrder: 5 },
    { name: 'Entrees', sortOrder: 6 },
    { name: 'Desserts', sortOrder: 7 },
  ]

  const created: Record<string, number> = {}
  for (const c of categories) {
    const cat = await prisma.category.create({ data: c })
    created[c.name] = cat.id
  }

  const items: { name: string; description: string; price: number; category: string; isBar: boolean }[] = [
    // Cocktails
    { name: 'Moonshine Mule', description: 'Vodka, ginger beer, fresh lime', price: 12, category: 'Cocktails', isBar: true },
    { name: 'Blue Moon Sangria', description: 'Red wine, brandy, blue curacao, citrus', price: 13, category: 'Cocktails', isBar: true },
    { name: 'Dark Side Old Fashioned', description: 'Bourbon, bitters, charred orange', price: 14, category: 'Cocktails', isBar: true },
    { name: 'Lunar Lemon Drop', description: 'Citrus vodka, lemon, sugar rim', price: 11, category: 'Cocktails', isBar: true },
    { name: 'Tavern Margarita', description: 'Tequila, triple sec, fresh lime', price: 12, category: 'Cocktails', isBar: true },
    // Beer & Seltzers
    { name: 'Bud Light', description: 'Domestic draft', price: 5, category: 'Beer & Seltzers', isBar: true },
    { name: 'Coors Light', description: 'Domestic draft', price: 5, category: 'Beer & Seltzers', isBar: true },
    { name: 'Blue Moon', description: 'Belgian white ale', price: 6, category: 'Beer & Seltzers', isBar: true },
    { name: 'Modelo Especial', description: 'Mexican lager', price: 6, category: 'Beer & Seltzers', isBar: true },
    { name: 'White Claw', description: 'Hard seltzer, assorted flavors', price: 5, category: 'Beer & Seltzers', isBar: true },
    { name: 'Heineken', description: 'Imported lager', price: 6, category: 'Beer & Seltzers', isBar: true },
    // Wine & Spirits
    { name: 'House Red', description: 'Cabernet blend, glass', price: 8, category: 'Wine & Spirits', isBar: true },
    { name: 'House White', description: 'Chardonnay, glass', price: 8, category: 'Wine & Spirits', isBar: true },
    { name: 'Cabernet Sauvignon', description: 'Premium pour', price: 10, category: 'Wine & Spirits', isBar: true },
    { name: 'Chardonnay', description: 'Premium pour', price: 10, category: 'Wine & Spirits', isBar: true },
    // Shots
    { name: 'Tequila Shot', description: 'House tequila', price: 7, category: 'Shots', isBar: true },
    { name: 'Fireball', description: 'Cinnamon whiskey', price: 6, category: 'Shots', isBar: true },
    { name: 'Jameson', description: 'Irish whiskey', price: 8, category: 'Shots', isBar: true },
    { name: 'Patron Silver', description: 'Premium tequila', price: 9, category: 'Shots', isBar: true },
    // Non-Alcoholic
    { name: 'Fountain Soda', description: 'Coke, Sprite, Diet Coke', price: 3, category: 'Non-Alcoholic', isBar: true },
    { name: 'Bottled Water', description: 'Still water', price: 2, category: 'Non-Alcoholic', isBar: true },
    { name: 'Red Bull', description: 'Energy drink', price: 5, category: 'Non-Alcoholic', isBar: true },
    { name: 'Fresh Lemonade', description: 'House-made', price: 4, category: 'Non-Alcoholic', isBar: true },
    // Appetizers
    { name: 'Loaded Nachos', description: 'Cheese, jalapeno, pico, sour cream', price: 12, category: 'Appetizers', isBar: false },
    { name: 'Mozzarella Sticks', description: 'Marinara dip', price: 9, category: 'Appetizers', isBar: false },
    { name: 'Buffalo Wings', description: 'Choice of sauce, celery, ranch', price: 14, category: 'Appetizers', isBar: false },
    { name: 'Pretzel Bites', description: 'Beer cheese dip', price: 8, category: 'Appetizers', isBar: false },
    // Entrees
    { name: 'Tavern Burger', description: 'Half-pound, lettuce, tomato, fries', price: 15, category: 'Entrees', isBar: false },
    { name: 'Pulled Pork Sandwich', description: 'Slaw, brioche bun, fries', price: 13, category: 'Entrees', isBar: false },
    { name: 'Fish Tacos', description: 'Two tacos, cabbage slaw, chipotle crema', price: 14, category: 'Entrees', isBar: false },
    { name: 'Chicken Tenders', description: 'Hand-breaded, fries, choice of sauce', price: 12, category: 'Entrees', isBar: false },
    // Desserts
    { name: 'Churros', description: 'Cinnamon sugar, chocolate dip', price: 7, category: 'Desserts', isBar: false },
    { name: 'Brownie Sundae', description: 'Vanilla ice cream, hot fudge', price: 8, category: 'Desserts', isBar: false },
  ]

  for (const item of items) {
    await prisma.menuItem.create({
      data: {
        name: item.name,
        description: item.description,
        price: item.price,
        categoryId: created[item.category],
        isBar: item.isBar,
        available: true,
      },
    })
  }

  await prisma.table.createMany({
    data: Array.from({ length: 12 }, (_, i) => ({ number: i + 1 })),
  })
}
