1048 lines
44 KiB
JavaScript
1048 lines
44 KiB
JavaScript
require('../connections/mysql-server');
|
|
require('../connections/sql-server');
|
|
require('../helpers/CheckToken');
|
|
require('../helpers/config');
|
|
const formidable = require('formidable');
|
|
const express = require('express');
|
|
const router = express.Router();
|
|
const bodyParser = require('body-parser');
|
|
|
|
router.use(bodyParser.urlencoded({ extended: true }));
|
|
router.use(bodyParser.json());
|
|
|
|
var routes = function () {
|
|
|
|
//=========== usar o mesmo padrão para as rotas ==============
|
|
// //
|
|
// getMySQL*** //
|
|
// getSQLServer*** //
|
|
// insertSQLServer*** //
|
|
// updateSQLServer*** //
|
|
// //
|
|
//=========== onde "***" é o nome da tabela do mysql =========
|
|
|
|
router.get('/getAllTables', verifyJWT, (req, res) => {
|
|
execSQLQuery(`SHOW TABLES`, res, req.originalUrl);
|
|
});
|
|
|
|
router.post('/generateLog/:Pasta', verifyJWT, (req, res) => {
|
|
var name = req.body.name;
|
|
var content = req.body.content;
|
|
const Pasta = req.params.Pasta;
|
|
var fs = require('fs');
|
|
fs.writeFile(Variables('src_media') + "migration_log/" + Pasta + "/" + name + ".txt", content, function (erro) {
|
|
if (erro) {
|
|
throw erro;
|
|
}
|
|
res.send(true);
|
|
});
|
|
});
|
|
|
|
router.get('/listLogFiles/:Pasta', verifyJWT, (req, res) => {
|
|
const Pasta = req.params.Pasta;
|
|
let fs = require('fs');
|
|
fs.readdir(Variables('src_media') + "migration_log/" + Pasta, (err, files) => {
|
|
res.send(files);
|
|
});
|
|
|
|
});
|
|
|
|
//#region Migração entre MySQLs
|
|
|
|
router.post('/checkStatusUnity', verifyJWT, (req, res) => {
|
|
let ip_externo = req.body.ip_externo;
|
|
let porta_mysql = req.body.porta_mysql;
|
|
|
|
var mysqlReference = require('mysql');
|
|
var DadosConnection = {
|
|
host: ip_externo,
|
|
user: 'myrobot',
|
|
password: 'myrobot2019',
|
|
database: 'myrobot',
|
|
port: porta_mysql
|
|
};
|
|
let mysqlLocal2 = mysqlReference.createConnection(DadosConnection);
|
|
|
|
const SQLQry = `SELECT * FROM units;`;
|
|
|
|
mysqlLocal2.query(SQLQry, function (error, results, fields) {
|
|
try {
|
|
if (results.length > 0) {
|
|
console.log('/checkStatusUnity success 200');
|
|
res.send(true);
|
|
}
|
|
else {
|
|
console.log('/checkStatusUnity fail 500');
|
|
res.send(false);
|
|
}
|
|
}
|
|
catch (e) {
|
|
console.log('/checkStatusUnity fail 500');
|
|
res.send(false);
|
|
}
|
|
})
|
|
})
|
|
|
|
router.post('/sincronizarTabela', verifyJWT, (req, res) => {
|
|
let form = new formidable.IncomingForm();
|
|
form.maxFileSize = 1024 * 1024 * 1024;
|
|
form.parse(req, function (err, fields, files) {
|
|
let ip_externo = fields.ip_externo;
|
|
let porta_mysql = fields.porta_mysql;
|
|
let tabela = fields.tabela;
|
|
let dados = JSON.parse(fields.dados);
|
|
|
|
var mysqlReference = require('mysql');
|
|
var DadosConnection = {
|
|
host: ip_externo,
|
|
user: 'myrobot',
|
|
password: 'myrobot2019',
|
|
database: 'myrobot',
|
|
port: porta_mysql
|
|
};
|
|
let mysqlLocal2 = mysqlReference.createConnection(DadosConnection);
|
|
|
|
const SQLQryTruncate = `TRUNCATE TABLE ` + tabela + `;`;
|
|
const SQLQryBackup = `SELECT * FROM ${tabela};`;
|
|
let DadosBackup;
|
|
|
|
mysqlLocal2.query(SQLQryBackup, function (error, results, fields) {
|
|
DadosBackup = results;
|
|
mysqlLocal2.query('SET FOREIGN_KEY_CHECKS = 0;', function (error0, results0, fields0) {
|
|
mysqlLocal2.query(SQLQryTruncate, function (error1, results1, fields1) {
|
|
mysqlLocal2.query('SET FOREIGN_KEY_CHECKS = 1;', function (error2, results2, fields2) {
|
|
Sincronizar(0, dados, tabela, mysqlLocal2, "true,", function (Sucesso) {
|
|
if (Sucesso.split(',')[0] == "true") {
|
|
console.log("/sincronizarTabela success 200");
|
|
res.send(Sucesso);
|
|
}
|
|
else {
|
|
console.log("/sincronizarTabela fail 500");
|
|
Sincronizar(0, DadosBackup, tabela, mysqlLocal2, "true,", function (Sucesso2) {
|
|
if (Sucesso2.split(',')[0] == "true")
|
|
console.log("Backup da tabela com sucesso");
|
|
else
|
|
console.log("Backup da tabela com falha");
|
|
|
|
res.send(Sucesso);
|
|
});
|
|
}
|
|
});
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
});
|
|
|
|
})
|
|
|
|
function Sincronizar(i, dados, tabela, mysqlLocal2, Certo, callback) {
|
|
var SQLQryInsert = `INSERT INTO ` + tabela + ` (`;
|
|
|
|
let values = [];
|
|
let index = 0;
|
|
for (var key in dados[i]) {
|
|
if (index > 0)
|
|
SQLQryInsert += ", ";
|
|
SQLQryInsert += key.toString();
|
|
values.push(dados[i][key]);
|
|
index++;
|
|
}
|
|
SQLQryInsert += `) VALUES ?`;
|
|
|
|
var records = [];
|
|
for (var i = 0; i < dados.length; i++) {
|
|
var row = [];
|
|
for (var key in dados[i]) {
|
|
row.push(dados[i][key])
|
|
}
|
|
records.push(row);
|
|
}
|
|
|
|
mysqlLocal2.query(SQLQryInsert, [records], function (error, results, fields) {
|
|
if (error) {
|
|
Certo = "false,";
|
|
console.log("Erro: " + error);
|
|
}
|
|
console.log("Sincronia MySQL finalizada na tabela '" + tabela + "'");
|
|
callback(Certo + error);
|
|
})
|
|
}
|
|
|
|
router.get('/SalvarDump/:token', (req, res) => {
|
|
let token = req.params.token;
|
|
if (token != Variables("tk_fixed")) {
|
|
res.status(500).send({ status: 'expired' });
|
|
return;
|
|
}
|
|
const http = require('http');
|
|
mysqlConnection.query('SELECT description, ip_externo FROM units WHERE enabled = 1 AND idunits = 14;', function (error, results, fields) {
|
|
let ListaUnidades = results;
|
|
for (let i = 0; i < ListaUnidades.length; i++) {
|
|
|
|
http.get('http://' + ListaUnidades[i]['ip_externo'] + ':' + ListaUnidades[i]['porta_api'] + '/api/migration/backupDump/' + Variables("tk_fixed"), (resp) => {
|
|
let data = '';
|
|
resp.on('data', (chunk) => {
|
|
data += chunk;
|
|
});
|
|
resp.on('end', () => {
|
|
//console.log(JSON.parse(data).response);
|
|
const fs = require('fs');
|
|
let Hora = new Date();
|
|
let Nome = "dump_" + ListaUnidades[i]['description'] + "_" + Hora.getDate() + "-" + (Hora.getMonth() + 1) + "-" + Hora.getFullYear() + "_" + Hora.getHours() + "_" + Hora.getMinutes() + "_" + Hora.getSeconds() + ".sql";
|
|
let Unidade = ListaUnidades[i]['description'];
|
|
let CaminhoArquivo = Variables('src_media') + 'backup_mysql/' + Unidade + "/";
|
|
let Arquivo = JSON.parse(data)['arquivo'];
|
|
if (!fs.existsSync(CaminhoArquivo)) {
|
|
fs.mkdirSync(CaminhoArquivo);
|
|
}
|
|
fs.writeFile(CaminhoArquivo + Nome, Arquivo.toString(), function (err) {
|
|
if (err) {
|
|
console.log("/salvarBackup fail 500 - " + ListaUnidades[i]['description']);
|
|
}
|
|
else {
|
|
console.log("/salvarBackup success 200 - " + ListaUnidades[i]['description']);
|
|
}
|
|
});
|
|
|
|
});
|
|
}).on("error", (err) => {
|
|
console.log(ListaUnidades[i]['description'] + " - Error: " + err.message);
|
|
});
|
|
|
|
}
|
|
res.send(true);
|
|
});
|
|
});
|
|
|
|
|
|
//#endregion
|
|
|
|
//#region Migração entre Arquivos
|
|
|
|
router.post('/sincronizarArquivos', verifyJWT, (req, res) => {
|
|
let Comando = req.body.comando;
|
|
const shell = require('shelljs');
|
|
shell.exec(Comando, function (arquivosbaixados) {
|
|
if (Comando.includes('games')) {
|
|
var fs = require('fs');
|
|
fs.readdir(Variables('src_media') + "/games/", (err, files) => {
|
|
var Pastas = [];
|
|
files.forEach(file => {
|
|
Pastas.push(file.toString());
|
|
});
|
|
BaixarBuild(Pastas, 0, function (Sucesso) {
|
|
shell.exec('chmod -R 777 /var/www/html/', function (Sucesso) {
|
|
console.log(new Date().toUTCString() + " - " + req.originalUrl + " success 200");
|
|
res.send(JSON.stringify({ "baixados": Sucesso }))
|
|
})
|
|
});
|
|
});
|
|
}
|
|
else {
|
|
shell.exec('chmod -R 777 /var/www/html/', function (arquivosmovidos) {
|
|
console.log(new Date().toUTCString() + " - " + req.originalUrl + " success 200");
|
|
res.send(JSON.stringify({ "baixados": arquivosbaixados }))
|
|
})
|
|
}
|
|
});
|
|
});
|
|
|
|
function BaixarBuild(Pastas, Index, Callback) {
|
|
const shell = require('shelljs');
|
|
if (Index < Pastas.length) {
|
|
shell.exec('wget -c -P /var/www/html/ -nH -r -k -np "http://18.228.91.135/games/' + Pastas[Index] + '/Build/" -R index.html?*', function (Sucesso) {
|
|
console.log(Sucesso);
|
|
Index++;
|
|
BaixarBuild(Pastas, Index, Callback);
|
|
})
|
|
}
|
|
else {
|
|
Callback(true);
|
|
}
|
|
}
|
|
|
|
router.get('/backupDump/:token', (req, res) => {
|
|
let token = req.params.token;
|
|
if (token != Variables("tk_fixed")) {
|
|
res.status(500).send({ status: 'expired' });
|
|
return;
|
|
}
|
|
const fs = require('fs');
|
|
const shell = require('shelljs');
|
|
shell.exec('mysqldump -u' + Variables('user_mysql') + ' -p' + Variables('password_mysql') + ' myrobot > ' + Variables('src_media') + 'backup/dump.sql', function (sucesso) {
|
|
const Arquivo = Variables('src_media') + 'backup/dump.sql';
|
|
fs.readFile(Arquivo, (err, data) => {
|
|
console.log(new Date().toUTCString() + " - " + req.originalUrl + " success 200");
|
|
res.send(JSON.stringify({ "arquivo": Buffer.from(data).toString() }));
|
|
})
|
|
|
|
})
|
|
})
|
|
|
|
router.post('/salvarBackup', verifyJWT, (req, res) => {
|
|
let form = new formidable.IncomingForm();
|
|
form.maxFileSize = 1024 * 1024 * 1024;
|
|
form.parse(req, function (err, fields, files) {
|
|
const fs = require('fs');
|
|
let Nome = fields.name;
|
|
let Unidade = fields.unit;
|
|
let CaminhoArquivo = Variables('src_media') + 'backup_mysql/' + Unidade + "/";
|
|
let Arquivo = fields.arquivo;
|
|
if (!fs.existsSync(CaminhoArquivo)) {
|
|
fs.mkdirSync(CaminhoArquivo);
|
|
}
|
|
fs.writeFile(CaminhoArquivo + Nome, Arquivo.toString(), function (err) {
|
|
if (err) {
|
|
console.log(new Date().toUTCString() + " - " + req.originalUrl + " fail 500");
|
|
res.send(false);
|
|
}
|
|
else {
|
|
console.log(new Date().toUTCString() + " - " + req.originalUrl + " success 200");
|
|
res.send(true);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
router.get('/setLastUpdate/:idunits', verifyJWT, (req, res) => {
|
|
const idunits = req.params.idunits;
|
|
execSQLQuery(`UPDATE units SET last_update = now() WHERE idunits = ${idunits};`, res, req.originalUrl);
|
|
})
|
|
|
|
//#endregion
|
|
|
|
//#region EXECUTAR COMANDO TERMINAL
|
|
|
|
router.post('/CommandExec', verifyJWT, (req, res) => {
|
|
let Comando = req.body.comando;
|
|
const shell = require('shelljs');
|
|
let Resposta = shell.exec(Comando);
|
|
res.send(JSON.stringify({ "resultado": Resposta }));
|
|
});
|
|
|
|
//#endregion
|
|
|
|
//#region Migração entre SQLServer
|
|
router.post('/MigrarSQLServer/:insert/:db', verifyJWT, (req, res) => {
|
|
let Tabela = req.body.Tabela;
|
|
let Dados = JSON.parse(req.body.Dados);
|
|
let Insert = req.params.insert;
|
|
let db = req.params.db;
|
|
//console.log(Tabela);
|
|
//console.log(Dados);
|
|
let SQLMigracao = ``;
|
|
let Campos = '';
|
|
let Valores = '';
|
|
if (Insert == "true") { // INSERIR APENAS NOVOS REGISTROS
|
|
for (var campo in Dados[0]) {
|
|
Campos += campo + ", ";
|
|
}
|
|
Campos = "(" + Campos.substr(0, Campos.length - 2) + ")";
|
|
//console.log(Campos);
|
|
for (let i = 0; i < Dados.length; i++) {
|
|
let Ind = 0;
|
|
for (let campo in Dados[0]) {
|
|
if (Ind == 0)
|
|
Valores += "('" + Dados[i][campo] + "', ";
|
|
else
|
|
Valores += "'" + Dados[i][campo] + "', ";
|
|
Ind++;
|
|
}
|
|
Valores = Valores.substr(0, Valores.length - 2) + "), ";
|
|
}
|
|
Valores = Valores.substr(0, Valores.length - 2);
|
|
//console.log(Valores);
|
|
SQLMigracao = `INSERT INTO ${db}${Tabela} ${Campos} VALUES ${Valores};`;
|
|
//console.log(SQLMigracao);
|
|
execSQLQuery2(SQLMigracao, res, req.originalUrl);
|
|
//res.send(SQLMigracao);
|
|
}
|
|
else { // INSERIR TODOS ATUALIZANDO OS REGISTROS JA EXISTENTES
|
|
//console.log(Campos);
|
|
let CampoID = "";
|
|
let ValorID = "";
|
|
for (let i = 0; i < Dados.length; i++) {
|
|
let Ind = 0;
|
|
for (let campo in Dados[0]) {
|
|
if (Ind == 0) {
|
|
CampoID = campo;
|
|
ValorID = Dados[i][campo];
|
|
Valores += `UPDATE ${db}${Tabela} SET `;
|
|
}
|
|
else {
|
|
Valores += campo + " = '" + Dados[i][campo] + "', ";
|
|
}
|
|
Ind++;
|
|
}
|
|
Valores = `${Valores.substr(0, Valores.length - 2)} WHERE ${CampoID} = '${ValorID}';
|
|
`;
|
|
}
|
|
//console.log(Valores);
|
|
SQLMigracao = Valores;
|
|
//console.log(SQLMigracao);
|
|
execSQLQuery2(SQLMigracao, res, req.originalUrl);
|
|
//res.send(SQLMigracao);
|
|
}
|
|
});
|
|
|
|
router.post('/ExecutarSQLServerQuery', verifyJWT, (req, res) => {
|
|
const sqlQuery = req.body.comando;
|
|
execSQLQuery2(sqlQuery, res, req.originalUrl);
|
|
})
|
|
|
|
router.post('/ExecutarMySQLQuery', verifyJWT, (req, res) => {
|
|
const sqlQuery = req.body.comando;
|
|
execSQLQuery(sqlQuery, res, req.originalUrl);
|
|
})
|
|
//#endregion
|
|
|
|
//#region MIGRACAO DADOS MYSQL LOCAL PARA ONLINE
|
|
router.post('/MigracaoMySQLLocalToWeb', verifyJWT, (req, res) => {
|
|
|
|
const ip_externo = req.body.ip_externo;
|
|
const porta_mysql = req.body.porta_mysql;
|
|
|
|
var mysqlReference = require('mysql');
|
|
var DadosConnection = {
|
|
host: ip_externo,
|
|
user: 'myrobot',
|
|
password: 'myrobot2019',
|
|
database: 'myrobot',
|
|
port: porta_mysql
|
|
};
|
|
let mysqlLocal2 = mysqlReference.createConnection(DadosConnection);
|
|
|
|
const CamposStepclass = `idusers,idclasses,actualClass,actualExercise,actualAnswer,actualItem,answersdb,continueClass,completedClass,note,notification,idunits,notegame,homework,datefinal,dateinicial`;
|
|
const SQLQryStepclass = `select idusers,idclasses,actualClass,actualExercise,actualAnswer,actualItem,answersdb,continueClass,completedClass,note,notification,idunits,notegame,homework,datefinal,date_format(dateinicial, '%Y-%m-%d %h:%i:%s') AS dateinicial from stepclass;`;
|
|
const CamposUsergivenanswers = `idusers,idexerciseanswers,date_answered,fixed,idclasses,idunits`;
|
|
const SQLQryUsergivenanswers = `select ${CamposUsergivenanswers} from usergivenanswers;`;
|
|
const CamposUserstages = `idstages,idusers,idunits,idclasses,note`;
|
|
const SQLQryUserstages = `select ${CamposUserstages} from userstages;`;
|
|
|
|
mysqlLocal2.query(SQLQryStepclass, function (errorStepclass, resultsStepclss, fieldsStepclass) {
|
|
const TabelaStepclass = resultsStepclss;
|
|
mysqlLocal2.query(SQLQryUsergivenanswers, function (errorUsergivenanswers, resultsUsergivenanswers, fieldsUsergivenanswers) {
|
|
const TabelaUsergivenanswers = resultsUsergivenanswers
|
|
mysqlLocal2.query(SQLQryUserstages, function (errorUserstages, resultsUserstages, fieldsUserstages) {
|
|
const TabelaUserstages = resultsUserstages;
|
|
|
|
mysqlConnection.query(CriaSQLInsert(TabelaStepclass, CamposStepclass, 'stepclass'), function (errorStepclass1, resultsStepclss1, fieldsStepclass1) {
|
|
console.log(req.originalUrl + " success 200 - stepclass");
|
|
mysqlConnection.query(CriaSQLInsert(TabelaUsergivenanswers, CamposUsergivenanswers, 'usergivenanswers'), function (errorUsergivenanswers1, resultsUsergivenanswers1, fieldsUsergivenanswers1) {
|
|
console.log(req.originalUrl + " success 200 - usergivenanswers");
|
|
mysqlConnection.query(CriaSQLInsert(TabelaUserstages, CamposUserstages, 'userstages'), function (errorUserstages1, resultsUserstages1, fieldsUserstages1) {
|
|
console.log(req.originalUrl + " success 200 - userstages");
|
|
res.send(JSON.stringify({
|
|
Stepclass: {
|
|
SQL: CriaSQLInsert(TabelaStepclass, CamposStepclass, 'stepclass'),
|
|
results: resultsStepclss1,
|
|
error: errorStepclass1,
|
|
original: resultsStepclss
|
|
},
|
|
Usergivenanswers: {
|
|
SQL: CriaSQLInsert(TabelaUsergivenanswers, CamposUsergivenanswers, 'usergivenanswers'),
|
|
results: resultsUsergivenanswers1,
|
|
error: errorUsergivenanswers1,
|
|
original: resultsUsergivenanswers
|
|
},
|
|
Userstages: {
|
|
SQL: CriaSQLInsert(TabelaUserstages, CamposUserstages, 'userstages'),
|
|
results: resultsUserstages1,
|
|
error: errorUserstages1,
|
|
original: resultsUserstages
|
|
},
|
|
}));
|
|
});
|
|
});
|
|
});
|
|
});
|
|
})
|
|
})
|
|
});
|
|
|
|
function CriaSQLInsert(Dados, Campos, Tabela) {
|
|
let SQLQueryInsert = ``;
|
|
if (Dados && Dados.length > 0) {
|
|
SQLQueryInsert = `INSERT INTO ${Tabela} (${Campos}) VALUES `;
|
|
let Registros = ``;
|
|
for (let i = 0; i < Dados.length; i++) {
|
|
for (let o = 0; o < Campos.split(',').length; o++) {
|
|
if (o == 0)
|
|
Registros += '(';
|
|
|
|
let Registro = Dados[i][Campos.split(',')[o]];
|
|
if (Registro == null) {
|
|
Registros += `null,`;
|
|
}
|
|
else if (typeof (Registro) == "number" || typeof (Registro) == "boolean") {
|
|
Registros += `${Registro},`;
|
|
}
|
|
else if (typeof (Registro) == "string" || typeof (Registro) == "object") {
|
|
Registros += `'${Registro}',`;
|
|
}
|
|
else {
|
|
Registros += `null,`;
|
|
}
|
|
|
|
if (o == Campos.split(',').length - 1)
|
|
Registros = Registros.substr(0, Registros.length - 1) + '),';
|
|
}
|
|
}
|
|
SQLQueryInsert += Registros.substr(0, Registros.length - 1) + ";";
|
|
}
|
|
|
|
return SQLQueryInsert;
|
|
}
|
|
|
|
router.get('/RemoverDuplicadosMySQL', (req, res) => {
|
|
console.log(req.originalUrl + " initializing...");
|
|
const SQLQueryStepclass = `select sc.idstepclass, R.*, sc.note, sc.completedClass, sc.notegame, sc.homework from
|
|
(select idusers, idunits, idclasses, count(idusers) as qtde from stepclass group by idusers, idunits, idclasses
|
|
HAVING COUNT(*) > 1) R
|
|
inner join stepclass sc on sc.idclasses = R.idclasses AND sc.idunits = R.idunits AND sc.idusers = R.idusers
|
|
ORDER BY idusers, idunits, idclasses;`;
|
|
const SQLQueryUsergivenanswers = `SELECT ug.idusergivenanswers, R.* FROM
|
|
(SELECT idusers, idunits, idclasses, idexerciseanswers, COUNT(*) AS qtde FROM usergivenanswers
|
|
GROUP BY idusers, idunits, idclasses, idexerciseanswers
|
|
HAVING COUNT(*) > 1) R
|
|
INNER JOIN usergivenanswers ug ON ug.idusers = R.idusers and ug.idunits = R.idunits and ug.idexerciseanswers = R.idexerciseanswers
|
|
ORDER BY ug.idusers, ug.idunits, ug.idclasses, ug.idexerciseanswers;`;
|
|
const SQLQueryUserstages = `SELECT us.iduserstages, R.* FROM
|
|
(SELECT idusers, idunits, idclasses, idstages, COUNT(*) AS qtde FROM userstages
|
|
GROUP BY idusers, idunits, idclasses, idstages
|
|
HAVING COUNT(*) > 1) R
|
|
INNER JOIN userstages us ON us.idusers = R.idusers and us.idunits = R.idunits and us.idstages = R.idstages
|
|
ORDER BY us.idusers, us.idunits, us.idclasses, us.idstages;`;
|
|
RemoverDuplicadosTabela(true, SQLQueryStepclass, ['note', 'completedClass', 'notegame', 'homework'], 'stepclass', function(results1, error1) {
|
|
console.log("Sucesso: stepclass");
|
|
RemoverDuplicadosTabela(false, SQLQueryUsergivenanswers, ['idusers', 'idunits', 'idclasses', 'idexerciseanswers'], 'usergivenanswers', function(results2, error2) {
|
|
console.log("Sucesso: usergivenanswers");
|
|
RemoverDuplicadosTabela(false, SQLQueryUserstages, ['idusers', 'idunits', 'idclasses', 'idstages'], 'userstages', function(results3, error3) {
|
|
console.log("Sucesso: userstages");
|
|
res.send(JSON.stringify({
|
|
StepClass: {
|
|
response: results1,
|
|
error: error1,
|
|
},
|
|
UserGivenAnswers: {
|
|
response: results2,
|
|
error: error2,
|
|
},
|
|
UserStages: {
|
|
response: results3,
|
|
error: error3,
|
|
},
|
|
}));
|
|
console.log(req.originalUrl + " success 200");
|
|
});
|
|
});
|
|
});
|
|
//execSQLQuery(SQLQuery, res, req);
|
|
});
|
|
|
|
function RemoverDuplicadosTabela(Comparacao, SQLQuery, Campos, Tabela, callback) {
|
|
mysqlConnection.query(SQLQuery, function (error, results, fields) {
|
|
let TabelaDuplicadas = results;
|
|
if (TabelaDuplicadas && TabelaDuplicadas.length > 0) {
|
|
let IDs = ``;
|
|
if (Comparacao) { // METODO DE COMPARACAO DE DADOS
|
|
let DadosDuplicados = [];
|
|
for (let i = 0; i < TabelaDuplicadas.length; i = i + 2) {
|
|
DadosDuplicados.push(ComparaDuplicados(Campos, TabelaDuplicadas, i));
|
|
}
|
|
let Resultados = [];
|
|
for (let i = 0; i < DadosDuplicados.length; i++) {
|
|
let Indice = 0;
|
|
let Somatoria = 0;
|
|
for (let o = 0; o < DadosDuplicados[i].length; o++) {
|
|
Somatoria += DadosDuplicados[i][o];
|
|
}
|
|
Resultados.push(Somatoria);
|
|
if (Somatoria >= 0)
|
|
Resultados.push(-10);
|
|
else
|
|
Resultados.push(10);
|
|
}
|
|
for (let i = 0; i < TabelaDuplicadas.length; i = i + 2) {
|
|
try {
|
|
if (Resultados[i] >= 0)
|
|
IDs += TabelaDuplicadas[i + 1]['id' + Tabela] + ',';
|
|
else
|
|
IDs += TabelaDuplicadas[i]['id' + Tabela] + ',';
|
|
}
|
|
catch (e) {
|
|
|
|
}
|
|
}
|
|
}
|
|
else { // REMOCAO DE DADOS ATRAVES DE QUANTIDADE REPETIDA
|
|
let NovaTabela = [];
|
|
for (let i = 0; i < TabelaDuplicadas.length; i++) {
|
|
let Repetido = false;
|
|
for (let o = 0; o < NovaTabela.length; o++) {
|
|
let TotalIgual = 0;
|
|
for (let u = 0; u < Campos.length; u++) {
|
|
if (TabelaDuplicadas[i][Campos[u]] == NovaTabela[o][Campos[u]]) {
|
|
TotalIgual++;
|
|
}
|
|
}
|
|
if (TotalIgual == Campos.length) {
|
|
IDs += TabelaDuplicadas[i]['id' + Tabela] + ",";
|
|
Repetido = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!Repetido)
|
|
NovaTabela.push(TabelaDuplicadas[i]);
|
|
}
|
|
//callback(NovaTabela, TabelaDuplicadas);
|
|
}
|
|
IDs = IDs.substr(0, IDs.length - 1);
|
|
RemoverDados(Tabela, IDs, TabelaDuplicadas.length, 0, function (Finalizado) {
|
|
callback(results, error);
|
|
});
|
|
}
|
|
else {
|
|
callback(results, error);
|
|
}
|
|
});
|
|
}
|
|
|
|
function ComparaDuplicados(Campos, TabelaDuplicadas, i) {
|
|
let Dados = [];
|
|
for (let o = 0; o < Campos.length; o++) {
|
|
let IIgualdade = 0;
|
|
try {
|
|
if ((TabelaDuplicadas[i][Campos[o]] > TabelaDuplicadas[i + 1][Campos[o]]) || (TabelaDuplicadas[i][Campos[o]] != null && TabelaDuplicadas[i + 1][Campos[o]] == null))
|
|
IIgualdade++;
|
|
else if ((TabelaDuplicadas[i][Campos[o]] < TabelaDuplicadas[i + 1][Campos[o]]) || (TabelaDuplicadas[i][Campos[o]] == null && TabelaDuplicadas[i + 1][Campos[o]] != null))
|
|
IIgualdade--;
|
|
}
|
|
catch (e) {
|
|
|
|
}
|
|
Dados.push(IIgualdade);
|
|
}
|
|
return Dados;
|
|
}
|
|
|
|
function RemoverDados(Tabela, IDs, Registros, Removidos, callback) {
|
|
const SQLRemover = `DELETE FROM ${Tabela} WHERE id${Tabela} IN (${IDs});`;
|
|
mysqlConnection.query(SQLRemover, function (error, results, fields) {
|
|
Removidos++;
|
|
console.log("Dados removidos: " + Tabela);
|
|
if (results['affectedRows'] == 0) {
|
|
callback(true);
|
|
}
|
|
else {
|
|
RemoverDados(Tabela, IDs, Registros, Removidos, callback);
|
|
}
|
|
});
|
|
}
|
|
//#endregion
|
|
|
|
//#region MODO EMERGENCIAL
|
|
router.get('/CheckInternetStatus', (req, res) => {
|
|
console.log("Verificando conexão com a internet...");
|
|
checkInternet(function(isConnected) {
|
|
let StepClass = [];
|
|
let SQLSC = "INSERT INTO stepclass (idstepclass, idusers, idclasses, actualClass, actualExercise, actualAnswer, actualItem, answersdb, continueClass, completedClass, note, notification, idunits, notegame, homework, datefinal, dateinicial) VALUES ";
|
|
let UserGivenAnswers = [];
|
|
let SQLUG = "INSERT INTO usergivenanswers (idusergivenanswers, idusers, idexerciseanswers, date_answered, fixed, idclasses, idunits) VALUES ";
|
|
let UserStages = [];
|
|
let SQLUS = "INSERT INTO userstages (iduserstages, idstages, idusers, idunits, idclasses, note) VALUES ";
|
|
let Comando = ``;
|
|
if (isConnected && Variables('local') == "Local") {
|
|
//console.log("CASO 1");
|
|
mysqlConnection.query("select idusers, idclasses, actualClass, actualExercise, actualAnswer, actualItem, answersdb, continueClass, completedClass, note, notification, idunits, notegame, homework, datefinal, date_format(dateinicial, '%Y/%m-%d %h:%i:%s') as 'dateinicial' from stepclass;", function (errorSC, resultsSC, fieldsSC) {
|
|
StepClass = resultsSC;
|
|
mysqlConnection.query('select idusers, idexerciseanswers, date_answered, fixed, idclasses, idunits from usergivenanswers;', function (errorUG, resultsUG, fieldsUG) {
|
|
UserGivenAnswers = resultsUG;
|
|
mysqlConnection.query('select idstages, idusers, idunits, idclasses, note from userstages;', function (errorUS, resultsUS, fieldsUS) {
|
|
UserStages = resultsUS;
|
|
|
|
if (resultsSC && resultsSC.length > 0)
|
|
SQLSC = MontaSQLInsert(SQLSC, StepClass, "stepclass");
|
|
else
|
|
SQLSC = "SELECT 1";
|
|
if (resultsUG && resultsUG.length > 0)
|
|
SQLUG = MontaSQLInsert(SQLUG, UserGivenAnswers, "usergivenanswers");
|
|
else
|
|
SQLUG = "SELECT 1";
|
|
if (resultsUS && resultsUS.length > 0)
|
|
SQLUS = MontaSQLInsert(SQLUS, UserStages, "userstages");
|
|
else
|
|
SQLUS = "SELECT 1";
|
|
|
|
Comando = `sed -i 's/var Online = false;/var Online = true;/' /var/www/myrobot_api/helpers/config.js;sed -i 's/Emergencia=1;/Emergencia=0;/' /var/www/html/assets/LW.cnf`;
|
|
ExecutaMudanca(Comando, isConnected, res, SQLSC, SQLUG, SQLUS);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
else if (!isConnected && Variables('local') == "Online") {
|
|
//console.log("CASO 2");
|
|
Comando = `sed -i 's/var Online = true;/var Online = false;/' /var/www/myrobot_api/helpers/config.js;sed -i 's/Emergencia=0;/Emergencia=1;/' /var/www/html/assets/LW.cnf`;
|
|
ExecutaMudanca(Comando, isConnected, res, "", "", "");
|
|
}
|
|
else {
|
|
//console.log("CASO 3");
|
|
Comando = `echo "Operação do servidor estável"`;
|
|
ExecutaMudanca(Comando, isConnected, res, "", "", "");
|
|
}
|
|
});
|
|
});
|
|
|
|
function MontaSQLInsert(SQLIN, Tabela, NomeTabela) {
|
|
for (let i = 0; i < Tabela.length; i++) {
|
|
SQLIN += `((select (tb1.id${NomeTabela} + 1) from ${NomeTabela} tb1 order by tb1.id${NomeTabela} desc limit 1), `;
|
|
for (let key in Tabela[i]) { //.toISOString().replace(/T/, ' ').replace(/\..+/, '')
|
|
SQLIN += ((Tabela[i][key] == null) ? "" : "'") + ((Tabela[i][key]) ? Tabela[i][key].toString().replace("/", "-") : Tabela[i][key]) + ((Tabela[i][key] == null) ? "," : "',");
|
|
}
|
|
SQLIN = SQLIN.substring(0, SQLIN.length - 1) + "),";
|
|
}
|
|
SQLIN = SQLIN.substring(0, SQLIN.length - 1) + ";";
|
|
return SQLIN;
|
|
}
|
|
|
|
function ExecutaMudanca(Comando, isConnected, res, SQLSC, SQLUG, SQLUS) {
|
|
const shell = require('shelljs');
|
|
let LocalAntes = Variables('local');
|
|
shell.exec(Comando, function (sucesso) {
|
|
let LocalAgora = "";
|
|
if (isConnected) {
|
|
Variables_Set("local", true);
|
|
console.log(new Date().toUTCString() + " - Servidor operando em modo normal");
|
|
LocalAgora = "Online";
|
|
}
|
|
else {
|
|
Variables_Set("local", false);
|
|
console.log(new Date().toUTCString() + " - Servidor operando em modo de emergência");
|
|
LocalAgora = "Local";
|
|
}
|
|
|
|
//console.log("Antes: " + LocalAntes);
|
|
//console.log("Agora: " + LocalAgora);
|
|
|
|
if (LocalAntes != LocalAgora) {
|
|
if (LocalAgora == "Online") {
|
|
var mysqlReference = require('mysql');
|
|
var DadosConnection = {
|
|
host: "127.0.0.1",
|
|
user: "myrobot",
|
|
password: "myrobot2019",
|
|
database: Variables('database_mysql'),
|
|
port: 3306
|
|
};
|
|
let mysqlLocal2 = mysqlReference.createConnection(DadosConnection);
|
|
mysqlLocal2.query("TRUNCATE stepclass;", function (errorSC1, resultsSC1, fieldsSC1) {
|
|
mysqlLocal2.query("TRUNCATE usergivenanswers;", function (errorUG1, resultsUG1, fieldsUG1) {
|
|
mysqlLocal2.query("TRUNCATE userstages;", function (errorUS1, resultsUS1, fieldsUS1) {
|
|
console.log(new Date().toUTCString() + " - Dados removidos do banco Local com sucesso!");
|
|
if (LocalAntes == "Local" && (SQLSC != "SELECT 1" || SQLUG != "SELECT 1" || SQLUS != "SELECT 1")) {
|
|
SincronizarDadosParaOnline(SQLSC, SQLUG, SQLUS);
|
|
}
|
|
else {
|
|
AtualizaConexaoMySQL();
|
|
}
|
|
});
|
|
});
|
|
});
|
|
}
|
|
else {
|
|
AtualizaConexaoMySQL();
|
|
}
|
|
|
|
}
|
|
|
|
res.send(true);
|
|
});
|
|
}
|
|
|
|
function checkInternet(cb) {
|
|
require('dns').lookup('myrobotlab.com.br', function(err) {
|
|
if (err)
|
|
cb(false);
|
|
else
|
|
cb(true);
|
|
})
|
|
}
|
|
|
|
function SincronizarDadosParaOnline(SQLSC, SQLUG, SQLUS) {
|
|
var mysqlReference = require('mysql');
|
|
var DadosConnection = {
|
|
host: "18.228.91.135",
|
|
user: "root",
|
|
password: "maker2018**==",
|
|
database: Variables('database_mysql'),
|
|
port: 3306
|
|
};
|
|
mysqlLocal2 = mysqlReference.createConnection(DadosConnection);
|
|
|
|
console.log(new Date().toUTCString() + " - Sincronizando dados para o servidor WEB...");
|
|
setTimeout(() => {
|
|
mysqlLocal2.query(SQLSC, function (errorSC, resultsSC, fieldsSC) {
|
|
mysqlLocal2.query(SQLUG, function (errorUG, resultsUG, fieldsUG) {
|
|
mysqlLocal2.query(SQLUS, function (errorUS, resultsUS, fieldsUS) {
|
|
console.log(new Date().toUTCString() + " - Dados sincronizados com sucesso!");
|
|
AtualizaConexaoMySQL();
|
|
});
|
|
});
|
|
});
|
|
}, 1000);
|
|
}
|
|
|
|
//#endregion
|
|
|
|
//#region SINCRONIA AUTOMATICA
|
|
router.get('/SincroniaAutomaticaMySQL/:token', (req, res) => {
|
|
let token = req.params.token;
|
|
if (token != Variables("tk_fixed")) {
|
|
res.status(500).send({ status: 'expired' });
|
|
return;
|
|
}
|
|
if (Variables('local') == "Local") {
|
|
console.log("Servidor em modo local - não baixa atualizações");
|
|
res.send(false);
|
|
return;
|
|
}
|
|
const shell = require('shelljs');
|
|
const Comando = `cd /var/www/html/backup/;rm dump1.sql;wget http://18.228.91.135/backup/dump1.sql;mysql --protocol=tcp --host=127.0.0.1 --user=myrobot --password=myrobot2019 --port=3306 --database=${Variables("database_mysql")} < "dump1.sql"`;
|
|
shell.exec(Comando, function(Sucesso) {
|
|
var mysqlReference = require('mysql');
|
|
var DadosConnection = {
|
|
host: "127.0.0.1",
|
|
user: "myrobot",
|
|
password: "myrobot2019",
|
|
database: Variables('database_mysql'),
|
|
port: 3306
|
|
};
|
|
let mysqlLocal2 = mysqlReference.createConnection(DadosConnection);
|
|
mysqlLocal2.query('SET FOREIGN_KEY_CHECKS = 0;', function (error0, results0, fields0) {
|
|
console.log(new Date().toUTCString() + " - " + "Limpando stepclass...");
|
|
mysqlLocal2.query("TRUNCATE stepclass;", function (errorSC1, resultsSC1, fieldsSC1) {
|
|
if (errorSC1) console.log(errorSC1);
|
|
console.log(new Date().toUTCString() + " - " + "Limpando usergivenanswers...");
|
|
mysqlLocal2.query("TRUNCATE usergivenanswers;", function (errorUG1, resultsUG1, fieldsUG1) {
|
|
if (errorUG1) console.log(errorUG1);
|
|
console.log(new Date().toUTCString() + " - " + "Limpando userstages...");
|
|
mysqlLocal2.query("TRUNCATE userstages;", function (errorUS1, resultsUS1, fieldsUS1) {
|
|
if (errorUS1) console.log(errorUS1);
|
|
mysqlLocal2.query('SET FOREIGN_KEY_CHECKS = 1;', function (error1, results1, fields1) {
|
|
console.log(new Date().toUTCString() + " - " + "MySQL sincronizado com sucesso!");
|
|
res.send(true);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
//#endregion
|
|
|
|
//#region CORRECAO DO BANCO SQL SERVER
|
|
|
|
router.get('/RemoverMatriculasTeste/:matriculas/:unidades', (req, res) => {
|
|
const Matriculas = req.params.matriculas;
|
|
const UnidadesIDs = req.params.unidades;
|
|
mysqlConnection.query(`select * from units where idunits in ${UnidadesIDs};`, function (error, resUnits, fields) {
|
|
let Unidades = resUnits;
|
|
LoopUnidades(Unidades, 0, Matriculas, function(Sucesso) {
|
|
let TabelasMySQL = [];
|
|
TabelasMySQL.push({"Tabela": "stepclass", "IDUsers": Matriculas, "IDUnits": UnidadesIDs});
|
|
TabelasMySQL.push({"Tabela": "usergivenanswers", "IDUsers": Matriculas, "IDUnits": UnidadesIDs});
|
|
TabelasMySQL.push({"Tabela": "userstages", "IDUsers": Matriculas, "IDUnits": UnidadesIDs});
|
|
LoopDeleteMySQL(TabelasMySQL, 0, function(Sucesso2) {
|
|
res.send(true);
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
});
|
|
|
|
function LoopUnidades(Unidades, Index, Matriculas, callback) {
|
|
if (Index < Unidades.length) {
|
|
const db = Unidades[Index]['reference_db'] + ".dbo.";
|
|
const SQLConsultaIDs = `select distinct
|
|
ma.IDMatricula,
|
|
cl.IDCliente,
|
|
cl.Nome,
|
|
at.IdAtendimento,
|
|
pm.IDPreMatricula,
|
|
tu.IdTurma,
|
|
tc.IdTurmasCalendario,
|
|
ch.IDChamadas,
|
|
pr.IDPreRequerimento
|
|
from ${db}Matriculas ma
|
|
left join ${db}Clientes cl on cl.IDCliente = ma.IDClienteResponsavel
|
|
left join ${db}TreinandosTurmas tt on tt.IDMatricula = ma.IDMatricula
|
|
left join ${db}Atendimentos at on at.IdAtendimento = ma.IDAtendimento
|
|
left join ${db}PreMatricula pm on pm.IDPreMatricula = ma.IDPreMatricula
|
|
left join ${db}Turmas tu on tu.IdTurma = tt.CodigoTurma
|
|
left join ${db}TurmasCalendario tc on tc.IdTurma = tu.IdTurma
|
|
left join ${db}Chamadas ch on ch.IDTurma = tu.IdTurma
|
|
left join ${db}ChamadasConteudos cc on cc.IDChamadas = ch.IDChamadas
|
|
left join ${db}ChamadasDetalhes cd on cd.IDChamadas = ch.IDChamadas
|
|
left join ${db}PreRequerimento pr on pr.IDMatricula = ma.IDMatricula
|
|
left join ${db}RemanejamentoDetalhes rd on rd.IDMatricula = ma.IDMatricula
|
|
where ma.IDMatricula in ${Matriculas};`;
|
|
sqlServerConnection.request().query(SQLConsultaIDs, function (error, results, fields) {
|
|
const ResultadoIDs = results.recordsets[0];
|
|
let IDsChamadas = "(";
|
|
let IDsPreRequerimento = "(";
|
|
let IDsTurmas = "(";
|
|
let IDsPreMatriculas = "(";
|
|
let IDsAtendimentos = "(";
|
|
let IDsClientes = "(";
|
|
let IDsMatriculas = "(";
|
|
let IDsRemanejamentos = "(";
|
|
for (let i = 0; i < ResultadoIDs.length; i++) {
|
|
if (!IDsChamadas.includes(ResultadoIDs[i]['IDChamadas']) && ResultadoIDs[i]['IDChamadas'] != null)
|
|
IDsChamadas += ResultadoIDs[i]['IDChamadas'] + ",";
|
|
if (!IDsPreRequerimento.includes(ResultadoIDs[i]['IDPreRequerimento']) && ResultadoIDs[i]['IDPreRequerimento'] != null)
|
|
IDsPreRequerimento += ResultadoIDs[i]['IDPreRequerimento'] + ",";
|
|
if (!IDsTurmas.includes(ResultadoIDs[i]['IdTurma']) && ResultadoIDs[i]['IdTurma'] != null)
|
|
IDsTurmas += ResultadoIDs[i]['IdTurma'] + ",";
|
|
if (!IDsPreMatriculas.includes(ResultadoIDs[i]['IDPreMatricula']) && ResultadoIDs[i]['IDPreMatricula'] != null)
|
|
IDsPreMatriculas += ResultadoIDs[i]['IDPreMatricula'] + ",";
|
|
if (!IDsAtendimentos.includes(ResultadoIDs[i]['IdAtendimento']) && ResultadoIDs[i]['IdAtendimento'] != null)
|
|
IDsAtendimentos += ResultadoIDs[i]['IdAtendimento'] + ",";
|
|
if (!IDsClientes.includes(ResultadoIDs[i]['IDCliente']) && ResultadoIDs[i]['IDCliente'] != null)
|
|
IDsClientes += ResultadoIDs[i]['IDCliente'] + ",";
|
|
if (!IDsMatriculas.includes(ResultadoIDs[i]['IDMatricula']) && ResultadoIDs[i]['IDMatricula'] != null)
|
|
IDsMatriculas += ResultadoIDs[i]['IDMatricula'] + ",";
|
|
if (!IDsRemanejamentos.includes(ResultadoIDs[i]['IDRemanejamento']) && ResultadoIDs[i]['IDRemanejamento'] != null)
|
|
IDsRemanejamentos += ResultadoIDs[i]['IDRemanejamento'] + ",";
|
|
}
|
|
IDsChamadas = IDsChamadas.substring(0, IDsChamadas.length - 1) + ")";
|
|
IDsPreRequerimento = IDsPreRequerimento.substring(0, IDsPreRequerimento.length - 1) + ")";
|
|
IDsTurmas = IDsTurmas.substring(0, IDsTurmas.length - 1) + ")";
|
|
IDsPreMatriculas = IDsPreMatriculas.substring(0, IDsPreMatriculas.length - 1) + ")";
|
|
IDsAtendimentos = IDsAtendimentos.substring(0, IDsAtendimentos.length - 1) + ")";
|
|
IDsClientes = IDsClientes.substring(0, IDsClientes.length - 1) + ")";
|
|
IDsMatriculas = IDsMatriculas.substring(0, IDsMatriculas.length - 1) + ")";
|
|
IDsRemanejamentos = IDsRemanejamentos.substring(0, IDsRemanejamentos.length - 1) + ")";
|
|
|
|
let Tabelas = [];
|
|
// chamadas
|
|
Tabelas.push({"Tabela": "ChamadasDetalhes", "CampoID": "IDChamadas", "ValorID": IDsChamadas});
|
|
Tabelas.push({"Tabela": "ChamadasConteudos", "CampoID": "IDChamadas", "ValorID": IDsChamadas});
|
|
Tabelas.push({"Tabela": "Chamadas", "CampoID": "IDChamadas", "ValorID": IDsChamadas});
|
|
// pre requerimentos
|
|
Tabelas.push({"Tabela": "PreRequerimento", "CampoID": "IDPreRequerimento", "ValorID": IDsPreRequerimento});
|
|
// turmas
|
|
Tabelas.push({"Tabela": "TurmasCalendario", "CampoID": "IdTurma", "ValorID": IDsTurmas});
|
|
Tabelas.push({"Tabela": "TurmasDetalhes", "CampoID": "IDTurma", "ValorID": IDsTurmas});
|
|
Tabelas.push({"Tabela": "TurmasAgendaCalendario", "CampoID": "IdTurma", "ValorID": IDsTurmas});
|
|
Tabelas.push({"Tabela": "TransacoesTurmasDetalhe", "CampoID": "IdTurma", "ValorID": IDsTurmas});
|
|
Tabelas.push({"Tabela": "TransacoesTurmasCalendario", "CampoID": "IdTurma", "ValorID": IDsTurmas});
|
|
Tabelas.push({"Tabela": "TransacoesTurmas", "CampoID": "IdTurma", "ValorID": IDsTurmas});
|
|
Tabelas.push({"Tabela": "Notas", "CampoID": "IDTurma", "ValorID": IDsTurmas});
|
|
Tabelas.push({"Tabela": "AtendimentosFuncionarios", "CampoID": "IdTurma", "ValorID": IDsTurmas});
|
|
Tabelas.push({"Tabela": "Turmas", "CampoID": "IdTurma", "ValorID": IDsTurmas});
|
|
// pre matricula
|
|
Tabelas.push({"Tabela": "PreMatriculaCursos", "CampoID": "IDPreMatricula", "ValorID": IDsPreMatriculas});
|
|
Tabelas.push({"Tabela": "PreMatriculaFinanceiroMaterial", "CampoID": "IDPreMatricula", "ValorID": IDsPreMatriculas});
|
|
Tabelas.push({"Tabela": "PreMatriculaParcelas", "CampoID": "IDPreMatricula", "ValorID": IDsPreMatriculas});
|
|
Tabelas.push({"Tabela": "PreMatriculaTreinandos", "CampoID": "IDPreMatricula", "ValorID": IDsPreMatriculas});
|
|
Tabelas.push({"Tabela": "PreMatricula", "CampoID": "IDPreMatricula", "ValorID": IDsPreMatriculas});
|
|
// atendimentos
|
|
Tabelas.push({"Tabela": "AtendimentosComissoes", "CampoID": "IdAtendimento", "ValorID": IDsAtendimentos});
|
|
Tabelas.push({"Tabela": "AtendimentosCabecalho", "CampoID": "IdAtendimento", "ValorID": IDsAtendimentos});
|
|
Tabelas.push({"Tabela": "ControleAtendimento", "CampoID": "IdAtendimento", "ValorID": IDsAtendimentos});
|
|
Tabelas.push({"Tabela": "Atendimentos", "CampoID": "IdAtendimento", "ValorID": IDsAtendimentos});
|
|
// clientes
|
|
Tabelas.push({"Tabela": "Clientes", "CampoID": "IDCliente", "ValorID": IDsClientes});
|
|
// matriculas
|
|
Tabelas.push({"Tabela": "Evadidos", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "HistoricoEvadidos", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "HistoricoFaltas", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "HistoricoMatriculas", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "HistoricoTreinandosTurmas", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "MatriculasCursos", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "MatriculasProdutos", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "MatriculasTreinandos", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "NotasDetalhes", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "NotasDetalhesSequencial", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "TreinandosTurmasMateriais", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "TreinandosTurmas", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "Transferencias", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "ContasReceber", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
Tabelas.push({"Tabela": "Matriculas", "CampoID": "IDMatricula", "ValorID": IDsMatriculas});
|
|
LoopDeleteSQLServer(db, Tabelas, 0, function(Sucesso) {
|
|
console.log(`Banco SQLServer da unidade de ${Unidades[Index]['unityname']} corrigido com sucesso!`);
|
|
Index++;
|
|
LoopUnidades(Unidades, Index, Matriculas, callback);
|
|
});
|
|
});
|
|
}
|
|
else {
|
|
callback(true);
|
|
}
|
|
}
|
|
|
|
function LoopDeleteSQLServer(db, Tabelas, Index, callback) {
|
|
if (Index < Tabelas.length) {
|
|
const SQLDelete = `delete from ${db}${Tabelas[Index]['Tabela']} where ${Tabelas[Index]['CampoID']} in ${Tabelas[Index]['ValorID']};`;
|
|
//console.log(SQLDelete);
|
|
sqlServerConnection.request().query(SQLDelete, function (error, results, fields) {
|
|
Index++;
|
|
LoopDeleteSQLServer(db, Tabelas, Index, callback);
|
|
});
|
|
}
|
|
else {
|
|
callback(true);
|
|
}
|
|
}
|
|
|
|
function LoopDeleteMySQL(Tabelas, Index, callback) {
|
|
if (Index < Tabelas.length) {
|
|
const SQLDelete = `delete from ${Tabelas[Index]['Tabela']} where idunits in ${Tabelas[Index]['IDUnits']} and idusers in ${Tabelas[Index]['IDUsers']};`;
|
|
//console.log(SQLDelete);
|
|
mysqlConnection.query(SQLDelete, function (error, results, fields) {
|
|
Index++;
|
|
LoopDeleteMySQL(Tabelas, Index, callback);
|
|
});
|
|
}
|
|
else {
|
|
console.log(`Banco MySQL corrigido com sucesso!`);
|
|
callback(true);
|
|
}
|
|
}
|
|
|
|
//#endregion
|
|
|
|
//#region ACOMPANHAMENTO STEPCLASS
|
|
|
|
router.get('/CheckStepClass', (req, res) => {
|
|
mysqlConnection.query(`select count(*) as 'qtde' from stepclass;`, function (error, results, fields) {
|
|
let Resultado = false;
|
|
if (results && results[0]['qtde'] > 100) {
|
|
//console.log("Tabela StepClass OK");
|
|
Resultado = true;
|
|
}
|
|
else {
|
|
console.log(new Date().toUTCString() + " - Erro na tabela StepClass");
|
|
const request = require('request');
|
|
request.post('http://18.228.91.135:3337/api/email/send', {
|
|
json: {
|
|
from: 'trocasenhamyrobot@gmail.com.br',
|
|
to: `zendionmazinni@gmail.com`,
|
|
subject: "Problema na Tabela StepClass",
|
|
text: `Tabela StepClass está vazia! Verifique imediatamente!!`
|
|
}
|
|
}, function (error, response, body) {});
|
|
}
|
|
res.send(Resultado);
|
|
});
|
|
});
|
|
|
|
//#endregion
|
|
|
|
return router;
|
|
}
|
|
|
|
module.exports = routes; |