Actualizar server.js
This commit is contained in:
46
server.js
46
server.js
@@ -1796,6 +1796,52 @@ app.get("/ranking", authMiddleware, async (req, res) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// 📍 MOTOR GPS: RASTREO EN TIEMPO REAL
|
||||||
|
// ==========================================
|
||||||
|
|
||||||
|
// El operario envía su ubicación
|
||||||
|
app.post("/services/:id/location", authMiddleware, async (req, res) => {
|
||||||
|
try {
|
||||||
|
const { lat, lng } = req.body;
|
||||||
|
if (!lat || !lng) return res.status(400).json({ ok: false });
|
||||||
|
|
||||||
|
const locData = { lat, lng, updated_at: new Date().toISOString() };
|
||||||
|
|
||||||
|
await pool.query(`
|
||||||
|
UPDATE scraped_services
|
||||||
|
SET raw_data = jsonb_set(COALESCE(raw_data, '{}'::jsonb), '{worker_location}', $1::jsonb)
|
||||||
|
WHERE id = $2 AND assigned_to = $3
|
||||||
|
`, [JSON.stringify(locData), req.params.id, req.user.sub]);
|
||||||
|
|
||||||
|
res.json({ ok: true });
|
||||||
|
} catch (e) {
|
||||||
|
res.status(500).json({ ok: false });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// El cliente consulta la ubicación
|
||||||
|
app.get("/public/portal/:token/location/:serviceId", async (req, res) => {
|
||||||
|
try {
|
||||||
|
const { token, serviceId } = req.params;
|
||||||
|
|
||||||
|
// Verificar dueño
|
||||||
|
const clientQ = await pool.query("SELECT owner_id FROM clients WHERE portal_token = $1", [token]);
|
||||||
|
if (clientQ.rowCount === 0) return res.status(404).json({ ok: false });
|
||||||
|
|
||||||
|
// Cargar datos
|
||||||
|
const serviceQ = await pool.query("SELECT raw_data FROM scraped_services WHERE id = $1 AND owner_id = $2", [serviceId, clientQ.rows[0].owner_id]);
|
||||||
|
if (serviceQ.rowCount === 0) return res.status(404).json({ ok: false });
|
||||||
|
|
||||||
|
const loc = serviceQ.rows[0].raw_data.worker_location || null;
|
||||||
|
res.json({ ok: true, location: loc });
|
||||||
|
} catch (e) {
|
||||||
|
res.status(500).json({ ok: false });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// ==========================================
|
// ==========================================
|
||||||
// 🕒 EL RELOJ DEL SISTEMA (Ejecutar cada minuto)
|
// 🕒 EL RELOJ DEL SISTEMA (Ejecutar cada minuto)
|
||||||
// ==========================================
|
// ==========================================
|
||||||
|
|||||||
Reference in New Issue
Block a user