-- MENU NUEVO DE AREPA POWER, PARTE 3 DE 4:
-- CACHAPAS, SOPAS, COCHINO AL BARRIL, PARRILLAS Y PORK BELLY.
--
-- Fuente: el arte impreso del 2026-07-30, pagina de "CACHAPAS Y PARRILLAS".
-- Instruccion de Gilberto: el arte manda, todo esto esta remodelado.
--
-- Un criterio de fondo en esta parte: donde el arte cambia lo que TRAE cada
-- tamaño (la parrilla individual no lleva salsa de ajo, la de 1 kg si; la de
-- 1 kg ademas trae natilla y arepitas), va un producto por presentacion con su
-- propia descripcion, no un producto con opcion de peso. Si se resuelve con
-- una opcion de peso, esa diferencia se pierde y termina siendo el mesero
-- quien tiene que acordarse de memoria que trae cada una.
--
-- Lo que NO entra aca, por falta de dato y a proposito:
--   - El tercer Pork Belly. El arte imprime dos veces "1/2G PORK BELLY", una a
--     $13 y otra a $8. Cargar dos lineas iguales con precios distintos deja al
--     cliente sin saber cual pedir. Van solo el de 1 kg y el de 1/2 kg hasta
--     que Gilberto diga que es el de $8 (todo indica que es 1/4).
--   - Los precios de los contornos (chinchurria, morcilla, chorizo, cochino
--     frito, cochino al barril): en el arte el recuadro quedo en blanco.
--
-- Pollo Asado, Punta de Cerdo y Chicharron no aparecen en el arte nuevo. Se
-- OCULTAN al cliente, no se borran: quitar categorias enteras de comida es una
-- decision de negocio, y si el negocio las sigue vendiendo por telefono se
-- vuelven a encender con una linea. Si Gilberto dice que se van del todo, se
-- borran en la parte 4.

do $$
declare
  v_rest uuid;
  v_barril uuid;
  v_barril_orden int;
  v_parrillas uuid;
  v_porkbelly uuid;
  v_sopas uuid;
