import { createClient } from '@supabase/supabase-js';
const URL = process.env.VITE_SUPABASE_URL || 'http://127.0.0.1:54321';
const ANON =
  process.env.VITE_SUPABASE_ANON_KEY || process.env.SUPABASE_ANON_KEY || '';
const REST = '11111111-1111-1111-1111-111111111111';
let fallos = 0;
const check = (c, m) => {
  console.log((c ? '  OK  ' : '  XX  ') + m);
  if (!c) fallos++;
};
const anon = createClient(URL, ANON, { auth: { persistSession: false } });

const { data: prods } = await anon.from('productos').select('id').eq('restaurante_id', REST).limit(1);
const { data: cr } = await anon.rpc('crear_pedido', {
  p_restaurante_id: REST,
  p_cliente_nombre: 'Comensal',
  p_cliente_telefono: '04141234567',
  p_tipo_entrega: 'pickup',
  p_metodo_pago: 'pago_movil',
  p_items: [{ producto_id: prods[0].id, cantidad: 1 }],
});
const pedidoId = cr[0].pedido_id;

let { data: dp } = await anon.rpc('pedido_datos_pago', { p_pedido_id: pedidoId });
const d = dp[0];
check(d.metodo_pago === 'pago_movil', 'Comensal ve el metodo de pago');
check(d.pago_estado === 'pendiente', 'Pago inicia en "pendiente"');
check(!!d.datos_pago?.telefono && !!d.datos_pago?.banco, 'Comensal ve los datos de la cuenta (banco/telefono): ' + JSON.stringify(d.datos_pago));

const { error: eReg } = await anon.rpc('registrar_comprobante', {
  p_pedido_id: pedidoId,
  p_referencia: 'REF-000123',
  p_comprobante_url: `${pedidoId}/captura.jpg`,
});
check(!eReg, 'Comensal registra su comprobante ' + (eReg?.message ?? ''));

({ data: dp } = await anon.rpc('pedido_datos_pago', { p_pedido_id: pedidoId }));
check(dp[0].pago_estado === 'verificando', 'El pago pasa a "verificando"');

const dueno = createClient(URL, ANON, { auth: { persistSession: false } });
await dueno.auth.signInWithPassword({ email: 'dueno@laesquina.com', password: 'Dueno1234' });
const { data: ped } = await dueno.from('pedidos').select('*, pagos(*)').eq('id', pedidoId).maybeSingle();
const pg = ped.pagos[0];
check(pg.referencia === 'REF-000123' && !!pg.comprobante_url, 'El dueno ve la referencia y el comprobante');

console.log('\n' + (fallos === 0 ? 'PAGO OK' : `${fallos} FALLO(S)`));
process.exit(fallos === 0 ? 0 : 1);
