-- ============================================================================
-- ASISMA CRM - Datos de Demostración
-- ============================================================================
-- Carga datos ficticios realistas para pruebas y revisión de UX.
-- Usuarios demo (password: demo1234):
--   demo.admin@asisma.cl      (admin)
--   maria.torres@partnersur.cl (franquiciado, Partner Sur)
--   carla.munoz@partnersur.cl  (vendedor, Partner Sur)
--   diego.soto@partnersur.cl   (vendedor, Partner Sur)
--   pamela.rojas@andes.cl      (vendedor, Comercial Andes)
--   pedro.pino@prueba.cl       (vendedor, Empresa de prueba)
--
-- Para limpiar: los registros demo usan correos @partnersur.cl / @andes.cl /
-- demo.admin@asisma.cl y RUTs 76111222-3 / 76333444-5 (ver docs/DEMO.md).
-- ============================================================================

USE asisma_crm;

-- ── Empresas franquiciadas ──────────────────────────────────────────────────
INSERT INTO empresas_franquiciados (razon_social, nombre_fantasia, rut, email, telefono, direccion, activa)
VALUES ('Partner Sur SpA', 'Partner Sur', '76111222-3', 'contacto@partnersur.cl', '+56922222222', 'Av. Providencia 1234, Santiago', 1);
SET @ef_partner = LAST_INSERT_ID();

INSERT INTO empresas_franquiciados (razon_social, nombre_fantasia, rut, email, telefono, direccion, activa)
VALUES ('Comercial Andes Ltda', 'Comercial Andes', '76333444-5', 'ventas@andes.cl', '+56933333333', 'Calle Estado 567, Santiago', 1);
SET @ef_andes = LAST_INSERT_ID();

-- ── Franquiciados (zonas de operación) ──────────────────────────────────────
-- Región Metropolitana (7) + Tecnología (1): dos franquiciados para probar cascada
INSERT INTO franquiciados (empresa_madre_id, region_id, vertical_id, estado, tiempo_toma_lead, prioridad)
VALUES (@ef_partner, 7, 1, 'activo', 300, 10);
SET @f_partner_rm = LAST_INSERT_ID();

INSERT INTO franquiciados (empresa_madre_id, region_id, vertical_id, estado, tiempo_toma_lead, prioridad)
VALUES (@ef_andes, 7, 1, 'activo', 300, 5);
SET @f_andes_rm = LAST_INSERT_ID();

-- Valparaíso (6) + Servicios Médicos (2)
INSERT INTO franquiciados (empresa_madre_id, region_id, vertical_id, estado, tiempo_toma_lead, prioridad)
VALUES (@ef_partner, 6, 2, 'activo', 600, 5);
SET @f_partner_v = LAST_INSERT_ID();

-- ── Usuarios (password: demo1234) ───────────────────────────────────────────
INSERT INTO usuarios (empresa_id, franquiciado_id, rol, nombre, email, password_hash, telefono, activo)
VALUES (1, NULL, 'admin', 'Demo Admin', 'demo.admin@asisma.cl', '$2y$10$NeVf3UQTs4cdh8SWFvWVge0v8w0rnlAQwKTNpRM.7tXlPcbZIkXjG', '+56900000000', 1);

INSERT INTO usuarios (empresa_id, franquiciado_id, rol, nombre, email, password_hash, telefono, activo)
VALUES (@ef_partner, @f_partner_rm, 'franquiciado', 'María Torres', 'maria.torres@partnersur.cl', '$2y$10$NeVf3UQTs4cdh8SWFvWVge0v8w0rnlAQwKTNpRM.7tXlPcbZIkXjG', '+56911111100', 1);

INSERT INTO usuarios (empresa_id, franquiciado_id, rol, nombre, email, password_hash, telefono, activo)
VALUES (@ef_partner, @f_partner_rm, 'vendedor', 'Carla Muñoz', 'carla.munoz@partnersur.cl', '$2y$10$NeVf3UQTs4cdh8SWFvWVge0v8w0rnlAQwKTNpRM.7tXlPcbZIkXjG', '+56911111101', 1);
SET @u_carla = LAST_INSERT_ID();

