362 lines
14 KiB
JavaScript
362 lines
14 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('/', verifyJWT, (req, res) => {
|
||
execSQLQuery(`SELECT * FROM classescontent`, res, req.originalUrl);
|
||
});
|
||
|
||
router.get('/getAll', (req, res) => {
|
||
execSQLQuery(`SELECT * FROM classescontent`, res, req.originalUrl);
|
||
});
|
||
|
||
router.get('/getIdClasses1/:idclasses', verifyJWT, (req, res) => {
|
||
const idclasses = parseInt(req.params.idclasses);
|
||
execSQLQuery(`SELECT
|
||
*
|
||
FROM classescontent
|
||
WHERE idclasses = ${idclasses}
|
||
ORDER BY ordem asc;`, res, req.originalUrl);
|
||
});
|
||
|
||
router.get('/getCCbyEx/:idexercises', verifyJWT, (req, res) => {
|
||
const idexercises = parseInt(req.params.idexercises);
|
||
execSQLQuery(`SELECT
|
||
*
|
||
FROM classescontent
|
||
WHERE idexercises = ${idexercises};`, res, req.originalUrl);
|
||
});
|
||
|
||
router.get('/getIdClasses/:idclasses', verifyJWT, (req, res) => {
|
||
const idclasses = parseInt(req.params.idclasses);
|
||
execSQLQuery(`SELECT
|
||
MAX(ordem) as ordem
|
||
FROM classescontent
|
||
WHERE idclasses = ${idclasses};`, res, req.originalUrl);
|
||
});
|
||
|
||
router.get('/getClassescontent/:idclasses', verifyJWT, (req, res) => {
|
||
const idclasses = parseInt(req.params.idclasses);
|
||
execSQLQuery(`SELECT
|
||
*
|
||
FROM
|
||
(SELECT
|
||
c.idclassescontent,
|
||
c.idclasses,
|
||
c.ordem,
|
||
c.idexercises,
|
||
e.description,
|
||
e.enabled,
|
||
'Exercício' as type,
|
||
'Editar' as acao,
|
||
'' as obs
|
||
FROM classescontent c
|
||
INNER JOIN exercises e ON c.idexercises = e.idexercises
|
||
WHERE c.idclasses = ${idclasses}
|
||
UNION ALL
|
||
SELECT
|
||
c.idclassescontent,
|
||
c.idclasses,
|
||
c.ordem,
|
||
c.idmedia,
|
||
m.description,
|
||
1 as enabled,
|
||
'Mídia' as type,
|
||
'Prever' as acao,
|
||
m.publishid as obs
|
||
FROM classescontent c
|
||
INNER JOIN media m ON c.idmedia = m.idmedia
|
||
WHERE c.idclasses = ${idclasses}
|
||
UNION ALL
|
||
SELECT
|
||
c.idclassescontent,
|
||
c.idclasses,
|
||
c.ordem,
|
||
c.idtexts,
|
||
t.description,
|
||
t.enabled,
|
||
case when t.game = 0 then 'Texto' else 'Jogo' end as type,
|
||
'Editar' as acao,
|
||
'' as obs
|
||
FROM classescontent c
|
||
INNER JOIN texts t ON c.idtexts = t.idtexts
|
||
WHERE c.idclasses = ${idclasses}
|
||
UNION ALL
|
||
SELECT
|
||
c.idclassescontent,
|
||
c.idclasses,
|
||
c.ordem,
|
||
c.idgames,
|
||
t.description,
|
||
t.enabled,
|
||
case when t.game = 0 then 'Texto' else 'Jogo' end as type,
|
||
'Editar' as acao,
|
||
'' as obs
|
||
FROM classescontent c
|
||
INNER JOIN texts t ON c.idgames = t.idtexts
|
||
WHERE c.idclasses = ${idclasses}
|
||
UNION ALL
|
||
SELECT
|
||
c.idclassescontent,
|
||
c.idclasses,
|
||
c.ordem,
|
||
c.idslides,
|
||
s.title,
|
||
1 as enabled,
|
||
'Slide' as type,
|
||
'Editar' as acao,
|
||
'' as obs
|
||
FROM classescontent c
|
||
INNER JOIN slides s ON c.idslides = s.idslides
|
||
WHERE c.idclasses = ${idclasses}
|
||
UNION ALL
|
||
SELECT
|
||
c.idclassescontent,
|
||
c.idclasses,
|
||
c.ordem,
|
||
c.montagem,
|
||
'Hora da montagem' as description,
|
||
1 as enabled,
|
||
'Montagem' as type,
|
||
'⠀⠀⠀⠀⠀' as acao,
|
||
'' as obs
|
||
FROM classescontent c
|
||
WHERE c.idclasses = ${idclasses} AND c.montagem = 1
|
||
UNION ALL
|
||
SELECT
|
||
c.idclassescontent,
|
||
c.idclasses,
|
||
c.ordem,
|
||
c.idanimations,
|
||
a.description,
|
||
1 as enabled,
|
||
'Animação' as type,
|
||
'Editar' as acao,
|
||
'' as obs
|
||
FROM classescontent c
|
||
INNER JOIN animations a ON c.idanimations = a.idanimations
|
||
WHERE c.idclasses = ${idclasses}
|
||
UNION ALL
|
||
SELECT
|
||
c.idclassescontent,
|
||
c.idclasses,
|
||
c.ordem,
|
||
c.idzoechattime,
|
||
ct.description,
|
||
1 as enabled,
|
||
'ChatTime' as type,
|
||
'Editar' as acao,
|
||
'' as obs
|
||
FROM classescontent c
|
||
INNER JOIN zoechattime ct ON c.idzoechattime = ct.idzoechattime
|
||
WHERE c.idclasses = ${idclasses}
|
||
UNION ALL
|
||
SELECT
|
||
c.idclassescontent,
|
||
c.idclasses,
|
||
c.ordem,
|
||
c.idcharactersConversation,
|
||
cc.description,
|
||
1 as enabled,
|
||
'Diálogo' as type,
|
||
'Editar' as acao,
|
||
'' as obs
|
||
FROM classescontent c
|
||
INNER JOIN charactersConversation cc ON c.idcharactersConversation = cc.idcharactersConversation
|
||
WHERE c.idclasses = ${idclasses}
|
||
UNION ALL
|
||
SELECT
|
||
c.idclassescontent,
|
||
c.idclasses,
|
||
c.ordem,
|
||
c.idzoelistenrepeat,
|
||
lr.description,
|
||
1 as enabled,
|
||
'ListenRepeat' as type,
|
||
'Editar' as acao,
|
||
'' as obs
|
||
FROM classescontent c
|
||
INNER JOIN zoelistenrepeat lr ON c.idzoelistenrepeat = lr.idzoelistenrepeat
|
||
WHERE c.idclasses = ${idclasses}
|
||
UNION ALL
|
||
SELECT
|
||
c.idclassescontent,
|
||
c.idclasses,
|
||
c.ordem,
|
||
c.idfiles,
|
||
f.description,
|
||
1 as enabled,
|
||
'Download' as type,
|
||
'Baixar' as acao,
|
||
'' as obs
|
||
FROM classescontent c
|
||
INNER JOIN files f ON c.idfiles = f.idfiles
|
||
WHERE c.idclasses = ${idclasses}
|
||
) result
|
||
ORDER BY result.ordem;`, res, req.originalUrl);
|
||
});
|
||
|
||
router.post('/insert', verifyJWT, (req, res) => {
|
||
const idexercises = req.body.idexercises || null;
|
||
const idmedia = req.body.idmedia || null;
|
||
const idtexts = req.body.idtexts || null;
|
||
const idclasses = req.body.idclasses || null;
|
||
const idslides = req.body.idslides || null;
|
||
const idgames = req.body.idgames || null;
|
||
const montagem = req.body.montagem || null;
|
||
const idanimations = req.body.idanimations || null;
|
||
const idzoechattime = req.body.idzoechattime || null;
|
||
const idcharactersConversation = req.body.idcharactersConversation || null;
|
||
const idzoelistenrepeat = req.body.idzoelistenrepeat || null;
|
||
const idfiles = req.body.idfiles || null;
|
||
execSQLQuery(`INSERT INTO classescontent(idexercises, idmedia, idtexts, idclasses, ordem, idslides, idgames, montagem, idanimations, idzoechattime, idcharactersConversation, idzoelistenrepeat, idfiles) SELECT
|
||
${idexercises}, ${idmedia}, ${idtexts}, ${idclasses}, (select coalesce((select (ordem + 1) as ordem from classescontent where idclasses = ${idclasses} order by ordem desc limit 1), 0)) ,${idslides}, ${idgames}, ${montagem}, ${idanimations}, ${idzoechattime}, ${idcharactersConversation}, ${idzoelistenrepeat}, ${idfiles};`, res, req.originalUrl);
|
||
})
|
||
|
||
router.patch('/update', verifyJWT, (req, res) => {
|
||
const idclassescontent = parseInt(req.body.idclassescontent);
|
||
const idexercises = req.body.idexercises || null;
|
||
const idmedia = req.body.idmedia || null;
|
||
const idtexts = req.body.idtexts || null;
|
||
const idclasses = req.body.idclasses || null;
|
||
const idslides = req.body.idslides || null;
|
||
const idgames = req.body.idgames || null;
|
||
const montagem = req.body.montagem || null;
|
||
const idanimations = req.body.idanimations || null;
|
||
const idcharactersConversation = req.body.idcharactersConversation || null;
|
||
const idzoelistenrepeat = req.body.idzoelistenrepeat || null;
|
||
const idfiles = req.body.idfiles || null;
|
||
const ordem = parseInt(req.body.ordem);
|
||
execSQLQuery(`UPDATE classescontent SET
|
||
idexercises = ${idexercises},
|
||
idmedia = ${idmedia},
|
||
idtexts = ${idtexts},
|
||
idclasses = ${idclasses},
|
||
idslides = ${idslides},
|
||
idgames = ${idgames},
|
||
montagem = ${montagem},
|
||
idanimations = ${idanimations},
|
||
idcharactersConversation = ${idcharactersConversation},
|
||
idzoelistenrepeat, ${idzoelistenrepeat},
|
||
idfiles = ${idfiles},
|
||
ordem = ${ordem}
|
||
WHERE idclassescontent = ${idclassescontent};`, res, req.originalUrl);
|
||
})
|
||
|
||
router.delete('/delete/:idclassescontent', verifyJWT, (req, res) => {
|
||
const idclassescontent = req.params.idclassescontent;
|
||
execSQLQuery(`DELETE FROM classescontent
|
||
WHERE idclassescontent in (${idclassescontent});`, res, req.originalUrl);
|
||
})
|
||
|
||
router.patch('/AtualizarOrdem', verifyJWT, (req, res) => {
|
||
const idclassescontent = parseInt(req.body.idclassescontent);
|
||
const ordem = parseInt(req.body.ordem);
|
||
execSQLQuery(`UPDATE classescontent SET
|
||
ordem = ${ordem}
|
||
WHERE idclassescontent = ${idclassescontent};`, res, req.originalUrl);
|
||
})
|
||
|
||
router.post('/excluirArquivos', verifyJWT, (req, res) => {
|
||
const shell = require('shelljs');
|
||
const Tipo = req.body.type;
|
||
const IDItem = req.body.idexercises;
|
||
switch (Tipo) {
|
||
case "Exercício": {
|
||
mysqlConnection.query(`SELECT ea.idexerciseanswers FROM exercisequestions eq INNER JOIN exerciseanswers ea ON eq.idexercisequestions = ea.idexercisequestions WHERE eq.idexercises = ${IDItem} AND ea.hasmedia = 1;`, function (error, results, fields) {
|
||
for (let i = 0; i < results.length; i++) {
|
||
try {
|
||
shell.exec("rm " + Variables('src_media') + "images/ans_" + results[i]['idexerciseanswers'] + ".jpg");
|
||
}
|
||
catch (e) {
|
||
console.log("Não apagou");
|
||
}
|
||
}
|
||
res.send(JSON.stringify({
|
||
"status": 200,
|
||
"error": null,
|
||
"response": []
|
||
}))
|
||
})
|
||
break;
|
||
}
|
||
case "Jogo": {
|
||
shell.exec("rm -rf " + Variables('src_media') + "games/" + IDItem + "/", function(Sucesso) {
|
||
res.send(JSON.stringify({
|
||
"status": 200,
|
||
"error": null,
|
||
"response": Sucesso
|
||
}))
|
||
})
|
||
break;
|
||
}
|
||
case "Mídia": {
|
||
mysqlConnection.query(`SELECT publishid FROM media WHERE idmedia = ${IDItem};`, function (error, results, fields) {
|
||
shell.exec("rm " + Variables('src_media') + "videos/" + results[0]['publishid'] + ".zip", function(Sucesso) {
|
||
res.send(JSON.stringify({
|
||
"status": 200,
|
||
"error": null,
|
||
"response": Sucesso
|
||
}))
|
||
})
|
||
})
|
||
break;
|
||
}
|
||
case "Slide": {
|
||
shell.exec("rm " + Variables('src_media') + "images/slide_" + IDItem + "_*", function(Sucesso) {
|
||
res.send(JSON.stringify({
|
||
"status": 200,
|
||
"error": null,
|
||
"response": Sucesso
|
||
}))
|
||
})
|
||
break;
|
||
}
|
||
case "Animação": {
|
||
shell.exec("rm " + Variables('src_media') + "animations/" + IDItem + ".zip", function(Sucesso) {
|
||
res.send(JSON.stringify({
|
||
"status": 200,
|
||
"error": null,
|
||
"response": Sucesso
|
||
}))
|
||
})
|
||
break;
|
||
}
|
||
case "Aula": {
|
||
shell.exec("rm " + Variables('src_media') + "images/back_" + IDItem + "_.jpg", function(Sucesso) {
|
||
shell.exec("rm " + Variables('src_media') + "images/gif_" + IDItem + "_.gif", function(Sucesso) {
|
||
res.send(JSON.stringify({
|
||
"status": 200,
|
||
"error": null,
|
||
"response": Sucesso
|
||
}))
|
||
})
|
||
})
|
||
break;
|
||
}
|
||
}
|
||
});
|
||
|
||
router.get('/getClassDownloads/:idclasses', verifyJWT, (req, res) => {
|
||
const idclasses = parseInt(req.params.idclasses);
|
||
execSQLQuery(`select
|
||
cc.idclassescontent,
|
||
cc.ordem,
|
||
f.*
|
||
from classescontent cc
|
||
inner join files f on f.idfiles = cc.idfiles
|
||
where cc.idclasses = ${idclasses};`, res, req.originalUrl);
|
||
});
|
||
|
||
return router;
|
||
};
|
||
|
||
module.exports = routes;
|