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;