INSERT INTO usuarios (empresa_id, franquiciado_id, rol, nombre, email, password_hash, telefono, activo)
VALUES (@ef_partner, @f_partner_rm, 'vendedor', 'Diego Soto', 'diego.soto@partnersur.cl', '$2y$10$NeVf3UQTs4cdh8SWFvWVge0v8w0rnlAQwKTNpRM.7tXlPcbZIkXjG', '+56911111102', 1);
SET @u_diego = LAST_INSERT_ID();

INSERT INTO usuarios (empresa_id, franquiciado_id, rol, nombre, email, password_hash, telefono, activo)
VALUES (@ef_andes, @f_andes_rm, 'vendedor', 'Pamela Rojas', 'pamela.rojas@andes.cl', '$2y$10$NeVf3UQTs4cdh8SWFvWVge0v8w0rnlAQwKTNpRM.7tXlPcbZIkXjG', '+56911111103', 1);
SET @u_pamela = LAST_INSERT_ID();

INSERT INTO usuarios (empresa_id, franquiciado_id, rol, nombre, email, password_hash, telefono, activo)
VALUES (2, 1, 'vendedor', 'Pedro Pino', 'pedro.pino@prueba.cl', '$2y$10$NeVf3UQTs4cdh8SWFvWVge0v8w0rnlAQwKTNpRM.7tXlPcbZIkXjG', '+56911111104', 1);
SET @u_pedro = LAST_INSERT_ID();

-- ── Colas de asignación ─────────────────────────────────────────────────────
INSERT INTO cola_asignacion (franquiciado_id, usuario_id, orden, activo) VALUES
(@f_partner_rm, @u_carla, 1, 1),
(@f_partner_rm, @u_diego, 2, 1),
(@f_andes_rm,   @u_pamela, 1, 1),
(1,             @u_pedro, 1, 1);

-- ── Empresas cliente (prospectos) ───────────────────────────────────────────
INSERT INTO empresas (rut, razon_social, nombre_fantasia, giro, direccion, region_id, telefono, email)
VALUES ('77000111-2', 'Farmacia San Pablo Ltda', 'Farmacia San Pablo', 'Venta de productos farmacéuticos', 'Av. Independencia 2345, Santiago', 7, '+56944444401', 'gerencia@fsanpablo.cl');
SET @emp_farmacia = LAST_INSERT_ID();

INSERT INTO empresas (rut, razon_social, nombre_fantasia, giro, direccion, region_id, telefono, email)
VALUES ('77000333-4', 'Clínica Dental Sonrisa SpA', 'Clínica Sonrisa', 'Servicios odontológicos', 'Calle Valparaíso 890, Viña del Mar', 6, '+56944444402', 'contacto@sonrisa.cl');
SET @emp_clinica = LAST_INSERT_ID();

INSERT INTO empresas (rut, razon_social, nombre_fantasia, giro, direccion, region_id, telefono, email)
VALUES ('77000555-6', 'Minimarket El Sol EIRL', 'Minimarket El Sol', 'Comercio minorista', 'Los Carrera 456, Concepción', 11, '+56944444403', 'elsol@correo.cl');
SET @emp_mini = LAST_INSERT_ID();

-- ── Contactos ───────────────────────────────────────────────────────────────
INSERT INTO contactos (empresa_id, nombre, cargo, telefono, correo, es_principal, activo)
VALUES (@emp_farmacia, 'Roberto Fuentes', 'Gerente General', '+56944444401', 'rfuentes@fsanpablo.cl', 1, 1);
SET @c_roberto = LAST_INSERT_ID();

INSERT INTO contactos (empresa_id, nombre, cargo, telefono, correo, es_principal, activo)
VALUES (@emp_clinica, 'Dra. Ana Salazar', 'Directora', '+56944444402', 'asalazar@sonrisa.cl', 1, 1);
SET @c_ana = LAST_INSERT_ID();

INSERT INTO contactos (empresa_id, nombre, cargo, telefono, correo, es_principal, activo)
VALUES (@emp_mini, 'Luis Herrera', 'Dueño', '+56944444403', 'lherrera@correo.cl', 1, 1);
SET @c_luis = LAST_INSERT_ID();

INSERT INTO contactos (empresa_id, nombre, cargo, telefono, correo, es_principal, activo)
VALUES (NULL, 'Claudia Reyes', NULL, '+56944444404', 'claudia.reyes@gmail.com', 1, 1);
SET @c_claudia = LAST_INSERT_ID();

