-- ============================================================
-- SEED: datos de prueba — Vale AI Staging
-- Archivo:  scripts/seed_test_data.sql
-- Importar: phpMyAdmin → Import → Force all queries, do not abort on errors
--
-- PREREQUISITO: migración 026_soft_delete_evidencia.sql ya ejecutada.
-- NUNCA importar en producción (valeai.app).
--
-- CONTRASEÑA de todos los usuarios demo: password
--   Hash bcrypt estándar de PHP (cost=10) — verificado contra php.net/password_hash.
--   Cambiar antes de cualquier prueba de seguridad.
--
-- Re-ejecutable: la sección de limpieza borra SOLO tenants con is_test = 1
-- y todos sus hijos (FK ON DELETE CASCADE). Tenants reales no se tocan.
-- ============================================================


-- ── 0. Limpieza de datos previos (SOLO is_test = 1) ───────────────────────────
-- Requiere que la columna is_test ya exista (migración 026).
-- FK ON DELETE CASCADE limpia: users, vale_config, services, contacts,
-- conversations, messages, leads, appointments, agent_logs, etc.

SET FOREIGN_KEY_CHECKS = 0;
DELETE FROM tenants WHERE is_test = 1;
SET FOREIGN_KEY_CHECKS = 1;


-- ══════════════════════════════════════════════════════════════════════════════
-- ESCENARIO 1 — Barbería Demo
-- Completo y activo. Sirve para probar:
--   · Página pública:  /n/barberia-demo
--   · Widget web:      web_public_key = demo00000000000000000000000baria
--   · Dashboard login: dueno@barberia.test / password
-- ══════════════════════════════════════════════════════════════════════════════

INSERT INTO tenants (
    name,
    whatsapp_number,
    web_public_key,         -- CHAR(32) exactos
    public_slug,
    timezone, locale, country, currency, perfil_voz,
    business_type, profile_kind, onboarding_status,
    rubro, especialidad,
    ciudad, visible_dir,
    preferred_channel, plan, billing_status,
    google_calendar_connected,
    descripcion, telefono, direccion,
    descripcion_dir,
    is_demo, is_test, relationship, evidence_consent, deleted_at
) VALUES (
    'Barbería Demo',
    NULL,
    'demo00000000000000000000000baria',
    'barberia-demo',
    'America/Managua', 'es', 'NI', 'NIO', 'es-CA',
    'Barbería', 'cita', 'live',
    'barberia', 'Cortes clásicos y modernos',
    'Managua', 1,
    'web', 'free', 'free',
    0,
    'Barbería de prueba para staging.',
    '+505 2222-0001',
    'Barrio Demo, Managua',
    'Barbería profesional. Cortes, afeitados y arreglos de barba en el corazón de Managua.',
    1, 1, 'demo', 0, NULL
);

SET @barberia_id = LAST_INSERT_ID();

INSERT INTO users (
    tenant_id, email, password_hash, name, role, auth_provider
) VALUES (
    @barberia_id,
    'dueno@barberia.test',
    '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
    'Dueño Barbería Demo',
    'owner',
    'password'
);

INSERT INTO vale_config (
    tenant_id,
    greeting, tone, default_locale,
    booking_activo, duracion_slot,
    hours_json,
    knowledge
) VALUES (
    @barberia_id,
    '¡Hola! Soy Vale, la asistente de Barbería Demo. ¿En qué te puedo ayudar? 💈',
    'calido', 'es',
    1, 30,
    '{"texto":"Lun–Sab 9:00–18:00, Dom cerrado","slots":{"lun":["09:00","09:30","10:00","10:30","11:00","11:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30"],"mar":["09:00","09:30","10:00","10:30","11:00","11:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30"],"mie":["09:00","09:30","10:00","10:30","11:00","11:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30"],"jue":["09:00","09:30","10:00","10:30","11:00","11:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30"],"vie":["09:00","09:30","10:00","10:30","11:00","11:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30"],"sab":["09:00","09:30","10:00","10:30","11:00","11:30"]}}',
    'Servicios: corte de cabello (30 min, $5), arreglo de barba (20 min, $3), corte + barba (45 min, $7). Aceptamos efectivo y tarjeta. Hay estacionamiento. Para cancelar o reprogramar llamar con 2 horas de anticipación.'
);

INSERT INTO services (tenant_id, name, duration_min, price_min, price_max, active) VALUES
    (@barberia_id, 'Corte de cabello', 30, 5.00,  5.00, 1),
    (@barberia_id, 'Arreglo de barba', 20, 3.00,  3.00, 1),
    (@barberia_id, 'Corte + barba',    45, 7.00,  8.00, 1);


-- ══════════════════════════════════════════════════════════════════════════════
-- ESCENARIO 2 — Estética Demo
-- Activo, diferente vertical. Sirve para confirmar aislamiento multi-tenant:
-- los servicios, contacts y configuración de Barbería NO deben aparecer aquí.
--   · Dashboard login: duena@estetica.test / password
-- ══════════════════════════════════════════════════════════════════════════════

INSERT INTO tenants (
    name,
    whatsapp_number,
    web_public_key,
    public_slug,
    timezone, locale, country, currency, perfil_voz,
    business_type, profile_kind, onboarding_status,
    rubro, especialidad,
    ciudad, visible_dir,
    preferred_channel, plan, billing_status,
    google_calendar_connected,
    descripcion, telefono,
    descripcion_dir,
    is_demo, is_test, relationship, evidence_consent, deleted_at
) VALUES (
    'Estética Demo',
    NULL,
    'demo00000000000000000000estetica',
    'estetica-demo',
    'America/Managua', 'es', 'NI', 'NIO', 'es-CA',
    'Estética', 'cita', 'live',
    'belleza', 'Tratamientos faciales y corporales',
    'Managua', 1,
    'web', 'free', 'free',
    0,
    'Centro de estética de prueba para staging.',
    '+505 2222-0002',
    'Estética y belleza profesional. Faciales, depilación y manicura.',
    1, 1, 'demo', 0, NULL
);

