ZoeApi/controllers/classController.js

956 lines
30 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

require("../connections/mysql-server");
require("../connections/sql-server");
require("../helpers/CheckToken");
require("../helpers/config");
const express = require("express");
const router = express.Router();
const bodyParser = require("body-parser");
const formidable = require("formidable");
router.use(
bodyParser.urlencoded({
limit: "10mb",
extended: true,
})
);
router.use(
bodyParser.json({
limit: "10mb",
extended: true,
})
);
var routes = function () {
router.get("/getQtdeChamadas/:idusers/:idcourses/:db", verifyJWT,(req, res) => {
const idusers = parseInt(req.params.idusers);
const idcourses = req.params.idcourses;
const db = req.params.db;
let sqlQuery = `
SELECT
co.idcourses AS IDCurso,
CASE WHEN (SELECT COUNT(1) FROM zoeusers zu INNER JOIN zoeunits zun ON zun.id = zu.idunits WHERE CONCAT(zun.id, '.dbo.') = '${db}' AND zu.user = ${idusers} AND zu.idzoeusertype = 1) > 0 THEN 100 ELSE COUNT(cl.idclasses) END AS qtde_presencas
FROM courses co
LEFT JOIN classes cl ON cl.idcourses = co.idcourses AND cl.disabled = 0
WHERE co.idcourses IN ${idcourses}
GROUP BY co.idcourses
ORDER BY co.idcourses ASC;`;
//console.log(sqlQuery);
execSQLQuery(sqlQuery, res, req.originalUrl);
});
router.get("/getQtdeChamadasOld/:idusers/:idcourses/:db", verifyJWT,(req, res) => {
const idusers = parseInt(req.params.idusers);
const idcourses = req.params.idcourses;
const db = req.params.db;
let sqlQuery = `
SELECT
c.IDCurso,
COUNT(*) AS qtde_presencas
FROM ${db}Chamadas c
INNER JOIN ${db}TreinandosTurmas tt ON tt.CodigoTurma = c.IDTurma AND tt.IDCurso = c.IDCurso
INNER JOIN ${db}ChamadasDetalhes cd ON cd.IDChamadas = c.IDChamadas
INNER JOIN ${db}Cursos cu ON cu.Codigo = c.IDCurso
WHERE c.Flex = 1 AND c.IDCurso IN ${idcourses} AND tt.IDMatricula = ${idusers} AND cd.Presente = 1
GROUP BY c.IDCurso, cu.NomeVersao
ORDER BY cu.NomeVersao ASC;`;
//console.log(sqlQuery);
execSQLQuery2(sqlQuery, res, req.originalUrl);
});
router.get("/getClass/:idclasses", verifyJWT, (req, res) => {
const idclasses = parseInt(req.params.idclasses);
execSQLQuery(
`SELECT
*
FROM classes
WHERE idclasses = ${idclasses};`,
res,
req.originalUrl
);
});
/* router.get('/adjustXp', (req, res) => {
execSQLQuery(`SELECT idusers, completedClass, idunits FROM myrobot.stepclass where completedClass = 1;`, res, req.originalUrl);
}); */
router.get("/getClassByAny/:field/:value", verifyJWT, (req, res) => {
const field = req.params.field;
const value = req.params.value;
execSQLQuery(
`SELECT
*
FROM classes
WHERE ? = ?;`,
res,
req.originalUrl,
[field, value]
);
});
router.get("/getQtdeClass/:idusers/:idcourses/:db", verifyJWT, (req, res) => {
const matricula = parseInt(req.params.idusers);
const idcurso = req.params.idcourses;
const db = req.params.db;
let sqlQuery = `select count(*) as qtde_presencas
from ${db}Chamadas c
inner join ${db}TreinandosTurmas tt
on tt.CodigoTurma = c.IDTurma
and tt.IDCurso = c.IDCurso
inner join ${db}ChamadasDetalhes cd
on cd.IDChamadas = c.IDChamadas
and cd.IDTreinando = tt.IDTreinando
where c.Flex = 1
and c.IDCurso = ${idcurso}
and tt.IDMatricula = ${matricula}
and cd.Presente = 1;`;
execSQLQuery2(sqlQuery, res, req.originalUrl);
});
router.get("/getClassByCourse/:idcourses", verifyJWT, (req, res) => {
const idcourses = parseInt(req.params.idcourses);
execSQLQuery(
`SELECT
*
FROM classes
WHERE idcourses = ${idcourses} AND disabled = 0 ORDER BY ordem asc;`,
res,
req.originalUrl
);
});
router.get("/getClassbyCourse/count/:idcourses", verifyJWT, (req, res) => {
const idcourses = parseInt(req.params.idcourses);
execSQLQuery(
`SELECT count(*) as numeroDeAulas FROM classes WHERE idcourses = ${idcourses} AND disabled = 0 ORDER BY ordem asc;`,
res,
req.originalUrl
);
});
router.get(
"/getClassEnByCourse/:idcourses/:qtd/:homework",
verifyJWT,
(req, res) => {
const idcourses = parseInt(req.params.idcourses);
const qtd = parseInt(req.params.qtd);
const homework = parseInt(req.params.homework);
execSQLQuery(
`SELECT
idclasses,
idcourses,
name,
case when disabled = 0 and ordem < ${qtd} and (viewed < 2 or ${qtd} != 100) then 0 else 1 end as disabled,
ordem,
description,
viewed,
aval,
download,
demo,
homework,
sprites
FROM classes
WHERE idcourses = ${idcourses} AND disabled = 0 and homework = ${homework}
ORDER BY ordem asc;`,
res,
req.originalUrl
);
}
);
router.get(
"/getClassEnByCourseAll/:idcourses/:qtd/:homework",
verifyJWT,
(req, res) => {
const idcourses = parseInt(req.params.idcourses);
const qtd = parseInt(req.params.qtd);
const homework = parseInt(req.params.homework);
execSQLQuery(
`SELECT
idclasses,
idcourses,
name,
case when (disabled = 0 or disabled = 1) and (viewed < 2 or ${qtd} != 100) then 0 else 1 end as disabled,
ordem,
description,
viewed,
aval,
download,
demo,
homework,
sprites
FROM classes
WHERE idcourses = ${idcourses} AND homework = ${homework}
ORDER BY ordem asc;`,
res,
req.originalUrl
);
}
);
router.post("/insertStepClass", verifyJWT, (req, res) => {
const idusers = parseInt(req.body.idusers);
const idclasses = parseInt(req.body.idclasses);
const idunits = parseInt(req.body.idunits);
mysqlConnection.query(
"select * from stepclass order by idstepclass desc;",
function (error, results, fields) {
let IDStepClass = "";
if (!results || results == "" || results.length == 0) IDStepClass = "1";
else IDStepClass = parseInt(results[0]["idstepclass"]) + 1;
let SQLInsert = `INSERT INTO stepclass(idstepclass, idusers, idclasses, actualClass, actualExercise, actualAnswer, actualItem, answersdb, continueClass, completedClass, idunits) VALUES
(?, ?, ?, 0, 0, 0, 0, '', 0, 0, ?);`;
execSQLQuery(
SQLInsert,
res,
req.originalUrl,
[IDStepClass, idusers, idclasses, idunits],
function (Retorno) {
if (Retorno.status == 500) {
console.log(Retorno.error);
}
}
);
}
);
});
router.get(
"/lockClass/:idusers/:idunits/:idclasses",
verifyJWT,
(req, res) => {
const idusers = parseInt(req.params.idusers);
const idclasses = parseInt(req.params.idclasses);
const idunits = parseInt(req.params.idunits);
let sqlQuery = `UPDATE stepclass SET
lockedClass = 1
WHERE idunits = ${idunits} and idclasses = ${idclasses} and idusers = ${idusers};`;
execSQLQuery(sqlQuery, res, req.originalUrl);
}
);
router.patch("/updateStepClass", verifyJWT, (req, res) => {
const idusers = parseInt(req.body.idusers);
const idclasses = parseInt(req.body.idclasses);
const idunits = parseInt(req.body.idunits);
const actualClass = parseInt(req.body.actualClass);
const actualExercise = parseInt(req.body.actualExercise);
const actualAnswer = parseInt(req.body.actualAnswer);
const actualItem = parseInt(req.body.actualItem);
const answersdb = req.body.answersdb;
const continueClass = req.body.continueClass;
const completedClass = req.body.completedClass;
const notegame = req.body.notegame;
let sqlQuery = `UPDATE stepclass SET
actualClass = ${actualClass},
actualExercise = ${actualExercise},
actualAnswer = ${actualAnswer},
actualItem = ${actualItem},
answersdb = '${answersdb}',
continueClass = ${continueClass},
completedClass = ${completedClass},
notegame = ${notegame}
WHERE idunits = ${idunits} and idclasses = ${idclasses} and idusers = ${idusers};`;
execSQLQuery(sqlQuery, res, req.originalUrl);
});
router.patch("/addNote/:idunits", verifyJWT, (req, res) => {
const idusers = parseInt(req.body.idusers);
const idclasses = parseInt(req.body.idclasses);
const note = req.body.note;
const idunits = parseInt(req.params.idunits);
execSQLQuery(
`UPDATE stepclass SET
note = ${note},
notification = 1
WHERE idusers = ${idusers} AND idclasses = ${idclasses} AND idunits = ${idunits};`,
res,
req.originalUrl
);
});
router.patch("/setFinalDate", verifyJWT, (req, res) => {
const datefinal = req.body.datefinal;
const idusers = req.body.idusers;
const idclasses = req.body.idclasses;
const idunits = req.body.idunits;
execSQLQuery(
`UPDATE stepclass SET
datefinal = (select date_format(date_add(now(), interval 6 day), '%d/%m/%Y'))
WHERE idusers = ${idusers} AND idclasses = ${idclasses} AND idunits = ${idunits};`,
res,
req.originalUrl
);
});
router.get("/PlusView/:idclasses", verifyJWT, (req, res) => {
const idclasses = req.params.idclasses;
execSQLQuery(
`UPDATE classes SET
viewed = viewed + 1
WHERE idclasses = ${idclasses};`,
res,
req.originalUrl
);
});
router.post("/addCourseNote", verifyJWT, (req, res) => {
const idusers = parseInt(req.body.idusers);
const idcourses = parseInt(req.body.idcourses);
const note = req.body.note;
const idunits = parseInt(req.body.idunits);
execSQLQuery(
`INSERT INTO coursenotes (idusers, idcourses, note, idunits)
VALUES (${idusers}, ${idcourses}, ${note}, ${idunits});`,
res,
req.originalUrl
);
});
router.get("/getActualConcept/:idclasses", verifyJWT, (req, res) => {
const idclasses = parseInt(req.params.idclasses);
execSQLQuery(
`SELECT
(ordem + 1) as concept
FROM classes
WHERE idclasses = ${idclasses};`,
res,
req.originalUrl
);
});
router.patch("/removeNotification", verifyJWT, (req, res) => {
const idusers = parseInt(req.body.idusers);
const idunits = parseInt(req.body.idunits);
execSQLQuery(
`UPDATE stepclass SET
notification = 0
WHERE idusers = ${idusers} AND idunits = ${idunits}`,
res,
req.originalUrl
);
});
router.get(
"/getTreinandosTurmas/:matricula/:idcurso/:db",
verifyJWT,
(req, res) => {
const matricula = parseInt(req.params.matricula);
const idcurso = parseInt(req.params.idcurso);
const db = req.params.db;
execSQLQuery2(
`SELECT
*
FROM ${db}TreinandosTurmas
WHERE IDMatricula = ${matricula} AND IDCurso = ${idcurso};`,
res,
req.originalUrl
);
}
);
router.post("/insertNotasDetalhes/:banco", verifyJWT, (req, res) => {
const db = req.params.banco;
const IDTurma = parseInt(req.body.IDTurma);
const IDCurso = parseInt(req.body.IDCurso);
const IDMatricula = parseInt(req.body.IDMatricula);
const IDTreinando = parseInt(req.body.IDTreinando);
const IDConceito = parseInt(req.body.IDConceito);
const NumeroProva = parseInt(req.body.NumeroProva);
const Nota = req.body.Nota;
execSQLQuery2(
`INSERT INTO ${db}NotasDetalhes (IDTurma, IDCurso, IDMatricula, IDTreinando, IDConceito, Nota)
VALUES (${IDTurma}, ${IDCurso}, ${IDMatricula}, ${IDTreinando}, ${IDConceito}, ${Nota});
INSERT INTO ${db}NotasDetalhesSequencial (IDTurma, IDCurso, IDMatricula, IDTreinando, IDConceito)
VALUES (${IDTurma}, ${IDCurso}, ${IDMatricula}, ${IDTreinando}, ${IDConceito});`,
res,
req.originalUrl
);
});
router.get("/getAllStepClass/:englishbot", verifyJWT, (req, res) => {
const englishbot = parseInt(req.params.englishbot);
execSQLQuery(
`select
sc.*,
sc.idusers as 'Matricula',
un.unityname as 'Unidade',
cl.name as 'Aula',
co.name as 'Curso',
sc.completedClass as 'Concluida',
sc.actualExercise as 'Etapa'
from stepclass sc
inner join classes cl on cl.idclasses = sc.idclasses
inner join courses co on co.idcourses = cl.idcourses
inner join units un on un.idunits = sc.idunits
where co.idtypescourse ${englishbot == 1 ? "=" : "!="} 5;`,
res,
req.originalUrl
);
});
router.get(
"/getStepClass/:idusers/:idclasses/:idunits",
(req, res) => {
const idusers = parseInt(req.params.idusers);
const idclasses = parseInt(req.params.idclasses);
const idunits = parseInt(req.params.idunits);
const sql = `SELECT
sc.*,
(SELECT COUNT(*)
FROM (
SELECT
c.idclassescontent,
COALESCE(e.idexercises, m.idmedia, t.idtexts, s.idslides, c.montagem) AS content_id,
COALESCE(e.description, m.description, t.description, s.title, 'Hora da montagem') AS description,
COALESCE(e.enabled, 1, t.enabled, 1, 1) AS enabled,
CASE
WHEN e.idexercises IS NOT NULL THEN 'Exercício'
WHEN m.idmedia IS NOT NULL THEN 'Mídia'
WHEN t.idtexts IS NOT NULL THEN CASE WHEN t.game = 0 THEN 'Texto' ELSE 'Jogo' END
WHEN s.idslides IS NOT NULL THEN 'Slide'
WHEN c.montagem = 1 THEN 'Montagem'
END AS type,
CASE
WHEN e.idexercises IS NOT NULL THEN 'Editar'
WHEN m.idmedia IS NOT NULL THEN 'Prever'
WHEN t.idtexts IS NOT NULL THEN 'Editar'
WHEN s.idslides IS NOT NULL THEN 'Prever'
WHEN c.montagem = 1 THEN ''
END AS acao
FROM classescontent c
LEFT JOIN exercises e ON c.idexercises = e.idexercises
LEFT JOIN media m ON c.idmedia = m.idmedia
LEFT JOIN texts t ON c.idtexts = t.idtexts
LEFT JOIN slides s ON c.idslides = s.idslides
WHERE c.idclasses = ${idclasses}
) AS content_table) AS qtdeItens
FROM stepclass sc
WHERE
sc.idusers = ${idusers}
AND sc.idclasses = ${idclasses}
AND sc.idunits = ${idunits};`;
mysqlConnection.query(sql, function (error, results, fields) {
console.log(req.originalUrl + " success 200");
res.send(
JSON.stringify({
response: results,
error: error,
status: results.length > 0 ? 200 : 500,
})
);
});
}
);
router.get("/getStepClassByUser/:idusers/:idunits", verifyJWT, (req, res) => {
const idusers = parseInt(req.params.idusers);
const idunits = parseInt(req.params.idunits);
execSQLQuery(
`SELECT
*
FROM stepclass
WHERE idusers = ${idusers} AND idunits = ${idunits};`,
res,
req.originalUrl
);
});
router.get("/list", verifyJWT, (req, res) => {
execSQLQuery(
`SELECT
classes.idclasses,
classes.name,
classes.disabled,
classes.ordem,
courses.name as coursename,
COUNT(classescontent.idclassescontent) as 'classContent'
FROM classes
JOIN courses ON classes.idcourses = courses.idcourses
LEFT JOIN classescontent ON classes.idclasses = classescontent.idclasses
GROUP BY classes.idclasses;`,
res,
req.originalUrl
);
});
router.get("/listEn", verifyJWT, (req, res) => {
execSQLQuery(
`SELECT
c.idclasses,
c.name,
c.disabled,
c.ordem,
c.download,
co.name AS coursename,
(select count(*) from courses co2 where co2.idcourses = c.idcourses and co2.idtypescourse = 5) as 'cursoingles',
COUNT(cc.idclassescontent) AS 'classContent'
FROM classes c
JOIN courses co ON c.idcourses = co.idcourses
LEFT JOIN classescontent cc ON c.idclasses = cc.idclasses
GROUP BY c.idcourses, c.idclasses
ORDER BY co.idcourses ASC, c.ordem ASC;`,
res,
req.originalUrl
);
});
router.get("/disable/:idclasses", verifyJWT, (req, res) => {
const idclasses = parseInt(req.params.idclasses);
execSQLQuery(
`UPDATE classes SET
disabled = not disabled
WHERE idclasses = ${idclasses};`,
res,
req.originalUrl
);
});
router.post("/insert", verifyJWT, (req, res) => {
const idcourses = parseInt(req.body.idcourses);
const name = req.body.name;
const disabled = req.body.disabled ? 1 : 0;
const description = req.body.description;
const aval = req.body.aval ? 1 : 0;
const download = req.body.download ? 1 : 0;
const demo = req.body.demo ? 1 : 0;
const homework = req.body.homework ? 1 : 0;
const sprites = parseInt(req.body.sprites);
execSQLQuery(
`INSERT INTO classes(idcourses, name, disabled, ordem, description, aval, download, viewed, demo, homework, sprites) SELECT
?, ?, ?, (select coalesce((select (ordem + 1) as ordem from classes where idcourses = ${idcourses} order by ordem desc limit 1), 0)), ?, ?, ?, 0, ?, ?, ?;`,
res,
req.originalUrl,
[
idcourses,
name,
disabled,
description,
aval,
download,
demo,
homework,
sprites,
]
);
});
router.patch("/update", verifyJWT, (req, res) => {
const idclasses = parseInt(req.body.idclasses);
const idcourses = parseInt(req.body.idcourses);
const name = req.body.name;
const disabled = req.body.disabled ? 1 : 0;
const description = req.body.description;
const viewed = parseInt(req.body.viewed);
const aval = req.body.aval ? 1 : 0;
const download = req.body.download ? 1 : 0;
const demo = req.body.demo ? 1 : 0;
const homework = req.body.homework ? 1 : 0;
const sprites = parseInt(req.body.sprites);
execSQLQuery(
`UPDATE classes SET
idcourses = ?,
name = ?,
disabled = ?,
description = ?,
viewed = ?,
aval = ?,
download = ?,
demo = ?,
homework = ?,
sprites = ?
WHERE idclasses = ?;`,
res,
req.originalUrl,
[
idcourses,
name,
disabled,
description,
viewed,
aval,
download,
demo,
homework,
sprites,
idclasses,
]
);
});
router.delete("/delete/:idclasses", verifyJWT, (req, res) => {
const idclasses = parseInt(req.params.idclasses);
execSQLQuery(
`DELETE FROM classes
WHERE idclasses = ${idclasses};`,
res,
req.originalUrl
);
});
router.post("/copy", verifyJWT, (req, res) => {
let form = new formidable.IncomingForm();
form.maxFileSize = 1024 * 1024 * 1024;
form.parse(req, function (err, fields, files) {
const fs = require("fs");
var idclasses = fields.idclasses;
var GifFile = "";
var BackFile = "";
try {
GifFile = files.gif.path;
} catch (e) {
console.log("Não copia Gif");
}
try {
BackFile = files.back.path;
} catch (e) {
console.log("Não copia Back");
}
if (GifFile == "" && BackFile != "") {
fs.rename(
BackFile,
Variables("src_media") + "images/back_" + idclasses + ".jpg",
function (err) {
console.log("/classes/copy success 200");
res.send(true);
}
);
} else if (GifFile != "" && BackFile == "") {
fs.rename(
GifFile,
Variables("src_media") + "images/gif_" + idclasses + ".gif",
function (err) {
console.log("/classes/copy success 200");
res.send(true);
}
);
} else if (GifFile != "" && BackFile != "") {
fs.rename(
GifFile,
Variables("src_media") + "images/gif_" + idclasses + ".gif",
function (err) {
fs.rename(
BackFile,
Variables("src_media") + "images/back_" + idclasses + ".jpg",
function (err) {
console.log("/classes/copy success 200");
res.send(true);
}
);
}
);
} else {
res.send(true);
}
});
});
router.post("/insertUserStage", verifyJWT, (req, res) => {
const iduserstages = req.body.iduserstages;
const idclassescontent = parseInt(req.body.idclassescontent);
const idusers = parseInt(req.body.idusers);
const idunits = parseInt(req.body.idunits);
const idclasses = parseInt(req.body.idclasses);
const note = req.body.note;
mysqlConnection.query(
"select * from userstages order by iduserstages desc;",
function (error, results, fields) {
let IDUserStages = "";
if (!results || results == "" || results.length == 0)
IDUserStages = "1";
else IDUserStages = parseInt(results[0]["iduserstages"]) + 1;
const SQLInsert = `INSERT INTO userstages(iduserstages, idstages, idusers, idunits, idclasses, note)
SELECT
${IDUserStages},
(SELECT DISTINCT idstages FROM stages WHERE convert(description using utf8) LIKE convert(Stage.description using utf8)) AS idstages,
${idusers} AS idusers,
${idunits} AS idunits,
${idclasses} AS idclasses,
${note} AS note
FROM (SELECT CASE
WHEN idgames is not null THEN 'Jogo'
WHEN idslides is not null THEN 'Montagem'
ELSE 'Lição de Casa'
END AS description
FROM classescontent
WHERE idclassescontent = ${idclassescontent}) Stage;`;
//console.log(SQLInsert);
execSQLQuery(SQLInsert, res, req.originalUrl);
}
);
});
router.post("/insertZoeUserGames", verifyJWT, (req, res) => {
const idunits = parseInt(req.body.idunits);
const idusers = parseInt(req.body.idusers);
const idclasses = parseInt(req.body.idclasses);
const idgames = parseInt(req.body.idgames);
const note = req.body.note;
execSQLQuery(
`insert into zoeusergames (idunits, idusers, idgames, idclasses, note) values (${idunits}, ${idusers}, ${idgames}, ${idclasses}, ${note});`,
res,
req.originalUrl
);
});
router.get("/CarregarImagem/:Nome", (req, res) => {
let Protocolo = "http://";
try {
Protocolo = req.headers.referer.split("/")[0] + "//";
} catch (e) {}
const fs = require("fs");
const Nome = req.params.Nome;
const DirLocal = `${Variables("src_media")}images/${Nome}`;
console.log(DirLocal);
const DirWeb = `${Protocolo}${
req.headers.host.split(":")[0]
}/images/${Nome}`;
console.log(DirWeb);
if (DirLocal.includes("C:/")) {
let diretoriodearquivolocal = DirWeb;
diretoriodearquivolocal = diretoriodearquivolocal.replace(
"localhost",
"localhost:4200"
);
diretoriodearquivolocal = diretoriodearquivolocal.replace(
"images",
"assets/imagesAula"
);
res.redirect(diretoriodearquivolocal);
} else {
if (fs.existsSync(DirLocal)) {
res.redirect(DirWeb);
} else {
const shell = require("shelljs");
shell.exec(
"cd " +
Variables("src_media") +
"images/;wget http://18.228.91.135/images/" +
Nome,
function (sucesso) {
//console.log(sucesso);
res.redirect(DirWeb);
}
);
}
}
});
router.patch("/AtualizarOrdem", verifyJWT, (req, res) => {
const idclasses = parseInt(req.body.idclasses);
const ordem = parseInt(req.body.ordem);
execSQLQuery(
`UPDATE classes SET
ordem = ${ordem}
WHERE idclasses = ${idclasses};`,
res,
req.originalUrl
);
});
router.get("/getTeacherPasswords/:db", verifyJWT, (req, res) => {
const db = req.params.db;
execSQLQuery2(
`SELECT
Senha
FROM ${db}Funcionarios
where Desativado = 0;`,
res,
req.originalUrl
);
});
router.get("/getFotoAluno/:idusers/:db", (req, res) => {
const idusers = parseInt(req.params.idusers);
const db = req.params.db;
let sqlQuery = `select distinct
tt.IDTreinando
from ${db}TreinandosTurmas tt
where tt.IDMatricula = ${idusers};`;
if (Variables("local") == "Local") {
console.log(req.originalUrl + " error 403");
res.send(
JSON.stringify({
response: "",
error: null,
status: 403,
})
);
return;
}
sqlServerConnection
.request()
.query(sqlQuery, function (error, results, fields) {
if (!error && results["recordsets"][0].length != 0) {
const fs = require("fs");
/* fs.readdir(Variables("src_fotos"), (err, files) => {
let FotoId = "";
files.forEach(Foto => {
if (Foto.split('.')[0] == results['recordsets'][0][0]['IDTreinando']) {
FotoId = Foto;
}
});
if (FotoId != "") {
fs.readFile(Variables("src_fotos") + FotoId, function(err, data) {
if (err) throw err
console.log(req.originalUrl + " success 200");
res.send(JSON.stringify({
"response": data,
"error": null,
"status": 200
}));
});
}
else {
console.log(req.originalUrl + " error 500");
res.send(JSON.stringify({
"response": "",
"error": null,
"status": 500
}));
}
}); */
} else {
console.log(req.originalUrl + " error 500");
res.send(
JSON.stringify({
response: "",
error: null,
status: 500,
})
);
}
});
});
router.post("/AlteraNotaAula", verifyJWT, (req, res) => {
const idclasses = parseInt(req.body.idclasses);
const idunits = parseInt(req.body.idunits);
const idusers = parseInt(req.body.idusers);
const Nota = req.body.Nota;
const SQLUpdate = `UPDATE stepclass SET note = ${Nota} WHERE idunits = ${idunits} AND idclasses = ${idclasses} AND idusers = ${idusers};`;
mysqlConnection.query(SQLUpdate, function (error, results, fields) {
const SQLDelete = `delete from coursenotes where idcourses = (select idcourses from classes where idclasses = ${idclasses}) and idunits = ${idunits} and idusers = ${idusers};`;
mysqlConnection.query(SQLDelete, function (error2, results2, fields2) {
InsertCourseNotes();
console.log(req.originalUrl + " success 200");
res.send(
JSON.stringify({
response: results2,
error: error2,
status: 200,
})
);
});
});
});
router.get(
"/AlteraStatusAulaAssistida/:idunits/:classes/:idusers/:status",
verifyJWT,
(req, res) => {
const idunits = parseInt(req.params.idunits);
const idclasses = parseInt(req.params.idclasses);
const idusers = parseInt(req.params.idusers);
const status = parseInt(req.params.status);
execSQLQuery(
`UPDATE stepclass SET
liberado = ${status}
WHERE idunits = ${idunits} and idclasses = ${idclasses} and idusers = ${idusers};`,
res,
req.originalUrl
);
}
);
router.get("/getTipoCursoPorAula/:idclasses", verifyJWT, (req, res) => {
const idclasses = parseInt(req.params.idclasses);
execSQLQuery(
`SELECT
tc.*
FROM typescourse tc
inner join courses co on co.idtypescourse = tc.idtypescourse
inner join classes cl on cl.idcourses = co.idcourses
where cl.idclasses = ${idclasses};`,
res,
req.originalUrl
);
});
function InsertCourseNotes() {
console.log(new Date().toUTCString() + " - /InsertCourseNotes");
const SQLQry = `select
Tab2.idcourses,
Tab2.idusers,
(sum(Tab2.note) / Tab2.AulasCurso) as 'note',
Tab2.idunits
from (
select
Tab1.*,
sc.idstepclass,
sc.note
from (
select
sc.idusers,
co.idcourses,
sc.idunits,
count(sc.idclasses) as 'Aulas',
(select count(*) from classes cl1 where cl1.idcourses = co.idcourses and cl1.disabled = 0) as 'AulasCurso'
from stepclass sc
inner join classes cl on cl.idclasses = sc.idclasses
inner join courses co on co.idcourses = cl.idcourses
where sc.note is not null
group by sc.idusers, co.idcourses, sc.idunits) Tab1
inner join stepclass sc on sc.idunits = Tab1.idunits and sc.idusers = Tab1.idusers
inner join classes cl on cl.idclasses = sc.idclasses and cl.idcourses = Tab1.idcourses
where Tab1.Aulas = Tab1.AulasCurso
order by idunits, idcourses, idusers) Tab2
group by Tab2.idcourses, Tab2.idusers, Tab2.idunits;`;
mysqlConnection.query(SQLQry, function (error, results, fields) {
LoopCursoNotas(0, results, function (Sucesso) {
console.log(new Date().toUTCString() + " - Notas de cursos lançadas");
return Sucesso;
});
});
}
function LoopCursoNotas(Index, Registros, callback) {
if (!Registros) {
callback(false);
return;
}
if (Index < Registros.length) {
let SQLInsert = `INSERT INTO coursenotes (idcourses, idusers, note, idunits) VALUES (${Registros[Index]["idcourses"]}, ${Registros[Index]["idusers"]}, ${Registros[Index]["note"]}, ${Registros[Index]["idunits"]});`;
//console.log(SQLInsert);
mysqlConnection.query(SQLInsert, function (error, results, fields) {
if (!error) {
console.log(
"Notas do curso lançadas para o aluno " +
Registros[Index]["idusers"] +
" da unidade " +
Registros[Index]["idcourses"]
);
}
Index++;
LoopCursoNotas(Index, Registros, callback);
});
} else {
callback(true);
}
}
return router;
};
module.exports = routes;