INSERT INTO contactos (empresa_id, nombre, cargo, telefono, correo, es_principal, activo)
VALUES (NULL, 'Marcos Vidal', NULL, '+56944444405', NULL, 1, 1);
SET @c_marcos = LAST_INSERT_ID();

-- ── Leads en distintos estados ──────────────────────────────────────────────

-- 1) Lead CONTACTADO asignado a Carla (Partner Sur RM / Tecnología), datos liberados
INSERT INTO leads (empresa_id, contacto_id, franquiciado_id, usuario_asignado_id, origen, region_id,
                   vertical_interes, marca_interes, producto_interes, estado_embudo,
                   telefono_enmascarado, telefono_real, correo_enmascarado, correo_real,
                   datos_liberados, datos_liberados_at, created_at)
VALUES (@emp_farmacia, @c_roberto, @f_partner_rm, @u_carla, 'web', 7, 1, 1, 1, 'contactado',
        '****4401', '+56944444401', 'rf*******@fsanpablo.cl', 'rfuentes@fsanpablo.cl',
        1, NOW() - INTERVAL 3 DAY, NOW() - INTERVAL 4 DAY);
SET @lead_contactado = LAST_INSERT_ID();

INSERT INTO asignaciones_lead (lead_id, franquiciado_id, usuario_id, estado, asignado_at, respondido_at, timeout_segundos)
VALUES (@lead_contactado, @f_partner_rm, @u_carla, 'aceptado', NOW() - INTERVAL 4 DAY, NOW() - INTERVAL 3 DAY, 300);

INSERT INTO actividades_crm (lead_id, usuario_id, tipo, direccion, asunto, detalles, created_at) VALUES
(@lead_contactado, NULL, 'sistema', 'interna', 'Prospecto captado vía API', 'Lead recibido por la API de captación. Origen: web.', NOW() - INTERVAL 4 DAY),
(@lead_contactado, NULL, 'sistema', 'interna', 'Asignación automática (rotación)', 'Lead asignado por cascada a Partner Sur, vendedora Carla Muñoz.', NOW() - INTERVAL 4 DAY),
(@lead_contactado, @u_carla, 'sistema', 'interna', 'Datos liberados', 'El franquiciado aceptó el lead y accedió a los datos de contacto reales.', NOW() - INTERVAL 3 DAY),
(@lead_contactado, @u_carla, 'llamada', 'saliente', 'Primera llamada de contacto', 'Cliente interesado en digitalizar el control de inventario de su farmacia. Pide demo la próxima semana.', NOW() - INTERVAL 2 DAY);

-- 2) Lead COTIZADO asignado a Diego, con cotización enviada
INSERT INTO leads (empresa_id, contacto_id, franquiciado_id, usuario_asignado_id, origen, region_id,
                   vertical_interes, marca_interes, producto_interes, estado_embudo,
                   telefono_enmascarado, telefono_real, correo_enmascarado, correo_real,
                   datos_liberados, datos_liberados_at, created_at)
VALUES (NULL, @c_claudia, @f_partner_rm, @u_diego, 'meta', 7, 1, 1, 2, 'cotizado',
        '****4404', '+56944444404', 'cl*********@gmail.com', 'claudia.reyes@gmail.com',
        1, NOW() - INTERVAL 6 DAY, NOW() - INTERVAL 7 DAY);
SET @lead_cotizado = LAST_INSERT_ID();

INSERT INTO asignaciones_lead (lead_id, franquiciado_id, usuario_id, estado, asignado_at, respondido_at, timeout_segundos)
VALUES (@lead_cotizado, @f_partner_rm, @u_diego, 'aceptado', NOW() - INTERVAL 7 DAY, NOW() - INTERVAL 6 DAY, 300);

INSERT INTO cotizaciones (lead_id, franquiciado_id, usuario_id, hash, productos_json, subtotal,
                          descuento_valor, descuento_tipo, impuesto_pct, total, moneda, notas,
                          validez_horas, vencimiento_at, estado, created_at)
VALUES (@lead_cotizado, @f_partner_rm, @u_diego, MD5(CONCAT('demo-cot-1-', NOW())),
        '[{"id":2,"nombre":"Control Pyme Implementación","cantidad":1,"precio":75000,"total":75000}]',
        75000.00, 0.00, 'fijo', 19.00, 89250.00, 'CLP', 'Incluye capacitación inicial de 2 horas.',
        72, NOW() + INTERVAL 48 HOUR, 'enviada', NOW() - INTERVAL 2 DAY);

