diff --git a/server.js b/server.js index 3cfd8ed..673d2b9 100644 --- a/server.js +++ b/server.js @@ -496,23 +496,21 @@ const token = crypto.randomBytes(16).toString('hex'); // A) Delegamos la inserción y el cálculo del tiempo a PostgreSQL // Usamos NOW() de la base de datos + 5 minutos y devolvemos la hora exacta calculada -const insertPing = await pool.query(` - INSERT INTO assignment_pings (scraped_id, user_id, token, expires_at) - VALUES ($1, $2, $3, NOW() + INTERVAL '5 minutes') - RETURNING expires_at -`, [id, worker.id, token]); +// Calculamos la caducidad puramente en Node (+5 min) + const expiresAt = new Date(Date.now() + 5 * 60 * 1000); -// B) Extraemos la hora exacta que la DB considerará como límite -const dbExpiresAt = insertPing.rows[0].expires_at; + // Insertamos el valor exacto de Node en la DB + await pool.query(` + INSERT INTO assignment_pings (scraped_id, user_id, token, expires_at) + VALUES ($1, $2, $3, $4) + `, [id, worker.id, token, expiresAt]); -// C) Formateamos esa hora para el WhatsApp, forzando la zona horaria de España (Europa/Madrid) -// Así nos aseguramos de que el mensaje de WhatsApp siempre cuadre con el reloj local del operario, -// sin importar en qué zona horaria esté alojado el servidor Node.js -const horaCaducidad = new Date(dbExpiresAt).toLocaleTimeString('es-ES', { - hour: '2-digit', - minute: '2-digit', - timeZone: 'Europe/Madrid' // Forzamos la zona horaria española -}); + // Formateamos para WhatsApp forzando la hora de España + const horaCaducidad = expiresAt.toLocaleTimeString('es-ES', { + hour: '2-digit', + minute: '2-digit', + timeZone: 'Europe/Madrid' + }); // 3. Construir mensaje de WhatsApp con toda la información solicitada const link = `https://web.integrarepara.es/aceptar.html?t=${token}`;