-- ============================================================================
-- MIGRACION: Agregar plantilla del sistema para notificaciones de capacidades
-- ============================================================================
-- Fecha: 2026-01-06
-- Descripcion:
--   1. Modifica restricciones para permitir plantillas del sistema (business_id = NULL)
--   2. Inserta plantilla "reporte4" usada por el Empleado Digital
--
-- NOTA IMPORTANTE:
--   Las filas con business_id = NULL son PLANTILLAS DEL SISTEMA que usa el
--   Empleado Digital para enviar notificaciones. NO pertenecen a ningun negocio
--   especifico, usan las credenciales del empleado digital en la conversacion.
-- ============================================================================

-- ============================================================================
-- PASO 1: Modificar restricciones para permitir NULL en columnas clave
-- ============================================================================

-- Permitir NULL en business_id para plantillas del sistema
ALTER TABLE whatsapp_templates
    ALTER COLUMN business_id DROP NOT NULL;

-- Permitir NULL en sucursal_id para plantillas del sistema
ALTER TABLE whatsapp_templates
    ALTER COLUMN sucursal_id DROP NOT NULL;

-- Permitir NULL en waba_id para plantillas del sistema (usara el del empleado digital)
ALTER TABLE whatsapp_templates
    ALTER COLUMN waba_id DROP NOT NULL;

-- ============================================================================
-- PASO 2: Modificar restriccion UNIQUE para permitir NULLs
-- ============================================================================

-- Eliminar restriccion UNIQUE existente
ALTER TABLE whatsapp_templates
    DROP CONSTRAINT IF EXISTS unique_template_per_business_sucursal;

-- Crear nueva restriccion que funcione con NULLs
-- Para plantillas del sistema (NULL), solo puede haber una por template_name+language
CREATE UNIQUE INDEX unique_template_per_business_sucursal
    ON whatsapp_templates (business_id, sucursal_id, template_name, language)
    WHERE business_id IS NOT NULL;

CREATE UNIQUE INDEX unique_system_template
    ON whatsapp_templates (template_name, language)
    WHERE business_id IS NULL;

-- ============================================================================
-- PASO 3: Insertar plantilla del sistema "reporte4"
-- ============================================================================

-- Variables de la plantilla (mapeadas desde Botpress):
--   {{1}} = Apodo del usuario + Telefono (antes: {{user.Apodo}} - {{user.UsersPhoneNumber}})
--   {{2}} = Nombre alternativo de la capacidad (antes: {{workflow.AltName}})
--   {{3}} = Resumen/detalle del reporte (antes: {{workflow.RespuestaGPT1}})

INSERT INTO whatsapp_templates (
    business_id,
    sucursal_id,
    phone_number_id,
    template_name,
    language,
    body_text,
    components,
    waba_id,
    access_token_encrypted,
    token_updated_at,
    variable_mapping,
    description,
    display_name
) VALUES (
    NULL,                          -- business_id: NULL = plantilla del sistema
    NULL,                          -- sucursal_id: NULL = aplica a todas
    NULL,                          -- phone_number_id: NULL = usa el del empleado digital
    'reporte4',                    -- template_name: nombre de la plantilla en Meta
    'es',                          -- language: español
    '{{1}} - {{2}}: {{3}}',        -- body_text: formato con variables numeradas
    NULL,                          -- components: NULL (no hay componentes adicionales)
    NULL,                          -- waba_id: NULL = usa el del empleado digital
    NULL,                          -- access_token_encrypted: NULL = usa el del empleado
    NULL,                          -- token_updated_at: NULL
    '{
        "1": {
            "name": "usuario_info",
            "description": "Apodo del usuario y su numero de telefono",
            "source": "user.apodo + user.phone",
            "botpress_original": "{{user.Apodo}} - {{user.UsersPhoneNumber}}"
        },
        "2": {
            "name": "capacidad_nombre",
            "description": "Nombre alternativo de la capacidad (Queja, Solicitud, etc.)",
            "source": "capability.alt_name",
            "botpress_original": "{{workflow.AltName}}"
        },
        "3": {
            "name": "reporte_resumen",
            "description": "Resumen o detalle del reporte generado",
            "source": "reporte.notas_internas",
            "botpress_original": "{{workflow.RespuestaGPT1}}"
        }
    }'::jsonb,                     -- variable_mapping: mapeo de variables
    'Plantilla del sistema para notificar al equipo cuando se completa un flujo de capacidad (Queja, Solicitud, Sugerencia, Encuesta, Escalar). Las credenciales se toman del empleado digital activo.',
    'Notificacion de Reporte'      -- display_name: nombre para mostrar
)
ON CONFLICT DO NOTHING;            -- Evitar error si ya existe

-- ============================================================================
-- VERIFICACION
-- ============================================================================

-- Verificar que la plantilla se inserto correctamente
SELECT
    id,
    business_id,
    template_name,
    language,
    body_text,
    display_name,
    variable_mapping
FROM whatsapp_templates
WHERE template_name = 'reporte4' AND business_id IS NULL;

-- ============================================================================
-- ROLLBACK (en caso de necesitar revertir)
-- ============================================================================
--
-- DELETE FROM whatsapp_templates WHERE template_name = 'reporte4' AND business_id IS NULL;
--
-- DROP INDEX IF EXISTS unique_system_template;
-- DROP INDEX IF EXISTS unique_template_per_business_sucursal;
--
-- CREATE UNIQUE INDEX unique_template_per_business_sucursal
--     ON whatsapp_templates (business_id, sucursal_id, template_name, language);
--
-- ALTER TABLE whatsapp_templates ALTER COLUMN waba_id SET NOT NULL;
-- ALTER TABLE whatsapp_templates ALTER COLUMN sucursal_id SET NOT NULL;
-- ALTER TABLE whatsapp_templates ALTER COLUMN business_id SET NOT NULL;
-- ============================================================================