INSERT INTO actividades_crm (lead_id, usuario_id, tipo, direccion, asunto, detalles, created_at) VALUES
(@lead_cotizado, NULL, 'sistema', 'interna', 'Prospecto creado', 'Lead ingresado desde campaña Meta Ads.', NOW() - INTERVAL 7 DAY),
(@lead_cotizado, @u_diego, 'whatsapp', 'saliente', 'WhatsApp enviado', 'Hola Claudia, te envío la cotización del plan de implementación que conversamos.', NOW() - INTERVAL 2 DAY),
(@lead_cotizado, @u_diego, 'sistema', 'interna', 'Cambio de estado', 'Estado cambiado a: Cotizado', NOW() - INTERVAL 2 DAY);

-- 3) Lead GANADO (Empresa de prueba, Biobío/Retail) con operación post-venta
INSERT INTO leads (empresa_id, contacto_id, franquiciado_id, usuario_asignado_id, origen, region_id,
                   vertical_interes, marca_interes, producto_interes, estado_embudo,
                   telefono_enmascarado, telefono_real, correo_enmascarado, correo_real,
                   datos_liberados, datos_liberados_at, created_at)
VALUES (@emp_mini, @c_luis, 1, @u_pedro, 'referido', 11, 3, NULL, NULL, 'ganado',
        '****4403', '+56944444403', 'lh******@correo.cl', 'lherrera@correo.cl',
        1, NOW() - INTERVAL 20 DAY, NOW() - INTERVAL 25 DAY);
SET @lead_ganado = LAST_INSERT_ID();

INSERT INTO asignaciones_lead (lead_id, franquiciado_id, usuario_id, estado, asignado_at, respondido_at, timeout_segundos)
VALUES (@lead_ganado, 1, @u_pedro, 'aceptado', NOW() - INTERVAL 25 DAY, NOW() - INTERVAL 24 DAY, 300);

INSERT INTO actividades_crm (lead_id, usuario_id, tipo, direccion, asunto, detalles, created_at) VALUES
(@lead_ganado, NULL, 'sistema', 'interna', 'Prospecto creado', 'Referido por cliente existente.', NOW() - INTERVAL 25 DAY),
(@lead_ganado, @u_pedro, 'reunion', 'saliente', 'Reunión presencial', 'Reunión en el local. Cliente decidió contratar.', NOW() - INTERVAL 21 DAY),
(@lead_ganado, @u_pedro, 'sistema', 'interna', 'Cambio de estado', 'Estado cambiado a: Ganado / Venta Realizada', NOW() - INTERVAL 20 DAY);

-- 4) Lead PERDIDO (precio)
INSERT INTO leads (empresa_id, contacto_id, franquiciado_id, usuario_asignado_id, origen, region_id,
                   vertical_interes, marca_interes, producto_interes, estado_embudo, motivo_perdida, nota_perdida,
                   telefono_enmascarado, telefono_real, correo_enmascarado, correo_real,
                   datos_liberados, datos_liberados_at, created_at)
VALUES (NULL, @c_marcos, @f_andes_rm, @u_pamela, 'whatsapp_directo', 7, 1, 1, 1, 'perdido', 'precio',
        'Cliente consideró alto el valor mensual; quedó de reevaluar el próximo trimestre.',
        '****4405', '+56944444405', NULL, NULL,
        1, NOW() - INTERVAL 10 DAY, NOW() - INTERVAL 12 DAY);
SET @lead_perdido = LAST_INSERT_ID();

INSERT INTO asignaciones_lead (lead_id, franquiciado_id, usuario_id, estado, asignado_at, respondido_at, timeout_segundos)
VALUES (@lead_perdido, @f_andes_rm, @u_pamela, 'aceptado', NOW() - INTERVAL 12 DAY, NOW() - INTERVAL 11 DAY, 300);

INSERT INTO actividades_crm (lead_id, usuario_id, tipo, direccion, asunto, detalles, created_at) VALUES
(@lead_perdido, @u_pamela, 'whatsapp', 'entrante', 'WhatsApp recibido', 'Hola, quiero información sobre el sistema para pymes.', NOW() - INTERVAL 12 DAY),
(@lead_perdido, @u_pamela, 'sistema', 'interna', 'Cambio de estado', 'Estado cambiado a: Perdido. Motivo: Precio muy elevado', NOW() - INTERVAL 10 DAY);

