/* QA Sprint 5: homónimos y comparación de candidatos. */
SELECT CASE WHEN COUNT(*)=2 THEN 'OK_TABLAS_CANDIDATOS' ELSE 'ERROR_TABLAS_CANDIDATOS' END AS resultado
FROM information_schema.tables
WHERE table_schema=DATABASE() AND table_name IN ('gene_candidatos','gene_candidato_criterios');

SELECT CASE WHEN COUNT(*)=2 THEN 'OK_TENANT_CANDIDATOS' ELSE 'ERROR_TENANT_CANDIDATOS' END AS resultado
FROM information_schema.columns
WHERE table_schema=DATABASE() AND table_name IN ('gene_candidatos','gene_candidato_criterios') AND column_name='id_empresa';

SELECT CASE WHEN COUNT(*)=1 THEN 'OK_UNICIDAD_PAREJA' ELSE 'ERROR_UNICIDAD_PAREJA' END AS resultado
FROM information_schema.statistics
WHERE table_schema=DATABASE() AND table_name='gene_candidatos' AND index_name='uq_candidato_par';

SELECT CASE WHEN COUNT(*)=1 THEN 'OK_UNICIDAD_CRITERIO' ELSE 'ERROR_UNICIDAD_CRITERIO' END AS resultado
FROM information_schema.statistics
WHERE table_schema=DATABASE() AND table_name='gene_candidato_criterios' AND index_name='uq_candidato_criterio';

SELECT CASE WHEN COUNT(*)=0 THEN 'OK_SIN_AUTOCANDIDATOS' ELSE CONCAT('ERROR_AUTOCANDIDATOS=',COUNT(*)) END AS resultado
FROM gene_candidatos
WHERE persona_objetivo_id=persona_candidata_id;

SELECT CASE WHEN COUNT(*)=0 THEN 'OK_CANDIDATOS_TENANT_CASO' ELSE CONCAT('ERROR_CANDIDATOS_TENANT_CASO=',COUNT(*)) END AS resultado
FROM gene_candidatos c
LEFT JOIN gene_personas po ON po.id=c.persona_objetivo_id AND po.id_empresa=c.id_empresa AND po.id_caso=c.id_caso
LEFT JOIN gene_personas pc ON pc.id=c.persona_candidata_id AND pc.id_empresa=c.id_empresa AND pc.id_caso=c.id_caso
WHERE po.id IS NULL OR pc.id IS NULL;

SELECT CASE WHEN COUNT(*)=0 THEN 'OK_CRITERIOS_TENANT' ELSE CONCAT('ERROR_CRITERIOS_TENANT=',COUNT(*)) END AS resultado
FROM gene_candidato_criterios cc
LEFT JOIN gene_candidatos c ON c.id=cc.id_candidato AND c.id_empresa=cc.id_empresa
WHERE c.id IS NULL;
