Actualizar server.js
This commit is contained in:
26
server.js
26
server.js
@@ -491,14 +491,28 @@ app.post("/providers/automate/:id", authMiddleware, async (req, res) => {
|
|||||||
|
|
||||||
await pool.query("UPDATE scraped_services SET automation_status = 'in_progress' WHERE id = $1", [id]);
|
await pool.query("UPDATE scraped_services SET automation_status = 'in_progress' WHERE id = $1", [id]);
|
||||||
|
|
||||||
const worker = workersQ.rows[Math.floor(Math.random() * workersQ.rows.length)];
|
const worker = workersQ.rows[Math.floor(Math.random() * workersQ.rows.length)];
|
||||||
const token = crypto.randomBytes(16).toString('hex');
|
const token = crypto.randomBytes(16).toString('hex');
|
||||||
const expiresAt = new Date(Date.now() + 5 * 60 * 1000); // 5 Minutos
|
|
||||||
|
|
||||||
// Formatear hora de caducidad (HH:mm)
|
// A) Delegamos la inserción y el cálculo del tiempo a PostgreSQL
|
||||||
const horaCaducidad = expiresAt.toLocaleTimeString('es-ES', { hour: '2-digit', minute: '2-digit' });
|
// 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]);
|
||||||
|
|
||||||
await pool.query(`INSERT INTO assignment_pings (scraped_id, user_id, token, expires_at) VALUES ($1, $2, $3, $4)`, [id, worker.id, token, expiresAt]);
|
// B) Extraemos la hora exacta que la DB considerará como límite
|
||||||
|
const dbExpiresAt = insertPing.rows[0].expires_at;
|
||||||
|
|
||||||
|
// 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
|
||||||
|
});
|
||||||
|
|
||||||
// 3. Construir mensaje de WhatsApp con toda la información solicitada
|
// 3. Construir mensaje de WhatsApp con toda la información solicitada
|
||||||
const link = `https://web.integrarepara.es/aceptar.html?t=${token}`;
|
const link = `https://web.integrarepara.es/aceptar.html?t=${token}`;
|
||||||
|
|||||||
Reference in New Issue
Block a user