SET @estetica_id = LAST_INSERT_ID();

INSERT INTO users (
    tenant_id, email, password_hash, name, role, auth_provider
) VALUES (
    @estetica_id,
    'duena@estetica.test',
    '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
    'Dueña Estética Demo',
    'owner',
    'password'
);

INSERT INTO vale_config (
    tenant_id,
    greeting, tone, default_locale,
    booking_activo, duracion_slot,
    hours_json,
    knowledge
) VALUES (
    @estetica_id,
    '¡Hola! Soy Vale, la asistente de Estética Demo. ¿Cómo te puedo ayudar? 💆',
    'calido', 'es',
    1, 45,
    '{"texto":"Mar–Sab 10:00–19:00, Dom y Lun cerrados"}',
    'Servicios: facial hidratante (60 min, $25), depilación facial (30 min, $15), manicura (45 min, $12). Solo con cita previa. Ambiente tranquilo y profesional.'
);

INSERT INTO services (tenant_id, name, duration_min, price_min, price_max, active) VALUES
    (@estetica_id, 'Facial hidratante', 60, 25.00, 25.00, 1),
    (@estetica_id, 'Depilación facial', 30, 15.00, 15.00, 1),
    (@estetica_id, 'Manicura',          45, 12.00, 12.00, 1);


-- ══════════════════════════════════════════════════════════════════════════════
-- ESCENARIO 3 — Borrame Demo
-- Tenant activo, descartable. Sirve para probar el flujo completo de
-- soft-delete (POST /admin/tenant/delete) y restore (/admin/tenant/restore).
-- Config mínima — no tiene servicios.
--   · Dashboard login: dueno@borrame.test / password
-- ══════════════════════════════════════════════════════════════════════════════

INSERT INTO tenants (
    name,
    whatsapp_number,
    web_public_key,
    public_slug,
    timezone, locale, country, currency, perfil_voz,
    business_type, profile_kind, onboarding_status,
    rubro, ciudad, visible_dir,
    preferred_channel, plan, billing_status,
    google_calendar_connected,
    is_demo, is_test, relationship, evidence_consent, deleted_at
) VALUES (
    'Borrame Demo',
    NULL,
    'demo0000000000000000000borrameok',
    'borrame-demo',
    'America/Managua', 'es', 'NI', 'NIO', 'es-CA',
    'General', 'generic', 'live',
    'general', 'Managua', 0,
    'web', 'free', 'free',
    0,
    1, 1, 'demo', 0, NULL
);

SET @borrame_id = LAST_INSERT_ID();

INSERT INTO users (
    tenant_id, email, password_hash, name, role, auth_provider
) VALUES (
    @borrame_id,
    'dueno@borrame.test',
    '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
    'Dueño Borrame',
    'owner',
    'password'
);

INSERT INTO vale_config (tenant_id, tone, default_locale, booking_activo, duracion_slot)
VALUES (@borrame_id, 'calido', 'es', 0, 30);


-- ══════════════════════════════════════════════════════════════════════════════
-- ESCENARIO 4 — Borrado Previo Demo
-- Tenant con deleted_at ya seteado desde el momento de la carga.
-- Sirve para confirmar que:
--   · No aparece en el dashboard del admin (WHERE deleted_at IS NULL)
--   · No atiende mensajes (agent.php / agent_web.php filtran)
--   · No figura en el directorio público
--   · SÍ se puede ver y restaurar desde /admin/tenant?id=N (admin audit)
-- No tiene usuario de login — no debería poder acceder al sistema.
-- ══════════════════════════════════════════════════════════════════════════════

INSERT INTO tenants (
    name,
    whatsapp_number,
    web_public_key,
    public_slug,
    timezone, locale, country, currency, perfil_voz,
    business_type, profile_kind, onboarding_status,
    rubro, ciudad, visible_dir,
    preferred_channel, plan, billing_status,
    google_calendar_connected,
    is_demo, is_test, relationship, evidence_consent,
    deleted_at
) VALUES (
    'Borrado Previo Demo',
    NULL,
    'demo000000000000000000borradopre',
    'borrado-previo-demo',
    'America/Managua', 'es', 'NI', 'NIO', 'es-CA',
    'General', 'generic', 'live',
    'general', 'Managua', 0,
    'web', 'free', 'free',
    0,
    1, 1, 'demo', 0,
    '2026-01-01 00:00:00'   -- pre-borrado: debe arrancar invisible
);

SET @borrado_id = LAST_INSERT_ID();

INSERT INTO vale_config (tenant_id, tone, default_locale, booking_activo, duracion_slot)
VALUES (@borrado_id, 'calido', 'es', 0, 30);


-- ── Verificación post-import ──────────────────────────────────────────────────
-- Esperado: 4 filas; Borrado Previo con deleted_at = 2026-01-01 00:00:00.
-- num_services: Barbería=3, Estética=3, los otros=0.

SELECT
    t.id,
    t.name,
    t.public_slug,
    t.onboarding_status,
    t.is_test,
    t.relationship,
    t.deleted_at,
    u.email          AS owner_email,
    COUNT(s.id)      AS num_services
FROM tenants t
LEFT JOIN users    u ON u.tenant_id = t.id AND u.role = 'owner'
LEFT JOIN services s ON s.tenant_id = t.id
WHERE t.is_test = 1
GROUP BY t.id, u.email
ORDER BY t.id ASC;