begin
  select id into strict v_rest from public.restaurantes where nombre = 'Arepa Power Restaurant';

  -- ===== 1. Cachapas: los siete tipos del arte =====
  -- El producto vale 0 y el precio real vive en el tipo elegido, que es como
  -- estaba armado. Lo que cambia es la lista entera: los nombres viejos
  -- (Triple Play, Hit Al Jardin, La Home Run) no existen en el menu nuevo.
  update public.productos
     set descripcion = 'Cachapa de jojoto, hecha al momento.',
         opciones = jsonb_build_array(jsonb_build_object(
           'nombre', 'Elige tu cachapa',
           'tipo', 'cantidad',
           'obligatorio', true,
           'max', null,
           'opciones', jsonb_build_array(
             jsonb_build_object('nombre', 'Sola', 'precio_extra', 2),
             jsonb_build_object('nombre', 'Con queso rallado', 'precio_extra', 4.5),
             jsonb_build_object('nombre', 'Con queso de mano grande de 250gr', 'precio_extra', 7),
             jsonb_build_object('nombre', 'Con queso de mano extra grande de 500gr', 'precio_extra', 10),
             jsonb_build_object('nombre', 'Margarita: queso de mano 250gr, carne mechada, jamón y queso amarillo', 'precio_extra', 10),
             jsonb_build_object('nombre', 'Queso de mano 250gr, natilla y ración de cochino frito', 'precio_extra', 10),
             jsonb_build_object('nombre', 'Queso de mano 250gr, natilla y ración de cochino al barril', 'precio_extra', 13)
           )))
   where restaurante_id = v_rest and nombre = 'Cachapa';

  -- ===== 2. Sopas: pequeña y grande, sin sabores =====
  -- El menu nuevo ya no distingue costilla de picadillo, solo el tamaño.
  select id into strict v_sopas from public.categorias
   where restaurante_id = v_rest and nombre = 'Sopas';

  delete from public.productos
   where restaurante_id = v_rest and nombre in ('Costilla de Res', 'Picadillo Llanero');

  insert into public.productos (restaurante_id, categoria_id, nombre, descripcion, precio_usd, disponible, orden)
  select v_rest, v_sopas, x.nombre, x.descripcion, x.precio, true, x.orden
    from (values
      ('Sopa pequeña', 'Contiene arepitas y limón.', 4::numeric, 1),
      ('Sopa grande',  'Contiene arepitas y limón.', 5::numeric, 2)
    ) as x(nombre, descripcion, precio, orden)
   where not exists (select 1 from public.productos p
                      where p.restaurante_id = v_rest and p.nombre = x.nombre);

  -- ===== 3. Cochino al Barril =====
  -- La categoria se llamaba "Carnes Al Barril" y tenia un solo producto con
  -- opcion de peso a precio 0. El arte le pone nombre propio y precio a cada
  -- presentacion.
  update public.categorias set nombre = 'Cochino al Barril'
   where restaurante_id = v_rest and nombre = 'Carnes Al Barril';

  select id, orden into strict v_barril, v_barril_orden from public.categorias
   where restaurante_id = v_rest and nombre = 'Cochino al Barril';

  delete from public.productos
   where restaurante_id = v_rest and nombre = 'Carne Al Barril';

  insert into public.productos (restaurante_id, categoria_id, nombre, descripcion, precio_usd, disponible, orden)
  select v_rest, v_barril, x.nombre, x.descripcion, x.precio, true, x.orden
    from (values
      ('Cochino al barril individual', 'Yuca o tostón, ensalada, guasacaca, chimichurri. Café por parte de la casa.', 8::numeric, 1),
      ('Cochino al barril 1/2 kg', 'Yuca o tostón, ensalada, guasacaca, salsa de ajo, chimichurri. Café por parte de la casa.', 16::numeric, 2),
      ('Cochino al barril 1 kg', 'Yuca o tostón, arepitas, ensalada, guasacaca, salsa de ajo, chimichurri, natilla. Café por parte de la casa.', 32::numeric, 3)
    ) as x(nombre, descripcion, precio, orden)
   where not exists (select 1 from public.productos p
                      where p.restaurante_id = v_rest and p.nombre = x.nombre);

  -- ===== 4. Parrillas y Pork Belly, categorias nuevas =====
  -- Van pegadas al cochino al barril, que es como estan en el papel.
  if not exists (select 1 from public.categorias
                  where restaurante_id = v_rest and nombre = 'Parrillas') then
    update public.categorias set orden = orden + 2
     where restaurante_id = v_rest and orden > v_barril_orden;

    insert into public.categorias (restaurante_id, nombre, orden, grupo, a_cocina)
    values (v_rest, 'Parrillas',  v_barril_orden + 1, 'comida', true),
           (v_rest, 'Pork Belly', v_barril_orden + 2, 'comida', true);
  end if;

  select id into strict v_parrillas from public.categorias
   where restaurante_id = v_rest and nombre = 'Parrillas';
  select id into strict v_porkbelly from public.categorias
   where restaurante_id = v_rest and nombre = 'Pork Belly';

  insert into public.productos (restaurante_id, categoria_id, nombre, descripcion, precio_usd, disponible, orden)
  select v_rest, x.cat, x.nombre, x.descripcion, x.precio, true, x.orden
    from (values
      (v_parrillas, 'Parrilla individual',
       'Carne, cochino, chorizo, ensalada, yuca, guasacaca. Café por parte de la casa.', 7::numeric, 1),
      (v_parrillas, 'Parrilla 1/2 kg',
       'Carne, cochino, chorizo, chinchurria, ensalada, yuca, tostón, guasacaca, salsa de ajo, chimichurri. Café por parte de la casa.', 15::numeric, 2),
      (v_parrillas, 'Parrilla extra familiar 1 kg',
       'Chinchurria, carne, cochino, chorizo, tostón, guasacaca, salsa de ajo, natilla, arepitas y limón. Café por parte de la casa.', 30::numeric, 3),
      (v_porkbelly, 'Pork Belly 1 kg',  'Pork belly de la casa, por kilo.',  25::numeric, 1),
      (v_porkbelly, 'Pork Belly 1/2 kg','Pork belly de la casa, medio kilo.',13::numeric, 2)
    ) as x(cat, nombre, descripcion, precio, orden)
   where not exists (select 1 from public.productos p
                      where p.restaurante_id = v_rest and p.nombre = x.nombre);

  -- ===== 5. Lo que el arte nuevo ya no muestra =====
  -- Se apagan, no se borran. Ver la nota de arriba.
  update public.productos p
     set disponible = false
    from public.categorias c
   where c.id = p.categoria_id
     and p.restaurante_id = v_rest
     and c.nombre in ('Pollo Asado', 'Punta de cerdo', 'Chicharrón');
end $$;
