From c5d2979b60ffc4b6a7077527eeb641f638c73533 Mon Sep 17 00:00:00 2001 From: Sidney Date: Mon, 25 May 2026 09:03:54 -0300 Subject: [PATCH] fix(frequencias): apply TO_CHAR for sql date formatting to prevent timezone shifts matching bugs --- manager/services/database.js | 7 +++++-- portal/server.selfhosted.js | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/manager/services/database.js b/manager/services/database.js index f857aa6..ba8efaf 100644 --- a/manager/services/database.js +++ b/manager/services/database.js @@ -822,13 +822,16 @@ export async function deleteAulas(ids) { // FREQUÊNCIAS (CHAMADA) // ============================================================ export async function getFrequencias() { - const { rows } = await pool.query('SELECT * FROM frequencias ORDER BY created_at DESC'); + const { rows } = await pool.query(` + SELECT *, TO_CHAR(data, 'YYYY-MM-DD"T"HH24:MI:SS') as formatted_data + FROM frequencias ORDER BY created_at DESC + `); return rows.map(r => ({ id: r.id, studentId: r.aluno_id, classId: r.turma_id, lessonId: r.aula_id, - date: r.data, + date: r.formatted_data || r.data, photo: r.foto, verified: r.verificado, type: r.tipo, diff --git a/portal/server.selfhosted.js b/portal/server.selfhosted.js index 2893d78..c0fcad6 100644 --- a/portal/server.selfhosted.js +++ b/portal/server.selfhosted.js @@ -512,7 +512,8 @@ app.get('/api/portal/notas', authMiddleware, async (req, res) => { app.get('/api/portal/frequencia', authMiddleware, async (req, res) => { try { const { rows } = await pool.query( - `SELECT * FROM frequencias WHERE aluno_id = $1 ORDER BY data DESC`, + `SELECT *, TO_CHAR(data, 'YYYY-MM-DD"T"HH24:MI:SS') as formatted_data + FROM frequencias WHERE aluno_id = $1 ORDER BY data DESC`, [req.user.studentId] ); @@ -521,7 +522,7 @@ app.get('/api/portal/frequencia', authMiddleware, async (req, res) => { studentId: r.aluno_id, classId: r.turma_id, lessonId: r.aula_id, - date: r.data, + date: r.formatted_data || r.data, photo: r.foto_url || r.foto, verified: r.verificado, type: r.tipo,