385 lines
11 KiB
JavaScript
385 lines
11 KiB
JavaScript
require("../connections/mysql-server");
|
|
require("../helpers/CheckToken");
|
|
require("../helpers/config");
|
|
|
|
const express = require("express");
|
|
const router = express.Router();
|
|
const bodyParser = require("body-parser");
|
|
const { genSerialList, generateCSV } = require("../helpers/serialBook");
|
|
|
|
router.use(
|
|
bodyParser.urlencoded({
|
|
limit: "10mb",
|
|
extended: true,
|
|
})
|
|
);
|
|
router.use(
|
|
bodyParser.json({
|
|
limit: "10mb",
|
|
extended: true,
|
|
})
|
|
);
|
|
|
|
var routes = function () {
|
|
router.get("/listLotes", verifyJWT, (req, res) => {
|
|
execSQLQuery(
|
|
`SELECT
|
|
*
|
|
FROM barlotes;`,
|
|
res,
|
|
req.originalUrl
|
|
);
|
|
});
|
|
|
|
router.get("/listBarCodes", verifyJWT, (req, res) => {
|
|
execSQLQuery(
|
|
`SELECT
|
|
*
|
|
FROM barcodes;`,
|
|
res,
|
|
req.originalUrl
|
|
);
|
|
});
|
|
|
|
router.get("/listBarcodesByAny/:field/:value", verifyJWT, (req, res) => {
|
|
var field = req.params.field;
|
|
var value = req.params.value;
|
|
execSQLQuery(
|
|
`SELECT
|
|
bc.*,
|
|
un.unityname as 'unity',
|
|
co.name as 'course',
|
|
un2.unityname as 'unity_env',
|
|
co2.name as 'course_apo'
|
|
FROM barcodes bc
|
|
left join units un on un.idunits = bc.idunits
|
|
left join courses co on co.idcourses = bc.idcourses
|
|
left join units un2 on un2.idunits = bc.idunits_env
|
|
left join courses co2 on co2.idcourses = bc.idcourses_apo
|
|
WHERE bc.${field} = '${value}';`,
|
|
res,
|
|
req.originalUrl
|
|
);
|
|
});
|
|
|
|
router.post("/insertLotes", verifyJWT, (req, res) => {
|
|
const qtdepack = parseInt(req.body.qtdepack);
|
|
const date = req.body.date;
|
|
execSQLQuery(
|
|
`INSERT INTO barlotes(qtdepack, date)
|
|
VALUES (?, ?);`,
|
|
res,
|
|
req.originalUrl,
|
|
[qtdepack, date]
|
|
);
|
|
});
|
|
|
|
router.post("/createSerial", verifyJWT, (req, res) => {
|
|
let oldserialExists = req.body.oldserial;
|
|
let quantity = parseInt(req.body.quantity);
|
|
let disAllowFranchise = quantity < 2 && !oldserialExists;
|
|
|
|
function deleteList(list) {
|
|
let deleteQuery = "DELETE FROM myrobot.serialbook WHERE serial = ?";
|
|
Object.values(list).forEach((element) => {
|
|
mysqlConnection.query(deleteQuery, element.serial, function (err) {
|
|
if (err) {
|
|
console.log(
|
|
new Date(),
|
|
"Erro ao deletar registros api/barcode/createSerial post",
|
|
err
|
|
);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
if (quantity < 1 || disAllowFranchise) {
|
|
console.log(
|
|
new Date(),
|
|
"Erro ao gerar registros api/barcode/createSerial post error 400"
|
|
);
|
|
res
|
|
.status(400)
|
|
.send(
|
|
"Quantidade mínima de etiquetas por lote: 1 ou código antigo não foi enviado"
|
|
);
|
|
} else {
|
|
let selectQuery = "SELECT serial FROM myrobot.serialbook;";
|
|
mysqlConnection.query(selectQuery, function (error, results, fields) {
|
|
if (error) {
|
|
console.log(
|
|
new Date(),
|
|
"Erro ao obter registros api/barcode/createSerial post error 500"
|
|
);
|
|
res.status(500).send(error);
|
|
}
|
|
genSerialList(quantity, results)
|
|
.then((serialList) => {
|
|
let insertQuery =
|
|
"INSERT INTO myrobot.serialbook (serial, createdAt, updatedAt, oldserial) VALUES ?";
|
|
let valuesList = [];
|
|
Object.values(serialList).forEach((element) => {
|
|
quantity < 2 ? (element.oldserial = req.body.oldserial) : "";
|
|
valuesList.push([
|
|
element.serial,
|
|
element.createdAt,
|
|
element.updatedAt,
|
|
element.oldserial,
|
|
]);
|
|
});
|
|
mysqlConnection.query(insertQuery, [valuesList], function (err) {
|
|
if (err) {
|
|
console.log(
|
|
new Date(),
|
|
"Erro ao salvar registros api/barcode/createSerial post error 500",
|
|
err
|
|
);
|
|
res.status(500).json({
|
|
message: "Não foi possível salvar os registros",
|
|
erro: err,
|
|
});
|
|
deleteList(serialList);
|
|
} else {
|
|
if (serialList.length < 2) {
|
|
console.log(
|
|
new Date(),
|
|
" - api/barcode/createSerial post success 200"
|
|
);
|
|
res.status(200).json({
|
|
serial: serialList[0].serial,
|
|
});
|
|
} else {
|
|
generateCSV(serialList)
|
|
.then((path) => {
|
|
console.log(
|
|
new Date(),
|
|
" - api/barcode/createSerial post success 200"
|
|
);
|
|
res.download(path);
|
|
})
|
|
.catch((err) => {
|
|
console.log(
|
|
new Date(),
|
|
"Erro ao enviar registros api/barcode/createSerial post error 500",
|
|
err
|
|
);
|
|
res.status(500).json({
|
|
message: "Não foi possível enviar os registros",
|
|
erro: err,
|
|
});
|
|
deleteList(serialList);
|
|
});
|
|
}
|
|
}
|
|
});
|
|
})
|
|
.catch((error) => {
|
|
console.log(
|
|
new Date(),
|
|
"Erro ao gerar registros api/barcode/createSerial post error 500",
|
|
error
|
|
);
|
|
res.status(500).json({
|
|
message: "Impossível gerar seriais",
|
|
erro: error,
|
|
});
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
router.put("/createSerial", verifyJWT, (req, res) => {
|
|
let dateUpdate = new Date();
|
|
let values = [
|
|
req.body.user,
|
|
req.body.course,
|
|
req.body.unity,
|
|
true,
|
|
dateUpdate,
|
|
req.body.serial,
|
|
];
|
|
Object.values(values).forEach((element) => {
|
|
let notEmpty = !!element;
|
|
if (!notEmpty) {
|
|
return res.status(400).json({ error: "Faltam campos na requisição" });
|
|
}
|
|
});
|
|
let updateQuery =
|
|
"UPDATE myrobot.serialbook SET iduser = ?, idcourse = ?, idunity = ?, used = ?, updatedAt = ? WHERE serial = ? AND used = false";
|
|
mysqlConnection.query(
|
|
updateQuery,
|
|
values,
|
|
function (error, results, fields) {
|
|
if (error) {
|
|
console.log(
|
|
new Date(),
|
|
"Erro ao alterar registro api/barcode/createSerial put error 500",
|
|
error
|
|
);
|
|
res.status(500).json({
|
|
message: "Não foi possível atualizar o serial",
|
|
});
|
|
} else {
|
|
console.log(
|
|
new Date(),
|
|
" - api/barcode/createSerial put success 200"
|
|
);
|
|
res.status(200).json({
|
|
results: results,
|
|
});
|
|
}
|
|
}
|
|
);
|
|
});
|
|
|
|
router.get("/createSerial", verifyJWT, (req, res) => {
|
|
let values = [req.query.user, req.query.course, req.query.unity];
|
|
let validFields = true;
|
|
for (let i = 0; i < values.length; i++) {
|
|
let notEmpty = !!values[0];
|
|
if (!notEmpty) {
|
|
validFields = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (validFields) {
|
|
let selectQuery =
|
|
"SELECT * FROM myrobot.serialbook WHERE iduser = ? AND idcourse = ? AND idunity = ?"
|
|
mysqlConnection.query(
|
|
selectQuery,
|
|
values,
|
|
function (error, results, fields) {
|
|
if (error) {
|
|
console.log(
|
|
new Date(),
|
|
"Erro ao obter registros api/barcode/createSerial get error 500",
|
|
error
|
|
);
|
|
res.status(500).json({
|
|
message: "Não foi possível pesquisar pelo serial",
|
|
});
|
|
} else {
|
|
console.log(new Date(), "api/barcode/createSerial get 200");
|
|
res.status(200).json({
|
|
results: results,
|
|
});
|
|
}
|
|
}
|
|
);
|
|
} else {
|
|
console.log(
|
|
new Date(),
|
|
"Erro ao obter registro api/barcode/createSerial get error 400"
|
|
);
|
|
return res.status(400).json({ error: "Faltam campos na requisição" });
|
|
}
|
|
});
|
|
|
|
router.get("/listSerial", verifyJWT, (req, res) => {
|
|
let selectQuery =
|
|
"SELECT sb.idserialbook, sb.serial, sb.createdAt, sb.oldserial FROM myrobot.serialbook as sb limit 100;";
|
|
mysqlConnection.query(selectQuery, function (error, results, fields) {
|
|
if (error) {
|
|
console.log(error);
|
|
res.status(500).json({
|
|
message: "Não foi possivel obter os seriais",
|
|
});
|
|
} else {
|
|
res.status(200).json({
|
|
results: results,
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
router.post("/insertBarcodes", verifyJWT, (req, res) => {
|
|
const idbarlotes = parseInt(req.body.idbarlotes);
|
|
const _key = req.body._key;
|
|
const ordem = parseInt(req.body.ordem);
|
|
execSQLQuery(
|
|
`INSERT INTO barcodes(idbarlotes, _key, ordem) VALUES
|
|
(?, ?, ?);`,
|
|
res,
|
|
req.originalUrl,
|
|
[idbarlotes, _key, ordem]
|
|
);
|
|
});
|
|
|
|
router.patch("/updateBarcodes", verifyJWT, (req, res) => {
|
|
const idbarcodes = parseInt(req.body.idbarcodes);
|
|
const idusers = parseInt(req.body.idusers);
|
|
const idunits = parseInt(req.body.idunits);
|
|
const idcourses = parseInt(req.body.idcourses);
|
|
execSQLQuery(
|
|
`UPDATE barcodes SET
|
|
idusers = ${idusers},
|
|
idunits = ${idunits},
|
|
idcourses = ${idcourses}
|
|
WHERE idbarcodes = ${idbarcodes};`,
|
|
res,
|
|
req.originalUrl
|
|
);
|
|
});
|
|
|
|
router.post("/generateTxt", verifyJWT, (req, res) => {
|
|
var name = req.body.name;
|
|
var content = req.body.content;
|
|
var fs = require("fs");
|
|
fs.writeFile(
|
|
Variables("src_media") + "barcodes/" + name + ".txt",
|
|
content,
|
|
function (erro) {
|
|
if (erro) {
|
|
throw erro;
|
|
} else {
|
|
res.send(true);
|
|
}
|
|
}
|
|
);
|
|
});
|
|
|
|
router.get("/downloadPack/:idbarlotes", verifyJWT, (req, res) => {
|
|
var idbarlotes = req.params.idbarlotes;
|
|
var path = Variables("src_media") + "barcodes";
|
|
var fs = require("fs");
|
|
if (!fs.existsSync(path + "/codigo_barras_" + idbarlotes + ".zip")) {
|
|
require("all-unpacker").pack(
|
|
path + "/barlote_" + idbarlotes + ".zip",
|
|
{
|
|
targetDir: path + "/codigo_barras_" + idbarlotes + ".txt",
|
|
},
|
|
function (err, files, text) {
|
|
if (err) return console.error(err);
|
|
if (files) console.log("files", files);
|
|
if (text) {
|
|
console.log("text", text);
|
|
console.log("compactado");
|
|
res.send(true);
|
|
}
|
|
}
|
|
);
|
|
} else {
|
|
res.send(true);
|
|
}
|
|
});
|
|
|
|
router.post("/VincularCodigo", verifyJWT, (req, res) => {
|
|
const idbarcodes = parseInt(req.body.idbarcodes);
|
|
const idunits_env = parseInt(req.body.idunits_env);
|
|
const idcourses_apo = parseInt(req.body.idcourses_apo);
|
|
execSQLQuery(
|
|
`UPDATE barcodes SET
|
|
idunits_env = ${idunits_env},
|
|
idcourses_apo = ${idcourses_apo}
|
|
WHERE idbarcodes = ${idbarcodes};`,
|
|
res,
|
|
req.originalUrl
|
|
);
|
|
});
|
|
|
|
return router;
|
|
};
|
|
module.exports = routes;
|