Site/server/controllers/sistemasController.js

355 lines
15 KiB
JavaScript

const express = require('express');
const router = express.Router();
const formidable = require('formidable');
var routes = function () {
router.get('/getSistemas', function (req, res) {
const sqlQuery = `SELECT * FROM sistemas order by nome asc;`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getSistemasEn', function (req, res) {
const sqlQuery = `SELECT * FROM sistemas WHERE habilitado = 1 order by nome asc;`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getSistemaByID/:idsistemas', function (req, res) {
const idsistemas = parseInt(req.params.idsistemas);
const sqlQuery = `SELECT * FROM sistemas WHERE idsistemas = ${idsistemas};`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getSistemaByIDLista/:idsistemas', function (req, res) {
const idsistemas = parseInt(req.params.idsistemas);
const sqlQuery = `SELECT
s.*,
p.descricao as plataforma,
t.descricao as tiposdesistema,
l.descricao as tiposlicenca
FROM sistemas s
INNER JOIN plataformas p ON s.idplataformas = p.idplataformas
INNER JOIN tiposdesistema t ON t.idtiposdesistema = s.idtiposdesistema
INNER JOIN tiposlicenca l ON s.idtiposlicenca = l.idtiposlicenca
WHERE idsistemas = ${idsistemas}
order by s.nome asc;`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getSistemaVersao/:idsistemas', function (req, res) {
const idsistemas = parseInt(req.params.idsistemas);
const sqlQuery = `SELECT versaoatual as VersaoAtual, nome_install as NomeInstall FROM sistemas WHERE idsistemas = ${idsistemas};`;
//ExecuteQuery(sqlQuery, req, res);
mysqlConnection.query(sqlQuery, [], function (error, results, fields) {
console.log(`${new Date().toUTCString()} - ${req.originalUrl} ${(error) ? ' 500 error' : ' 200 success'}`);
res.send(results[0])
});
});
router.get('/getTiposdesistema', function (req, res) {
const sqlQuery = `SELECT * FROM tiposdesistema order by descricao asc;`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getTiposdesistemaByID/:idtiposdesistema', function (req, res) {
const idtiposdesistema = parseInt(req.params.idtiposdesistema);
const sqlQuery = `SELECT * FROM tiposdesistema WHERE idtiposdesistema = ${idtiposdesistema};`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getTiposdelicenca', function (req, res) {
const sqlQuery = `SELECT * FROM tiposlicenca order by descricao asc;`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getTiposdelicencaByID/:idtiposlicenca', function (req, res) {
const idtiposlicenca = parseInt(req.params.idtiposlicenca);
const sqlQuery = `SELECT * FROM tiposlicenca WHERE idtiposlicenca = ${idtiposlicenca};`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getPlataformas', function (req, res) {
const sqlQuery = `SELECT * FROM plataformas order by descricao asc;`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getPlataformaByID/:idplataformas', function (req, res) {
let idplataformas = parseInt(req.params.idplataformas);
const sqlQuery = `SELECT * FROM plataformas WHERE idplataformas = ${idplataformas};`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getDetalhesByID/:idsistemas', function (req, res) {
const idsistemas = parseInt(req.params.idsistemas);
const sqlQuery = `SELECT * FROM sistemasdetalhes WHERE idsistemas = ${idsistemas} order by ordem asc;`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getDetalhesByIDEn/:idsistemas', function (req, res) {
const idsistemas = parseInt(req.params.idsistemas);
const sqlQuery = `SELECT * FROM sistemasdetalhes WHERE idsistemas = ${idsistemas} AND habilitado = 1 order by ordem asc;`;
ExecuteQuery(sqlQuery, req, res);
});
router.post('/insertSistemas', function (req, res) {
const idsistemas = req.body.idsistemas;
const nome = req.body.nome;
const descricao = req.body.descricao;
const versaoatual = req.body.versaoatual;
const habilitado = req.body.habilitado ? 1 : 0;
const idtiposdesistema = req.body.idtiposdesistema;
const idplataformas = req.body.idplataformas;
const nome_install = req.body.nome_install;
const notasdeatualizacao = req.body.notasdeatualizacao;
const idtiposlicenca = req.body.idtiposlicenca;
const sqlQuery = `INSERT INTO sistemas (nome, descricao, versaoatual, habilitado, downloads, idtiposdesistema, idplataformas, nome_install, notasdeatualizacao, idtiposlicenca)
VALUES ('${nome}', '${descricao}', '${versaoatual}', ${habilitado}, 0, ${idtiposdesistema}, ${idplataformas}, '${nome_install}', '${notasdeatualizacao}', ${idtiposlicenca});`;
ExecuteQuery(sqlQuery, req, res);
});
router.patch('/updateSistemas', function (req, res) {
const idsistemas = parseInt(req.body.idsistemas);
const nome = req.body.nome;
const descricao = req.body.descricao;
const versaoatual = req.body.versaoatual;
const habilitado = req.body.habilitado ? 1 : 0;
const idtiposdesistema = req.body.idtiposdesistema;
const idplataformas = req.body.idplataformas;
const nome_install = req.body.nome_install;
const notasdeatualizacao = req.body.notasdeatualizacao;
const idtiposlicenca = req.body.idtiposlicenca;
const sqlQuery = `UPDATE sistemas SET
nome = '${nome}',
descricao = '${descricao}',
versaoatual = '${versaoatual}',
habilitado = ${habilitado},
idtiposdesistema = ${idtiposdesistema},
idplataformas = ${idplataformas},
nome_install = '${nome_install}',
notasdeatualizacao = '${notasdeatualizacao}',
idtiposlicenca = ${idtiposlicenca}
WHERE idsistemas = ${idsistemas};`;
ExecuteQuery(sqlQuery, req, res);
});
router.delete('/deleteSistemas/:idsistemas', function (req, res) {
const idsistemas = parseInt(req.params.idsistemas);
const sqlQuery = `DELETE FROM sistemas WHERE idsistemas = ${idsistemas};`;
ExecuteQuery(sqlQuery, req, res);
});
router.delete('/deleteSistemaUsuario/:idsistemas/:idusuarios', function (req, res) {
const idsistemas = parseInt(req.params.idsistemas);
const idusuarios = parseInt(req.params.idusuarios);
const sqlQuery = `DELETE FROM sistemasusuario WHERE idsistemas = ${idsistemas} AND idusuarios = ${idusuarios};`;
ExecuteQuery(sqlQuery, req, res);
});
router.patch('/downloadSistema', function (req, res) {
const idsistemas = parseInt(req.body.idsistemas);
const sqlQuery = `UPDATE sistemas SET
downloads = downloads + 1
WHERE idsistemas = ${idsistemas};`;
ExecuteQuery(sqlQuery, req, res);
});
router.post('/insertSistemaUsuario', function (req, res) {
const idsistemas = parseInt(req.body.idsistemas);
const idusuarios = parseInt(req.body.idusuarios);
const sqlQuery = `INSERT INTO sistemasusuario (idsistemas, idusuarios, data_download)
SELECT DISTINCT ${idsistemas} AS idsistemas, ${idusuarios} AS idusuarios, NOW() AS data_download
FROM sistemasusuario su WHERE (SELECT COUNT(*) qtdDown FROM sistemasusuario WHERE idsistemas = ${idsistemas} AND idusuarios = ${idusuarios}) = 0;`;
ExecuteQuery(sqlQuery, req, res);
});
router.post('/copy', (req, res) => {
let form = new formidable.IncomingForm();
form.maxFileSize = 600 * 1024 * 1024;
form.parse(req, function(err,fields,files){
const fs = require('fs');
var nome_install = fields.nome;
var versaoatual = fields.versaoatual;
var idsistemas = fields.idsistemas;
var pathArquivo = "";
var pathIcone = "";
try {
pathArquivo = files.arquivo.path;
}
catch(e) {
console.log("não copia arquivo");
}
try {
pathIcone = files.icone.path;
}
catch(e) {
console.log("não copia icone");
}
var dir = '/var/www/html/sistemas/';
if (!fs.existsSync(dir + idsistemas + "/")) {
fs.mkdirSync(dir + idsistemas + "/");
fs.mkdirSync(dir + idsistemas + "/detalhes/");
fs.mkdirSync(dir + idsistemas + "/versoes/");
fs.mkdirSync(dir + idsistemas + "/backups/");
fs.mkdirSync(dir + idsistemas + "/versoes/" + versaoatual + "/");
}
else if (!fs.existsSync(dir + idsistemas + "/versoes/" + versaoatual + "/")) {
fs.mkdirSync(dir + idsistemas + "/versoes/" + versaoatual + "/");
}
if (pathArquivo != "") {
fs.rename(pathArquivo, dir + idsistemas + "/versoes/" + versaoatual + "/" + nome_install, function (err) {
console.log("arquivo copiado com sucesso");
});
}
if (pathIcone != "") {
fs.rename(pathIcone, dir + idsistemas + "/icone.png", function (err) {
console.log("icone copiado com sucesso!");
});
}
setTimeout(() => {
res.send(true);
}, 200);
});
});
router.get('/getChavesSistema/:idsistemas/:idusuarios', function (req, res) {
const idsistemas = parseInt(req.params.idsistemas);
const idusuarios = parseInt(req.params.idusuarios);
const sqlQuery = `SELECT * FROM chaves
WHERE idsistemas = ${idsistemas} AND idusuarios = ${idusuarios};`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getChavesSistemaLista/:idsistemas/:idusuarios', function (req, res) {
const idsistemas = parseInt(req.params.idsistemas);
const idusuarios = parseInt(req.params.idusuarios);
const sqlQuery = `SELECT
idchaves,
licenca as Chave,
data_criacao as DataCriacao,
data_validade as DataValidade,
CASE WHEN data_validade < NOW() THEN 'Expirada' ELSE 'Válida' END AS Status,
CASE WHEN usada = 0 THEN 'Não' ELSE 'Sim' END AS Ativada
FROM chaves
WHERE idsistemas = ${idsistemas} AND idusuarios = ${idusuarios};`;
ExecuteQuery(sqlQuery, req, res);
});
router.post('/insertChave', function (req, res) {
let licenca = req.body.licenca;
let idusuarios = req.body.idusuarios;
let idsistemas = req.body.idsistemas;
let data_validade = req.body.data_validade;
let newdate = data_validade.toString();
newdate = newdate.substring(0, newdate.length - 1);
const sqlQuery = `INSERT INTO chaves (licenca, data_criacao, data_validade, idusuarios, usada, idsistemas)
VALUES ('${licenca}', NOW(), '${newdate}', ${idusuarios}, 0, ${idsistemas});`;
ExecuteQuery(sqlQuery, req, res);
});
router.post('/insertDetalhe', function (req, res) {
const idsistemasdetalhes = req.body.idsistemasdetalhes;
const idsistemas = req.body.idsistemas;
const descricao = req.body.descricao;
const ordem = parseInt(req.body.ordem);
const habilitado = req.body.habilitado ? 1 : 0;
const sqlQuery = `INSERT INTO sistemasdetalhes (idsistemas, descricao, ordem, habilitado)
VALUES (${idsistemas}, '${descricao}', ${ordem}, ${habilitado});`;
ExecuteQuery(sqlQuery, req, res);
});
router.patch('/updateDetalhe', function (req, res) {
const idsistemasdetalhes = req.body.idsistemasdetalhes;
const idsistemas = req.body.idsistemas;
const descricao = req.body.descricao;
const ordem = parseInt(req.body.ordem);
const habilitado = req.body.habilitado ? 1 : 0;
const sqlQuery = `UPDATE sistemasdetalhes SET
idsistemas = ${idsistemas},
descricao = '${descricao}',
ordem = ${ordem},
habilitado = ${habilitado}
WHERE idsistemasdetalhes = ${idsistemasdetalhes};`;
ExecuteQuery(sqlQuery, req, res);
});
router.delete('/deleteDetalhe/:idsistemasdetalhes/:idsistemas/:index', function (req, res) {
const idsistemasdetalhes = parseInt(req.params.idsistemasdetalhes);
const idsistemas = parseInt(req.params.idsistemas);
const index = parseInt(req.params.index);
const sqlQuery = `DELETE FROM sistemasdetalhes WHERE idsistemasdetalhes = ${idsistemasdetalhes};`;
ExecuteQuery(sqlQuery, req, res);
var Path = '/var/www/html/sistemas/' + idsistemas + "/detalhes/sistema_" + index + ".jpg";
const fs = require('fs');
if (fs.existsSync(Path)) {
fs.unlinkSync(Path);
}
});
router.post('/copyDetalhe', (req, res) => {
let form = new formidable.IncomingForm();
form.maxFileSize = 600 * 1024 * 1024;
form.parse(req, function(err,fields,files) {
const fs = require('fs');
var nome = fields.nome;
var idsistemas = fields.idsistemas;
var pathArquivo = files.arquivo.path;
var dir = '/var/www/html/sistemas/' + idsistemas + "/detalhes/";
fs.rename(pathArquivo, dir + nome, function (err) {
if (err)
console.log(err);
else
console.log("arquivo copiado com sucesso");
res.send(true);
});
});
});
router.get('/atualizarListaDetalhes/:idsistemas', (req, res) => {
const idsistemas = parseInt(req.params.idsistemas);
const fs = require('fs');
var dir = '/var/www/html/sistemas/' + idsistemas + "/detalhes/";
let i = 0;
fs.readdirSync(dir).forEach(file => {
fs.renameSync(dir + file, dir + file.split('_')[0] + "_" + i + '.jpg');
i++;
});
res.send(true);
});
router.get('/getSistemaVersoes/:idsistemas', function (req, res) {
const idsistemas = parseInt(req.params.idsistemas);
const fs = require('fs');
const dir = '/var/www/html/sistemas/' + idsistemas + "/versoes/";
if (!fs.existsSync(dir))
fs.mkdirSync(dir);
const versoes = fs.readdirSync(dir);
var lista = [];
versoes.forEach(versao => {
const file = fs.readdirSync(dir + versao)[0];
const arquivo = dir + versao + "/" + file;
const stats = fs.statSync(arquivo);
lista.push(arquivo + "¬" + stats.birthtime);
});
res.send(lista);
});
router.get('/getSistemaDownloads/:idsistemas', function (req, res) {
const idsistemas = parseInt(req.params.idsistemas);
const fs = require('fs');
const dir = '/var/www/html/sistemas/' + idsistemas + "/downloads/";
if (!fs.existsSync(dir))
fs.mkdirSync(dir);
const downloads = fs.readdirSync(dir);
var lista = [];
downloads.forEach(download => {
var stats = fs.statSync(dir + download);
lista.push(dir + download + "¬" + stats.birthtime);
});
res.send(lista);
});
return router;
}
module.exports = routes;