-- MENU NUEVO DE AREPA POWER, PARTE 4 DE 4: LAS AREPAS.
--
-- Fuente: el arte impreso del 2026-07-30, pagina de "MENU AREPAS", y la regla
-- que dio Gilberto de parte del dueño: una proteina, una ensalada y un queso
-- por cinco dolares, y todo lo que se agregue aparte cuenta $1,50.
--
-- Esto NO es un cambio de precios, es un cambio de como se cobra. Antes habia
-- cuatro arepas distintas (Sencilla $5, Completa $6, Pernil $6, Mariscos $6).
-- Ahora hay UNA sola a $5 donde el cliente arma la suya, que es lo que dice el
-- papel y lo que el negocio esta cobrando.
--
-- POR QUE SOBREVIVE LA "AREPA COMPLETA" Y NO LA SENCILLA:
-- la Completa es la unica que tiene cargadas las 55 recetas del cerebro de
-- costos, y la llave foranea de recetas_productos borra en CASCADE. Si se
-- borra ese producto, se va el trabajo de costos completo. Asi que esa es la
-- que se renombra a "Arepa" y hereda el modelo nuevo.
--
-- LAS OTRAS TRES SE APAGAN, NO SE BORRAN: entre las tres tienen 131 renglones
-- de pedidos apuntandoles. El pedido viejo no pierde nada al borrarlas (guarda
-- nombre y precio congelados), pero si se pierde el enlace, y con el los
-- reportes que agrupan por producto. Apagadas, el cliente no las ve y el
-- historial queda entero.
--
-- Sobre los "ESPECIALES" del arte: el recuadro lista Rikesa, Diablito, Pernil,
-- Diablitos, Camaron, Pork Belly BBQ y Huevo de codorniz a $1,50. Pernil,
-- Camaron y Pork Belly BBQ ya son proteinas del menu, asi que agregarlos ya
-- esta cubierto por el grupo de "otra proteina" al mismo precio; ponerlos dos
-- veces solo lograria que el cliente los vea repetidos. Y "Diablito" y
-- "Diablitos" son el mismo producto impreso dos veces. En el grupo de
-- especiales quedan entonces los tres que no son proteina: Rikesa, Diablitos y
-- Huevo de codorniz.

do $$
declare
  v_rest uuid;
  v_arepas uuid;
  -- Las tres listas del arte. Se declaran una vez y se usan en los grupos de
  -- "incluido" (a $0) y en los de "agregado" (a $1,50), para que no puedan
  -- quedar desparejas.
  v_proteinas text[] := array[
    'Mechada', 'Lengua Guisada', 'Milanesa de pollo', 'Chuleta Ahumada',
    'Pernil', 'Pollo Mechado', 'Tocineta', 'Mollejita', 'Chorizo',
    'Carne de Parrilla', 'Asado Negro', 'Vaina con Vaina', 'Pork Belly BBQ',
    'Camarones'];
  v_ensaladas text[] := array['Gallina', 'Reina Pepiada', 'Hechizada'];
  v_quesos text[] := array[
    'Queso cuajada', 'Queso palmito', 'Queso guayanés', 'Queso de mano',
    'Queso amarillo', 'Salchicha', 'Chorizo'];
  v_especiales text[] := array['Rikesa', 'Diablitos', 'Huevo de codorniz'];
begin
  select id into strict v_rest from public.restaurantes where nombre = 'Arepa Power Restaurant';
  select id into strict v_arepas from public.categorias
   where restaurante_id = v_rest and nombre = 'Arepas';

  -- ===== La arepa unica =====
  update public.productos
     set nombre = 'Arepa',
         precio_usd = 5,
         descripcion = 'Una proteína, una ensalada y un queso, todo incluido. Cada agregado suma $1.50.',
         disponible = true,
         orden = 1,
         opciones = jsonb_build_array(
           jsonb_build_object(
             'nombre', 'Elige tu proteína (incluida)',
             'tipo', 'single', 'obligatorio', true, 'max', 1,
             'opciones', (select jsonb_agg(jsonb_build_object('nombre', n, 'precio_extra', 0) order by i)
                            from unnest(v_proteinas) with ordinality as t(n, i))),
           jsonb_build_object(
             'nombre', 'Elige tu ensalada (incluida)',
             'tipo', 'single', 'obligatorio', false, 'max', 1,
             'opciones', (select jsonb_agg(jsonb_build_object('nombre', n, 'precio_extra', 0) order by i)
                            from unnest(v_ensaladas) with ordinality as t(n, i))),
           jsonb_build_object(
             'nombre', 'Elige tu queso (incluido)',
             'tipo', 'single', 'obligatorio', false, 'max', 1,
             'opciones', (select jsonb_agg(jsonb_build_object('nombre', n, 'precio_extra', 0) order by i)
                            from unnest(v_quesos) with ordinality as t(n, i))),
           jsonb_build_object(
             'nombre', '¿Otra proteína? (+$1.50 c/u)',
             'tipo', 'multi', 'obligatorio', false, 'max', null,
             'opciones', (select jsonb_agg(jsonb_build_object('nombre', n, 'precio_extra', 1.5) order by i)
                            from unnest(v_proteinas) with ordinality as t(n, i))),
           jsonb_build_object(
             'nombre', '¿Otra ensalada o queso? (+$1.50 c/u)',
             'tipo', 'multi', 'obligatorio', false, 'max', null,
             'opciones', (select jsonb_agg(jsonb_build_object('nombre', n, 'precio_extra', 1.5) order by i)
                            from unnest(v_ensaladas || v_quesos) with ordinality as t(n, i))),
           jsonb_build_object(
             'nombre', 'Especiales (+$1.50 c/u)',
             'tipo', 'multi', 'obligatorio', false, 'max', null,
             'opciones', (select jsonb_agg(jsonb_build_object('nombre', n, 'precio_extra', 1.5) order by i)
                            from unnest(v_especiales) with ordinality as t(n, i)))
         )
   where restaurante_id = v_rest and nombre = 'Arepa Completa';

  -- ===== Las tres que salen de la carta =====
  update public.productos
     set disponible = false
   where restaurante_id = v_rest
     and categoria_id = v_arepas
     and nombre in ('Arepa Sencilla', 'Arepa de Pernil', 'Arepa de Mariscos');
end $$;
