171 lines
8.1 KiB
JavaScript
171 lines
8.1 KiB
JavaScript
require('../connections/mysql-server');
|
|
require('../helpers/CheckToken');
|
|
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 () {
|
|
|
|
router.get('/getChamadasProfessor/:IDFuncionario/:db', verifyJWT, (req, res) => {
|
|
const IDFuncionario = parseInt(req.params.IDFuncionario);
|
|
const db = req.params.db;
|
|
execSQLQuery2(`SELECT
|
|
ch.IDChamadas,
|
|
ch.IDTurma,
|
|
ch.IDCurso,
|
|
ch.Data,
|
|
tt.IDMatricula,
|
|
co.NomeVersao
|
|
FROM ${db}Chamadas ch
|
|
INNER JOIN ${db}Cursos co ON co.Codigo = ch.IDCurso
|
|
INNER JOIN ${db}TreinandosTurmas tt ON tt.IDCurso = ch.IDCurso AND tt.CodigoTurma = ch.IDTurma
|
|
WHERE ch.IDInstrutor = ${IDFuncionario};`, res, req.originalUrl);
|
|
});
|
|
|
|
router.get('/getQRCodeAluno/:_key', verifyJWT, (req, res) => {
|
|
const _key = req.params._key;
|
|
execSQLQuery(`SELECT
|
|
qr.idusers,
|
|
qr.idunits
|
|
FROM qrcodes qr
|
|
where qr._key = ?;`, res, req.originalUrl, [_key]);
|
|
});
|
|
|
|
router.get('/getInfoAluno/:IDMatricula/:db', verifyJWT, (req, res) => {
|
|
const IDMatricula = parseInt(req.params.IDMatricula);
|
|
const db = req.params.db;
|
|
execSQLQuery2(`SELECT DISTINCT
|
|
cl.Nome,
|
|
cu.Codigo AS 'IDCurso',
|
|
cu.NomeVersao,
|
|
tt.IDTreinando,
|
|
tt.CodigoTurma,
|
|
(select count(*) from ${db}Chamadas ch2 where ch2.IDTurma = tt.CodigoTurma and ch2.IDCurso = tt.IDCurso) AS qtde_presencas
|
|
FROM ${db}TreinandosTurmas tt
|
|
INNER JOIN ${db}Clientes cl ON cl.IDCliente = tt.IDTreinando
|
|
INNER JOIN ${db}Cursos cu ON cu.Codigo = tt.IDCurso
|
|
LEFT JOIN ${db}Chamadas ch ON tt.CodigoTurma = ch.IDTurma AND tt.IDCurso = ch.IDCurso
|
|
LEFT JOIN ${db}ChamadasDetalhes cd ON cd.IDChamadas = ch.IDChamadas AND cd.IDTreinando = tt.IDTreinando
|
|
WHERE tt.IDMatricula = ${IDMatricula} and tt.CodigoTurma > 0
|
|
GROUP BY cl.Nome, cu.Codigo, cu.NomeVersao, tt.IDTreinando, tt.CodigoTurma, tt.IDCurso
|
|
ORDER BY cl.Nome ASC;`, res, req.originalUrl);
|
|
});
|
|
|
|
router.get('/checarCursoParaChamada/:IDTurma/:idCourse/:db', verifyJWT, (req, res) => {
|
|
const IDTurma = parseInt(req.params.IDTurma);
|
|
const idCourse = parseInt(req.params.idCourse);
|
|
const db = req.params.db;
|
|
execSQLQuery2(`SELECT
|
|
tc.IdTurmasCalendario,
|
|
tc.Data,
|
|
tc.HoraInicial,
|
|
tc.HoraFinal,
|
|
tc.CodigoInstrutor
|
|
FROM ${db}TurmasCalendario tc
|
|
WHERE tc.IdTurma = ${IDTurma} AND CodigoCurso = ${idCourse} AND tc.Ministrado = 0
|
|
ORDER BY tc.Data ASC;`, res, req.originalUrl);
|
|
});
|
|
|
|
router.post('/EnviarChamada', verifyJWT, (req, res) => {
|
|
const db = req.body.db;
|
|
const Alunos = JSON.parse(req.body.Alunos);
|
|
console.log(Alunos);
|
|
RealizaChamada(0, db, Alunos, function(Sucesso) {
|
|
res.send(Sucesso);
|
|
});
|
|
});
|
|
|
|
|
|
router.post('/insertNewToken', verifyJWT, (req, res) => {
|
|
const db = req.body.db;
|
|
const description = req.body.description;
|
|
const idunits = req.body.idunits;
|
|
const token = req.body.token;
|
|
execSQLQuery(`insert into appnotifications (description, idunits, token) values (?, ?, ?);`, res, req.originalUrl, [description, idunits, token]);
|
|
});
|
|
|
|
router.post('/changeReceive', verifyJWT, (req, res) => {
|
|
const token = req.body.token;
|
|
execSQLQuery(`update appnotifications set receive = !receive where token = ?;`, res, req.originalUrl, [token]);
|
|
});
|
|
|
|
router.get('/getAllUnitTokens/:idunits', verifyJWT, (req, res) => {
|
|
const idunits = req.params.idunits;
|
|
execSQLQuery(`select * from appnotifications where receive = 1 and ${(idunits > 0) ? 'idunits = ?' : 'true'};`, res, req.originalUrl, [idunits]);
|
|
});
|
|
|
|
|
|
return router;
|
|
};
|
|
|
|
function RealizaChamada(Index, db, Alunos, callback) {
|
|
if (Index < Alunos.length) {
|
|
const sqlGetTurmasCalendario = `SELECT
|
|
tc.IdTurmasCalendario,
|
|
tc.Data,
|
|
tc.HoraInicial,
|
|
tc.HoraFinal,
|
|
tc.CodigoInstrutor,
|
|
tt.IDTreinando
|
|
FROM ${db}TurmasCalendario tc
|
|
inner join ${db}TreinandosTurmas tt on tt.IDCurso = tc.CodigoCurso and tc.IdTurma = tt.CodigoTurma
|
|
WHERE tc.IdTurma = ${Alunos[Index]['CodigoTurma']} AND CodigoCurso = ${Alunos[Index]['IDCurso']} AND tc.Ministrado = 0
|
|
ORDER BY tc.Data ASC;`;
|
|
sqlServerConnection.request().query(sqlGetTurmasCalendario, function (error0, results0, fields0) {
|
|
if (error0 || !results0.recordset || results0.recordset.length == 0) {
|
|
console.log("Erro GetTurmasCalendario: " + error0);
|
|
Index++;
|
|
RealizaChamada(Index, db, Alunos, callback);
|
|
return;
|
|
}
|
|
const TurmasCalendario = results0.recordset;
|
|
Alunos[Index]['IDTreinando'] = TurmasCalendario[0]['IDTreinando'];
|
|
const sqlGetChamada = `select coalesce((SELECT TOP(1) IDChamadas FROM ${db}Chamadas ORDER BY IDChamadas DESC), 1) as 'IDChamadas';`;
|
|
sqlServerConnection.request().query(sqlGetChamada, function (error1, results1, fields1) {
|
|
const IDChamadas = results1.recordsets[0][0]['IDChamadas'] + 1;
|
|
const IDTurma = Alunos[Index]['CodigoTurma'];
|
|
const IDCurso = Alunos[Index]['IDCurso'];
|
|
const Data = formatDate(TurmasCalendario[0]['Data'], 0);
|
|
const Hora = formatDate(TurmasCalendario[0]['HoraInicial'], 1);
|
|
const HoraInicial = formatDate(TurmasCalendario[0]['HoraInicial'], 1);
|
|
const HoraFinal = formatDate(TurmasCalendario[0]['HoraFinal'], 1);
|
|
const CodigoInstrutor = TurmasCalendario[0]['CodigoInstrutor'];
|
|
const DataEnvioApp = formatDate(new Date(), 0);
|
|
|
|
const sqlInsertChamada = `INSERT INTO ${db}Chamadas (IDChamadas, IDTurma, IDCurso, Data, Hora, HoraInicio, HoraTermino, IDInstrutor, Flex, APP, DataEnvioAPP, DataAtualizacaoAPP, IDFuncionarioAPP)
|
|
VALUES (${IDChamadas}, ${IDTurma}, ${IDCurso}, '${Data}', '${Hora}', '${HoraInicial}', '${HoraFinal}', ${CodigoInstrutor}, 1, 1, '${DataEnvioApp}', '${DataEnvioApp}', ${CodigoInstrutor});`;
|
|
sqlServerConnection.request().query(sqlInsertChamada, function (error2, results2, fields2) {
|
|
const sqlInsertChamadaConteudo = `INSERT INTO ${db}ChamadasConteudos (IDChamadas, CodigoConteudo, DescricaoConteudo)
|
|
VALUES (${IDChamadas}, 0, 'Aula de robótica');`;
|
|
sqlServerConnection.request().query(sqlInsertChamadaConteudo, function (error3, results3, fields3) {
|
|
const sqlUpdateTurmasCalendario = `UPDATE ${db}TurmasCalendario SET
|
|
Ministrado = 1,
|
|
Data = '${Data}'
|
|
WHERE IdTurmasCalendario = ${TurmasCalendario[0]['IdTurmasCalendario']};`;
|
|
sqlServerConnection.request().query(sqlUpdateTurmasCalendario, function (error4, results4, fields4) {
|
|
const sqlInsertChamadasDetalhes = `INSERT INTO ${db}ChamadasDetalhes (IDChamadas, IDTreinando, Presente, Avisada, Justificativa, UltimaCarta)
|
|
VALUES (${IDChamadas}, ${Alunos[Index]['IDTreinando']}, 1, 0, null, null);`;
|
|
sqlServerConnection.request().query(sqlInsertChamadasDetalhes, function (error5, results5, fields5) {
|
|
Index++;
|
|
RealizaChamada(Index, db, Alunos, callback);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|
|
else {
|
|
callback(true);
|
|
}
|
|
}
|
|
|
|
function formatDate(date, ret) {
|
|
var novaData = date.toISOString().replace(/T/, ' ').replace(/\..+/, '').split(" ");
|
|
return novaData[ret];
|
|
}
|
|
|
|
module.exports = routes; |