ZoeApi/controllers/textController.js

170 lines
6.3 KiB
JavaScript

require('../connections/mysql-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: '50mb',
extended: true
}));
router.use(bodyParser.json({
limit: '50mb',
extended: true
}));
var routes = function () {
router.get('/getAll', verifyJWT, (req, res) => {
execSQLQuery(`SELECT
*
FROM texts;`, res, req.originalUrl);
});
router.get('/getText/:idtexts', verifyJWT, (req, res) => {
const idtexts = parseInt(req.params.idtexts);
execSQLQuery(`SELECT DISTINCT
*
FROM texts
WHERE idtexts = ${idtexts};`, res, req.originalUrl);
});
router.post('/insert', verifyJWT, (req, res) => {
const text = req.body.text;
const enabled = req.body.enabled ? 1 : 0;
const description = req.body.description;
const game = req.body.game ? 1 : 0;
execSQLQuery(`INSERT INTO texts(text, enabled, description, game)
VALUES (?, ?, ?, ?);`, res, req.originalUrl, [text, enabled, description, game]);
});
router.patch('/update', verifyJWT, (req, res) => {
const idtexts = parseInt(req.body.idtexts);
const text = req.body.text;
const enabled = req.body.enabled ? 1 : 0;
const description = req.body.description;
const game = req.body.game ? 1 : 0;
execSQLQuery(`UPDATE texts SET
text = ?,
enabled = ?,
description = ?,
game = ?
WHERE idtexts = ?;`, res, req.originalUrl, [text, enabled, description, game, idtexts]);
});
router.post('/copy', verifyJWT, (req, res) => {
let form = new formidable.IncomingForm();
form.maxFileSize = 600 * 1024 * 1024;
form.parse(req, function(err,fields,files){
const fs = require('fs');
var name = fields.name;
var dir = Variables('src_media') + 'games/' + name;
var oldpath = files.file.path;
if (fs.existsSync(dir)) {
const rimraf = require('rimraf');
rimraf(dir, function(){
console.log("Apagado");
copiaJogo(dir, name, res, fs, oldpath);
});
}
else {
copiaJogo(dir, name, res, fs, oldpath);
}
});
});
router.get('/CarregarJogo/:idgames', (req, res) => {
const Protocolo = req.headers.referer.split('/')[0] + "//";
const fs = require('fs');
const idgames = parseInt(req.params.idgames);
const DirLocal = `${Variables('src_media')}games/${idgames}/`;
const DirWeb = `${Protocolo}${req.headers.host.split(':')[0]}/games/${idgames}/`;
if (fs.existsSync(DirLocal)) {
res.redirect(DirWeb + 'index.html')
}
else {
const shell = require('shelljs');
shell.exec('wget -c -P /var/www/html/ -N -m -np -nH -l3 "http://18.228.91.135/games/' + idgames + '/"', function (arquivosbaixados) {
shell.exec('wget -c -P /var/www/html/ -nH -r -k -np "http://18.228.91.135/games/' + idgames + '/Build/" -R index.html?*', function (Sucesso) {
shell.exec('chmod -R 777 /var/www/html/games/' + idgames + '/', function (Sucesso) {
console.log(DirWeb + 'index.html');
res.redirect(DirWeb + 'index.html');
})
})
})
}
})
router.get('/SolucaoProblemas/:idgames', verifyJWT, (req, res) => {
const idgames = req.params.idgames;
const shell = require('shelljs');
shell.exec('rm -rf ' + Variables('src_media') + 'games/' + idgames + '/', function(Sucesso) {
console.log("Jogo " + idgames + " excluido com sucesso!");
res.send(true);
});
});
router.post('/InsertGamesExercise', verifyJWT, (req, res) => {
const idgames = parseInt(req.body.idgames);
const idexercises = req.body.idexercises;
const idzoechattime = req.body.idzoechattime;
execSQLQuery(`INSERT INTO gamesexercises(idgames, idexercises, idzoechattime) VALUES
(?, ?, ?);`, res, req.originalUrl, [idgames, idexercises, idzoechattime]);
});
router.get('/getInteracoes/:idgames', verifyJWT, (req, res) => {
const idgames = parseInt(req.params.idgames);
execSQLQuery(`select
ge.*,
CASE
WHEN ge.idexercises IS NOT NULL THEN (SELECT e.description FROM exercises e WHERE e.idexercises = ge.idexercises)
WHEN ge.idzoechattime IS NOT NULL THEN (SELECT z.description FROM zoechattime z WHERE z.idzoechattime = ge.idzoechattime)
END AS 'description',
CASE
WHEN ge.idexercises IS NOT NULL THEN 'Exercício'
WHEN ge.idzoechattime IS NOT NULL THEN 'ChatTime'
END AS 'type'
from gamesexercises ge
where ge.idgames = ${idgames};`, res, req.originalUrl);
});
router.delete('/deleteInteracao/:idgamesexercises', verifyJWT, (req, res) => {
const idgamesexercises = parseInt(req.params.idgamesexercises);
execSQLQuery(`delete from gamesexercises
where idgamesexercises = ${idgamesexercises};`, res, req.originalUrl);
});
return router;
};
function copiaJogo(dir, name, res, fs, oldpath) {
fs.mkdirSync(dir);
fs.rename(oldpath, dir + ".zip", function (err) {
console.log('Copiado com sucesso!');
require('all-unpacker').unpackZip(dir + ".zip", {
targetDir: dir,
forceDirectory: 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("Extraído com sucesso!");
fs.unlink(dir + '.zip', function() {
console.log("Apagado com sucesso!");
res.send(true);
})
});
};
})
})
}
module.exports = routes;