require('../connections/mysql-server');
require('../connections/sql-server');
require('../helpers/CheckToken');
const express = require('express');
const router = express.Router();
const bodyParser = require('body-parser');
const { Router } = require('express');
router.use(bodyParser.urlencoded({ extended: true }));
router.use(bodyParser.json());
var routes = function () {
router.post('/authUser', (req, res) => {
//const password = encriptPassword(req.body.password);
const type = parseInt(req.body.type);
const password = req.body.password;
const user = req.body.login;
const db = req.body.db;
this.id = type + user + password;
const query = `SELECT
zu.user AS IDMatricula,
zu.userName AS Nome,
zu.idzoeusertype AS idusertype
FROM zoeusers zu
WHERE zu.enabled = 1 AND CONCAT(zu.idunits, '.dbo.') = '${db}' AND zu.user = '${user}' AND zu.password = '${password}';`;
//console.log(query);
execMySQLQueryLogin(query, res, req.originalUrl);
});
router.post('/authUserOld', (req, res) => {
const type = parseInt(req.body.type);
const password = encriptPassword(req.body.password);
const email = req.body.email;
const user = req.body.login;
this.id = type + user + password;
const db = req.body.db;
const ModoEmergencia = req.body.ME || false;
/* if(db != "SGPInicial.dbo." && user == "190000"){
//Vai entra não rapai
}else {*/
switch (type) {
case 1: //funcionário
execSQLQueryLogin(`SELECT *,
1 as 'idusertype' FROM ${db}Funcionarios WHERE IDFuncionario = '${user}' AND Senha = '${password}'`, res, req.originalUrl);
break;
case "1": //funcionário app
execSQLQueryLogin(`SELECT IDFuncionario, Nome,
1 as 'idusertype' FROM ${db}Funcionarios WHERE IDFuncionario = '${user}' AND Senha = '${password}'`, res, req.originalUrl);
break;
case 2: //adm
execMySQLQueryLogin(`SELECT
*
FROM users
WHERE user = '${user}' AND password = '${password}' AND enabled = 1 AND idusertype in (2, 3, 6, 7, 8, 9, 10, 11, 12, 13);`, res, req.originalUrl);
break;
case 3: //First Access
execSQLQuery2(`SELECT
mt.IDMatricula,
c.e_mail,
c.Nome,
c.IDCliente,
c.SenhaIntranet
FROM ${db}MatriculasTreinandos mt
INNER JOIN ${db}Clientes c ON mt.IDTreinando = c.IDCliente
WHERE mt.IDMatricula = '${user}' AND c.e_mail = '${email}';`, res, req.originalUrl);
break;
case 4: //aluno
if (ModoEmergencia) {
execMySQLQueryLogin(`SELECT
${user} AS IDMatricula,
'123' AS SenhaIntranet,
'Aluno' AS Nome,
4 as 'idusertype';`, res, req.originalUrl);
}
else {
//console.log("Matricula: " + user + " - Senha: '" + password + "'");
// ' ' espaços em branco das senhas
if (user == "190000")
{
if (db == "SGPInicial.dbo." && password == encriptPassword("z0et3acherM02ster") )
{
execSQLQueryLogin(`SELECT
'190000' as 'IDMatricula',
'maker2019' as 'SenhaIntranet',
'Sistema' as 'Nome',
4 as 'idusertype';`, res, req.originalUrl);
}
else if(db != "SGPInicial.dbo." && password == encriptPassword("zoeteacher"))
{
execSQLQueryLogin(`SELECT
'190000' as 'IDMatricula',
'maker2019' as 'SenhaIntranet',
'Sistema' as 'Nome',
4 as 'idusertype';`, res, req.originalUrl);
}
}
else if (user =="190024" && password == encriptPassword("123"))
{
execSQLQueryLogin(`SELECT
'190024' as 'IDMatricula',
'maker2019' as 'SenhaIntranet',
'Sistema' as 'Nome',
4 as 'idusertype';`, res, req.originalUrl);
}
else if(user=="190025" && password == encriptPassword("123"))
{
execSQLQueryLogin(`SELECT
'190025' as 'IDMatricula',
'maker2019' as 'SenhaIntranet',
'Sistema' as 'Nome',
4 as 'idusertype';`, res, req.originalUrl);
}
else if(user=="190026" && password == encriptPassword("123"))
{
execSQLQueryLogin(`SELECT
'190026' as 'IDMatricula',
'maker2019' as 'SenhaIntranet',
'Sistema' as 'Nome',
4 as 'idusertype';`, res, req.originalUrl);
}
else if(user=="240001" && password == encriptPassword("123"))
{
execSQLQueryLogin(`SELECT
'240001' as 'IDMatricula',
'123' as 'SenhaIntranet',
'ZoeSistema' as 'Nome',
4 as 'idusertype';`, res, req.originalUrl);
}
else if (user == "190001" && password == encriptPassword("123")) {
execSQLQueryLogin(`SELECT
'190001' as 'IDMatricula',
'123' as 'SenhaIntranet',
'Aluno Demonstração' as 'Nome',
4 as 'idusertype';`, res, req.originalUrl);
}
else if (user == "190002" && password == encriptPassword("123")) {
mysqlConnection.query(`select * from usershomework uh inner join units un on un.idunits = uh.idunits where uh.idusers = ${user} and un.reference_db = '${db.split('.dbo.')[0]}';`, function(error, AlunoExiste, fields) {
if (AlunoExiste.length > 0 && AlunoExiste[0]['disabled'] == 1) {
res.send(JSON.stringify({
"status": 500,
"error": "Usuário desativado",
"response": [],
"token": null
}));
}
else if (AlunoExiste.length > 0 && AlunoExiste[0]['disabled'] == 0) {
mysqlConnection.query(`update usershomework set disabled = 1 where idusers = ${user} and idunits = (select idunits from units where reference_db = '${db.split('.dbo.')[0]}');`, function(error, results, fields) {
execSQLQueryLogin(`SELECT
'190002' as 'IDMatricula',
'123' as 'SenhaIntranet',
'Professor' as 'Nome',
4 as 'idusertype';`, res, req.originalUrl);
});
}
else {
mysqlConnection.query(`insert into usershomework (idusers, idunits, disabled) values (${user}, (select idunits from units where reference_db = '${db.split('.dbo.')[0]}'), 1);`, function(error, results, fields) {
execSQLQueryLogin(`SELECT
'190002' as 'IDMatricula',
'123' as 'SenhaIntranet',
'Professor' as 'Nome',
4 as 'idusertype';`, res, req.originalUrl);
});
}
});
}
else {
mysqlConnection.query(`SELECT desativado FROM alunosdesativados where idunits = (select idunits from units where reference_db = '${db.split('.dbo.')[0]}') and idusers = ${user};`, function(error, AlunoDesativado, fields) {
if (AlunoDesativado && AlunoDesativado.length > 0 && AlunoDesativado[0]['desativado'] == 1) {
res.send(JSON.stringify({
"status": 500,
"error": "Usuário desativado",
"response": [],
"token": null
}));
console.log(new Date().toUTCString() + " - " + req.originalUrl + "/ error 500");
}
else {
execSQLQueryLogin(`SELECT distinct
mt.IDMatricula,
c.SenhaIntranet,
c.Nome,
4 as 'idusertype'
FROM ${db}MatriculasTreinandos mt
INNER JOIN ${db}Clientes c ON mt.IDTreinando = c.IDCliente
inner join ${db}TreinandosTurmas tt on tt.IDMatricula = mt.IDMatricula and tt.CodigoTurma > 0
WHERE mt.IDMatricula = '${user}' AND c.SenhaIntranet = '${password}' and tt.Faltoso = 0 and tt.Concluiu = 0 and tt.Desistente = 0;`, res, req.originalUrl);
}
});
}
}
break;
case 5: //franchisee
execMySQLQueryLogin(`SELECT
us.idusers,
us.name,
us.idunits,
(SELECT u.reference_db FROM units u WHERE u.idunits = us.idunits) AS 'db',
us.idusertype
FROM users us
WHERE us.user = '${user}' AND us.password = '${password}' AND us.enabled = 1 AND us.idusertype in (5, 14, 15, 16);`, res, req.originalUrl);
break;
default:
console.log("default");
break;
}
//}
});
router.post('/loginzoerobot', (req, res) => {
const robot_id = req.body.robot_id;
const idusers = parseInt(req.body.idusers);
const idunits = parseInt(req.body.idunits);
const idusertype = parseInt(req.body.idusertype);
const password = req.body.password;
const db = req.body.db;
const micro = parseInt(req.body.micro) || 0;
execSQLQuery(`CALL loginzoerobot('${robot_id}', ${idusers}, ${idunits}, '${db}', '${password}', ${idusertype}, ${micro})`, res, req.originalUrl);
})
router.post('/getloginzoerobot', (req, res) => {
const robot_id = req.body.robot_id;
mysqlConnection.query(`CALL getloginzoerobot('${robot_id}')`, function(error, response, fields) {
res.send(response[0]);
})
})
router.post('/updatezoerobotmicro', (req, res) => {
const robot_id = req.body.robot_id;
const micro = parseInt(req.body.micro);
execSQLQuery(`CALL updatezoerobotmicro('${robot_id}', ${micro})`, res, req.originalUrl);
})
router.get('/closeCon', (req, res) => {
console.log("Fechando conexões");
mysqlConnection.end();
res.send(true);
})
router.get('/authTeacher/:db/:login/:senha', (req, res) => {
let Login = req.params.login;
let Senha = encriptPassword(req.params.senha);
let Banco = req.params.db;
let sqlQuery = `SELECT IDFuncionario, Nome FROM ${Banco}.dbo.Funcionarios WHERE Nome = '${Login}' AND Senha = '${Senha}';`;
sqlServerConnection.request().query(sqlQuery, function (error, results, fields) {
const Caminho = `http:${req.headers.host.split(':')[0]}/assets/`;
try {
if (results.recordsets[0].length > 0)
res.redirect(Caminho + 'login_succefull.php');
else
res.redirect(Caminho + 'restart_login.php');
}
catch (e) {
res.redirect(Caminho + 'restart_login.php');
}
})
})
router.patch('/cadPass', (req, res) => {
const password = encriptPassword(req.body.password);
const user = req.body.login;
const db = req.body.db;
execSQLQuery2(`
UPDATE
${db}Clientes
SET
SenhaIntranet = '${password}'
WHERE
IDCliente = ${user}`,
res,
req.originalUrl
);
})
router.post('/ChangeUserIcon', (req, res) => {
console.log(req.body);
const idusers = parseInt(req.body.idusers);
const usericon = req.body.usericon;
execSQLQuery(`
UPDATE
myrobot.usersLevel
SET
usericon = '${usericon}'
WHERE
idusers = ${idusers}`,
res,
req.originalUrl
);
})
router.patch('/ResetPass', (req, res) => {
const id = req.body.id;
const db = req.body.db;
execSQLQuery2(`
UPDATE
${db}Clientes
SET
SenhaIntranet = null
WHERE
IDCliente = ${id}`,
res,
req.originalUrl
);
})
router.post('/insert', verifyJWT, (req, res) => {
const idusertype = req.body.idusertype;
const idcities = req.body.idcities;
const idstates = req.body.idstates;
const name = req.body.name;
const user = req.body.user;
const password = encriptPassword(req.body.password);
const email = req.body.email;
const telephone = req.body.telephone;
const address = req.body.address;
const district = req.body.district;
const enabled = req.body.enabled ? 1 : 0;
const idunits = req.body.idunits;
execSQLQuery(`INSERT INTO users (idusertype, idcities, idstates, name, user, password, email, telephone, address, district, enabled, idunits)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);`, res, req.originalUrl, [idusertype, idcities, idstates, name, user, password, email, telephone, address, district, enabled, idunits]);
});
router.post('/givexp', (req, res) => {
const xpAdd = parseInt(req.body.xpAdd);
const userId = parseInt(req.body.userId);
const unitid = parseInt(req.body.unitid);
execSQLQuery(`UPDATE usersLevel SET usersxp = usersxp + ${xpAdd} where idusers = ${userId} AND idunit = ${unitid};`, res, req.originalUrl);
});
router.post('/createusersprofile', (req, res) => {
const userId = parseInt(req.body.userId);
const unitId = parseInt(req.body.unitId);
execSQLQuery(`INSERT INTO usersLevel (idusers, idunit,usersxp) VALUES (${userId}, ${unitId}, 0);`, res, req.originalUrl);
});
router.patch('/update', verifyJWT, (req, res) => {
const idusers = req.body.idusers;
const idusertype = req.body.idusertype;
const idcities = req.body.idcities;
const idstates = req.body.idstates;
const name = req.body.name;
const user = req.body.user;
const password = encriptPassword(req.body.password);
const email = req.body.email;
const telephone = req.body.telephone;
const address = req.body.address;
const district = req.body.district;
const enabled = req.body.enabled ? 1 : 0;
const idunits = req.body.idunits;
execSQLQuery(`UPDATE users SET
idusertype = ${idusertype},
idcities = ${idcities},
idstates = ${idstates},
name = '${name}',
user = '${user}',
password = '${password}',
email = '${email}',
telephone = '${telephone}',
address = '${address}',
district = '${district}',
enabled = ${enabled},
idunits = ${idunits}
WHERE idusers = ${idusers};`, res, req.originalUrl, [idusertype, idcities, idstates, name, user, password, email, telephone, address, district, enabled, idunits, idusers]);
});
router.get('/disable/:idusers', verifyJWT, (req, res) => {
const idusers = parseInt(req.params.idusers);
execSQLQuery(`UPDATE users SET
enabled = not enabled
WHERE idusers = ${idusers};`, res, req.originalUrl);
});
router.get('/getUser/:idusers', verifyJWT, (req, res) => {
const idusers = parseInt(req.params.idusers);
execSQLQuery(`SELECT
*
FROM users
WHERE idusers = ${idusers};`, res, req.originalUrl);
});
router.get('/getUserType', verifyJWT, (req, res) => {
execSQLQuery(`SELECT
*
FROM usertype;`, res, req.originalUrl);
});
router.post('/inserirleveluser', verifyJWT, (req, res) => {
const idusers = req.body.idusers;
const idunit = req.body.idunits;
execSQLQuery(`INSERT INTO usersLevel (idusers, idunit) VALUES (?, ?);`, res, req.originalUrl, [idusers, idunit]);
});
router.post('/insertUserType', verifyJWT, (req, res) => {
const idusertype = req.body.idusertype;
const description = req.body.description;
const enabled = req.body.enabled ? 1 : 0;
execSQLQuery(`INSERT INTO usertype (description, enabled) VALUES (?, ?);`, res, req.originalUrl, [description, enabled]);
});
router.patch('/updateUserType', verifyJWT, (req, res) => {
const idusertype = req.body.idusertype;
const description = req.body.description;
const enabled = req.body.enabled ? 1 : 0;
execSQLQuery(`update usertype set description = ?, enabled = ? where idusertype = ?;`, res, req.originalUrl, [description, enabled, idusertype]);
});
router.get('/getidusertype/:idusertype', (req, res) => {
const idusertype = parseInt(req.params.idusertype);
execSQLQuery(`SELECT
*
FROM usertype
WHERE idusertype = ${idusertype};`, res, req.originalUrl);
});
//AVATAR
router.get('/getavatar', verifyJWT, (req, res) => {
execSQLQuery(`SELECT * FROM myrobot.avatarusers;`, res, req.originalUrl);
});
//LEVEL
router.get('/getleveluser/:idusers/:idunit', (req, res) =>{
const idusers = parseInt(req.params.idusers);
const idunit = parseInt(req.params.idunit);
let sqlQuery = `SELECT *
FROM usersLevel
WHERE idusers = ${idusers} AND idunit = ${idunit};`;
/* console.log(sqlQuery); */
execSQLQuery(sqlQuery, res, req.originalUrl);
});
router.get('/getEmployee/:banco', (req, res) => {
const db = req.params.banco;
execSQLQuery2(`SELECT distinct
fu.IDFuncionario,
fu.Nome,
fa.DescricaoAcesso
FROM ${db}Funcionarios fu
INNER JOIN ${db}FuncionariosAcesso fa ON fa.IDFuncionario = fu.IDFuncionario
WHERE fa.Permitido = 1 AND fa.DescricaoAcesso = 'EAD Acesso Online Professor';`, res, req.originalUrl);
});
router.get('/getEmployeeId/:id/:banco', (req, res) => {
id = parseInt(req.params.id);
const db = req.params.banco;
execSQLQuery2(`
SELECT distinct
${db}Funcionarios.IDFuncionario,
${db}Funcionarios.Nome,
${db}FuncionariosAcesso.DescricaoAcesso
FROM
${db}Funcionarios
INNER JOIN
${db}FuncionariosAcesso
ON
${db}FuncionariosAcesso.IDFuncionario = ${db}Funcionarios.IDFuncionario
WHERE
${db}FuncionariosAcesso.Permitido = 1
AND
${db}Funcionarios.IDFuncionario = ${id}
AND
${db}FuncionariosAcesso.DescricaoAcesso = 'EAD Acesso Online Professor'`,
res,
req.originalUrl
);
});
router.get('/getUser', verifyJWT, (req, res) => {
execSQLQuery(`SELECT
us.*,
ut.description
FROM users us
inner join usertype ut on ut.idusertype = us.idusertype;`, res, req.originalUrl);
});
router.get('/getStudentName/:id/:banco', verifyJWT, (req, res) => {
id = parseInt(req.params.id);
const db = req.params.banco;
execSQLQuery2(`
select top(1)
C.Nome
from
${db}TreinandosTurmas TT
inner join
${db}Clientes C
on
C.IDCliente = TT.IDTreinando
where
TT.IDMatricula = ${id};`,
res,
req.originalUrl
);
})
router.get('/SolucaoProblemas', (req, res) => {
AtualizaConexaoMySQL();
});
router.get('/RelatorioAlunosAulasGeral/:idunits', (req, res) => {
const idunits = parseInt(req.params.idunits);
let condicao = `un.idunits = ${idunits}`;
if (idunits == 0)
condicao = "true";
const sqlQuery = `select
*,
al.Aulas * 2 as 'HorasAssistidas'
from (
select
un.idunits,
un.unityname as 'Unidade',
sc.idusers as 'Matricula',
count(*) as 'Aulas',
(select date_format(sc1.insert_date, '%d/%m/%Y %H:%i') from stepclass sc1 where sc1.idunits = sc.idunits and sc1.idusers = sc.idusers order by sc1.insert_date desc limit 1) as 'UltimaAula'
from stepclass sc
inner join units un on un.idunits = sc.idunits
where ${condicao}
group by un.idunits, sc.idusers, un.unityname
order by un.unityname, sc.idusers asc) al`;
mysqlConnection.query(sqlQuery, function(error, ListagemAulas, fields) {
mysqlConnection.query(`select * from units un where ${condicao};`, function(error, ListaUnidades, fields) {
LoopAlunosSQLServerGeral(ListagemAulas, ListaUnidades, 0, function(NovaListaAulas) {
let TabelaHtml = `
Relatório de Alunos por Unidade
| Unidade |
Matricula |
Aulas |
Ultima Aula |
Horas Assistidas |
Aluno |
Cancelada |
Suspensa |
`;
for (let i = 0; i < NovaListaAulas.length; i++) {
TabelaHtml += `${(i % 2 === 0) ? '' : '
'}
| ${NovaListaAulas[i]['Unidade']} |
${NovaListaAulas[i]['Matricula']} |
${NovaListaAulas[i]['Aulas']} |
${NovaListaAulas[i]['UltimaAula']} |
${NovaListaAulas[i]['HorasAssistidas']} |
${NovaListaAulas[i]['Aluno']} |
${NovaListaAulas[i]['Cancelada']} |
${NovaListaAulas[i]['Suspensa']} |
`;
}
TabelaHtml += `
`;
res.send(JSON.stringify({"status": 200, "Dados": NovaListaAulas, "TabelaHtml": TabelaHtml}));
})
})
})
})
function LoopAlunosSQLServerGeral(ListagemAulas, ListaUnidades, Index, callback) {
if (Index < ListaUnidades.length) {
const sqlQuery = `SELECT
mt.IDMatricula,
c.Nome,
tu.Cancelada,
tu.Suspensa
FROM ${ListaUnidades[Index]['reference_db']}.dbo.MatriculasTreinandos mt
INNER JOIN ${ListaUnidades[Index]['reference_db']}.dbo.Clientes c ON mt.IDTreinando = c.IDCliente
INNER JOIN ${ListaUnidades[Index]['reference_db']}.dbo.Turmas tu ON tu.IdTurma = mt.CodigoTurma;`;
sqlServerConnection.request().query(sqlQuery, function (error, AlunosUnidade, fields) {
AlunosUnidade = AlunosUnidade['recordset'];
if (AlunosUnidade && AlunosUnidade.length > 0) {
for (let i = 0; i < AlunosUnidade.length; i++) {
AlunosUnidade[i]['Encontrado'] = 0;
for (let o = 0; o < ListagemAulas.length; o++) {
if (ListagemAulas[o]['idunits'] == ListaUnidades[Index]['idunits']) {
if (ListagemAulas[o]['Matricula'] == AlunosUnidade[i]['IDMatricula']) {
ListagemAulas[o]['Aluno'] = AlunosUnidade[i]['Nome'];
ListagemAulas[o]['Cancelada'] = AlunosUnidade[i]['Cancelada'];
ListagemAulas[o]['Suspensa'] = AlunosUnidade[i]['Suspensa'];
AlunosUnidade[i]['Encontrado'] = 1;
}
}
}
if (AlunosUnidade[i]['Encontrado'] == 0) {
ListagemAulas.push({
"idunits": ListaUnidades[Index]['idunits'],
"Unidade": ListaUnidades[Index]['unityname'],
"Matricula": AlunosUnidade[i]['IDMatricula'],
"Aulas": 0,
"HorasAssistidas": 0,
"Aluno": AlunosUnidade[i]['Nome'],
"Cancelada": AlunosUnidade[i]['Cancelada'],
"Suspensa": AlunosUnidade[i]['Suspensa'],
});
}
}
}
Index++;
LoopAlunosSQLServer(ListagemAulas, ListaUnidades, Index, callback);
})
}
else {
callback(ListagemAulas);
}
}
router.get('/RelatorioAlunosAulas/:idunits', (req, res) => {
const idunits = parseInt(req.params.idunits);
let condicao = `un.idunits = ${idunits}`;
if (idunits == 0)
condicao = "true";
const sqlQuery = `select
*,
al.Aulas * 2 as 'HorasAssistidas'
from (
select
un.idunits,
un.unityname as 'Unidade',
sc.idusers as 'Matricula',
cl.idcourses,
/*(select co2.name from courses co2 where co2.idcourses = cl.idcourses) as 'Curso',*/
count(*) as 'Aulas',
(select count(*) from stepclass sc1 where sc1.idunits = un.idunits and sc1.idusers = sc.idusers and sc1.idclasses in (select cl2.idclasses from classes cl2 where cl2.idcourses = cl.idcourses) and sc1.completedClass = 0) as 'Pendentes',
(select date_format(sc1.insert_date, '%d/%m/%Y %H:%i') from stepclass sc1 where sc1.idunits = sc.idunits and sc1.idusers = sc.idusers order by sc1.insert_date desc limit 1) as 'UltimaAula'
from stepclass sc
inner join classes cl on cl.idclasses = sc.idclasses and cl.idcourses in (select co.idcourses from courses co where co.aditional = 0 and co.extracourse = 0)
inner join units un on un.idunits = sc.idunits
where ${condicao}
group by un.idunits, sc.idusers, un.unityname, cl.idcourses
order by un.unityname, sc.idusers asc) al`;
mysqlConnection.query(sqlQuery, function(error, ListagemAulas, fields) {
mysqlConnection.query(`select * from units un where ${condicao};`, function(error, ListaUnidades, fields) { // un.enabled = 1 and
LoopAlunosSQLServer(ListagemAulas, ListaUnidades, 0, function(NovaListaAulas) {
let TabelaHtml = `
Relatório de Alunos por Unidade
| Unidade |
Matricula |
Curso |
Aulas |
Pendentes |
Ultima Aula |
Horas Assistidas |
Aluno |
Cancelada |
Suspensa |
`;
for (let i = 0; i < NovaListaAulas.length; i++) {
TabelaHtml += `${(i % 2 === 0) ? '' : '
'}
| ${NovaListaAulas[i]['Unidade']} |
${NovaListaAulas[i]['Matricula']} |
${NovaListaAulas[i]['Curso']} |
${NovaListaAulas[i]['Aulas']} |
${NovaListaAulas[i]['Pendentes']} |
${NovaListaAulas[i]['UltimaAula']} |
${NovaListaAulas[i]['HorasAssistidas']} |
${NovaListaAulas[i]['Aluno']} |
${NovaListaAulas[i]['Cancelada']} |
${NovaListaAulas[i]['Suspensa']} |
`;
}
TabelaHtml += `
`;
res.send(JSON.stringify({"status": 200, "Dados": NovaListaAulas, "TabelaHtml": TabelaHtml}));
})
})
})
})
function LoopAlunosSQLServer(ListagemAulas, ListaUnidades, Index, callback) {
if (Index < ListaUnidades.length) {
const sqlQuery = `SELECT distinct
mt.IDMatricula,
c.Nome,
tu.IdTurma,
tu.Cancelada,
tu.Suspensa,
tc.CodigoCurso,
cu.NomeVersao as 'Curso',
(select count(*) from ${ListaUnidades[Index]['reference_db']}.dbo.Chamadas ch where ch.IDTurma = tu.IdTurma and ch.IDCurso = cu.Codigo) as 'Chamadas',
(select count(*) from ${ListaUnidades[Index]['reference_db']}.dbo.TurmasCalendario tc1 where tc1.IDTurma = tu.IdTurma and tc1.CodigoCurso = cu.Codigo and tc1.Ministrado = 1) as 'Ministradas'
FROM ${ListaUnidades[Index]['reference_db']}.dbo.MatriculasTreinandos mt
INNER JOIN ${ListaUnidades[Index]['reference_db']}.dbo.Clientes c ON mt.IDTreinando = c.IDCliente
LEFT JOIN ${ListaUnidades[Index]['reference_db']}.dbo.Turmas tu ON tu.IdTurma = mt.CodigoTurma
left join ${ListaUnidades[Index]['reference_db']}.dbo.TurmasCalendario tc on tc.IdTurma = tu.IdTurma
left join ${ListaUnidades[Index]['reference_db']}.dbo.Cursos cu on cu.Codigo = tc.CodigoCurso
order by mt.IDMatricula asc;`;
sqlServerConnection.request().query(sqlQuery, function (error, AlunosUnidade, fields) {
AlunosUnidade = AlunosUnidade['recordset'];
if (AlunosUnidade && AlunosUnidade.length > 0) {
//console.log(AlunosUnidade);
for (let i = 0; i < AlunosUnidade.length; i++) {
AlunosUnidade[i]['Encontrado'] = 0;
for (let o = 0; o < ListagemAulas.length; o++) {
if (ListagemAulas[o]['idunits'] == ListaUnidades[Index]['idunits'] && ListagemAulas[o]['Matricula'] == AlunosUnidade[i]['IDMatricula']) {
ListagemAulas[o]['Aluno'] = AlunosUnidade[i]['Nome'];
ListagemAulas[o]['Cancelada'] = (AlunosUnidade[i]['Cancelada'] != null) ? AlunosUnidade[i]['Cancelada'] : true;
ListagemAulas[o]['Suspensa'] = (AlunosUnidade[i]['Suspensa'] != null) ? AlunosUnidade[i]['Suspensa'] : true;
if (ListagemAulas[o]['idcourses'] == AlunosUnidade[i]['CodigoCurso']) {
ListagemAulas[o]['Curso'] = AlunosUnidade[i]['Curso'];
ListagemAulas[o]['Chamadas'] = AlunosUnidade[i]['Chamadas'];
ListagemAulas[o]['Ministradas'] = AlunosUnidade[i]['Ministradas'];
AlunosUnidade[i]['Encontrado'] = 1;
}
}
}
if (AlunosUnidade[i]['Encontrado'] == 0) {
ListagemAulas.push({
"idunits": ListaUnidades[Index]['idunits'],
"Unidade": ListaUnidades[Index]['unityname'],
"Matricula": AlunosUnidade[i]['IDMatricula'],
"Curso": AlunosUnidade[i]['Curso'],
"Aulas": 0,
"Pendentes": 0,
"HorasAssistidas": 0,
"Aluno": AlunosUnidade[i]['Nome'],
"Cancelada": AlunosUnidade[i]['Cancelada'],
"Suspensa": AlunosUnidade[i]['Suspensa'],
"Chamadas": 0,
"Ministradas": 0,
});
}
}
}
Index++;
LoopAlunosSQLServer(ListagemAulas, ListaUnidades, Index, callback);
})
}
else {
callback(ListagemAulas);
}
}
router.post('/insertLog', (req, res) => {
const desc = req.body.desc;
console.log(desc);
execSQLQuery(`insert into logs_general (description)
values (?);`, res, req.originalUrl, [desc]);
});
router.post('/transferirMatriculas', verifyJWT, (req, res) => {
const Matricula = parseInt(req.body.Matricula);
const idunitsD = parseInt(req.body.idunitsD);
const dbD = req.body.dbD;
const idunitsP = parseInt(req.body.idunitsP);
const dbP = req.body.dbP;
// JUNTAR DADOS DO ALUNO A SER TRANSFERIDO
const SQLDadosAluno = `select distinct
tt.CodigoTurma,
mt.IDClienteResponsavel,
tt.IDTreinando,
pm.IDPreMatricula,
tt.IDMatricula
from ${dbD}TreinandosTurmas tt
inner join ${dbD}Matriculas mt on mt.IDMatricula = tt.IDMatricula
inner join ${dbD}PreMatricula pm on pm.IDPreMatricula = mt.IDPreMatricula
where tt.IDMatricula = ${Matricula};`;
//console.log(SQLDadosAluno);
sqlServerConnection.request().query(SQLDadosAluno, function (error, DadosAluno, fields) {
DadosAluno = DadosAluno['recordset'][0];
// CRIAR E ABASTECER AS TABELAS A SEREM MIGRADAS
AdicionarTabelas(dbD, dbP, DadosAluno, function(success) {
// MONTAR E EXECUTAR SQL DE INSERT
MontaSQLInserts(dbP, DadosAluno, 0, 0, function(Sucesso) {
// CASO DE ALGUM ERRO NO PROCESSO, PARA A EXECUCAO
if (!Sucesso) {
res.send(DadosAluno);
return;
}
// REMOVER DADOS DUPLICADOS PARA MATRICULAS TREINANDOS
const SQLRemoverDuplicados = `SELECT
IDMatricula,
IDTreinando,
CodigoTurma,
COUNT(*) AS CNT
FROM ${dbP}MatriculasTreinandos
GROUP BY IDMatricula, IDTreinando, CodigoTurma
HAVING COUNT(*) > 1;`;
sqlServerConnection.request().query(SQLRemoverDuplicados, function (error, results, fields) {
console.log("Consulta de duplicados concluida com SUCESSO");
const Duplicados = results['recordset'];
let SQLDeleteDup = `delete from ${dbP}MatriculasTreinandos where `;
let SQLInsertDup = `insert into ${dbP}MatriculasTreinandos (IDMatricula, IDTreinando, CodigoTurma) values `;
for (let i = 0; i < Duplicados.length; i++) {
if (i > 0) {
SQLInsertDup += `, `;
SQLDeleteDup += ` or `;
}
SQLInsertDup += `(${Duplicados[i]['IDMatricula']}, ${Duplicados[i]['IDTreinando']}, ${Duplicados[i]['CodigoTurma']})`;
SQLDeleteDup += `(IDMatricula = ${Duplicados[i]['IDMatricula']} and IDTreinando = ${Duplicados[i]['IDTreinando']} and CodigoTurma = ${Duplicados[i]['CodigoTurma']})`;
}
// REMOVER DUPLICADOS
sqlServerConnection.request().query(SQLDeleteDup, function (error, results2, fields) {
if (error) console.log("ERRO ao remover duplicados");
else console.log("Remover duplicados concluido com SUCESSO");
// INSERIR REGISTROS CORRETOS
sqlServerConnection.request().query(SQLInsertDup, function (error, results2, fields) {
if (error) console.log("ERRO ao incluir TreinandosTurmas");
else console.log("Incluir TreinandosTurmas concluido com SUCESSO");
// ATUALIZAR UNIDADE E MATRICULA NA TABELA STEPCLASS
const SQLStepClass = `update stepclass set idunits = ${idunitsP}, idusers = ${DadosAluno.Tabelas[21].Dados[0]['IDMatricula']} where idunits = ${idunitsD} and idusers = ${Matricula};`;
mysqlConnection.query(SQLStepClass, function (errorSC, resultsSC, fieldsSC) {
if (errorSC) console.log("ERRO ao atualizar STEPCLASS");
else console.log("STEPCLASS atualizado com SUCESSO");
// ATUALIZAR UNIDADE E MATRICULA NA TABELA USERGIVENASNWERS
const SQLUserGivenAnswers = `update usergivenanswers set idunits = ${idunitsP}, idusers = ${DadosAluno.Tabelas[21].Dados[0]['IDMatricula']} where idunits = ${idunitsD} and idusers = ${Matricula};`;
mysqlConnection.query(SQLUserGivenAnswers, function (errorUG, resultsUG, fieldsUG) {
if (errorUG) console.log("ERRO ao atualizar USERGIVENANSWERS");
else console.log("USERGIVENANSWERS atualizado com SUCESSO");
// ATUALIZAR UNIDADE E MATRICULA NA TABELA USERSTAGES
const SQLUserStages = `update userstages set idunits = ${idunitsP}, idusers = ${DadosAluno.Tabelas[21].Dados[0]['IDMatricula']} where idunits = ${idunitsD} and idusers = ${Matricula};`;
mysqlConnection.query(SQLUserStages, function (errorUS, resultsUS, fieldsUS) {
if (errorUS) console.log("ERRO ao atualizar USERSTAGES");
else console.log("USERSTAGES atualizado com SUCESSO");
// ATUALIZAR UNIDADE E MATRICULA NA TABELA QRCODES
const SQLQRCode = `update qrcodes set idunits = ${idunitsP}, idusers = ${DadosAluno.Tabelas[21].Dados[0]['IDMatricula']} where idunits = ${idunitsD} and idusers = ${Matricula};`;
mysqlConnection.query(SQLQRCode, function (errorQR, resultsQR, fieldsQR) {
if (errorQR) console.log("ERRO ao atualizar QRCODE");
else console.log("QRCODE atualizado com SUCESSO");
// ATUALIZAR UNIDADE E MATRICULA NA TABELA BARCODES
const SQLBarCode = `update barcodes set idunits = ${idunitsP}, idusers = ${DadosAluno.Tabelas[21].Dados[0]['IDMatricula']} where idunits = ${idunitsD} and idusers = ${Matricula};`;
mysqlConnection.query(SQLBarCode, function (errorBC, resultsBC, fieldsBC) {
if (errorBC) console.log("ERRO ao atualizar BARCODE");
else console.log("BARCODE atualizado com SUCESSO");
// TRANCAR ALUNO NA UNIDADE ANTERIOR
const SQLPreRequerimento = `insert into ${dbD}PreRequerimento (IDTreinando, IDMatricula, Data, IDFuncionario, IDTurma, TipoRequerimento, TipoRequerimentoAnt, Status, IDMotivo, DescricaoMotivo) values
(${DadosAluno.IDTreinando}, ${DadosAluno.IDMatricula}, '2021-02-19', 1250, 0, 'T', 'T', 'C', 6, 'Aluno transferido para outra unidade');`;
sqlServerConnection.request().query(SQLPreRequerimento, function (error, resPR, fields) {
if (error) console.log("ERRO ao criar PreRequerimento");
else console.log("PreRequerimento criado com sucesso");
const SQLGetIDs = `select
coalesce((select top(1) IdTransferencia from ${dbD}Transferencias order by IdTransferencia desc), 0) + 1 as 'IDTransferencia',
coalesce((select top(1) IDPreRequerimento from ${dbD}PreRequerimento order by IDPreRequerimento desc), 1) as 'IDPreRequerimento';`;
sqlServerConnection.request().query(SQLGetIDs, function (error, resIDs, fields) {
if (error) console.log("ERRO ao reunir IDs para Transferencia");
else console.log("Reunido IDs para Transferencia com SUCESSO");
const IDs = resIDs['recordset'][0];
const SQLTransferencia = `insert into ${dbD}Transferencias (IdTransferencia, IDTreinando, IDMatricula, DataTransferencia, Motivo, CobrarTaxa, ValorTaxa, VencimentoTaxa, FuncionarioResponsavel, ObsAviso, TipoTransferencia, ParcelasTaxa, IDMotivo, IDPreRequerimento) values
(${IDs.IDTransferencia}, ${DadosAluno.IDTreinando}, ${DadosAluno.IDMatricula}, '2021-02-19', 'Aluno transferido para outra unidade', 0, 0, '2021-02-19', 1250, '', 'T', 1, 6, ${IDs.IDPreRequerimento});`;
sqlServerConnection.request().query(SQLTransferencia, function (error, resTransf, fields) {
if (error) console.log("ERRO ao criar Transferencia");
else console.log("Transferencia criada com sucesso");
let SQLTransfDet = `insert into ${dbD}TransferenciasDetalhe (IDTransferencia, IDCurso, CodigoTurma, IDTreinando) values `;
for (let i = 0; i < DadosAluno.Tabelas[22].Dados.length; i++) {
if (i > 0)
SQLTransfDet += `, `;
SQLTransfDet += `(${IDs.IDTransferencia}, ${DadosAluno.Tabelas[22].Dados[i].IDCurso}, ${DadosAluno.CodigoTurma}, ${DadosAluno.IDTreinando})`;
}
sqlServerConnection.request().query(SQLTransfDet, function (error, resTransfDet, fields) {
if (error) console.log("ERRO ao criar TransferenciaDetalhes");
else console.log("TransferenciaDetalhes criado com sucesso");
const SQLRemoverTurma = `update ${dbD}TreinandosTurmas set CodigoTurma = 0 where IDMatricula = ${DadosAluno.IDMatricula} and IDTreinando = ${DadosAluno.IDTreinando};`;
sqlServerConnection.request().query(SQLRemoverTurma, function (error, resRemTurma, fields) {
if (error) console.log("ERRO ao setar CodigoTurma = 0 em TreinandosTurmas");
else console.log("CodigoTurma = 0 realizado com sucesso");
res.send(DadosAluno);
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
function AdicionarTabelas(dbD, dbP, DadosAluno, callback) {
let Tabelas = [];
let Campos0 = [{"Forcar": true, "CampoP": "IDFuncionario", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "Turmas", "IdTurma", `IdTurma = ${DadosAluno['CodigoTurma']}`, Tabelas, Campos0, true, function(Success) {
let Campos1 = [{"Forcar": true, "CampoP": "IDAtendente", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "Atendimentos", "IdAtendimento", `select at.* from ${dbD}Atendimentos at inner join ${dbD}Matriculas mt on mt.IDAtendimento = at.IdAtendimento where mt.IDMatricula = ${DadosAluno['IDMatricula']};`, Tabelas, Campos1, true, function(Success) {
let Campos2 = [{"IdxT": 1, "IdxD": 0, "CampoD": "IdAtendimento", "CampoP": "IdAtendimento", "Seq": true}, {"Forcar": true, "CampoP": "IDFuncionarioCadastro", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "AtendimentosCabecalho", "", `select ac.* from ${dbD}AtendimentosCabecalho ac inner join ${dbD}Matriculas mt on mt.IDAtendimento = ac.IdAtendimento where mt.IDMatricula = ${DadosAluno['IDMatricula']};`, Tabelas, Campos2, true, function(Success) {
let Campos3 = [{"IdxT": 1, "IdxD": 0, "CampoD": "IdAtendimento", "CampoP": "IDAtendimento", "Seq": true}, {"Forcar": true, "CampoP": "IDAtendente", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "AtendimentosComissoes", "", `select ac.* from ${dbD}AtendimentosComissoes ac inner join ${dbD}Matriculas mt on mt.IDAtendimento = ac.IdAtendimento where mt.IDMatricula = ${DadosAluno['IDMatricula']};`, Tabelas, Campos3, true, function(Success) {
let Campos4 = [{"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IdTurma", "Seq": false}, {"Forcar": true, "CampoP": "IDFuncionarioInstrutor", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "AtendimentosFuncionarios", "", `IdTurma = ${DadosAluno['CodigoTurma']}`, Tabelas, Campos4, false, function(Success) {
let Campos5 = [{"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IDTurma", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "Notas", "", `IDTurma = ${DadosAluno['CodigoTurma']}`, Tabelas, Campos5, true, function(Success) {
let Campos6 = [{"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IdTurma", "Seq": false}, {"Forcar": true, "CampoP": "IDFuncionario", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "TransacoesTurmas", "IDTransacao", `IdTurma = ${DadosAluno['CodigoTurma']}`, Tabelas, Campos6, true, function(Success) {
let Campos7 = [{"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IdTurma", "Seq": false}, {"Forcar": true, "CampoP": "CodigoInstrutor", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "TransacoesTurmasCalendario", "", `IdTurma = ${DadosAluno['CodigoTurma']}`, Tabelas, Campos7, true, function(Success) {
let Campos8 = [{"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IDTurma", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "TransacoesTurmasDetalhe", "", `IdTurma = ${DadosAluno['CodigoTurma']}`, Tabelas, Campos8, true, function(Success) {
let Campos9 = [{"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IdTurma", "Seq": false}, {"Forcar": true, "CampoP": "IdInstrutor", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "TurmasAgendaCalendario", "IdTurmasAgendaCalendario", `IdTurma = ${DadosAluno['CodigoTurma']}`, Tabelas, Campos9, true, function(Success) {
let Campos10 = [{"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IDTurma", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "TurmasDetalhe", "", `IdTurma = ${DadosAluno['CodigoTurma']}`, Tabelas, Campos10, true, function(Success) {
let Campos11 = [{"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IdTurma", "Seq": false}, {"Forcar": true, "CampoP": "CodigoInstrutor", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "TurmasCalendario", "IdTurmasCalendario", `IdTurma = ${DadosAluno['CodigoTurma']}`, Tabelas, Campos11, true, function(Success) {
let Campos12 = [{"Forcar": true, "CampoP": "FuncionarioCadastro", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "Clientes", "IDCliente", `IDCliente in (${DadosAluno['IDClienteResponsavel']}, ${DadosAluno['IDTreinando']});`, Tabelas, Campos12, true, function(Success) {
let Campos13 = [{"IdxT": 12, "IdxD": 0, "CampoD": "IDCliente", "CampoP": "IDResponsavel", "Seq": false}, {"Forcar": true, "CampoP": "IDFuncionario", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "PreMatricula", "IDPreMatricula", `IDPreMatricula = ${DadosAluno['IDPreMatricula']}`, Tabelas, Campos13, true, function(Success) {
let Campos14 = [{"IdxT": 13, "IdxD": 0, "CampoD": "IDPreMatricula", "CampoP": "IDPreMatricula", "Seq": false}, {"IdxT": 12, "IdxD": (Tabelas[12].Dados.length - 1), "CampoD": "IDCliente", "CampoP": "IDTreinando", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "PreMatriculaTreinandos", "", `IDPreMatricula = ${DadosAluno['IDPreMatricula']}`, Tabelas, Campos14, true, function(Success) {
let Campos15 = [{"IdxT": 13, "IdxD": 0, "CampoD": "IDPreMatricula", "CampoP": "IDPreMatricula", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "PreMatriculaParcelas", "", `IDPreMatricula = ${DadosAluno['IDPreMatricula']}`, Tabelas, Campos15, true, function(Success) {
let Campos16 = [{"IdxT": 13, "IdxD": 0, "CampoD": "IDPreMatricula", "CampoP": "IDPreMatricula", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "PreMatriculaFinanceiroMaterial", "", `IDPreMatricula = ${DadosAluno['IDPreMatricula']}`, Tabelas, Campos16, true, function(Success) {
let Campos17 = [{"IdxT": 13, "IdxD": 0, "CampoD": "IDPreMatricula", "CampoP": "IDPreMatricula", "Seq": false}, {"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IDTurma", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "PreMatriculaCursos", "", `IDPreMatricula = ${DadosAluno['IDPreMatricula']}`, Tabelas, Campos17, true, function(Success) {
let Campos18 = [{"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IDTurma", "Seq": false}, {"Forcar": true, "CampoP": "IDInstrutor", "Valor": 1250}, {"Forcar": true, "CampoP": "IDFuncionarioAPP", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "Chamadas", "IDChamadas", `IDTurma = ${DadosAluno['CodigoTurma']}`, Tabelas, Campos18, true, function(Success) {
let Campos19 = [{"IdxT": 18, "IdxD": 0, "CampoD": "IDChamadas", "CampoP": "IDChamadas", "Seq": true}];
PreencheDadosTabela(dbD, dbP, 0, "ChamadasConteudos", "", `select cd.* from ${dbD}Chamadas ch inner join ${dbD}ChamadasConteudos cd on cd.IDChamadas = ch.IDChamadas where ch.IDTurma = ${DadosAluno['CodigoTurma']}`, Tabelas, Campos19, true, function(Success) {
let Campos20 = [{"IdxT": 18, "IdxD": 0, "CampoD": "IDChamadas", "CampoP": "IDChamadas", "Seq": true}, {"IdxT": 12, "IdxD": (Tabelas[12].Dados.length - 1), "CampoD": "IDCliente", "CampoP": "IDTreinando", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "ChamadasDetalhes", "", `select cd.* from ${dbD}Chamadas ch inner join ${dbD}ChamadasDetalhes cd on cd.IDChamadas = ch.IDChamadas where ch.IDTurma = ${DadosAluno['CodigoTurma']}`, Tabelas, Campos20, true, function(Success) {
let Campos21 = [{"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "CodigoTurma", "Seq": false}, {"IdxT": 12, "IdxD": 0, "CampoD": "IDCliente", "CampoP": "IDClienteResponsavel", "Seq": false}, {"IdxT": 1, "IdxD": 0, "CampoD": "IdAtendimento", "CampoP": "IDAtendimento", "Seq": false}, {"IdxT": 13, "IdxD": 0, "CampoD": "IDPreMatricula", "CampoP": "IDPreMatricula", "Seq": false}, {"Forcar": true, "CampoP": "FuncionarioVenda", "Valor": 1250}, {"Forcar": true, "CampoP": "FuncionarioCadastro", "Valor": 1250}];
let Ano = (new Date().getFullYear() - 2000) * 10000;
PreencheDadosTabela(dbD, dbP, Ano, "Matriculas", "IDMatricula", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos21, true, function(Success) {
let Campos22 = [{"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}, {"IdxT": 12, "IdxD": (Tabelas[12].Dados.length - 1), "CampoD": "IDCliente", "CampoP": "IDTreinando", "Seq": false}, {"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "CodigoTurma", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "TreinandosTurmas", "", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos22, true, function(Success) {
let Campos23 = [{"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}, {"IdxT": 12, "IdxD": (Tabelas[12].Dados.length - 1), "CampoD": "IDCliente", "CampoP": "IDTreinando", "Seq": false}, {"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IDTurma", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "TreinandosTurmasMateriais", "", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos23, true, function(Success) {
let Campos24 = [{"Ignorar": true, "CampoP": "NumeroProva"}, {"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}, {"IdxT": 12, "IdxD": (Tabelas[12].Dados.length - 1), "CampoD": "IDCliente", "CampoP": "IDTreinando", "Seq": false}, {"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IDTurma", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "NotasDetalhesSequencial", "NumeroProva", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos24, true, function(Success) {
let Campos25 = [{"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}, {"IdxT": 12, "IdxD": (Tabelas[12].Dados.length - 1), "CampoD": "IDCliente", "CampoP": "IDTreinando", "Seq": false}, {"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IDTurma", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "NotasDetalhes", "", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos25, true, function(Success) {
let Campos26 = [{"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}, {"IdxT": 12, "IdxD": (Tabelas[12].Dados.length - 1), "CampoD": "IDCliente", "CampoP": "IDTreinando", "Seq": false}, {"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "CodigoTurma", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "MatriculasTreinandos", "", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos26, true, function(Success) {
let Campos27 = [{"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "MatriculasProdutos", "", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos27, true, function(Success) {
let Campos28 = [{"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}, {"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "CodigoTurma", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "MatriculasCursos", "", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos28, true, function(Success) {
let Campos29 = [{"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}, {"IdxT": 12, "IdxD": (Tabelas[12].Dados.length - 1), "CampoD": "IDCliente", "CampoP": "IDTreinando", "Seq": false}, {"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "CodigoTurma", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "HistoricoTreinandosTurmas", "", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos29, true, function(Success) {
let Campos30 = [{"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}, {"IdxT": 12, "IdxD": 0, "CampoD": "IDCliente", "CampoP": "IDClienteResponsavel", "Seq": false}, {"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "CodigoTurma", "Seq": false}, {"Forcar": true, "CampoP": "FuncionarioCadastro", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "HistoricoMatriculas", "", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos30, true, function(Success) {
let Campos31 = [{"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}, {"IdxT": 12, "IdxD": (Tabelas[12].Dados.length - 1), "CampoD": "IDCliente", "CampoP": "IDTreinando", "Seq": false}, {"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IDTurma", "Seq": false}, {"Forcar": true, "CampoP": "IDFuncionario", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "HistoricoFaltas", "IDHistFalta", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos31, true, function(Success) {
let Campos32 = [{"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}, {"IdxT": 12, "IdxD": (Tabelas[12].Dados.length - 1), "CampoD": "IDCliente", "CampoP": "IDTreinando", "Seq": false}, {"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IDTurma", "Seq": false}, {"Forcar": true, "CampoP": "IDFuncionario", "Valor": 1250}];
PreencheDadosTabela(dbD, dbP, 0, "HistoricoEvadidos", "", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos32, true, function(Success) {
let Campos33 = [{"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}, {"IdxT": 12, "IdxD": (Tabelas[12].Dados.length - 1), "CampoD": "IDCliente", "CampoP": "IDTreinando", "Seq": false}, {"IdxT": 0, "IdxD": 0, "CampoD": "IdTurma", "CampoP": "IDTurma", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "Evadidos", "", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos33, true, function(Success) {
let Campos34 = [{"IdxT": 21, "IdxD": 0, "CampoD": "IDMatricula", "CampoP": "IDMatricula", "Seq": false}, {"IdxT": 12, "IdxD": 0, "CampoD": "IDCliente", "CampoP": "Cliente", "Seq": false}];
PreencheDadosTabela(dbD, dbP, 0, "ContasReceber", "IDContasReceber", `IDMatricula = ${DadosAluno['IDMatricula']}`, Tabelas, Campos34, true, function(Success) {
DadosAluno['Tabelas'] = Tabelas;
callback(true);
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
}
function PreencheDadosTabela(dbD, dbP, AcrescimoID, NomeTabela, IDTabela, Consulta, Tabelas, CamposReplace, ErroCritico, callback) {
let Query = ``;
if (Consulta[0] == "s")
Query = Consulta;
else
Query = `select * from ${dbD}${NomeTabela} where ${Consulta};`
sqlServerConnection.request().query(Query, function (error, Dados, fields) {
const SQLID = (IDTabela != "") ? `select top(1) (${IDTabela} + 1) as 'ID' from ${dbP}${NomeTabela} order by ${IDTabela} desc;` : "select 0 as 'ID';";
sqlServerConnection.request().query(SQLID, function (error, ID, fields) {
ID = (ID['recordset'].length > 0) ? ID['recordset'][0]['ID'] : (1 + AcrescimoID);
if (Dados) {
Dados = Dados['recordset'];
for (let i = 0; i < Dados.length; i++) {
if (IDTabela != "")
Dados[i][IDTabela] = (ID + i);
for (let o = 0; o < CamposReplace.length; o++) {
if (CamposReplace[o].Forcar) {
Dados[i][CamposReplace[o].CampoP] = CamposReplace[o].Valor;
}
else if (!CamposReplace[o].Ignorar) {
Dados[i][CamposReplace[o].CampoP] = Tabelas[CamposReplace[o].IdxT].Dados[CamposReplace[o].IdxD][CamposReplace[o].CampoD] + ((Dados.length > 1 && CamposReplace[o].Seq) ? i : 0);
}
}
}
Tabelas.push({"Tabela": NomeTabela, "IDTabela": IDTabela, "Dados": Dados, "ProxID": ID, "SQL": "", "CamposReplace": CamposReplace, "ErroCritico": ErroCritico});
console.log(`Tabela ${NomeTabela} consultada com sucesso`);
}
else {
Tabelas.push({"Tabela": NomeTabela, "IDTabela": IDTabela, "Dados": [], "ProxID": 0, "SQL": "", "CamposReplace": CamposReplace, "ErroCritico": ErroCritico});
console.log(`Erro ao consultar tabela ${NomeTabela}`);
console.log(Consulta);
//console.log(error);
}
callback(true);
});
});
}
function MontaSQLInserts(dbP, DadosAluno, IndexT, IndexD, callback) {
let ModoInsert = true;
if (IndexT < DadosAluno.Tabelas.length) {
if (IndexD < DadosAluno.Tabelas[IndexT].Dados.length) {
DadosAluno.Tabelas[IndexT]['SQL'] += "insert into " + dbP + DadosAluno.Tabelas[IndexT].Tabela + " (";
for (let key in DadosAluno.Tabelas[IndexT].Dados[IndexD]) {
if (DadosAluno.Tabelas[IndexT]['SQL'][DadosAluno.Tabelas[IndexT]['SQL'].length - 1] != "(")
DadosAluno.Tabelas[IndexT]['SQL'] += ", ";
let InsereCampo = true;
for (let j = 0; j < DadosAluno.Tabelas[IndexT].CamposReplace.length; j++) {
if (DadosAluno.Tabelas[IndexT].CamposReplace[j].Ignorar && DadosAluno.Tabelas[IndexT].CamposReplace[j].CampoP == key) {
InsereCampo = false;
break;
}
}
if (InsereCampo)
DadosAluno.Tabelas[IndexT]['SQL'] += key;
}
DadosAluno.Tabelas[IndexT]['SQL'] += ") values (";
for (let key in DadosAluno.Tabelas[IndexT].Dados[IndexD]) {
let InsereCampo = true;
for (let j = 0; j < DadosAluno.Tabelas[IndexT].CamposReplace.length; j++) {
if (DadosAluno.Tabelas[IndexT].CamposReplace[j].Ignorar && DadosAluno.Tabelas[IndexT].CamposReplace[j].CampoP == key) {
InsereCampo = false;
break;
}
}
if (InsereCampo) {
// SE NAO FOR O PRIMEIRO VALOR INSERIDO
if (DadosAluno.Tabelas[IndexT]['SQL'][DadosAluno.Tabelas[IndexT]['SQL'].length - 1] != "(")
DadosAluno.Tabelas[IndexT]['SQL'] += ", ";
// SE FOR DATA
if (DadosAluno.Tabelas[IndexT].Dados[IndexD][key] && (DadosAluno.Tabelas[IndexT].Dados[IndexD][key].toString().includes(" (Horário ") || DadosAluno.Tabelas[IndexT].Dados[IndexD][key].toString().includes(" Time)"))) {
DadosAluno.Tabelas[IndexT].Dados[IndexD][key] = new Date(DadosAluno.Tabelas[IndexT].Dados[IndexD][key].toString()).toISOString().replace('T', ' ').split('.')[0];
}
if (DadosAluno.Tabelas[IndexT].Dados[IndexD][key] == null)
DadosAluno.Tabelas[IndexT]['SQL'] += "null";
else
DadosAluno.Tabelas[IndexT]['SQL'] += "'" + DadosAluno.Tabelas[IndexT].Dados[IndexD][key] + "'";
}
}
DadosAluno.Tabelas[IndexT]['SQL'] += "); ";
IndexD++;
MontaSQLInserts(dbP, DadosAluno, IndexT, IndexD, callback);
}
else {
if (ModoInsert) {
sqlServerConnection.request().query(DadosAluno.Tabelas[IndexT]['SQL'], function (error, Dados, fields) {
if (error && DadosAluno.Tabelas[IndexT].ErroCritico) {
console.log("INSERT SQL EXECUTADO com ERRO na tabela " + DadosAluno.Tabelas[IndexT].Tabela);
console.log(DadosAluno.Tabelas[IndexT]['SQL']);
console.log(error);
callback(false);
return;
}
else {
console.log("INSERT SQL EXECUTADO com SUCESSO na tabela " + DadosAluno.Tabelas[IndexT].Tabela);
}
IndexT++;
IndexD = 0;
setTimeout(() => {
MontaSQLInserts(dbP, DadosAluno, IndexT, IndexD, callback);
}, 300);
});
}
else {
IndexT++;
IndexD = 0;
MontaSQLInserts(dbP, DadosAluno, IndexT, IndexD, callback);
}
}
}
else {
callback(ModoInsert);
}
}
router.get('/getOnlineUsers/:tempo/:idunits', (req, res) => {
const Tempo = req.params.tempo;
const idunits = req.params.idunits;
const SQLOnline = `select
concat(un.reference_db, '.dbo.') as 'Banco',
un.unityname as 'Unidade',
co.name as 'Curso',
cl.name as 'Aula',
cl.description as 'Pauta',
sc.idusers as 'Matricula',
case when sc.completedClass = 1 then 'Sim' else 'Não' end as 'Concluida',
date_format(sc.insert_date, '%d/%m/%Y %h:%i') as 'IniciadoEm',
date_format(sc.update_date, '%d/%m/%Y %h:%i') as 'VistoUltimo',
(select count(*) from stepclass sc1 where sc1.idunits = sc.idunits and sc1.insert_date > date_format (now(), '%y-%m-%d')) as 'AulasHoje',
(select count(*) from stepclass sc1 where sc1.insert_date > date_format(now(), '%y-%m-%d')) as 'TotalAulas'
from stepclass sc
inner join units un on un.idunits = sc.idunits
inner join classes cl on cl.idclasses = sc.idclasses
inner join courses co on co.idcourses = cl.idcourses
where ${(idunits == 0) ? 'true' : 'sc.idunits = ' + idunits} and sc.update_date > date_sub(now(), interval ${Tempo} minute)
order by sc.update_date desc;`;
mysqlConnection.query(SQLOnline, function (error, Alunos, fields) {
let SQLNomes = ``;
for (let i = 0; i < Alunos.length; i++) {
if (SQLNomes != ``)
SQLNomes += ` union all `;
SQLNomes += `select distinct
'${Alunos[i].Unidade}' as Unidade,
tt.IDMatricula as 'Matricula',
cl.Nome,
'${Alunos[i].Curso}' as Curso,
'${Alunos[i].Aula}' as Aula,
'${Alunos[i].Concluida}' as Concluida,
'${Alunos[i].IniciadoEm}' as IniciadoEm,
'${Alunos[i].VistoUltimo}' as VistoUltimo
from ${Alunos[i].Banco}TreinandosTurmas tt
inner join ${Alunos[i].Banco}Clientes cl on cl.IDCliente = tt.IDTreinando
where tt.IDMatricula = ${Alunos[i].Matricula}`
}
execSQLQuery2(SQLNomes, res, req.originalUrl);
});
});
return router;
}
module.exports = routes;