Commit bbfd0298 by Denys Tito

fix(mensajes): mostrar la sede del aula del destinatario

Un supervisor puede enviar un mismo mensaje a aulas de varias sedes, así que
la sede visible sale del aula de cada destinatario y no de la sede del
mensaje. Para los mensajes de directores el resultado es idéntico.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
parent 1c378916
......@@ -2,7 +2,9 @@ package postgres
// MensajeQuery arma un documento por matrícula destinataria con los mensajes activos
// (mensaje_estado = 1) que un director le envió desde Trismegisto. Los mensajes se
// ordenan por fecha de registro descendente (más reciente primero).
// ordenan por fecha de registro descendente (más reciente primero). La sede que se muestra es la
// del aula del propio destinatario (con la sede del mensaje como respaldo), porque un supervisor
// puede enviar un mismo mensaje a aulas de varias sedes.
const MensajeQuery = `
WITH mensajes_alumno AS (
SELECT d.matricula_id,
......@@ -18,7 +20,9 @@ WITH mensajes_alumno AS (
LEFT JOIN administracion.ad_usuario au ON au.usuario_id = m.usuario_id_remitente
LEFT JOIN administracion.ad_empleado ae ON ae.empleado_id = au.empleado_id
LEFT JOIN persona.pe_persona pp ON pp.persona_id = ae.persona_id
LEFT JOIN administracion.ad_sede s ON s.sede_id = m.sede_id
LEFT JOIN matricula.ma_matricula mm ON mm.matricula_id = d.matricula_id
LEFT JOIN academico.ac_aula aa ON aa.aula_id = mm.aula_id_asiste
LEFT JOIN administracion.ad_sede s ON s.sede_id = COALESCE(aa.sede_id, m.sede_id)
)
SELECT matricula_id,
JSONB_AGG(JSONB_BUILD_OBJECT(
......@@ -52,7 +56,9 @@ WITH mensajes_alumno AS (
LEFT JOIN administracion.ad_usuario au ON au.usuario_id = m.usuario_id_remitente
LEFT JOIN administracion.ad_empleado ae ON ae.empleado_id = au.empleado_id
LEFT JOIN persona.pe_persona pp ON pp.persona_id = ae.persona_id
LEFT JOIN administracion.ad_sede s ON s.sede_id = m.sede_id
LEFT JOIN matricula.ma_matricula mm ON mm.matricula_id = d.matricula_id
LEFT JOIN academico.ac_aula aa ON aa.aula_id = mm.aula_id_asiste
LEFT JOIN administracion.ad_sede s ON s.sede_id = COALESCE(aa.sede_id, m.sede_id)
WHERE d.matricula_id = $1
)
SELECT matricula_id,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment