feat(herramientas): impresion de etiquetas QR y manifiesto HTML responsive para escaneo de cajas de herramientas
This commit is contained in:
@@ -9,6 +9,8 @@ const Herramienta = require('../models/Herramienta');
|
||||
const HerramientaSet = require('../models/HerramientaSet');
|
||||
const HerramientaAsignacion = require('../models/HerramientaAsignacion');
|
||||
const { guardarFoto } = require('../config/uploader');
|
||||
const db = require('../config/db');
|
||||
const QRCode = require('qrcode');
|
||||
|
||||
router.get('/dashboard', isCompanyAdmin, async (req, res) => {
|
||||
try {
|
||||
@@ -401,4 +403,46 @@ router.post('/herramientas/devolver/:id', isCompanyAdmin, async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// Imprimir Etiqueta QR de Set / Caja de Herramientas
|
||||
router.get('/herramientas/sets/:id/etiqueta', isCompanyAdmin, async (req, res) => {
|
||||
try {
|
||||
const companyId = req.session.user.company_id;
|
||||
const set = await HerramientaSet.findById(req.params.id, companyId);
|
||||
if (!set) {
|
||||
req.flash('error_msg', 'Kit de herramientas no encontrado');
|
||||
return res.redirect('/admin/herramientas#tab-sets');
|
||||
}
|
||||
|
||||
const proto = req.headers['x-forwarded-proto'] || req.protocol;
|
||||
const host = req.headers['x-forwarded-host'] || req.get('host');
|
||||
const baseUrl = process.env.APP_URL || `${proto}://${host}`;
|
||||
const scanUrl = `${baseUrl}/qr/set/${set.qr_token}`;
|
||||
|
||||
const qrDataUrl = await QRCode.toDataURL(scanUrl, {
|
||||
width: 260,
|
||||
margin: 1,
|
||||
color: {
|
||||
dark: '#000000',
|
||||
light: '#ffffff'
|
||||
},
|
||||
errorCorrectionLevel: 'H'
|
||||
});
|
||||
|
||||
const [companyRows] = await db.query('SELECT name FROM companies WHERE id = ?', [companyId]);
|
||||
set.company_name = companyRows[0]?.name || 'Telcotronics';
|
||||
|
||||
res.render('admin/etiqueta_qr', {
|
||||
title: `Etiqueta QR: ${set.nombre}`,
|
||||
set,
|
||||
herramientas: set.herramientas || [],
|
||||
scanUrl,
|
||||
qrDataUrl
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Error al generar etiqueta QR de kit:', error);
|
||||
req.flash('error_msg', 'Error al generar etiqueta QR: ' + error.message);
|
||||
res.redirect('/admin/herramientas#tab-sets');
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
Reference in New Issue
Block a user