-- QA Sprint 7: estructura, relaciones y aislamiento del módulo de comunicaciones.
SELECT CASE WHEN COUNT(*)=4 THEN 'OK_TABLAS_COMUNICACIONES' ELSE CONCAT('ERROR_TABLAS=',COUNT(*)) END AS resultado
FROM information_schema.tables
WHERE table_schema=DATABASE() AND table_name IN ('comm_solicitudes','comm_mensajes','comm_adjuntos','comm_recordatorios');

SELECT CASE WHEN COUNT(*)>=12 THEN 'OK_COLUMNAS_SPRINT7' ELSE CONCAT('ERROR_COLUMNAS=',COUNT(*)) END AS resultado
FROM information_schema.columns
WHERE table_schema=DATABASE() AND table_name='comm_solicitudes'
  AND column_name IN ('id_institucion','id_plantilla','id_documento_solicitud','destinatario_email','destinatario_telefono','prioridad','idioma','fecha_limite','respuesta_esperada_en','proximo_seguimiento_en','cerrada_en','instrucciones_internas');

SELECT CASE WHEN COUNT(*)>=3 THEN 'OK_PLANTILLAS_BASE' ELSE CONCAT('ERROR_PLANTILLAS=',COUNT(*)) END AS resultado
FROM comm_plantillas WHERE id_empresa IS NULL AND activo=1 AND codigo IN ('archivo_solicitud_inicial','archivo_seguimiento','archivo_respuesta_agradecimiento');

SELECT CASE WHEN COUNT(*)=0 THEN 'OK_SOLICITUDES_SIN_CASO_CRUZADO' ELSE CONCAT('ERROR_TENANT_CASO=',COUNT(*)) END AS resultado
FROM comm_solicitudes s
JOIN gene_casos c ON c.id=s.id_caso
WHERE s.id_empresa<>c.id_empresa;

SELECT CASE WHEN COUNT(*)=0 THEN 'OK_MENSAJES_AISLADOS' ELSE CONCAT('ERROR_MENSAJES=',COUNT(*)) END AS resultado
FROM comm_mensajes m
JOIN comm_solicitudes s ON s.id=m.id_solicitud
WHERE m.id_empresa<>s.id_empresa;

SELECT CASE WHEN COUNT(*)=0 THEN 'OK_RECORDATORIOS_AISLADOS' ELSE CONCAT('ERROR_RECORDATORIOS=',COUNT(*)) END AS resultado
FROM comm_recordatorios r
JOIN comm_solicitudes s ON s.id=r.id_solicitud
WHERE r.id_empresa<>s.id_empresa;