-- 5) Lead ASIGNADO pendiente de aceptar (para probar timeout con el cron)
INSERT INTO leads (empresa_id, contacto_id, franquiciado_id, usuario_asignado_id, origen, region_id,
                   vertical_interes, marca_interes, producto_interes, estado_embudo,
                   telefono_enmascarado, telefono_real, correo_enmascarado, correo_real,
                   datos_liberados, created_at)
VALUES (@emp_clinica, @c_ana, @f_partner_v, NULL, 'web', 6, 2, 2, 3, 'nuevo',
        '****4402', '+56944444402', 'as******@sonrisa.cl', 'asalazar@sonrisa.cl',
        0, NOW() - INTERVAL 1 HOUR);
SET @lead_nuevo = LAST_INSERT_ID();

INSERT INTO actividades_crm (lead_id, usuario_id, tipo, direccion, asunto, detalles, created_at) VALUES
(@lead_nuevo, NULL, 'sistema', 'interna', 'Prospecto captado vía API', 'Lead recibido desde el formulario web de ASISMA Salud.', NOW() - INTERVAL 1 HOUR);

-- Nota: el lead 5 quedará 'nuevo' con franquiciado ya fijado pero sin asignación formal;
-- se normaliza al correr el cron o al reasignar manualmente.
UPDATE leads SET franquiciado_id = NULL WHERE id = @lead_nuevo;

-- ── Mensajes WhatsApp demo (instancia + conversación) ───────────────────────
INSERT INTO whatsapp_instancias (franquiciado_id, nombre_instancia, api_url, api_token, telefono, estado, activa)
VALUES (NULL, 'demo-matriz', 'https://evolution-api-production-06ef.up.railway.app', '90347D24FF3D-4141-9E28-D5A62933982B', '+56900000001', 'desconectada', 1);
SET @wa_inst = LAST_INSERT_ID();

UPDATE leads SET wa_instance_id = @wa_inst WHERE id = @lead_cotizado;

INSERT INTO whatsapp_mensajes (lead_id, instancia_id, message_id, direccion, tipo, contenido, remitente, leido, created_at) VALUES
(@lead_cotizado, @wa_inst, 'demo_msg_1', 'entrante', 'text', 'Hola, vi su publicidad en Instagram. ¿Me pueden dar más información del sistema?', '56944444404', 1, NOW() - INTERVAL 3 DAY),
(@lead_cotizado, @wa_inst, 'demo_msg_2', 'saliente', 'text', '¡Hola Claudia! Claro que sí. Control Pyme te permite manejar inventario, ventas y facturación en un solo lugar. ¿Te parece si agendamos una demo?', '56944444404', 1, NOW() - INTERVAL 3 DAY + INTERVAL 10 MINUTE),
(@lead_cotizado, @wa_inst, 'demo_msg_3', 'entrante', 'text', 'Me interesa, ¿cuánto cuesta la implementación?', '56944444404', 1, NOW() - INTERVAL 2 DAY),
(@lead_cotizado, @wa_inst, 'demo_msg_4', 'saliente', 'text', 'Te acabo de enviar la cotización con el detalle. Cualquier duda me avisas 👍', '56944444404', 1, NOW() - INTERVAL 2 DAY + INTERVAL 5 MINUTE),
(@lead_cotizado, @wa_inst, 'demo_msg_5', 'entrante', 'text', 'Gracias, la reviso con mi socio y te cuento.', '56944444404', 0, NOW() - INTERVAL 1 DAY);

-- ── Cobros demo (módulo de consulta) ────────────────────────────────────────
INSERT INTO cobros_leads (franquiciado_id, lead_id, tipo, monto, estado, periodo, factura_referencia) VALUES
(@f_partner_rm, @lead_contactado, 'por_asignacion', 5000.00, 'cobrado', DATE_FORMAT(NOW() - INTERVAL 1 MONTH, '%Y-%m'), 'F-00123'),
(@f_partner_rm, @lead_cotizado, 'por_asignacion', 5000.00, 'pendiente', DATE_FORMAT(NOW(), '%Y-%m'), NULL),
(@f_andes_rm, @lead_perdido, 'por_asignacion', 5000.00, 'anulado', DATE_FORMAT(NOW(), '%Y-%m'), NULL);
