307 lines
13 KiB
JavaScript
307 lines
13 KiB
JavaScript
require('../connections/mysql-server');
|
|
require('../helpers/CheckToken');
|
|
require('../helpers/config');
|
|
const formidable = require('formidable');
|
|
const express = require('express');
|
|
const router = express.Router();
|
|
const bodyParser = require('body-parser');
|
|
|
|
router.use(bodyParser.urlencoded({
|
|
parameterLimit: 100000,
|
|
limit: '350mb',
|
|
extended: true
|
|
}));
|
|
router.use(bodyParser.json({
|
|
parameterLimit: 100000,
|
|
limit: '350mb',
|
|
extended: true
|
|
}));
|
|
|
|
const routes = function () {
|
|
|
|
//#region ANIMATIONS
|
|
router.get('/getAllAnimations', verifyJWT, (req, res) => {
|
|
execSQLQuery(`SELECT
|
|
*
|
|
FROM animations;`, res, req.originalUrl);
|
|
});
|
|
|
|
router.get('/getAnimation/:idanimations', verifyJWT, (req, res) => {
|
|
const idanimations = req.params.idanimations;
|
|
execSQLQuery(`SELECT
|
|
*
|
|
FROM animations
|
|
WHERE idanimations = ${idanimations};`, res, req.originalUrl);
|
|
});
|
|
|
|
router.post('/insertAnimation', verifyJWT, (req, res) => {
|
|
const idanimations = req.body.idanimations;
|
|
const description = req.body.description;
|
|
execSQLQuery(`INSERT INTO animations(description)
|
|
VALUES (?);`, res, req.originalUrl, [description]);
|
|
});
|
|
|
|
router.patch('/updateAnimation', verifyJWT, (req, res) => {
|
|
const idanimations = req.body.idanimations;
|
|
const description = req.body.description;
|
|
execSQLQuery(`UPDATE animations SET
|
|
description = ?
|
|
WHERE idanimations = ?;`, res, req.originalUrl, [description, idanimations]);
|
|
});
|
|
|
|
router.delete('/removeAnimation/:idanimations', verifyJWT, (req, res) => {
|
|
const idanimations = req.params.idanimations;
|
|
execSQLQuery(`DELETE FROM animations
|
|
WHERE idanimations = ${idanimations};`, res, req.originalUrl);
|
|
});
|
|
|
|
router.post('/CopiarArquivo', 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 idanimations = fields.idanimations;
|
|
var dir = Variables('src_media') + 'animations/' + idanimations;
|
|
|
|
var oldpath = files.file.path;
|
|
fs.rename(oldpath, dir + '.mp4', function (err) {
|
|
if (err) throw err;
|
|
if(fs.existsSync(dir + '.zip')) {
|
|
fs.unlink(dir + '.zip', function(err) {
|
|
zipArquivo(idanimations, dir, res);
|
|
});
|
|
}
|
|
else {
|
|
zipArquivo(idanimations, dir, res);
|
|
}
|
|
});
|
|
|
|
});
|
|
});
|
|
|
|
router.get('/backAnimation/:idanimations', (req, res) => {
|
|
var idanimations = req.params.idanimations;
|
|
var dir = Variables('src_media') + 'animations/tmp/var/www/html/animations/' + idanimations + '.mp4';
|
|
const fs = require('fs');
|
|
|
|
if(fs.existsSync(dir)) {
|
|
const fs = require('fs');
|
|
fs.readFile(dir, (err, data) => {
|
|
if (err) throw err;
|
|
console.log("Requisição de animação: " + idanimations);
|
|
res.setHeader('Content-Type', 'video/mp4');
|
|
res.send(data);
|
|
});
|
|
}
|
|
else {
|
|
require('all-unpacker').unpack(Variables('src_media') + 'animations/' + idanimations + '.zip', {
|
|
targetDir: Variables('src_media') + 'animations/tmp/',
|
|
password: Variables('passdecrypt'),
|
|
forceOverwrite: true,
|
|
}, function(err, files, text) {
|
|
if (err) return console.error(err);
|
|
if (files) console.log('files', files);
|
|
if (text) {
|
|
console.log('text', text)
|
|
fs.readFile(dir, (err, data) => {
|
|
if (err) throw err;
|
|
console.log("Requisição de animação: " + idanimations);
|
|
res.setHeader('Content-Type', 'video/mp4');
|
|
res.send(data);
|
|
});
|
|
};
|
|
});
|
|
}
|
|
});
|
|
|
|
//#endregion
|
|
|
|
//#region ANIMATIONEXERCISES
|
|
router.get('/getAllAnimationExercises', verifyJWT, (req, res) => {
|
|
execSQLQuery(`SELECT
|
|
*
|
|
FROM animationexercises;`, res, req.originalUrl);
|
|
});
|
|
|
|
router.get('/getAnimationExercises/:idanimations', verifyJWT, (req, res) => {
|
|
const idanimations = req.params.idanimations;
|
|
execSQLQuery(`
|
|
SELECT
|
|
ae.*,
|
|
CASE
|
|
WHEN ae.idexercises IS NOT NULL THEN (SELECT e.description FROM exercises e WHERE e.idexercises = ae.idexercises)
|
|
WHEN ae.idconversationtree IS NOT NULL THEN (SELECT ct.description FROM alexaconversationtree ct WHERE ct.idconversationtree = ae.idconversationtree)
|
|
WHEN ae.idzoechattime IS NOT NULL THEN (SELECT z.description FROM zoechattime z WHERE z.idzoechattime = ae.idzoechattime)
|
|
END AS 'description',
|
|
CASE
|
|
WHEN ae.idexercises IS NOT NULL THEN 'Exercício'
|
|
WHEN ae.idconversationtree IS NOT NULL THEN 'Conversação'
|
|
WHEN ae.idzoechattime IS NOT NULL THEN 'ChatTime'
|
|
END AS 'type'
|
|
FROM
|
|
animationexercises ae
|
|
WHERE
|
|
ae.idanimations = ${idanimations}
|
|
ORDER BY ae.seconds;`, res, req.originalUrl);
|
|
});
|
|
|
|
router.delete('/removeAnimationExercise/:idanimationexercises', verifyJWT, (req, res) => {
|
|
const idanimationexercises = req.params.idanimationexercises;
|
|
execSQLQuery(`DELETE FROM animationexercises
|
|
WHERE idanimationexercises = ${idanimationexercises};`, res, req.originalUrl);
|
|
});
|
|
|
|
//#endregion
|
|
|
|
//#region EXERCISE
|
|
|
|
router.post('/insertAnimationExercise', verifyJWT, (req, res) => {
|
|
const idanimationexercises = req.body.idanimationexercises;
|
|
const idanimations = parseInt(req.body.idanimations);
|
|
const idexercises = parseInt(req.body.idexercises);
|
|
execSQLQuery(`INSERT INTO animationexercises (idexercises, idanimations, seconds)
|
|
VALUES (${idexercises}, ${idanimations}, 0);`, res, req.originalUrl);
|
|
})
|
|
|
|
router.patch('/updateAnimationExercise', verifyJWT, (req, res) => {
|
|
const idanimationexercises = parseInt(req.body.idanimationexercises);
|
|
const idanimations = req.body.idanimations;
|
|
const idexercises = req.body.idexercises;
|
|
const seconds = parseInt(req.body.seconds);
|
|
execSQLQuery(`UPDATE animationexercises SET
|
|
seconds = ${seconds}
|
|
WHERE idanimationexercises = ${idanimationexercises};`, res, req.originalUrl);
|
|
});
|
|
|
|
router.delete('/deleteExercise/:idexercises', verifyJWT, (req, res) => {
|
|
const idexercises = parseInt(req.params.idexercises);
|
|
var sqlQuery = `SELECT eq.idexercisequestions FROM exercisequestions eq WHERE eq.idexercises = ${idexercises};`;
|
|
mysqlConnection.query(sqlQuery, function (error, results, fields) {
|
|
if (!error && results.length != 0) {
|
|
let IDExerciseQuestion = results[0]['idexercisequestions'];
|
|
sqlQuery = `DELETE FROM exerciseanswers WHERE idexercisequestions = ${IDExerciseQuestion};`;
|
|
mysqlConnection.query(sqlQuery, function (error, results, fields) {
|
|
sqlQuery = `DELETE FROM exercisequestions WHERE idexercisequestions = ${IDExerciseQuestion};`;
|
|
mysqlConnection.query(sqlQuery, function (error, results, fields) {
|
|
sqlQuery = `DELETE FROM exercises WHERE idexercises = ${idexercises};`;
|
|
mysqlConnection.query(sqlQuery, function (error, results, fields) {
|
|
console.log("/api/animations/deleteExercise success 200");
|
|
res.send(true);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
else {
|
|
sqlQuery = `DELETE FROM exercises WHERE idexercises = ${idexercises};`;
|
|
mysqlConnection.query(sqlQuery, function (error, results, fields) {
|
|
console.log("/api/animations/deleteExercise success 200");
|
|
res.send(true);
|
|
});
|
|
}
|
|
});
|
|
})
|
|
|
|
//#endregion
|
|
|
|
//#region CONVERSATION
|
|
|
|
router.post('/insertAnimationConversation', verifyJWT, (req, res) => {
|
|
const idanimationexercises = req.body.idanimationexercises;
|
|
const idanimations = parseInt(req.body.idanimations);
|
|
const idconversationtree = parseInt(req.body.idconversationtree);
|
|
|
|
execSQLQuery(`INSERT INTO animationexercises (idconversationtree, idanimations, seconds)
|
|
VALUES (${idconversationtree}, ${idanimations}, 0);`, res, req.originalUrl);
|
|
});
|
|
|
|
router.patch('/updateAnimationConversation', verifyJWT, (req, res) => {
|
|
const idanimationexercises = parseInt(req.body.idanimationexercises);
|
|
const idanimations = req.body.idanimations;
|
|
const idconversationtree = req.body.idconversationtree;
|
|
const seconds = parseInt(req.body.seconds);
|
|
execSQLQuery(`UPDATE animationexercises SET
|
|
seconds = ${seconds}
|
|
WHERE idanimationexercises = ${idanimationexercises};`, res, req.originalUrl);
|
|
});
|
|
|
|
router.delete('/deleteConversation/:idconverstaiontree', verifyJWT, (req, res) => {
|
|
const idconverstaiontree = req.params.idconverstaiontree;
|
|
sqlQuery = `DELETE FROM alexaconversationtree
|
|
WHERE idconverstaiontree = ${idconverstaiontree};`;
|
|
mysqlConnection.query(sqlQuery, function (error, results, fields) {
|
|
console.log(new Date().toUTCString() + " - " + req.originalUrl + "success 200");
|
|
res.send(true);
|
|
});
|
|
|
|
});
|
|
|
|
//#endregion
|
|
|
|
//#region CHAT TIME
|
|
|
|
router.post('/insertAnimationChatTime', verifyJWT, (req, res) => {
|
|
const idanimationexercises = req.body.idanimationexercises;
|
|
const idanimations = parseInt(req.body.idanimations);
|
|
const idzoechattime = parseInt(req.body.idzoechattime);
|
|
|
|
execSQLQuery(`INSERT INTO animationexercises (idzoechattime, idanimations, seconds)
|
|
VALUES (${idzoechattime}, ${idanimations}, 0);`, res, req.originalUrl);
|
|
});
|
|
|
|
router.patch('/updateAnimationChatTime', verifyJWT, (req, res) => {
|
|
const idanimationexercises = parseInt(req.body.idanimationexercises);
|
|
const seconds = parseInt(req.body.seconds);
|
|
execSQLQuery(`UPDATE animationexercises SET
|
|
seconds = ${seconds}
|
|
WHERE idanimationexercises = ${idanimationexercises};`, res, req.originalUrl);
|
|
});
|
|
|
|
router.delete('/deleteChatTime/:idzoechattime', verifyJWT, (req, res) => {
|
|
const idzoechattime = parseInt(req.params.idzoechattime);
|
|
let sqlQuery0 = `DELETE FROM zoechattimesentences WHERE idzoechattimedialog in (select idzoechattimedialog from zoechattimedialog where idzoechattime = ${idzoechattime});`;
|
|
let sqlQuery1 = `DELETE FROM zoechattimedialog WHERE idzoechattime = ${idzoechattime};`;
|
|
let sqlQuery2 = `DELETE FROM zoechattime WHERE idzoechattime = ${idzoechattime};`;
|
|
mysqlConnection.query(sqlQuery0, function (error, results, fields) {
|
|
mysqlConnection.query(sqlQuery1, function (error, results, fields) {
|
|
mysqlConnection.query(sqlQuery2, function (error, results, fields) {
|
|
console.log(new Date().toUTCString() + " - " + req.originalUrl + "success 200");
|
|
res.send(true);
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
//#endregion
|
|
|
|
return router;
|
|
}
|
|
|
|
function zipArquivo(idanimations, dir, res) {
|
|
const fs = require('fs');
|
|
require('all-unpacker').pack(Variables('src_media') + 'animations/' + idanimations + '.zip', {
|
|
targetDir: Variables('src_media') + 'animations/' + idanimations + '.mp4',
|
|
password: Variables('passdecrypt'),
|
|
}, function(err, files, text) {
|
|
if (err) return console.error(err);
|
|
if (files) console.log('files', files);
|
|
if (text) {
|
|
const shell = require('shelljs');
|
|
shell.exec('chmod -R 777 /var/www/html/animations/', function(Sucesso) {
|
|
console.log('text', text);
|
|
//console.log("compactado");
|
|
if(fs.unlinkSync(dir + '.mp4')) {
|
|
console.log("Falha ao excluir");
|
|
res.send(true);
|
|
}
|
|
else {
|
|
console.log("Excluído com sucesso!");
|
|
res.send(true);
|
|
}
|
|
})
|
|
|
|
};
|
|
});
|
|
}
|
|
|
|
module.exports = routes; |