-- ============================================================
-- Tienda DEMO "Arepas Doña Carmen": la tienda de ejemplo que la landing
-- enlaza para que cualquier prospecto toque el producto sin registrarse.
-- Coincide con la historia del hero (reina pepiada, papelon con limon).
-- Es idempotente: se puede correr las veces que haga falta.
-- El demo esta FUERA del directorio (en_directorio=false): solo se llega
-- por el enlace. Datos de pago claramente falsos.
-- ============================================================
do $$
declare
  v_rest     uuid;
  v_arepas   uuid;
  v_empa     uuid;
  v_dulces   uuid;
  v_bebidas  uuid;
begin
  select id into v_rest from public.restaurantes where slug = 'demo-gustito';
  if v_rest is null then
    raise exception 'No existe el restaurante demo-gustito';
  end if;

  -- ---- Identidad y estado: siempre abierta, claramente demo ----
  update public.restaurantes set
    nombre = 'Arepas Doña Carmen · Demo',
    descripcion = 'Tienda de muestra de Gustito Xpress: pide sin pena, aqui nada se cocina de verdad. Asi se veria tu negocio, con tu marca y tu menu.',
    color_primario = '#F59E0B',
    abierto = true,
    horarios = '{
      "lun":{"abre":"00:00","cierra":"23:59","activo":true},
      "mar":{"abre":"00:00","cierra":"23:59","activo":true},
      "mie":{"abre":"00:00","cierra":"23:59","activo":true},
      "jue":{"abre":"00:00","cierra":"23:59","activo":true},
      "vie":{"abre":"00:00","cierra":"23:59","activo":true},
      "sab":{"abre":"00:00","cierra":"23:59","activo":true},
      "dom":{"abre":"00:00","cierra":"23:59","activo":true}
    }'::jsonb,
    num_mesas = 6,
    en_directorio = false
  where id = v_rest;

  -- ---- Categorias ----
  update public.categorias set nombre = 'Empanadas y tequeños', orden = 2, grupo = 'comida'
   where restaurante_id = v_rest and nombre = 'Platos';
  update public.categorias set orden = 1 where restaurante_id = v_rest and nombre = 'Arepas';
  update public.categorias set orden = 4 where restaurante_id = v_rest and nombre = 'Bebidas';
  insert into public.categorias (restaurante_id, nombre, orden, grupo)
  select v_rest, 'Dulces criollos', 3, 'comida'
   where not exists (select 1 from public.categorias where restaurante_id = v_rest and nombre = 'Dulces criollos');

  select id into v_arepas  from public.categorias where restaurante_id = v_rest and nombre = 'Arepas' limit 1;
  select id into v_empa    from public.categorias where restaurante_id = v_rest and nombre = 'Empanadas y tequeños' limit 1;
  select id into v_dulces  from public.categorias where restaurante_id = v_rest and nombre = 'Dulces criollos' limit 1;
  select id into v_bebidas from public.categorias where restaurante_id = v_rest and nombre = 'Bebidas' limit 1;

  -- ---- Apagar lo que no cuadra con la historia (no se borra: hay pedidos viejos) ----
  update public.productos set disponible = false
   where restaurante_id = v_rest and nombre in ('Hamburguesa Clasica', 'Refresco 355ml');

  -- ---- Arepas (la historia de la landing: reina pepiada, pelua) ----
  update public.productos set
    categoria_id = v_arepas, precio_usd = 3.50, disponible = true, orden = 1,
    descripcion = 'La reina de la casa: pollo, aguacate y mayonesa. Como debe ser.',
    opciones = '[{"nombre":"Ponle mas sabor","tipo":"multi","obligatorio":false,"max":3,"opciones":[{"nombre":"Queso rallado","precio_extra":0.5},{"nombre":"Aguacate extra","precio_extra":0.7},{"nombre":"Tajadas","precio_extra":0.6}]}]'::jsonb
  where restaurante_id = v_rest and nombre = 'Arepa Reina Pepiada';

  update public.productos set
    categoria_id = v_arepas, precio_usd = 4.20, disponible = true, orden = 2,
    descripcion = 'Carne mechada y queso amarillo rallado. La consentida.',
    opciones = '[{"nombre":"Ponle mas sabor","tipo":"multi","obligatorio":false,"max":3,"opciones":[{"nombre":"Queso extra","precio_extra":0.5},{"nombre":"Aguacate","precio_extra":0.7},{"nombre":"Tajadas","precio_extra":0.6}]}]'::jsonb
  where restaurante_id = v_rest and nombre = 'Arepa Pelúa';

  update public.productos set
    categoria_id = v_arepas, precio_usd = 3.00, disponible = true, orden = 3,
    descripcion = 'Caraotas negras y queso blanco rallado. Un clasico que no falla.',
    opciones = '[]'::jsonb
  where restaurante_id = v_rest and nombre = 'Arepa Dominó';

  insert into public.productos (restaurante_id, categoria_id, nombre, descripcion, precio_usd, disponible, orden, opciones)
  select v_rest, v_arepas, 'Arepa armala tu', 'Empieza con la arepa recien salida del budare y armala a tu gusto.', 2.00, true, 4,
    '[{"nombre":"Elige tu proteina","tipo":"single","obligatorio":true,"opciones":[{"nombre":"Carne mechada","precio_extra":1.5},{"nombre":"Pollo mechado","precio_extra":1.2},{"nombre":"Queso de mano","precio_extra":1.0},{"nombre":"Perico","precio_extra":0.8}]},{"nombre":"Ponle mas sabor","tipo":"multi","obligatorio":false,"max":3,"opciones":[{"nombre":"Queso rallado","precio_extra":0.5},{"nombre":"Aguacate","precio_extra":0.7},{"nombre":"Tajadas","precio_extra":0.6}]}]'::jsonb
   where not exists (select 1 from public.productos where restaurante_id = v_rest and nombre = 'Arepa armala tu');

  -- ---- Empanadas (modelo cantidad: cuantas de cada una) y tequeños ----
  insert into public.productos (restaurante_id, categoria_id, nombre, descripcion, precio_usd, disponible, orden, opciones)
  select v_rest, v_empa, 'Empanadas criollas', 'Fritas al momento, crujientes. Pide cuantas quieras de cada sabor.', 0, true, 1,
    '[{"nombre":"Cuantas de cada una","tipo":"cantidad","opciones":[{"nombre":"Queso","precio_extra":1.2},{"nombre":"Pollo","precio_extra":1.5},{"nombre":"Pabellon","precio_extra":1.8},{"nombre":"Cazon","precio_extra":2.0}]}]'::jsonb
   where not exists (select 1 from public.productos where restaurante_id = v_rest and nombre = 'Empanadas criollas');

  insert into public.productos (restaurante_id, categoria_id, nombre, descripcion, precio_usd, disponible, orden)
  select v_rest, v_empa, 'Tequeños (6 unidades)', 'Media docena de tequeños dorados con queso que estira.', 3.00, true, 2
   where not exists (select 1 from public.productos where restaurante_id = v_rest and nombre = 'Tequeños (6 unidades)');

  -- ---- Dulces criollos ----
  insert into public.productos (restaurante_id, categoria_id, nombre, descripcion, precio_usd, disponible, orden)
  select v_rest, v_dulces, 'Marquesa de chocolate', 'Fria, cremosa y con bastante chocolate. El final feliz.', 2.50, true, 1
   where not exists (select 1 from public.productos where restaurante_id = v_rest and nombre = 'Marquesa de chocolate');

  insert into public.productos (restaurante_id, categoria_id, nombre, descripcion, precio_usd, disponible, orden)
  select v_rest, v_dulces, 'Quesillo casero', 'Con su caramelo brillante, como el de las abuelas.', 2.00, true, 2
   where not exists (select 1 from public.productos where restaurante_id = v_rest and nombre = 'Quesillo casero');

  -- ---- Bebidas ----
  insert into public.productos (restaurante_id, categoria_id, nombre, descripcion, precio_usd, disponible, orden)
  select v_rest, v_bebidas, 'Papelon con limon', 'Bien frio, dulcito y con su toque de limon. El de la landing.', 1.00, true, 1
   where not exists (select 1 from public.productos where restaurante_id = v_rest and nombre = 'Papelon con limon');

  insert into public.productos (restaurante_id, categoria_id, nombre, descripcion, precio_usd, disponible, orden)
  select v_rest, v_bebidas, 'Chicha venezolana', 'Cremosa, con canela y leche condensada por encima.', 1.50, true, 2
   where not exists (select 1 from public.productos where restaurante_id = v_rest and nombre = 'Chicha venezolana');

  update public.productos set precio_usd = 1.80, orden = 3, disponible = true,
    descripcion = 'Natural, recien licuado. Acido y dulce en su punto.'
  where restaurante_id = v_rest and nombre = 'Jugo de parchita';

  update public.productos set precio_usd = 1.20, orden = 4, disponible = true
  where restaurante_id = v_rest and nombre = 'Refresco';
end $$;
