repositorio criado
This commit is contained in:
commit
44822b0dce
Binary file not shown.
|
|
@ -0,0 +1,2 @@
|
|||
# .env.example, commit to repo
|
||||
SECRET=
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# These are some examples of commonly ignored file patterns.
|
||||
# You should customize this list as applicable to your project.
|
||||
# Learn more about .gitignore:
|
||||
# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
|
||||
|
||||
# Node artifact files
|
||||
node_modules/
|
||||
dist/
|
||||
|
||||
# Compiled Java class files
|
||||
*.class
|
||||
|
||||
# Compiled Python bytecode
|
||||
*.py[cod]
|
||||
|
||||
# Log files
|
||||
*.log
|
||||
|
||||
# Package files
|
||||
*.jar
|
||||
|
||||
# Maven
|
||||
target/
|
||||
dist/
|
||||
|
||||
# JetBrains IDE
|
||||
.idea/
|
||||
|
||||
# Unit test reports
|
||||
TEST*.xml
|
||||
|
||||
# Generated by MacOS
|
||||
.DS_Store
|
||||
|
||||
# Generated by Windows
|
||||
Thumbs.db
|
||||
|
||||
# Applications
|
||||
*.app
|
||||
*.exe
|
||||
*.war
|
||||
|
||||
# Large media files
|
||||
*.mp4
|
||||
*.tiff
|
||||
*.avi
|
||||
*.flv
|
||||
*.mov
|
||||
*.wmv
|
||||
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
wget -O wgetOut "http://127.0.0.1:3337/api/units/listlogin";
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "API Offline"
|
||||
sudo /usr/bin/forever; forever stop zoe_api
|
||||
sudo /usr/bin/forever; forever start /var/www/zoe_api/forever.json
|
||||
exit 1;
|
||||
else
|
||||
echo "API Online"
|
||||
exit 0;
|
||||
fi
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
const mysql = require('mysql');
|
||||
require('../helpers/config');
|
||||
require('../helpers/CheckToken');
|
||||
require("dotenv-safe").load();
|
||||
var jwt = require('jsonwebtoken');
|
||||
|
||||
var MySQLConfig = {
|
||||
connectionLimit: 100, // Reduzido de 1000 para 100
|
||||
host: Variables('ip_mysql'),
|
||||
user: Variables('user_mysql'),
|
||||
database: Variables('database_mysql'),
|
||||
password: Variables('password_mysql'),
|
||||
charset: "utf8mb4"
|
||||
};
|
||||
|
||||
// Criação do pool de conexões MySQL
|
||||
let pool = mysql.createPool(MySQLConfig);
|
||||
console.log("MySQL Pool criado!");
|
||||
|
||||
// Atribui a conexão global à primeira conexão disponível do pool
|
||||
global.mysqlConnection = pool;
|
||||
|
||||
// Função para verificar se o pool está ativo
|
||||
function isPoolActive() {
|
||||
return pool && !pool._closed;
|
||||
}
|
||||
|
||||
// Função para recriar o pool se ele estiver fechado
|
||||
function recreatePoolIfClosed() {
|
||||
if (!isPoolActive()) {
|
||||
console.log('Recriando o pool de conexões MySQL...');
|
||||
pool = mysql.createPool(MySQLConfig);
|
||||
console.log("Novo MySQL Pool criado!");
|
||||
}
|
||||
}
|
||||
|
||||
// Função para executar uma query SQL com verificação do pool
|
||||
global.execSQLQuery = function execSQLQuery(sqlQry, res, req, Parametros = null, callback = null) {
|
||||
// Verifica e recria o pool se necessário
|
||||
recreatePoolIfClosed();
|
||||
|
||||
pool.query(sqlQry, Parametros, function (error, results, fields) {
|
||||
if (error) {
|
||||
console.error('Erro na consulta MySQL:', error);
|
||||
|
||||
if (error.toString().includes("PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR") || error.toString().includes("Connection lost")) {
|
||||
console.log('Tentando reconectar e executar a consulta novamente...');
|
||||
execSQLQuery(sqlQry, res, req, Parametros, callback); // Reexecuta a query
|
||||
return;
|
||||
}
|
||||
if (error.toString().includes("Too many connections")) {
|
||||
console.log('Muitas conexões abertas. Aguardando antes de tentar novamente...');
|
||||
setTimeout(() => {
|
||||
execSQLQuery(sqlQry, res, req, Parametros, callback);
|
||||
}, 1000); // Aumente o tempo de espera para reduzir a sobrecarga
|
||||
return;
|
||||
}
|
||||
|
||||
// Retorno de erro
|
||||
let Retorno = { "status": 500, "error": error, "response": [] };
|
||||
res.send(JSON.stringify(Retorno));
|
||||
console.log(new Date().toUTCString() + ` - ${req}/ error 500`);
|
||||
if (callback) callback(Retorno);
|
||||
return;
|
||||
}
|
||||
|
||||
// Retorno de sucesso
|
||||
let Retorno = { "status": 200, "error": null, "response": results };
|
||||
res.send(JSON.stringify(Retorno));
|
||||
console.log(new Date().toUTCString() + ` - ${req}/ success 200`);
|
||||
if (callback) callback(Retorno);
|
||||
});
|
||||
};
|
||||
|
||||
// Similarmente, aplique a verificação nas outras funções
|
||||
global.execMySQLQueryLogin = function execMySQLQueryLogin(sqlQry, res, req) {
|
||||
recreatePoolIfClosed();
|
||||
|
||||
pool.query(sqlQry, function (error, results, fields) {
|
||||
if (error || results.length == 0) {
|
||||
res.send(JSON.stringify({
|
||||
"status": 500,
|
||||
"error": error,
|
||||
"response": [],
|
||||
"token": null
|
||||
}));
|
||||
console.log(new Date().toUTCString() + " - " + req + "/ error 500");
|
||||
return;
|
||||
}
|
||||
|
||||
var token = jwt.sign({ id }, process.env.SECRET, {
|
||||
expiresIn: Variables('time_token')
|
||||
});
|
||||
res.send(JSON.stringify({
|
||||
"status": 200,
|
||||
"error": null,
|
||||
"response": results,
|
||||
"token": token
|
||||
}));
|
||||
console.log(new Date().toUTCString() + " - " + req + "/ success 200");
|
||||
});
|
||||
};
|
||||
|
||||
global.execSQLQueryVideo = function execSQLQueryVideo(sqlQry, res, req) {
|
||||
recreatePoolIfClosed();
|
||||
|
||||
pool.query(sqlQry, function (error, results, fields) {
|
||||
if (!error && results.length != 0) {
|
||||
let idvideoaccess = results[0]['idvideoaccess'];
|
||||
res.redirect(results[0]['url']);
|
||||
|
||||
// Atualização após redirecionamento
|
||||
setTimeout(() => {
|
||||
pool.query(`UPDATE videoaccess SET expired = 1 where idvideoaccess = ${idvideoaccess}`, function (error, results, fields) {
|
||||
if (error) {
|
||||
console.error('Erro ao atualizar videoaccess:', error);
|
||||
}
|
||||
});
|
||||
}, 1000);
|
||||
} else {
|
||||
res.send("not found");
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
const sql = require('mssql');
|
||||
require('../helpers/config');
|
||||
require('../helpers/CheckToken');
|
||||
|
||||
const ip = Variables('ip_sqlServer');
|
||||
const user = Variables('user_sqlServer');
|
||||
const pass = Variables('password_sqlServer');
|
||||
require("dotenv-safe").load();
|
||||
var jwt = require('jsonwebtoken');
|
||||
|
||||
const connStr = "Server=" + ip + ";User Id=" + user + ";Password=" + pass;
|
||||
|
||||
global.AtualizaConexaoSQLServer = function AtualizaConexaoSQLServer() {
|
||||
console.log("Renovando conexão SQLServer...");
|
||||
try {
|
||||
sql.close();
|
||||
}
|
||||
catch (e) {}
|
||||
sql.connect(connStr).then(sqlServerConnection => {
|
||||
global.sqlServerConnection = sqlServerConnection;
|
||||
console.log('SQLServer Conectado!');
|
||||
}).catch(err => {
|
||||
global.sqlServerConnection = null;
|
||||
console.log("Impossivel conectar ao SQL Server...");
|
||||
//console.log(err)
|
||||
});
|
||||
}
|
||||
|
||||
AtualizaConexaoSQLServer();
|
||||
|
||||
global.execSQLQuery2 = function execSQLQuery2(sqlQry, res, req, callback = null) {
|
||||
if (Variables("local") == "Local") {
|
||||
res.send(JSON.stringify({
|
||||
"status": 403,
|
||||
"error": "Modo de emergência, SQL Server desconectado",
|
||||
"response": []
|
||||
}));
|
||||
console.log(new Date().toUTCString() + " - " + req + "/ error 403");
|
||||
return;
|
||||
}
|
||||
sqlServerConnection.request().query(sqlQry, function (error, results, fields) {
|
||||
let Retorno = [];
|
||||
if (error || results.length == 0) {
|
||||
Retorno = { "status": 500, "error": error, "response": [] };
|
||||
}
|
||||
else {
|
||||
Retorno = { "status": 200, "error": error, "response": results.recordsets };
|
||||
}
|
||||
res.send(JSON.stringify(Retorno));
|
||||
console.log(new Date().toUTCString() + ` - ${req}/ ${(Retorno.status == 500) ? 'error' : 'success'} ${Retorno.status}`);
|
||||
if (callback)
|
||||
callback(Retorno);
|
||||
});
|
||||
};
|
||||
|
||||
global.execSQLQueryLogin = function execSQLQueryLogin(sqlQry, res, req) {
|
||||
sqlServerConnection.request().query(sqlQry, function (error, results, fields) {
|
||||
if (error || results.recordsets[0].length == 0) {
|
||||
res.send(JSON.stringify({
|
||||
"status": 500,
|
||||
"error": error,
|
||||
"response": [],
|
||||
"token": null
|
||||
}))
|
||||
console.log(new Date().toUTCString() + " - " + req + "/ error 500");
|
||||
}
|
||||
else {
|
||||
var token = jwt.sign({ id }, process.env.SECRET, {
|
||||
expiresIn: Variables('time_token')
|
||||
});
|
||||
res.send(JSON.stringify({
|
||||
"status": 200,
|
||||
"error": error,
|
||||
"response": results.recordsets,
|
||||
"token": token //encriptPassword(token, token.length)
|
||||
}));
|
||||
console.log(new Date().toUTCString() + " - " + req + "/ success 200");
|
||||
}
|
||||
})
|
||||
};
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
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('/states', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM states;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/citiesbyState/:idstates', verifyJWT, (req, res) => {
|
||||
const idstates = parseInt(req.params.idstates);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM cities
|
||||
WHERE idstates = ${idstates};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
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('/getAllEventos', (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM agenda;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertEventos', verifyJWT, (req, res) => {
|
||||
const title = req.body.title;
|
||||
const date = req.body.date;
|
||||
const hour = req.body.hour;
|
||||
const duration = req.body.duration;
|
||||
const description = req.body.description;
|
||||
const access = req.body.access;
|
||||
execSQLQuery(` INSERT INTO agenda (title, date, hour, duration, description, access) values
|
||||
(
|
||||
?,?,'2021-01-01T${hour}',?,?,?
|
||||
)` , res, req.originalUrl, [title, date, duration, description, access]);
|
||||
});
|
||||
|
||||
router.post('/editEventos', verifyJWT, (req, res) => {
|
||||
const id = req.body.id;
|
||||
const title = req.body.title;
|
||||
const date = req.body.date;
|
||||
const hour = req.body.hour;
|
||||
const duration = req.body.duration;
|
||||
const description = req.body.description;
|
||||
const access = req.body.access;
|
||||
execSQLQuery(` UPDATE agenda SET
|
||||
title='${title}',
|
||||
date='${date}',
|
||||
hour='2021-01-01T${hour}',
|
||||
duration='${duration}',
|
||||
description='${description}',
|
||||
access='${access}'
|
||||
WHERE (idagenda = '${id}')`
|
||||
, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/deleteEventos', verifyJWT, (req, res) => {
|
||||
const id = req.body.id;
|
||||
execSQLQuery(` DELETE FROM agenda
|
||||
WHERE (idagenda = '${id}')`
|
||||
, res, req.originalUrl);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,307 @@
|
|||
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;
|
||||
|
|
@ -0,0 +1,271 @@
|
|||
require('../connections/mysql-server');
|
||||
require('../helpers/CheckToken');
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const bodyParser = require('body-parser');
|
||||
const formidable = require('formidable');
|
||||
|
||||
router.use(bodyParser.urlencoded({
|
||||
limit: '100mb',
|
||||
extended: true
|
||||
}));
|
||||
router.use(bodyParser.json({
|
||||
limit: '100mb',
|
||||
extended: true
|
||||
}));
|
||||
|
||||
var routes = function () {
|
||||
|
||||
router.get('/getAnswers/:idexercisequestions', verifyJWT, (req, res) => {
|
||||
const idexercisequestions = parseInt(req.params.idexercisequestions);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exerciseanswers
|
||||
WHERE idexercisequestions = ${idexercisequestions};`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getAnswersByid/:idexerciseanswers', verifyJWT, (req, res) => {
|
||||
const idexerciseanswers = parseInt(req.params.idexerciseanswers);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exerciseanswers
|
||||
WHERE idexerciseanswers = ${idexerciseanswers};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getUserAnswersFixed/:idusers/:idunits', verifyJWT, (req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM usergivenanswers
|
||||
WHERE idusers = ${idusers} AND idunits = ${idunits} AND fixed = 1;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getUserAnswers/:idusers/:idunits', verifyJWT, (req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
execSQLQuery(`SELECT
|
||||
idusergivenanswers,
|
||||
idusers,
|
||||
idexerciseanswers,
|
||||
date_answered,
|
||||
case when fixed = 0 then 'Não' else 'Sim' end as fixed,
|
||||
idclasses,
|
||||
idunits
|
||||
FROM usergivenanswers
|
||||
WHERE idusers = ${idusers} AND idunits = ${idunits};`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getUserAnswersById/:idusergivenanswers', verifyJWT, (req, res) => {
|
||||
const idusergivenanswers = req.params.idusergivenanswers;
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM usergivenanswers
|
||||
WHERE idusergivenanswers = ${idusergivenanswers};`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getUserAnswersByAnsID/:idanswers/:idusers/:idunits', verifyJWT, (req, res) => {
|
||||
const idanswers = parseInt(req.params.idanswers);
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM usergivenanswers
|
||||
WHERE idexerciseanswers = ${idanswers} AND idusers = ${idusers} AND idunits = ${idunits};`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getUserAnswersByClass/:idclasses/:idusers/:idunits', verifyJWT, (req, res) => {
|
||||
const idclasses = parseInt(req.params.idclasses);
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM usergivenanswers
|
||||
WHERE idclasses = ${idclasses} AND idusers = ${idusers} AND idunits = ${idunits};`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getUserAnswersNotFixed/:idusers/:idunits', verifyJWT, (req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
execSQLQuery(`SELECT
|
||||
ua.idusergivenanswers,
|
||||
ua.idusers,
|
||||
ua.idexerciseanswers,
|
||||
ua.date_answered,
|
||||
'Não' as fixed,
|
||||
ua.idclasses,
|
||||
c.name as 'classname'
|
||||
FROM usergivenanswers ua
|
||||
INNER JOIN classes c ON ua.idclasses = c.idclasses
|
||||
WHERE ua.idusers = ${idusers} AND ua.idunits = ${idunits} AND fixed = 0;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getHomeworkNotFixed/:idusers', verifyJWT, (req, res) => {
|
||||
let idusers = req.params.idusers;
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
0 as idexerciseanswers,
|
||||
sc.idusers,
|
||||
c.name as 'classname',
|
||||
'Lição de casa' as 'date_answered',
|
||||
'Não' as 'fixed',
|
||||
sc.idclasses
|
||||
FROM
|
||||
stepclass sc
|
||||
INNER JOIN
|
||||
classes c
|
||||
ON
|
||||
c.idclasses = sc.idclasses
|
||||
WHERE
|
||||
sc.homework
|
||||
AND
|
||||
sc.completedClass = 1
|
||||
AND
|
||||
sc.note is null
|
||||
AND
|
||||
sc.idusers = ${idusers}
|
||||
AND
|
||||
false;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.post('/insertuseranswer', verifyJWT, (req, res) => {
|
||||
const usergivenanswerid = parseInt(req.body.usergivenanswerid);
|
||||
const idusers = parseInt(req.body.idusers);
|
||||
const idexerciseanswers = parseInt(req.body.idexerciseanswers);
|
||||
const date_answered = req.body.date_answered;
|
||||
const fixed = req.body.fixed ? 1 : 0;
|
||||
const idclasses = parseInt(req.body.idclasses);
|
||||
const idunits = parseInt(req.body.idunits);
|
||||
mysqlConnection.query('select * from usergivenanswers order by idusergivenanswers desc limit 1;', function (error, results, fields) {
|
||||
let IDuserGivenAnswers = 0;
|
||||
if (!results || results == "" || results.length == 0)
|
||||
IDuserGivenAnswers = 1;
|
||||
else
|
||||
IDuserGivenAnswers = results[0]['idusergivenanswers'] + 1;
|
||||
execSQLQuery(`INSERT INTO usergivenanswers(idusergivenanswers, idusers, idexerciseanswers, date_answered, fixed, idclasses, idunits)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?);`, res, req.originalUrl, [IDuserGivenAnswers, idusers, idexerciseanswers, date_answered, fixed, idclasses, idunits], function(Retorno) {
|
||||
if (Retorno.status == 500) {
|
||||
console.log(Retorno.error);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
router.patch('/fixAnswer', verifyJWT, (req, res) => {
|
||||
const idexerciseanswers = parseInt(req.body.idexerciseanswers);
|
||||
const iscorrect = req.body.iscorrect ? 1 : 0;
|
||||
execSQLQuery(`UPDATE exerciseanswers SET
|
||||
iscorrect = ${iscorrect}
|
||||
WHERE idexerciseanswers = ${idexerciseanswers}`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/fixUserAnswer/:idusergivenanswers', verifyJWT, (req, res) => {
|
||||
const idusergivenanswers = parseInt(req.params.idusergivenanswers);
|
||||
execSQLQuery(`UPDATE usergivenanswers SET
|
||||
fixed = 1
|
||||
WHERE idusergivenanswers = ${idusergivenanswers};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.delete('/delete/:idexerciseanswers', verifyJWT, (req, res) => {
|
||||
const idexerciseanswers = parseInt(req.params.idexerciseanswers);
|
||||
execSQLQuery(`DELETE FROM exerciseanswers
|
||||
WHERE idexerciseanswers = ${idexerciseanswers}`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insert', verifyJWT, (req, res) => {
|
||||
const idexercisequestions = parseInt(req.body.idexercisequestions);
|
||||
const hasmedia = req.body.hasmedia ? 1 : 0;
|
||||
const content = req.body.content;
|
||||
const iscorrect = req.body.iscorrect ? 1 : 0;
|
||||
const orientation = req.body.orientation ? 1 : 0;
|
||||
execSQLQuery(`INSERT INTO exerciseanswers(idexercisequestions, hasmedia, content, iscorrect, orientation)
|
||||
VALUES (?, ?, ?, ?, ?);`, res, req.originalUrl, [idexercisequestions, hasmedia, content, iscorrect, orientation]);
|
||||
});
|
||||
|
||||
router.patch('/update', verifyJWT, function (req, res) {
|
||||
const idexerciseanswers = parseInt(req.body.idexerciseanswers);
|
||||
const idexercisequestions = parseInt(req.body.idexercisequestions);
|
||||
const hasmedia = req.body.hasmedia ? 1 : 0;
|
||||
const content = req.body.content;
|
||||
const iscorrect = req.body.iscorrect;
|
||||
const orientation = req.body.orientation;
|
||||
execSQLQuery(`UPDATE exerciseanswers SET
|
||||
hasmedia = ?,
|
||||
content = ?,
|
||||
iscorrect = ?,
|
||||
orientation = ?,
|
||||
idexercisequestions = ?
|
||||
WHERE idexerciseanswers = ?;`, res, req.originalUrl, [hasmedia, content, iscorrect, orientation, idexercisequestions, idexerciseanswers]);
|
||||
});
|
||||
|
||||
router.post('/copy', verifyJWT, (req, res) => {
|
||||
var base64ToImage = require('base64-to-image');
|
||||
var img64 = req.body.src;
|
||||
var idexerciseanswers = req.body.idexerciseanswers;
|
||||
var Name = 'ans_' + idexerciseanswers;
|
||||
var Obj = {'fileName': Name, 'type':'jpg'};
|
||||
var path = Variables('src_media') + 'images/';
|
||||
if(base64ToImage(img64,path,Obj)) {
|
||||
res.send(true);
|
||||
}
|
||||
else {
|
||||
res.send(false);
|
||||
}
|
||||
//res.send("images uploaded with success!");
|
||||
});
|
||||
|
||||
router.post('/copy2', 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') + 'images/' + name;
|
||||
|
||||
var oldpath = files.file.path;
|
||||
if(fs.existsSync(dir)) {
|
||||
fs.unlink(dir, function(err) {
|
||||
fs.rename(oldpath, dir, function (err) {
|
||||
res.send(true);
|
||||
})
|
||||
});
|
||||
}
|
||||
else {
|
||||
fs.rename(oldpath, dir, function (err) {
|
||||
res.send(true);
|
||||
})
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
router.patch('/removerRespostas', verifyJWT, function (req, res, next) {
|
||||
let idexerciseanswers = req.body.idexerciseanswers;
|
||||
let ids = idexerciseanswers.split(',');
|
||||
index1 = 0;
|
||||
removeAnswers(ids, res);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
index1 = 0;
|
||||
|
||||
function removeAnswers(ids, res) {
|
||||
if (index1 < ids.length - 1) {
|
||||
let sqlQuery = `UPDATE exerciseanswers SET idexercisequestions = null WHERE idexerciseanswers = ${ids[index1]};`;
|
||||
console.log(sqlQuery);
|
||||
mysqlConnection.query(sqlQuery, function (error, results, fields) {
|
||||
console.log("QuestionID " + ids[index1] + " removed");
|
||||
index1++;
|
||||
removeAnswers(ids, res);
|
||||
});
|
||||
}
|
||||
else {
|
||||
res.send("answers removed");
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = routes;
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,384 @@
|
|||
require("../connections/mysql-server");
|
||||
require("../helpers/CheckToken");
|
||||
require("../helpers/config");
|
||||
|
||||
const express = require("express");
|
||||
const router = express.Router();
|
||||
const bodyParser = require("body-parser");
|
||||
const { genSerialList, generateCSV } = require("../helpers/serialBook");
|
||||
|
||||
router.use(
|
||||
bodyParser.urlencoded({
|
||||
limit: "10mb",
|
||||
extended: true,
|
||||
})
|
||||
);
|
||||
router.use(
|
||||
bodyParser.json({
|
||||
limit: "10mb",
|
||||
extended: true,
|
||||
})
|
||||
);
|
||||
|
||||
var routes = function () {
|
||||
router.get("/listLotes", verifyJWT, (req, res) => {
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
*
|
||||
FROM barlotes;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/listBarCodes", verifyJWT, (req, res) => {
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
*
|
||||
FROM barcodes;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/listBarcodesByAny/:field/:value", verifyJWT, (req, res) => {
|
||||
var field = req.params.field;
|
||||
var value = req.params.value;
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
bc.*,
|
||||
un.unityname as 'unity',
|
||||
co.name as 'course',
|
||||
un2.unityname as 'unity_env',
|
||||
co2.name as 'course_apo'
|
||||
FROM barcodes bc
|
||||
left join units un on un.idunits = bc.idunits
|
||||
left join courses co on co.idcourses = bc.idcourses
|
||||
left join units un2 on un2.idunits = bc.idunits_env
|
||||
left join courses co2 on co2.idcourses = bc.idcourses_apo
|
||||
WHERE bc.${field} = '${value}';`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.post("/insertLotes", verifyJWT, (req, res) => {
|
||||
const qtdepack = parseInt(req.body.qtdepack);
|
||||
const date = req.body.date;
|
||||
execSQLQuery(
|
||||
`INSERT INTO barlotes(qtdepack, date)
|
||||
VALUES (?, ?);`,
|
||||
res,
|
||||
req.originalUrl,
|
||||
[qtdepack, date]
|
||||
);
|
||||
});
|
||||
|
||||
router.post("/createSerial", verifyJWT, (req, res) => {
|
||||
let oldserialExists = req.body.oldserial;
|
||||
let quantity = parseInt(req.body.quantity);
|
||||
let disAllowFranchise = quantity < 2 && !oldserialExists;
|
||||
|
||||
function deleteList(list) {
|
||||
let deleteQuery = "DELETE FROM myrobot.serialbook WHERE serial = ?";
|
||||
Object.values(list).forEach((element) => {
|
||||
mysqlConnection.query(deleteQuery, element.serial, function (err) {
|
||||
if (err) {
|
||||
console.log(
|
||||
new Date(),
|
||||
"Erro ao deletar registros api/barcode/createSerial post",
|
||||
err
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if (quantity < 1 || disAllowFranchise) {
|
||||
console.log(
|
||||
new Date(),
|
||||
"Erro ao gerar registros api/barcode/createSerial post error 400"
|
||||
);
|
||||
res
|
||||
.status(400)
|
||||
.send(
|
||||
"Quantidade mínima de etiquetas por lote: 1 ou código antigo não foi enviado"
|
||||
);
|
||||
} else {
|
||||
let selectQuery = "SELECT serial FROM myrobot.serialbook;";
|
||||
mysqlConnection.query(selectQuery, function (error, results, fields) {
|
||||
if (error) {
|
||||
console.log(
|
||||
new Date(),
|
||||
"Erro ao obter registros api/barcode/createSerial post error 500"
|
||||
);
|
||||
res.status(500).send(error);
|
||||
}
|
||||
genSerialList(quantity, results)
|
||||
.then((serialList) => {
|
||||
let insertQuery =
|
||||
"INSERT INTO myrobot.serialbook (serial, createdAt, updatedAt, oldserial) VALUES ?";
|
||||
let valuesList = [];
|
||||
Object.values(serialList).forEach((element) => {
|
||||
quantity < 2 ? (element.oldserial = req.body.oldserial) : "";
|
||||
valuesList.push([
|
||||
element.serial,
|
||||
element.createdAt,
|
||||
element.updatedAt,
|
||||
element.oldserial,
|
||||
]);
|
||||
});
|
||||
mysqlConnection.query(insertQuery, [valuesList], function (err) {
|
||||
if (err) {
|
||||
console.log(
|
||||
new Date(),
|
||||
"Erro ao salvar registros api/barcode/createSerial post error 500",
|
||||
err
|
||||
);
|
||||
res.status(500).json({
|
||||
message: "Não foi possível salvar os registros",
|
||||
erro: err,
|
||||
});
|
||||
deleteList(serialList);
|
||||
} else {
|
||||
if (serialList.length < 2) {
|
||||
console.log(
|
||||
new Date(),
|
||||
" - api/barcode/createSerial post success 200"
|
||||
);
|
||||
res.status(200).json({
|
||||
serial: serialList[0].serial,
|
||||
});
|
||||
} else {
|
||||
generateCSV(serialList)
|
||||
.then((path) => {
|
||||
console.log(
|
||||
new Date(),
|
||||
" - api/barcode/createSerial post success 200"
|
||||
);
|
||||
res.download(path);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(
|
||||
new Date(),
|
||||
"Erro ao enviar registros api/barcode/createSerial post error 500",
|
||||
err
|
||||
);
|
||||
res.status(500).json({
|
||||
message: "Não foi possível enviar os registros",
|
||||
erro: err,
|
||||
});
|
||||
deleteList(serialList);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
.catch((error) => {
|
||||
console.log(
|
||||
new Date(),
|
||||
"Erro ao gerar registros api/barcode/createSerial post error 500",
|
||||
error
|
||||
);
|
||||
res.status(500).json({
|
||||
message: "Impossível gerar seriais",
|
||||
erro: error,
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
router.put("/createSerial", verifyJWT, (req, res) => {
|
||||
let dateUpdate = new Date();
|
||||
let values = [
|
||||
req.body.user,
|
||||
req.body.course,
|
||||
req.body.unity,
|
||||
true,
|
||||
dateUpdate,
|
||||
req.body.serial,
|
||||
];
|
||||
Object.values(values).forEach((element) => {
|
||||
let notEmpty = !!element;
|
||||
if (!notEmpty) {
|
||||
return res.status(400).json({ error: "Faltam campos na requisição" });
|
||||
}
|
||||
});
|
||||
let updateQuery =
|
||||
"UPDATE myrobot.serialbook SET iduser = ?, idcourse = ?, idunity = ?, used = ?, updatedAt = ? WHERE serial = ? AND used = false";
|
||||
mysqlConnection.query(
|
||||
updateQuery,
|
||||
values,
|
||||
function (error, results, fields) {
|
||||
if (error) {
|
||||
console.log(
|
||||
new Date(),
|
||||
"Erro ao alterar registro api/barcode/createSerial put error 500",
|
||||
error
|
||||
);
|
||||
res.status(500).json({
|
||||
message: "Não foi possível atualizar o serial",
|
||||
});
|
||||
} else {
|
||||
console.log(
|
||||
new Date(),
|
||||
" - api/barcode/createSerial put success 200"
|
||||
);
|
||||
res.status(200).json({
|
||||
results: results,
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/createSerial", verifyJWT, (req, res) => {
|
||||
let values = [req.query.user, req.query.course, req.query.unity];
|
||||
let validFields = true;
|
||||
for (let i = 0; i < values.length; i++) {
|
||||
let notEmpty = !!values[0];
|
||||
if (!notEmpty) {
|
||||
validFields = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (validFields) {
|
||||
let selectQuery =
|
||||
"SELECT * FROM myrobot.serialbook WHERE iduser = ? AND idcourse = ? AND idunity = ?"
|
||||
mysqlConnection.query(
|
||||
selectQuery,
|
||||
values,
|
||||
function (error, results, fields) {
|
||||
if (error) {
|
||||
console.log(
|
||||
new Date(),
|
||||
"Erro ao obter registros api/barcode/createSerial get error 500",
|
||||
error
|
||||
);
|
||||
res.status(500).json({
|
||||
message: "Não foi possível pesquisar pelo serial",
|
||||
});
|
||||
} else {
|
||||
console.log(new Date(), "api/barcode/createSerial get 200");
|
||||
res.status(200).json({
|
||||
results: results,
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
} else {
|
||||
console.log(
|
||||
new Date(),
|
||||
"Erro ao obter registro api/barcode/createSerial get error 400"
|
||||
);
|
||||
return res.status(400).json({ error: "Faltam campos na requisição" });
|
||||
}
|
||||
});
|
||||
|
||||
router.get("/listSerial", verifyJWT, (req, res) => {
|
||||
let selectQuery =
|
||||
"SELECT sb.idserialbook, sb.serial, sb.createdAt, sb.oldserial FROM myrobot.serialbook as sb limit 100;";
|
||||
mysqlConnection.query(selectQuery, function (error, results, fields) {
|
||||
if (error) {
|
||||
console.log(error);
|
||||
res.status(500).json({
|
||||
message: "Não foi possivel obter os seriais",
|
||||
});
|
||||
} else {
|
||||
res.status(200).json({
|
||||
results: results,
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
router.post("/insertBarcodes", verifyJWT, (req, res) => {
|
||||
const idbarlotes = parseInt(req.body.idbarlotes);
|
||||
const _key = req.body._key;
|
||||
const ordem = parseInt(req.body.ordem);
|
||||
execSQLQuery(
|
||||
`INSERT INTO barcodes(idbarlotes, _key, ordem) VALUES
|
||||
(?, ?, ?);`,
|
||||
res,
|
||||
req.originalUrl,
|
||||
[idbarlotes, _key, ordem]
|
||||
);
|
||||
});
|
||||
|
||||
router.patch("/updateBarcodes", verifyJWT, (req, res) => {
|
||||
const idbarcodes = parseInt(req.body.idbarcodes);
|
||||
const idusers = parseInt(req.body.idusers);
|
||||
const idunits = parseInt(req.body.idunits);
|
||||
const idcourses = parseInt(req.body.idcourses);
|
||||
execSQLQuery(
|
||||
`UPDATE barcodes SET
|
||||
idusers = ${idusers},
|
||||
idunits = ${idunits},
|
||||
idcourses = ${idcourses}
|
||||
WHERE idbarcodes = ${idbarcodes};`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.post("/generateTxt", verifyJWT, (req, res) => {
|
||||
var name = req.body.name;
|
||||
var content = req.body.content;
|
||||
var fs = require("fs");
|
||||
fs.writeFile(
|
||||
Variables("src_media") + "barcodes/" + name + ".txt",
|
||||
content,
|
||||
function (erro) {
|
||||
if (erro) {
|
||||
throw erro;
|
||||
} else {
|
||||
res.send(true);
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/downloadPack/:idbarlotes", verifyJWT, (req, res) => {
|
||||
var idbarlotes = req.params.idbarlotes;
|
||||
var path = Variables("src_media") + "barcodes";
|
||||
var fs = require("fs");
|
||||
if (!fs.existsSync(path + "/codigo_barras_" + idbarlotes + ".zip")) {
|
||||
require("all-unpacker").pack(
|
||||
path + "/barlote_" + idbarlotes + ".zip",
|
||||
{
|
||||
targetDir: path + "/codigo_barras_" + idbarlotes + ".txt",
|
||||
},
|
||||
function (err, files, text) {
|
||||
if (err) return console.error(err);
|
||||
if (files) console.log("files", files);
|
||||
if (text) {
|
||||
console.log("text", text);
|
||||
console.log("compactado");
|
||||
res.send(true);
|
||||
}
|
||||
}
|
||||
);
|
||||
} else {
|
||||
res.send(true);
|
||||
}
|
||||
});
|
||||
|
||||
router.post("/VincularCodigo", verifyJWT, (req, res) => {
|
||||
const idbarcodes = parseInt(req.body.idbarcodes);
|
||||
const idunits_env = parseInt(req.body.idunits_env);
|
||||
const idcourses_apo = parseInt(req.body.idcourses_apo);
|
||||
execSQLQuery(
|
||||
`UPDATE barcodes SET
|
||||
idunits_env = ${idunits_env},
|
||||
idcourses_apo = ${idcourses_apo}
|
||||
WHERE idbarcodes = ${idbarcodes};`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
require('../connections/mysql-server');
|
||||
|
||||
class BaseController {
|
||||
constructor() {
|
||||
this.express = require('express');
|
||||
this.app = this.express();
|
||||
this.router = this.express.Router();
|
||||
this.bodyParser = require('body-parser');
|
||||
|
||||
this.app.use(this.bodyParser.urlencoded({ extended: true }));
|
||||
this.app.use(this.bodyParser.json());
|
||||
|
||||
this.declareRoute();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = BaseController;
|
||||
|
|
@ -0,0 +1,171 @@
|
|||
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;
|
||||
|
|
@ -0,0 +1,580 @@
|
|||
require('../connections/mysql-server');
|
||||
require('../helpers/CheckToken');
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const bodyParser = require('body-parser');
|
||||
const { debug } = require('console');
|
||||
|
||||
const apikeyWatson = process.env.IBMTTS_APIKEY;
|
||||
const apiurlServiceWatson = process.env.IBMTTS_SERVICEURL;
|
||||
|
||||
router.use(bodyParser.urlencoded({ extended: true }));
|
||||
router.use(bodyParser.json());
|
||||
|
||||
var routes = function () {
|
||||
|
||||
//#region CHARACTERSCONVERSATION
|
||||
router.get('/getAllCharConv', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersConversation;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getCharacterconversation/:idcharactersConversation', verifyJWT, (req, res) => {
|
||||
const idcharactersConversation = parseInt(req.params.idcharactersConversation);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersConversation
|
||||
where idcharactersConversation = ${idcharactersConversation};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertCharConv', verifyJWT, (req, res) => {
|
||||
const idcharactersConversation = parseInt(req.body.idcharactersConversation);
|
||||
const description = req.body.description;
|
||||
const idcharacters_1 = parseInt(req.body.idcharacters_1);
|
||||
const idcharacters_2 = parseInt(req.body.idcharacters_2);
|
||||
const idcharactersBackground = parseInt(req.body.idcharactersBackground);
|
||||
const idcharactersFonts = parseInt(req.body.idcharactersFonts);
|
||||
execSQLQuery(`INSERT INTO charactersConversation (description, idcharacters_1, idcharacters_2, idcharactersBackground, idcharactersFonts)
|
||||
VALUES (?, ?, ?, ?, ?);`, res, req.originalUrl, [description, idcharacters_1, idcharacters_2, idcharactersBackground, idcharactersFonts]);
|
||||
});
|
||||
|
||||
router.patch('/updateCharConv', verifyJWT, (req, res) => {
|
||||
const idcharactersConversation = parseInt(req.body.idcharactersConversation);
|
||||
const description = req.body.description;
|
||||
const idcharacters_1 = parseInt(req.body.idcharacters_1);
|
||||
const idcharacters_2 = parseInt(req.body.idcharacters_2);
|
||||
const idcharactersBackground = parseInt(req.body.idcharactersBackground);
|
||||
const idcharactersFonts = parseInt(req.body.idcharactersFonts);
|
||||
execSQLQuery(`UPDATE charactersConversation SET
|
||||
description = ?,
|
||||
idcharacters_1 = ?,
|
||||
idcharacters_2 = ?,
|
||||
idcharactersBackground = ?,
|
||||
idcharactersFonts = ?
|
||||
WHERE idcharactersConversation = ?;`, res, req.originalUrl, [description, idcharacters_1, idcharacters_2, idcharactersBackground, idcharactersFonts, idcharactersConversation]);
|
||||
});
|
||||
|
||||
router.get('/getCharConvDetails/:idcharactersConversation', verifyJWT, (req, res) => {
|
||||
const idcharactersConversation = parseInt(req.params.idcharactersConversation);
|
||||
execSQLQuery(`select
|
||||
cc.idcharactersConversation,
|
||||
cc.description,
|
||||
cp.seconds,
|
||||
cp.speed,
|
||||
cc.idcharacters_1,
|
||||
(select ch1.description from characters ch1 where ch1.idcharacters = cc.idcharacters_1) as 'character_1',
|
||||
cc.idcharacters_2,
|
||||
(select ch2.description from characters ch2 where ch2.idcharacters = cc.idcharacters_2) as 'character_2',
|
||||
cc.idcharactersBackground,
|
||||
cb.description as 'background',
|
||||
cb.ext as 'backgroundExt',
|
||||
cc.idcharactersFonts,
|
||||
cf.description as 'font',
|
||||
cp.fontSize,
|
||||
cp.fontColor,
|
||||
cp.idcharactersPhrases,
|
||||
cp.charactertalking,
|
||||
cp.idcharactersBaloons,
|
||||
ba.description as 'baloon',
|
||||
ba.ext as 'baloonExt',
|
||||
cp.baloonColor,
|
||||
cp.phrase,
|
||||
cp.idcharactersFeelings_1,
|
||||
(select cf1.description from charactersFeelings cf1 where cf1.idcharactersFeelings = cp.idcharactersFeelings_1) as 'characterFeeling_1',
|
||||
cp.idcharactersFeelings_2,
|
||||
(select cf2.description from charactersFeelings cf2 where cf2.idcharactersFeelings = cp.idcharactersFeelings_2) as 'characterFeeling_2',
|
||||
cp.sintetizevoice,
|
||||
cp.idcharactersVoices,
|
||||
(select cv.description from charactersVoices cv where cv.idcharactersVoices = cp.idcharactersVoices) as 'voicename',
|
||||
(select cv.voice from charactersVoices cv where cv.idcharactersVoices = cp.idcharactersVoices) as 'voice',
|
||||
cp.idcharactersTransitions,
|
||||
ct.description as 'transition',
|
||||
ct.ext as 'transitionExt',
|
||||
cp.ordem
|
||||
from charactersConversation cc
|
||||
left join charactersBackground cb on cb.idcharactersBackground = cc.idcharactersBackground
|
||||
left join charactersFonts cf on cf.idcharactersFonts = cc.idcharactersFonts
|
||||
left join charactersPhrases cp on cp.idcharactersConversation = cc.idcharactersConversation
|
||||
left join charactersBaloons ba on ba.idcharactersBaloons = cp.idcharactersBaloons
|
||||
left join charactersTransitions ct on ct.idcharactersTransitions = cp.idcharactersTransitions
|
||||
where cc.idcharactersConversation = ${idcharactersConversation}
|
||||
order by cp.ordem asc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.delete('/deleteCharacterconversation/:idcharactersConversation', verifyJWT, (req, res) => {
|
||||
const idcharactersConversation = parseInt(req.params.idcharactersConversation);
|
||||
execSQLQuery(`delete from charactersConversation
|
||||
where idcharactersConversation = ${idcharactersConversation};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region CHARACTERS
|
||||
router.get('/getAllCharacters', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from characters;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getCharacter/:idcharacters', verifyJWT, (req, res) => {
|
||||
const idcharacters = parseInt(req.params.idcharacters);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from characters
|
||||
where idcharacters = ${idcharacters};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertCharacter', verifyJWT, (req, res) => {
|
||||
const idcharacters = parseInt(req.body.idcharacters);
|
||||
const description = req.body.description;
|
||||
execSQLQuery(`INSERT INTO characters (description)
|
||||
VALUES (?);`, res, req.originalUrl, [description]);
|
||||
});
|
||||
|
||||
router.patch('/updateCharacter', verifyJWT, (req, res) => {
|
||||
const idcharacters = parseInt(req.body.idcharacters);
|
||||
const description = req.body.description;
|
||||
execSQLQuery(`UPDATE characters SET
|
||||
description = ?
|
||||
WHERE idcharacters = ?;`, res, req.originalUrl, [description, idcharacters]);
|
||||
});
|
||||
|
||||
router.delete('/deleteCharacter/:idcharacters', verifyJWT, (req, res) => {
|
||||
const idcharacters = parseInt(req.params.idcharacters);
|
||||
execSQLQuery(`delete from characters
|
||||
where idcharacters = ${idcharacters};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region BACKGROUNDS
|
||||
router.get('/getAllBackgrounds', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersBackground;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getBackground/:idcharactersBackground', verifyJWT, (req, res) => {
|
||||
const idcharactersBackground = parseInt(req.params.idcharactersBackground);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersBackground
|
||||
where idcharactersBackground = ${idcharactersBackground};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertBackground', verifyJWT, (req, res) => {
|
||||
const idcharactersBackground = parseInt(req.body.idcharactersBackground);
|
||||
const description = req.body.description;
|
||||
const ext = req.body.ext;
|
||||
execSQLQuery(`INSERT INTO charactersBackground (description, ext)
|
||||
VALUES (?, ?);`, res, req.originalUrl, [description, ext]);
|
||||
});
|
||||
|
||||
router.patch('/updateBackground', verifyJWT, (req, res) => {
|
||||
const idcharactersBackground = parseInt(req.body.idcharactersBackground);
|
||||
const description = req.body.description;
|
||||
const ext = req.body.ext;
|
||||
execSQLQuery(`UPDATE charactersBackground SET
|
||||
description = ?,
|
||||
ext = ?
|
||||
WHERE idcharactersBackground = ?;`, res, req.originalUrl, [description, ext, idcharactersBackground]);
|
||||
});
|
||||
|
||||
router.delete('/deleteBackground/:idcharactersBackground', verifyJWT, (req, res) => {
|
||||
const idcharactersBackground = parseInt(req.params.idcharactersBackground);
|
||||
execSQLQuery(`delete from charactersBackground
|
||||
where idcharactersBackground = ${idcharactersBackground};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region FEELINGS
|
||||
router.get('/getAllFeelings', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersFeelings;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getFeeling/:idcharactersFeelings', verifyJWT, (req, res) => {
|
||||
const idcharactersFeelings = parseInt(req.params.idcharactersFeelings);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersFeelings
|
||||
where idcharactersFeelings = ${idcharactersFeelings};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertFeeling', verifyJWT, (req, res) => {
|
||||
const idcharactersFeelings = parseInt(req.body.idcharactersFeelings);
|
||||
const description = req.body.description;
|
||||
execSQLQuery(`INSERT INTO charactersFeelings (description)
|
||||
VALUES (?);`, res, req.originalUrl, [description]);
|
||||
});
|
||||
|
||||
router.patch('/updateFeeling', verifyJWT, (req, res) => {
|
||||
const idcharactersFeelings = parseInt(req.body.idcharactersFeelings);
|
||||
const description = req.body.description;
|
||||
execSQLQuery(`UPDATE charactersFeelings SET
|
||||
description = ?
|
||||
WHERE idcharactersFeelings = ?;`, res, req.originalUrl, [description, idcharactersFeelings]);
|
||||
});
|
||||
|
||||
router.delete('/deleteFeeling/:idcharactersFeelings', verifyJWT, (req, res) => {
|
||||
const idcharactersFeelings = parseInt(req.params.idcharactersFeelings);
|
||||
execSQLQuery(`delete from charactersFeelings
|
||||
where idcharactersFeelings = ${idcharactersFeelings};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region FONTS
|
||||
router.get('/getAllFonts', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersFonts;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getFont/:idcharactersFonts', verifyJWT, (req, res) => {
|
||||
const idcharactersFonts = parseInt(req.params.idcharactersFonts);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersFonts
|
||||
where idcharactersFonts = ${idcharactersFonts};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertFont', verifyJWT, (req, res) => {
|
||||
const idcharactersFonts = parseInt(req.body.idcharactersFonts);
|
||||
const description = req.body.description;
|
||||
execSQLQuery(`INSERT INTO charactersFonts (description)
|
||||
VALUES (?);`, res, req.originalUrl, [description]);
|
||||
});
|
||||
|
||||
router.patch('/updateFont', verifyJWT, (req, res) => {
|
||||
const idcharactersFonts = parseInt(req.body.idcharactersFonts);
|
||||
const description = req.body.description;
|
||||
execSQLQuery(`UPDATE charactersFonts SET
|
||||
description = ?
|
||||
WHERE idcharactersFonts = ?;`, res, req.originalUrl, [description, idcharactersFonts]);
|
||||
});
|
||||
|
||||
router.delete('/deleteFont/:idcharactersFonts', verifyJWT, (req, res) => {
|
||||
const idcharactersFonts = parseInt(req.params.idcharactersFonts);
|
||||
execSQLQuery(`delete from charactersFonts
|
||||
where idcharactersFonts = ${idcharactersFonts};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region VOICES
|
||||
router.get('/getAllVoices', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersVoices;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getVoice/:idcharactersVoices', verifyJWT, (req, res) => {
|
||||
const idcharactersVoices = parseInt(req.params.idcharactersVoices);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersVoices
|
||||
where idcharactersVoices = ${idcharactersVoices};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertVoice', verifyJWT, (req, res) => {
|
||||
const idcharactersVoices = parseInt(req.body.idcharactersVoices);
|
||||
const description = req.body.description;
|
||||
execSQLQuery(`INSERT INTO charactersVoices (description)
|
||||
VALUES (?);`, res, req.originalUrl, [description]);
|
||||
});
|
||||
|
||||
router.patch('/updateVoice', verifyJWT, (req, res) => {
|
||||
const idcharactersVoices = parseInt(req.body.idcharactersVoices);
|
||||
const description = req.body.description;
|
||||
execSQLQuery(`UPDATE charactersVoices SET
|
||||
description = ?
|
||||
WHERE idcharactersVoices = ?;`, res, req.originalUrl, [description, idcharactersVoices]);
|
||||
});
|
||||
|
||||
router.delete('/deleteVoice/:idcharactersVoices', verifyJWT, (req, res) => {
|
||||
const idcharactersVoices = parseInt(req.params.idcharactersVoices);
|
||||
execSQLQuery(`delete from charactersVoices
|
||||
where idcharactersVoices = ${idcharactersVoices};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region BALOONS
|
||||
router.get('/getAllBaloons', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersBaloons;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getBaloon/:idcharactersBaloons', verifyJWT, (req, res) => {
|
||||
const idcharactersBaloons = parseInt(req.params.idcharactersBaloons);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersBaloons
|
||||
where idcharactersBaloons = ${idcharactersBaloons};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertBaloon', verifyJWT, (req, res) => {
|
||||
const idcharactersBaloons = parseInt(req.body.idcharactersBaloons);
|
||||
const description = req.body.description;
|
||||
const ext = req.body.ext;
|
||||
execSQLQuery(`INSERT INTO charactersBaloons (description, ext)
|
||||
VALUES (?, ?);`, res, req.originalUrl, [description, ext]);
|
||||
});
|
||||
|
||||
router.patch('/updateBaloon', verifyJWT, (req, res) => {
|
||||
const idcharactersBaloons = parseInt(req.body.idcharactersBaloons);
|
||||
const description = req.body.description;
|
||||
const ext = req.body.ext;
|
||||
execSQLQuery(`UPDATE charactersBaloons SET
|
||||
description = ?,
|
||||
ext = ?
|
||||
WHERE idcharactersBaloons = ?;`, res, req.originalUrl, [description, ext, idcharactersBaloons]);
|
||||
});
|
||||
|
||||
router.delete('/deleteBaloon/:idcharactersBaloons', verifyJWT, (req, res) => {
|
||||
const idcharactersBaloons = parseInt(req.params.idcharactersBaloons);
|
||||
execSQLQuery(`delete from charactersBaloons
|
||||
where idcharactersBaloons = ${idcharactersBaloons};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region PHRASES
|
||||
router.get('/getAllPhrases', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersPhrases;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getPhrase/:idcharactersPhrases', verifyJWT, (req, res) => {
|
||||
const idcharactersPhrases = parseInt(req.params.idcharactersPhrases);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersPhrases
|
||||
where idcharactersPhrases = ${idcharactersPhrases};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getPhrasesInConversation/:idcharactersConversation', verifyJWT, (req, res) => {
|
||||
const idcharactersConversation = parseInt(req.params.idcharactersConversation);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersPhrases
|
||||
where idcharactersConversation = ${idcharactersConversation}
|
||||
order by ordem asc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertPhrase', verifyJWT, (req, res) => {
|
||||
const idcharactersPhrases = parseInt(req.body.idcharactersPhrases);
|
||||
const idcharactersConversation = parseInt(req.body.idcharactersConversation);
|
||||
const seconds = parseFloat(req.body.seconds);
|
||||
const speed = req.body.speed;
|
||||
const charactertalking = req.body.charactertalking;
|
||||
const idcharactersBaloons = req.body.idcharactersBaloons;
|
||||
const baloonColor = req.body.baloonColor;
|
||||
const phrase = req.body.phrase;
|
||||
const fontSize = req.body.fontSize;
|
||||
const fontColor = req.body.fontColor;
|
||||
const idcharactersFeelings_1 = req.body.idcharactersFeelings_1;
|
||||
const idcharactersFeelings_2 = req.body.idcharactersFeelings_2;
|
||||
const sintetizevoice = req.body.sintetizevoice ? 1 : 0;
|
||||
const idcharactersVoices = req.body.idcharactersVoices;
|
||||
const idcharactersTransitions = req.body.idcharactersTransitions;
|
||||
const ordem = parseInt(req.body.ordem);
|
||||
execSQLQuery(`INSERT INTO charactersPhrases (idcharactersConversation, seconds, speed, charactertalking, idcharactersBaloons, baloonColor, fontSize, fontColor, phrase, idcharactersFeelings_1, idcharactersFeelings_2, sintetizevoice, idcharactersVoices, idcharactersTransitions, ordem)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);`, res, req.originalUrl, [idcharactersConversation, seconds, speed, charactertalking, idcharactersBaloons, baloonColor, fontSize, fontColor, phrase, idcharactersFeelings_1, idcharactersFeelings_2, sintetizevoice, idcharactersVoices, idcharactersTransitions, ordem]);
|
||||
});
|
||||
|
||||
router.patch('/updatePhrase', verifyJWT, (req, res) => {
|
||||
const idcharactersPhrases = parseInt(req.body.idcharactersPhrases);
|
||||
const idcharactersConversation = parseInt(req.body.idcharactersConversation);
|
||||
const seconds = parseFloat(req.body.seconds);
|
||||
const speed = parseFloat(req.body.speed);
|
||||
const charactertalking = parseInt(req.body.charactertalking);
|
||||
const idcharactersBaloons = parseInt(req.body.idcharactersBaloons);
|
||||
const baloonColor = req.body.baloonColor;
|
||||
const phrase = req.body.phrase;
|
||||
const idcharactersFeelings_1 = parseInt(req.body.idcharactersFeelings_1);
|
||||
const idcharactersFeelings_2 = parseInt(req.body.idcharactersFeelings_2);
|
||||
const sintetizevoice = req.body.sintetizevoice ? 1 : 0;
|
||||
const idcharactersVoices = parseInt(req.body.idcharactersVoices);
|
||||
const idcharactersTransitions = parseInt(req.body.idcharactersTransitions);
|
||||
const ordem = parseInt(req.body.ordem);
|
||||
execSQLQuery(`UPDATE charactersPhrases SET
|
||||
idcharactersConversation = ?,
|
||||
seconds = ?,
|
||||
speed = ?,
|
||||
charactertalking = ?,
|
||||
idcharactersBaloons = ?,
|
||||
baloonColor = ?,
|
||||
phrase = ?,
|
||||
idcharactersFeelings_1 = ?,
|
||||
idcharactersFeelings_2 = ?,
|
||||
sintetizevoice = ?,
|
||||
idcharactersVoices = ?,
|
||||
idcharactersTransitions = ?,
|
||||
ordem = ?
|
||||
WHERE idcharactersPhrases = ?;`, res, req.originalUrl, [idcharactersConversation, seconds, speed, charactertalking, idcharactersBaloons, baloonColor, phrase, idcharactersFeelings_1, idcharactersFeelings_2, sintetizevoice, idcharactersVoices, idcharactersTransitions, ordem, idcharactersPhrases]);
|
||||
});
|
||||
|
||||
router.delete('/deletePhrase/:idcharactersPhrases', verifyJWT, (req, res) => {
|
||||
const idcharactersPhrases = parseInt(req.params.idcharactersPhrases);
|
||||
execSQLQuery(`delete from charactersPhrases
|
||||
where idcharactersPhrases = ${idcharactersPhrases};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.delete('/deletePhrasesInConversation/:idcharactersConversation', verifyJWT, (req, res) => {
|
||||
const idcharactersConversation = parseInt(req.params.idcharactersConversation);
|
||||
execSQLQuery(`delete from charactersPhrases
|
||||
where idcharactersConversation = ${idcharactersConversation};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region TRANSITIONS
|
||||
router.get('/getAllTransitions', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersTransitions;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getTransition/:idcharactersTransitions', verifyJWT, (req, res) => {
|
||||
const idcharactersTransitions = parseInt(req.params.idcharactersTransitions);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
from charactersTransitions
|
||||
where idcharactersTransitions = ${idcharactersTransitions};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertTransition', verifyJWT, (req, res) => {
|
||||
const idcharactersTransitions = parseInt(req.body.idcharactersTransitions);
|
||||
const description = req.body.description;
|
||||
const ext = req.body.ext;
|
||||
execSQLQuery(`INSERT INTO charactersTransitions (description, ext)
|
||||
VALUES (?, ?);`, res, req.originalUrl, [description, ext]);
|
||||
});
|
||||
|
||||
router.patch('/updateTransition', verifyJWT, (req, res) => {
|
||||
const idcharactersTransitions = parseInt(req.body.idcharactersTransitions);
|
||||
const description = req.body.description;
|
||||
const ext = req.body.ext;
|
||||
execSQLQuery(`UPDATE charactersTransitions SET
|
||||
description = ?,
|
||||
ext = ?
|
||||
WHERE idcharactersTransitions = ?;`, res, req.originalUrl, [description, ext, idcharactersTransitions]);
|
||||
});
|
||||
|
||||
router.delete('/deleteTransition/:idcharactersTransitions', verifyJWT, (req, res) => {
|
||||
const idcharactersTransitions = parseInt(req.params.idcharactersTransitions);
|
||||
execSQLQuery(`delete from charactersTransitions
|
||||
where idcharactersTransitions = ${idcharactersTransitions};`, res, req.originalUrl);
|
||||
});
|
||||
//#endregion
|
||||
|
||||
|
||||
router.post('/tts', verifyJWT, (req, res) => {
|
||||
const Texto = req.body.texto;
|
||||
const Velocidade = req.body.speed;
|
||||
const idzoevoices = req.body.idzoevoices;
|
||||
const PollyVoice = req.body.PollyVoice;
|
||||
const NomeArquivo = "sintetize.mp3";
|
||||
const shell = require('shelljs');
|
||||
mysqlConnection.query(`SELECT cf.TTSmode, (SELECT voice FROM zoevoices WHERE idzoevoices = 1) as voice FROM config cf;`, function (error, Config, fields) {
|
||||
const TTSMode = Config[0]['TTSmode'];
|
||||
let Voz = Config[0]['voice'];
|
||||
if (PollyVoice != "")
|
||||
Voz = PollyVoice;
|
||||
|
||||
if (TTSMode == 3) { // WIDEO
|
||||
const request = require('request');
|
||||
var options = {
|
||||
uri: 'https://texttospeechapi.wideo.co/api/wideo-text-to-speech',
|
||||
method: 'POST',
|
||||
json: { "data":{"text":Texto,"speed":Velocidade,"voice":Voz} }
|
||||
};
|
||||
request(options, function (error, response, body) {
|
||||
if (!error && response.statusCode == 200) {
|
||||
shell.exec(`wget "${response['body']['result']['url']}" -O ${Variables("src_media")}/audiosZoe/${NomeArquivo} -q;`, function(Sucesso) {
|
||||
EnviarAudio(NomeArquivo, true, error, res, req);
|
||||
});
|
||||
}
|
||||
else {
|
||||
console.log(error);
|
||||
EnviarAudio(NomeArquivo, false, error, res, req);
|
||||
}
|
||||
});
|
||||
}
|
||||
else if (TTSMode == 4) { // AMAZON POLLY
|
||||
shell.exec(`python ${Variables('src_media')}assets/polly_service.py "${Texto}" "${Variables('src_media')}/audiosZoe/${NomeArquivo}" "${Voz}"`, function(Sucesso) {
|
||||
EnviarAudio(NomeArquivo, true, null, res, req);
|
||||
});
|
||||
}
|
||||
else if (TTSMode == 6) { // WATSON IBM
|
||||
const fs = require('fs');
|
||||
const TextToSpeechV1 = require('ibm-watson/text-to-speech/v1');
|
||||
const { IamAuthenticator } = require('ibm-watson/auth');
|
||||
|
||||
const textToSpeech = new TextToSpeechV1({
|
||||
authenticator: new IamAuthenticator({ apikey: apikeyWatson }),
|
||||
serviceUrl: apiurlServiceWatson
|
||||
});
|
||||
|
||||
const params = {
|
||||
text: Texto,
|
||||
voice: Voz,
|
||||
accept: 'audio/wav'
|
||||
};
|
||||
console.log("A" + " " + NomeArquivo);
|
||||
textToSpeech.synthesize(params).then(response => {
|
||||
const audio = response.result;
|
||||
return textToSpeech.repairWavHeaderStream(audio);
|
||||
}).then(repairedFile => {
|
||||
fs.writeFileSync(`${Variables("src_media")}audiosZoe/${NomeArquivo}`, repairedFile);
|
||||
console.log('audio.wav written with a corrected wav header');
|
||||
//EnviarAudio(NomeArquivo.replace(".mp3", ".wav"), true, null, res, req);
|
||||
shell.exec(`ffmpeg -loglevel panic -i ${Variables("src_media")}audiosZoe/${NomeArquivo} ${Variables("src_media")}audiosZoe/${NomeArquivo} -o`, function(Sucesso) {
|
||||
EnviarAudio(NomeArquivo, true, null, res, req);
|
||||
});
|
||||
}).catch(err => {
|
||||
console.log(err);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function EnviarAudio(NomeArquivo, Sucesso, error, res, req) {
|
||||
if (Sucesso) {
|
||||
console.log(new Date().toUTCString() + " - " + req.originalUrl + " success 200");
|
||||
res.send(JSON.stringify({
|
||||
"status": 200,
|
||||
"error": error,
|
||||
"url_audio": "audiosZoe/" + NomeArquivo,
|
||||
}));
|
||||
}
|
||||
else {
|
||||
console.log(new Date().toUTCString() + " - " + req.originalUrl + " error 500");
|
||||
res.send(JSON.stringify({
|
||||
"status": 500,
|
||||
"error": error,
|
||||
"url_audio": null,
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
router.get('/SalvarAudioSintetizado/:nome', verifyJWT, (req, res) => {
|
||||
const NomeArquivo = req.params.nome;
|
||||
const shell = require('shelljs');
|
||||
shell.exec(`cp ${Variables("src_media")}/audiosZoe/sintetize.mp3 ${Variables("src_media")}/zoeGamesResources/audios/${NomeArquivo}.mp3`, function(Sucesso) {
|
||||
res.send(true);
|
||||
});
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,250 @@
|
|||
require('../connections/mysql-server');
|
||||
require('../helpers/CheckToken');
|
||||
require('../helpers/config');
|
||||
const mysql = require('mysql');
|
||||
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const bodyParser = require('body-parser');
|
||||
|
||||
router.use(bodyParser.urlencoded({
|
||||
limit: '10mb',
|
||||
extended: true
|
||||
}));
|
||||
router.use(bodyParser.json({
|
||||
limit: '10mb',
|
||||
extended: true
|
||||
}));
|
||||
|
||||
var MySQLConfig = {
|
||||
connectionLimit: 10,
|
||||
host: Variables('ip_mysql'),
|
||||
user: Variables('user_mysql'),
|
||||
database: Variables('database_mysql'),
|
||||
password: Variables('password_mysql'),
|
||||
charset: "utf8mb4"
|
||||
}
|
||||
|
||||
const connection = mysql.createPool(MySQLConfig);
|
||||
|
||||
var routes = function () {
|
||||
|
||||
router.get('/getChat/:idusers_from/:idusers_to/:db', verifyJWT, (req, res) => {
|
||||
let idusers_from = req.params.idusers_from;
|
||||
let idusers_to = req.params.idusers_to;
|
||||
let banco = req.params.db;
|
||||
ExecutarQuery(`SELECT idchat, idusers_from, idusers_to, visible,
|
||||
DATE_FORMAT(time_sent, '%d/%m/%Y %h:%i') AS 'time_sent',
|
||||
DATE_FORMAT(time_read, '%d/%m/%Y %h:%i') AS 'time_read',
|
||||
message, quotation FROM chat WHERE
|
||||
(((idusers_from = ${idusers_from} AND idusers_to = ${idusers_to}) OR
|
||||
(idusers_to = ${idusers_from} AND idusers_from = ${idusers_to})) AND banco = '${banco}');`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/sendMessage', verifyJWT, (req, res) => {
|
||||
const idusers_from = req.body.idusers_from;
|
||||
const idusers_to = req.body.idusers_to;
|
||||
const message = req.body.message;
|
||||
const banco = req.body.banco;
|
||||
const quotation = req.body.quotation;
|
||||
ExecutarQuery(`INSERT INTO chat(idusers_from, idusers_to, message, banco, quotation)
|
||||
VALUES (?, ?, ?, ?, ?);`, res, req.originalUrl, [idusers_from, idusers_to, message, banco, quotation]);
|
||||
});
|
||||
|
||||
router.get('/setReaded/:idchat', verifyJWT, (req, res) => {
|
||||
let idchat = req.params.idchat;
|
||||
ExecutarQuery(`UPDATE chat SET
|
||||
time_read = now()
|
||||
WHERE idchat = ${idchat};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/removeMessage/:idchat', verifyJWT, (req, res) => {
|
||||
let idchat = req.params.idchat;
|
||||
ExecutarQuery(`UPDATE chat SET
|
||||
visible = 0
|
||||
WHERE idchat = ${idchat};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllchats/:tipo/:idusers/:db', verifyJWT, (req, res) => {
|
||||
let tipo = req.params.tipo;
|
||||
let idusers = req.params.idusers;
|
||||
let db = req.params.db;
|
||||
let sqlQuery = ``;
|
||||
|
||||
if (tipo == 1) { // PROFESSOR
|
||||
sqlQuery = `select *,
|
||||
(
|
||||
select C.NomeVersao
|
||||
from ${db}Cursos C
|
||||
where C.Codigo = (
|
||||
select top(1) TT.IDCurso
|
||||
from ${db}TreinandosTurmas TT
|
||||
where TT.IDMatricula = R.idusers_para
|
||||
)
|
||||
) AS 'nomeCurso'
|
||||
from (
|
||||
SELECT DISTINCT TT.IDMatricula AS 'idusers_para',
|
||||
CLI.Nome AS 'nomePara',
|
||||
F.IDFuncionario AS 'idusers_de',
|
||||
F.Nome AS 'nomeDe'
|
||||
from ${db}TreinandosTurmas TT
|
||||
inner join ${db}TurmasAgendaCalendario TAC
|
||||
on TAC.IdTurma = TT.CodigoTurma
|
||||
inner join ${db}Funcionarios F
|
||||
on F.IDFuncionario = TAC.IdInstrutor
|
||||
inner join ${db}Clientes CLI
|
||||
on CLI.IDCliente = TT.IDTreinando
|
||||
/*WHERE TAC.IdInstrutor = ${idusers}*/
|
||||
) R`;
|
||||
}
|
||||
else if (tipo == 2) { // TODOS OS USUARIOS
|
||||
sqlQuery = `select F.IDFuncionario AS 'idusers_para', F.Nome AS 'nomePara', 0 as Tipo
|
||||
from ${db}Funcionarios F
|
||||
where F.Desativado = 0
|
||||
union all
|
||||
select distinct M.IDMatricula AS 'idusers_para', C.Nome AS 'nomePara', 1 as Tipo
|
||||
from ${db}Matriculas M
|
||||
inner join ${db}TreinandosTurmas TT
|
||||
on TT.IDMatricula = M.IDMatricula
|
||||
inner join ${db}Clientes C
|
||||
on C.IDCliente = TT.IDTreinando;`;
|
||||
}
|
||||
else if (tipo == 4) { // ALUNO
|
||||
sqlQuery = `/*SELECT TOP 1 TT.IDMatricula AS 'idusers_de',
|
||||
CLI.Nome AS 'nomeDe',
|
||||
F.IDFuncionario AS 'idusers_para',
|
||||
F.Nome AS 'nomePara',
|
||||
TT.IDCurso AS 'idcourses',
|
||||
C.NomeVersao AS 'nomeCurso'
|
||||
from ${db}TreinandosTurmas TT
|
||||
inner join ${db}Cursos C
|
||||
on C.Codigo = TT.IDCurso
|
||||
inner join ${db}TurmasAgendaCalendario TAC
|
||||
on TAC.IdTurma = TT.CodigoTurma
|
||||
inner join ${db}Funcionarios F
|
||||
on F.IDFuncionario = TAC.IdInstrutor
|
||||
inner join ${db}Clientes CLI
|
||||
on CLI.IDCliente = TT.IDTreinando
|
||||
WHERE TT.IDMatricula = ${idusers} ORDER BY TT.IDCurso DESC;*/
|
||||
select F.IDFuncionario AS 'idusers_para', F.Nome AS 'nomePara', 0 as Tipo
|
||||
from ${db}Funcionarios F
|
||||
where F.Desativado = 0;`;
|
||||
}
|
||||
execSQLQuery2(sqlQuery, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.post('/createGroup', verifyJWT, (req, res) => {
|
||||
const name = req.body.name;
|
||||
const created_by = req.body.created_by;
|
||||
const banco = req.body.banco;
|
||||
ExecutarQuery(`INSERT INTO chatgroups(name, created_by, banco)
|
||||
VALUES (?, ?, ?);`, res, req.originalUrl, [name, created_by, banco]);
|
||||
});
|
||||
|
||||
router.post('/insertMember', verifyJWT, (req, res) => {
|
||||
const idchatgroups = parseInt(req.body.idchatgroups);
|
||||
const idusers = parseInt(req.body.idusers);
|
||||
const enabled = req.body.enabled ? 1 : 0;
|
||||
const isadm = req.body.isadm ? 1 : 0;
|
||||
const inserted_by = parseInt(req.body.inserted_by);
|
||||
ExecutarQuery(`INSERT INTO chatusergroups(idchatgroups, idusers, enabled, isadm, inserted_by)
|
||||
VALUES (${idchatgroups}, ${idusers}, ${enabled}, ${isadm}, ${inserted_by});`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllGroups/:idusers/:db', verifyJWT, (req, res) => {
|
||||
let idusers = req.params.idusers;
|
||||
let banco = req.params.db;
|
||||
let sqlQuery = `SELECT ${idusers} AS idusers_de, '' AS nomeDe, cu.idchatgroups AS idusers_para,
|
||||
cg.name AS nomePara, 'Grupo' AS nomeCurso, 0 AS idcourses, cu.isadm
|
||||
FROM chatusergroups cu
|
||||
INNER JOIN chatgroups cg
|
||||
ON cg.idchatgroups = cu.idchatgroups
|
||||
WHERE cu.idusers = ${idusers} AND cg.banco = "${banco}";`;
|
||||
ExecutarQuery(sqlQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getChatGroup/:idchatgroups/:db', verifyJWT, (req, res) => {
|
||||
let idchatgroups = req.params.idchatgroups;
|
||||
let banco = req.params.db;
|
||||
ExecutarQuery(`SELECT idchat, idusers_from, idusers_to, visible,
|
||||
DATE_FORMAT(time_sent, '%d/%m/%Y %h:%i') AS 'time_sent',
|
||||
DATE_FORMAT(time_read, '%d/%m/%Y %h:%i') AS 'time_read',
|
||||
message, quotation FROM chat WHERE idusers_to = ${idchatgroups} AND banco = "${banco}";`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getGroupMembers/:idchatgroups', verifyJWT, (req, res) => {
|
||||
const idchatgroups = parseInt(req.params.idchatgroups);
|
||||
ExecutarQuery(`SELECT
|
||||
*
|
||||
FROM chatusergroups
|
||||
WHERE idchatgroups = ${idchatgroups};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/removeMember/:idchatusergroups', verifyJWT, (req, res) => {
|
||||
const idchatusergroups = parseInt(req.params.idchatusergroups);
|
||||
ExecutarQuery(`DELETE FROM chatusergroups
|
||||
WHERE idchatusergroups = ${idchatusergroups};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/updateGroupname/:idchatgroups/:name', verifyJWT, (req, res) => {
|
||||
const idchatgroups = parseInt(req.params.idchatgroups);
|
||||
const name = req.params.name;
|
||||
ExecutarQuery(`UPDATE chatgroups SET
|
||||
name = ?
|
||||
WHERE idchatgroups = ?;`, res, req.originalUrl, [name, idchatgroups]);
|
||||
});
|
||||
|
||||
router.get('/deleteGroup/:idchatgroups', verifyJWT, (req, res) => {
|
||||
let idchatgroups = req.params.idchatgroups;
|
||||
mysqlConnection.query(`DELETE FROM chatusergroups WHERE idchatgroups = ${idchatgroups};`, function (error, results, fields) {
|
||||
console.log(error);
|
||||
console.log(results);
|
||||
ExecutarQuery(`DELETE FROM chatgroups WHERE idchatgroups = ${idchatgroups};`, res, req.originalUrl);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/getAllchatsViewer/:db', verifyJWT, (req, res) => {
|
||||
let db = req.params.db;
|
||||
let sqlQuery = `SELECT DISTINCT
|
||||
R.idusers_from, R.idusers_to, R.banco,
|
||||
(SELECT c1.message FROM chat c1 WHERE c1.idusers_from = R.idusers_from AND c1.idusers_to = R.idusers_to ORDER BY c1.time_sent DESC LIMIT 1) AS 'message',
|
||||
(SELECT date_format(c1.time_sent, '%d/%m/%Y %h:%i') FROM chat c1 WHERE c1.idusers_from = R.idusers_from AND c1.idusers_to = R.idusers_to ORDER BY c1.time_sent ASC LIMIT 1) AS 'time_begin',
|
||||
(SELECT date_format(c1.time_sent, '%d/%m/%Y %h:%i') FROM chat c1 WHERE c1.idusers_from = R.idusers_from AND c1.idusers_to = R.idusers_to ORDER BY c1.time_sent DESC LIMIT 1) AS 'time_last',
|
||||
(SELECT COUNT(*) FROM chat c1 WHERE c1.idusers_from = R.idusers_from AND c1.idusers_to = R.idusers_to ORDER BY c1.time_sent DESC LIMIT 1) AS 'amout',
|
||||
case when R.idusers_to < 1250 then (select cg.name from chatgroups cg where cg.idchatgroups = R.idusers_to) else null end as 'group'
|
||||
FROM
|
||||
(select distinct * from (
|
||||
select c1.idusers_from, c1.idusers_to, c1.banco from chat c1
|
||||
union all
|
||||
select c1.idusers_from as 'idusers_to', c1.idusers_to as 'idusers_from', c1.banco from chat c1) R
|
||||
WHERE R.idusers_from >= 1250 and R.idusers_from < 190000 and R.banco = '${db}'
|
||||
order by R.idusers_to, R.idusers_from ASC) R
|
||||
ORDER BY time_last DESC;`;
|
||||
ExecutarQuery(sqlQuery, res, req.originalUrl);
|
||||
})
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
||||
function ExecutarQuery(sqlQuery, res, url, Parametros = null) {
|
||||
connection.query(sqlQuery, Parametros, (error, results) => {
|
||||
if (!error) {
|
||||
res.send(JSON.stringify({
|
||||
"status": 200,
|
||||
"error": error,
|
||||
"response": results
|
||||
}));
|
||||
console.log(url + " success 200");
|
||||
}
|
||||
else {
|
||||
res.send(JSON.stringify({
|
||||
"status": 500,
|
||||
"error": error,
|
||||
"response": results
|
||||
}));
|
||||
console.log(url + " error 500");
|
||||
}
|
||||
})
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,955 @@
|
|||
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;
|
||||
|
|
@ -0,0 +1,361 @@
|
|||
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;
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
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 concepts;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/List', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM concepts
|
||||
WHERE disabled = 0;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getConcept/:idconcepts', verifyJWT, (req, res) => {
|
||||
const idconcepts = parseInt(req.params.idconcepts);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM concepts
|
||||
WHERE idconcepts = ${idconcepts};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insert', verifyJWT, (req, res) => {
|
||||
const idconcepts = parseInt(req.body.idconcepts);
|
||||
const concept = req.body.concept;
|
||||
const weight = req.body.weight;
|
||||
const disabled = req.body.disabled ? 1 : 0;
|
||||
execSQLQuery(`INSERT INTO concepts(concept, weight, disabled)
|
||||
VALUES (?, ?, ?);`, res, req.originalUrl, [concept, weight, disabled]);
|
||||
});
|
||||
|
||||
router.patch('/update', verifyJWT, (req, res) => {
|
||||
const idconcepts = parseInt(req.body.idconcepts);
|
||||
const concept = req.body.concept;
|
||||
const weight = req.body.weight;
|
||||
const disabled = req.body.disabled ? 1 : 0;
|
||||
execSQLQuery(`UPDATE concepts SET
|
||||
concept = ?,
|
||||
weight = ?,
|
||||
disabled = ?
|
||||
WHERE idconcepts = ?;`, res, req.originalUrl, [concept, weight, disabled, idconcepts]);
|
||||
});
|
||||
|
||||
router.get('/disable/:idconcepts', verifyJWT, (req, res) => {
|
||||
const idconcepts = parseInt(req.params.idconcepts);
|
||||
execSQLQuery(`UPDATE concepts SET
|
||||
disabled = not disabled
|
||||
WHERE idconcepts = ${idconcepts};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
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('/getAllTTSmode', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM TTSmode
|
||||
order by description asc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllSTTmode', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM STTmode
|
||||
order by description asc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllChatBot', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM ChatBot
|
||||
order by description asc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getZoeConfig', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
TTSmode,
|
||||
STTmode,
|
||||
RMaudio,
|
||||
ChatBot,
|
||||
zoevoiceEn,
|
||||
zoevoicePt
|
||||
FROM config;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/saveZoeConfig', verifyJWT, (req, res) => {
|
||||
const ChatBot = parseInt(req.body.ChatBot);
|
||||
const RMaudio = req.body.RMaudio ? 1 : 0;
|
||||
const STTmode = parseInt(req.body.STTmode);
|
||||
const TTSmode = parseInt(req.body.TTSmode);
|
||||
const zoevoiceEn = req.body.zoevoiceEn;
|
||||
const zoevoicePt = req.body.zoevoicePt;
|
||||
execSQLQuery(`update config set
|
||||
TTSmode = ${TTSmode},
|
||||
STTmode = ${STTmode},
|
||||
RMaudio = ${RMaudio},
|
||||
ChatBot = ${ChatBot},
|
||||
zoevoiceEn = '${zoevoiceEn}',
|
||||
zoevoicePt = '${zoevoicePt}'
|
||||
where idconfig = 1;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,615 @@
|
|||
require("../connections/mysql-server");
|
||||
require("../connections/sql-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("/getRobotCourses", verifyJWT, (req, res) => {
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
0 as 'IDMatricula',
|
||||
idcourses as 'IDCurso',
|
||||
name as 'NomeVersao',
|
||||
aditional as 'Adicional',
|
||||
extracourse as 'CursoExtra'
|
||||
FROM courses
|
||||
WHERE idtypescourse = 5 and disabled = 0;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/getRobotCourseByStudent/:idusers/:banco", verifyJWT, (req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const db = req.params.banco;
|
||||
execSQLQuery(`
|
||||
SELECT distinct
|
||||
zus.user AS IDMatricula,
|
||||
zuc.idcourses AS IDCurso,
|
||||
co.name AS NomeVersao
|
||||
FROM zoeusercourses zuc
|
||||
INNER JOIN courses co ON co.idcourses = zuc.idcourses
|
||||
INNER JOIN zoeusers zus ON zus.id = zuc.idzoeusers
|
||||
INNER JOIN zoeunits zun ON zun.id = zuc.idzoeunits
|
||||
WHERE zuc.enabled = 1 AND (zuc.expiresAt IS NULL OR CURRENT_TIMESTAMP < zuc.expiresAt) AND zus.user = '${idusers}' and CONCAT(zun.id, '.dbo.') = '${db}';`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/getRobotCourseByStudentOld/:idusers/:banco", verifyJWT, (req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const db = req.params.banco;
|
||||
execSQLQuery2(`
|
||||
SELECT distinct
|
||||
mt.IDMatricula,
|
||||
tt.IDCurso,
|
||||
cu.NomeVersao
|
||||
FROM ${db}MatriculasTreinandos mt
|
||||
INNER JOIN ${db}TreinandosTurmas tt ON mt.IDMatricula = tt.IDMatricula
|
||||
INNER JOIN ${db}Cursos cu ON cu.Codigo = tt.IDCurso
|
||||
WHERE mt.IDMatricula = ${idusers} AND cu.Desativado = 0 AND tt.Desistente = 0 AND cu.IDTipoCurso = 5;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
router.get("/getAll", verifyJWT, (req, res) => {
|
||||
const domain = req.hostname.split(".").pop();
|
||||
|
||||
let language;
|
||||
|
||||
switch (domain) {
|
||||
case "br":
|
||||
language = 1;
|
||||
break;
|
||||
case "py":
|
||||
language = 2;
|
||||
break;
|
||||
case "us":
|
||||
language = 3;
|
||||
break;
|
||||
default:
|
||||
language = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
*
|
||||
FROM myrobot.courses where idlanguage = ${language} order by name asc`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/getAllCourseOn", verifyJWT, (req, res) => {
|
||||
const domain = req.hostname.split(".").pop();
|
||||
|
||||
let language;
|
||||
|
||||
switch (domain) {
|
||||
case "br":
|
||||
language = 1;
|
||||
break;
|
||||
case "py":
|
||||
language = 2;
|
||||
break;
|
||||
case "us":
|
||||
language = 3;
|
||||
break;
|
||||
default:
|
||||
language = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
*
|
||||
FROM myrobot.courses where idlanguage = ${language} and disabled = 0 order by name asc`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/getAllCourses", verifyJWT, (req, res) => {
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
*
|
||||
FROM courses
|
||||
WHERE idtypescourse != 5;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/getSQLServerCourses/:db", verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(
|
||||
`SELECT
|
||||
*
|
||||
FROM ${db}Cursos;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/getMySQLinSQLServerCourses", verifyJWT, (req, res) => {
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
idcourses AS 'Codigo',
|
||||
coursecode AS 'CodigoCurso',
|
||||
idtypescourse AS 'IDTipoCurso',
|
||||
name AS 'NomeVersao',
|
||||
description AS 'DescricaoContrato',
|
||||
durationtraineeprogram AS 'CH_ProgTrein',
|
||||
durationtraineevip AS 'CH_TurmaVIP',
|
||||
durationtraineeindividual AS 'CH_Individual',
|
||||
valueprogram AS 'VR_ProgTrein',
|
||||
valuevip AS 'VR_TurmaVIP',
|
||||
valueindividual AS 'VR_Individual',
|
||||
materialvalue AS 'ValorMaterial',
|
||||
materialcode AS 'CodigoMaterial',
|
||||
CASE WHEN extracourse = 1 THEN 'true' else 'false' END AS 'CursoExtra',
|
||||
CASE WHEN aditional = 1 THEN 'true' else 'false' END AS 'Adicional',
|
||||
CASE WHEN disabled = 1 THEN 'true' else 'false' END AS 'Desativado',
|
||||
CASE WHEN autospeak = 1 THEN 'true' else 'false' END AS 'FalaAutomatica'
|
||||
FROM courses;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
router.get("/typescourse", verifyJWT, (req, res) => {
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
*
|
||||
FROM typescourse;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/getMySQLinSQLServerTypescourse", verifyJWT, (req, res) => {
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
idtypescourse AS 'IDTipoCurso',
|
||||
description AS 'Descricao',
|
||||
case when disabled = 1 then true else false end as 'Desativado',
|
||||
gradecalc AS 'CalculosNotas'
|
||||
FROM typescourse;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/SQLServertypescourse/:db", verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(
|
||||
`SELECT
|
||||
*
|
||||
FROM ${db}TiposCurso;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/getExtraCourses", verifyJWT, (req, res) => {
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
0 as 'IDMatricula',
|
||||
idcourses as 'IDCurso',
|
||||
name as 'NomeVersao'
|
||||
FROM courses
|
||||
WHERE aditional = 1 and disabled = 0;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/getCourse/:idcourses", verifyJWT, (req, res) => {
|
||||
const idcourses = parseInt(req.params.idcourses);
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
*
|
||||
FROM courses
|
||||
WHERE idcourses = ${idcourses};`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/getCourseNote/:idcourses", verifyJWT, (req, res) => {
|
||||
const idcourses = parseInt(req.params.idcourses);
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
*
|
||||
FROM coursenotes
|
||||
WHERE idcourses = ${idcourses};`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/getAllSQLServerCourses/:idusers", verifyJWT, (req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
let sqlQuery = `SELECT idcourses AS 'IDCurso', ${idusers} AS 'IDMatricula', name AS 'NomeVersao' FROM courses where idtypescourse != 5 and disabled = 0 order by name asc;`;
|
||||
execSQLQuery(sqlQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get("/getCourseByStudent/:idusers/:banco", verifyJWT, (req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const db = req.params.banco;
|
||||
const EAD = req.headers.host && req.headers.host.includes("myrobothome");
|
||||
mysqlConnection.query(
|
||||
"select cursoferias from config;",
|
||||
function (error, results, fields) {
|
||||
let sqlQuery = `SELECT distinct
|
||||
mt.IDMatricula,
|
||||
cu.Codigo as 'IDCurso',
|
||||
cu.NomeVersao,
|
||||
cu.IDTipoCurso
|
||||
FROM ${db}MatriculasTreinandos mt
|
||||
INNER JOIN ${db}TreinandosTurmas tt ON mt.IDMatricula = tt.IDMatricula
|
||||
INNER JOIN ${db}Cursos cu ON cu.Codigo = tt.IDCurso
|
||||
WHERE mt.IDMatricula = ${idusers} AND cu.Desativado = 0 AND tt.Desistente = 0 AND cu.IDTipoCurso ${
|
||||
EAD ? "= 7" : "!= 5"
|
||||
}
|
||||
union all select
|
||||
0 as IDMatricula,
|
||||
cu2.Codigo as 'IDCurso',
|
||||
cu2.NomeVersao,
|
||||
cu2.IDTipoCurso
|
||||
from ${db}Cursos cu2
|
||||
where 1=0${
|
||||
results[0]["cursoferias"] == 1 ? " or cu2.CursoExtra = 1" : ""
|
||||
}${EAD ? " or cu2.Adicional = 1" : ""};`;
|
||||
//console.log(sqlQuery);
|
||||
execSQLQuery2(sqlQuery, res, req.originalUrl);
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
router.get(
|
||||
"/getHomeCourseByStudent/:idusers/:banco",
|
||||
verifyJWT,
|
||||
(req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const db = req.params.banco;
|
||||
const EAD = req.headers.host && req.headers.host.includes("myrobothome");
|
||||
mysqlConnection.query(
|
||||
"select cursoferias from config;",
|
||||
function (error, results, fields) {
|
||||
let sqlQuery = `SELECT distinct
|
||||
mt.IDMatricula,
|
||||
cu.Codigo as 'IDCurso',
|
||||
cu.NomeVersao,
|
||||
cu.IDTipoCurso
|
||||
FROM ${db}MatriculasTreinandos mt
|
||||
INNER JOIN ${db}TreinandosTurmas tt ON mt.IDMatricula = tt.IDMatricula
|
||||
INNER JOIN ${db}Cursos cu ON cu.Codigo = tt.IDCurso
|
||||
WHERE mt.IDMatricula = ${idusers} AND cu.Desativado = 0 AND tt.Desistente = 0 AND
|
||||
(cu.IDTipoCurso = 4 or cu.IDTipoCurso = 6 or cu.IDTipoCurso = 7)
|
||||
union all select
|
||||
0 as IDMatricula,
|
||||
cu2.Codigo as 'IDCurso',
|
||||
cu2.NomeVersao,
|
||||
cu2.IDTipoCurso
|
||||
from ${db}Cursos cu2
|
||||
where (cu2.IDTipoCurso = 4 or cu2.IDTipoCurso = 6 or cu2.IDTipoCurso = 7) and
|
||||
(1=0${
|
||||
results[0]["cursoferias"] == 1 ? " or cu2.CursoExtra = 1" : ""
|
||||
}${EAD ? " or cu2.Adicional = 1" : ""});`;
|
||||
console.log(sqlQuery);
|
||||
execSQLQuery2(sqlQuery, res, req.originalUrl);
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
router.get("/list", verifyJWT, (req, res) => {
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
idcourses,
|
||||
name,
|
||||
description,
|
||||
concat('R$ ',format(materialvalue,2,'de_DE')) as materialvalue,
|
||||
disabled,
|
||||
idtypescourse
|
||||
FROM courses
|
||||
WHERE disabled = 0
|
||||
order by name asc;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/disable/:idcourses", verifyJWT, (req, res) => {
|
||||
const idcourses = parseInt(req.params.idcourses);
|
||||
execSQLQuery(
|
||||
`UPDATE courses SET
|
||||
disabled = not disabled
|
||||
WHERE idcourses = ${idcourses};`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.post("/insertSQL", verifyJWT, (req, res) => {
|
||||
const coursecode = req.body.coursecode
|
||||
const idtypescourse = parseInt(req.body.idtypescourse)
|
||||
const name = req.body.name
|
||||
const description = req.body.description
|
||||
const durationtraineeprogram = req.body.durationtraineeprogram
|
||||
const durationtraineevip = req.body.durationtraineevip
|
||||
const durationtraineeindividual = req.body.durationtraineeindividual
|
||||
const valueprogram = parseFloat(req.body.valueprogram)
|
||||
const valuevip = parseFloat(req.body.valuevip)
|
||||
const valueindividual = parseFloat(req.body.valueindividual)
|
||||
const disabled = req.body.disabled
|
||||
const materialvalue = parseFloat(req.body.materialvalue)
|
||||
const materialcode = req.body.materialcode
|
||||
const aditional = req.body.aditional
|
||||
const extracourse = req.body.aditional
|
||||
const autospeak = req.body.autospeak
|
||||
console.log(req.body)
|
||||
})
|
||||
|
||||
router.post("/insert", verifyJWT, (req, res) => {
|
||||
const coursecode = req.body.coursecode;
|
||||
const idtypescourse = parseInt(req.body.idtypescourse);
|
||||
const name = req.body.name;
|
||||
const description = req.body.description;
|
||||
const durationtraineeprogram = req.body.durationtraineeprogram;
|
||||
const durationtraineevip = req.body.durationtraineevip;
|
||||
const durationtraineeindividual = req.body.durationtraineeindividual;
|
||||
const valueprogram = parseFloat(req.body.valueprogram);
|
||||
const valuevip = parseFloat(req.body.valuevip);
|
||||
const valueindividual = parseFloat(req.body.valueindividual);
|
||||
const materialvalue = parseFloat(req.body.materialvalue);
|
||||
const materialcode = req.body.materialcode;
|
||||
const extracourse = req.body.extracourse ? 1 : 0;
|
||||
const aditional = req.body.aditional ? 1 : 0;
|
||||
const disabled = req.body.disabled ? 1 : 0;
|
||||
const autospeak = req.body.autospeak ? 1 : 0;
|
||||
const idlanguage = req.body.idlanguage;
|
||||
try {
|
||||
execSQLQuery(
|
||||
`INSERT INTO courses (coursecode, idtypescourse, name, description, durationtraineeprogram, durationtraineevip, durationtraineeindividual, valueprogram, valuevip, valueindividual, materialvalue, materialcode, extracourse, aditional, disabled, autospeak, idlanguage)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? , ?, ?, ?, ?);`,
|
||||
res,
|
||||
req.originalUrl,
|
||||
[
|
||||
coursecode,
|
||||
idtypescourse,
|
||||
name,
|
||||
description,
|
||||
durationtraineeprogram,
|
||||
durationtraineevip,
|
||||
durationtraineeindividual,
|
||||
valueprogram,
|
||||
valuevip,
|
||||
valueindividual,
|
||||
materialvalue,
|
||||
materialcode,
|
||||
extracourse,
|
||||
aditional,
|
||||
disabled,
|
||||
autospeak,
|
||||
idlanguage,
|
||||
]
|
||||
);
|
||||
} catch (error) {
|
||||
console.log("oi");
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
|
||||
router.patch("/update", verifyJWT, (req, res) => {
|
||||
const idcourses = parseInt(req.body.idcourses);
|
||||
const coursecode = req.body.coursecode;
|
||||
const idtypescourse = parseInt(req.body.idtypescourse);
|
||||
const name = req.body.name;
|
||||
const description = req.body.description;
|
||||
const durationtraineeprogram = req.body.durationtraineeprogram;
|
||||
const durationtraineevip = req.body.durationtraineevip;
|
||||
const durationtraineeindividual = req.body.durationtraineeindividual;
|
||||
const valueprogram = parseFloat(req.body.valueprogram);
|
||||
const valuevip = parseFloat(req.body.valuevip);
|
||||
const valueindividual = parseFloat(req.body.valueindividual);
|
||||
const materialvalue = parseFloat(req.body.materialvalue);
|
||||
const materialcode = req.body.materialcode;
|
||||
const extracourse = req.body.extracourse ? 1 : 0;
|
||||
const aditional = req.body.aditional ? 1 : 0;
|
||||
const disabled = req.body.disabled ? 1 : 0;
|
||||
const autospeak = req.body.autospeak ? 1 : 0;
|
||||
execSQLQuery(
|
||||
`UPDATE courses SET
|
||||
coursecode = ?,
|
||||
idtypescourse = ?,
|
||||
name = ?,
|
||||
description = ?,
|
||||
durationtraineeprogram = ?,
|
||||
durationtraineevip = ?,
|
||||
durationtraineeindividual = ?,
|
||||
valueprogram = ?,
|
||||
valuevip = ?,
|
||||
valueindividual = ?,
|
||||
materialvalue = ?,
|
||||
materialcode = ?,
|
||||
extracourse = ?,
|
||||
aditional = ?,
|
||||
disabled = ?,
|
||||
autospeak = ?
|
||||
WHERE idcourses = ?;`,
|
||||
res,
|
||||
req.originalUrl,
|
||||
[
|
||||
coursecode,
|
||||
idtypescourse,
|
||||
name,
|
||||
description,
|
||||
durationtraineeprogram,
|
||||
durationtraineevip,
|
||||
durationtraineeindividual,
|
||||
valueprogram,
|
||||
valuevip,
|
||||
valueindividual,
|
||||
materialvalue,
|
||||
materialcode,
|
||||
extracourse,
|
||||
aditional,
|
||||
disabled,
|
||||
autospeak,
|
||||
idcourses,
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
router.get(
|
||||
"/getCourseAndClass/:idusers/:idCursos/:idunits",
|
||||
verifyJWT,
|
||||
(req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
const WhereClause = req.params.idCursos;
|
||||
const domain = req.hostname.split(".").pop();
|
||||
|
||||
let language;
|
||||
|
||||
switch (domain) {
|
||||
case "br":
|
||||
language = 1;
|
||||
break;
|
||||
case "py":
|
||||
language = 2;
|
||||
break;
|
||||
case "us":
|
||||
language = 3;
|
||||
break;
|
||||
default:
|
||||
language = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
let sqlQuery = `select distinct
|
||||
*,
|
||||
COALESCE(((R.actualItem / R.itensInClass) * 100) , 0) AS 'progressB'
|
||||
FROM (
|
||||
select
|
||||
co.*,
|
||||
cl.idclasses,
|
||||
cl.name AS 'nameC',
|
||||
cl.description AS 'descriptionC',
|
||||
cl.aval,
|
||||
cl.demo,
|
||||
COALESCE(sc.actualItem, 0) AS 'actualItem',
|
||||
sc.continueClass,
|
||||
sc.completedClass,
|
||||
sc.lockedClass,
|
||||
sc.liberado,
|
||||
ROUND(sc.note, 2) AS 'note',
|
||||
sc.notification,
|
||||
sc.homework,
|
||||
(select count(*) from userstages us where us.idunits = sc.idunits and us.idusers = sc.idusers and us.idclasses = sc.idclasses) as 'licao',
|
||||
0 AS 'showdet',
|
||||
0 AS 'btnVis',
|
||||
COALESCE(sc.actualItem, 0) AS 'actualItenInClass',
|
||||
(SELECT COUNT(*) AS 'qtdeItens'
|
||||
from classescontent cc
|
||||
LEFT join exercisequestions eq ON eq.idexercises = cc.idexercises
|
||||
LEFT join media m ON m.idmedia = cc.idmedia
|
||||
LEFT join texts t ON t.idtexts = cc.idtexts
|
||||
LEFT join slides s ON s.idslides = cc.idslides
|
||||
LEFT join texts g ON g.idtexts = cc.idgames AND t.game = 1
|
||||
where cc.idclasses = cl.idclasses)
|
||||
AS 'itensInClass',
|
||||
cl.download AS 'downloads',
|
||||
cl.ordem,
|
||||
(select count(*) from barcodes bc where bc.idunits = ${idunits} and bc.idusers = ${idusers} and bc.idcourses = co.idcourses) as 'Apostila'
|
||||
from courses co
|
||||
inner join classes cl on cl.idcourses = co.idcourses and cl.disabled = 0
|
||||
left join stepclass sc on sc.idclasses = cl.idclasses and sc.idusers = ${idusers} and sc.idunits = ${idunits}
|
||||
WHERE ${
|
||||
idusers == 190001 ? "cl.demo = 1" : "co.idcourses in " + WhereClause
|
||||
} AND co.disabled = 0 AND cl.homework = 0 and co.idtypescourse != 5
|
||||
AND co.idlanguage = ${language} OR co.idlanguage = 0
|
||||
ORDER BY co.name, cl.ordem ASC) R
|
||||
ORDER BY R.name ASC, ordem ASC;`;
|
||||
execSQLQuery(sqlQuery, res, req.originalUrl);
|
||||
}
|
||||
);
|
||||
|
||||
router.get(
|
||||
"/getHomeCourseAndClass/:idusers/:idCursos/:idunits",
|
||||
verifyJWT,
|
||||
(req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
const WhereClause = req.params.idCursos;
|
||||
let sqlQuery = `select distinct
|
||||
*,
|
||||
COALESCE(((R.actualItem / R.itensInClass) * 100) , 0) AS 'progressB'
|
||||
FROM (
|
||||
select
|
||||
co.*,
|
||||
cl.idclasses,
|
||||
cl.name AS 'nameC',
|
||||
cl.description AS 'descriptionC',
|
||||
cl.aval,
|
||||
cl.demo,
|
||||
COALESCE(sc.actualItem, 0) AS 'actualItem',
|
||||
sc.continueClass,
|
||||
sc.completedClass,
|
||||
sc.lockedClass,
|
||||
sc.liberado,
|
||||
ROUND(sc.note, 2) AS 'note',
|
||||
sc.notification,
|
||||
sc.homework,
|
||||
(select count(*) from userstages us where us.idunits = sc.idunits and us.idusers = sc.idusers and us.idclasses = sc.idclasses) as 'licao',
|
||||
0 AS 'showdet',
|
||||
0 AS 'btnVis',
|
||||
COALESCE(sc.actualItem, 0) AS 'actualItenInClass',
|
||||
(SELECT COUNT(*) AS 'qtdeItens'
|
||||
from classescontent cc
|
||||
LEFT join exercisequestions eq ON eq.idexercises = cc.idexercises
|
||||
LEFT join media m ON m.idmedia = cc.idmedia
|
||||
LEFT join texts t ON t.idtexts = cc.idtexts
|
||||
LEFT join slides s ON s.idslides = cc.idslides
|
||||
LEFT join texts g ON g.idtexts = cc.idgames AND t.game = 1
|
||||
where cc.idclasses = cl.idclasses)
|
||||
AS 'itensInClass',
|
||||
cl.download AS 'downloads',
|
||||
cl.ordem,
|
||||
(select count(*) from barcodes bc where bc.idunits = ${idunits} and bc.idusers = ${idusers} and bc.idcourses = co.idcourses) as 'Apostila'
|
||||
from courses co
|
||||
inner join classes cl on cl.idcourses = co.idcourses and cl.disabled = 0
|
||||
left join stepclass sc on sc.idclasses = cl.idclasses and sc.idusers = ${idusers} and sc.idunits = ${idunits}
|
||||
WHERE ${
|
||||
idusers == 190001 ? "cl.demo = 1" : "co.idcourses in " + WhereClause
|
||||
} AND co.disabled = 0 AND cl.homework = 0 and co.idtypescourse != 5
|
||||
and (co.idtypescourse = 4 or co.idtypescourse = 6 or co.idtypescourse = 7)
|
||||
ORDER BY co.name, cl.ordem ASC) R
|
||||
ORDER BY R.name ASC, ordem ASC;`;
|
||||
execSQLQuery(sqlQuery, res, req.originalUrl);
|
||||
console.log(sqlQuery);
|
||||
}
|
||||
);
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
require('../connections/sql-server');
|
||||
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('/courses/:idmatricula/:idtreinando', (req, res) => {
|
||||
const idmatricula = parseInt(req.params.idmatricula);
|
||||
const idtreinando = parseInt(req.params.idtreinando);
|
||||
|
||||
execSQLQuery(`
|
||||
select TT.IDCurso, TT.IDMatricula, TT.IDTreinando,
|
||||
C.NomeVersao
|
||||
from TreinandosTurmas TT
|
||||
inner join Cursos C
|
||||
on C.Codigo = TT.IDCurso
|
||||
inner join TurmasDetalhe TD
|
||||
on TD.IDTurma = TT.CodigoTurma
|
||||
and TD.CodigoCurso = TT.IDCurso
|
||||
where TT.IDMatricula = ${idmatricula}
|
||||
and TT.IDTreinando = ${idtreinando}
|
||||
order by TD.Ordem asc`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
require('../connections/mysql-server');
|
||||
require('../helpers/CheckToken');
|
||||
require('../helpers/config');
|
||||
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const bodyParser = require('body-parser');
|
||||
|
||||
router.use(bodyParser.urlencoded({
|
||||
limit: '10mb',
|
||||
extended: true
|
||||
}
|
||||
));
|
||||
router.use(bodyParser.json({
|
||||
limit: '10mb',
|
||||
extended: true
|
||||
}));
|
||||
|
||||
var routes = function () {
|
||||
|
||||
router.get('/getAll', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM curiosities;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getById/:idcuriosities', verifyJWT, (req, res) => {
|
||||
const idcuriosities = parseInt(req.params.idcuriosities);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM curiosities
|
||||
WHERE idcuriosities = ${idcuriosities};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insert', verifyJWT, (req, res) => {
|
||||
const idcuriosities = parseInt(req.body.idcuriosities);
|
||||
const src = req.body.src;
|
||||
const description = req.body.description;
|
||||
const itens = parseInt(req.body.itens);
|
||||
execSQLQuery(`INSERT INTO curiosities (src, description, itens)
|
||||
VALUES (?, ?, ?);`, res, req.originalUrl, [src, description, itens]);
|
||||
});
|
||||
|
||||
router.patch('/update', verifyJWT, (req, res) => {
|
||||
const idcuriosities = parseInt(req.body.idcuriosities);
|
||||
const src = req.body.src;
|
||||
const description = req.body.description;
|
||||
const itens = req.body.itens;
|
||||
execSQLQuery(`UPDATE curiosities SET
|
||||
src = ?,
|
||||
description = ?,
|
||||
itens = ?
|
||||
WHERE idcuriosities = ?;`, res, req.originalUrl, [src, description, itens, idcuriosities]);
|
||||
});
|
||||
|
||||
router.post('/copy', verifyJWT, (req, res) => {
|
||||
var base64ToImage = require('base64-to-image');
|
||||
var img64 = req.body.src;
|
||||
var Name = req.body.name;
|
||||
var Obj = {'fileName': Name, 'type':'jpg'};
|
||||
var path = Variables('src_media') + 'files/';
|
||||
if(base64ToImage(img64,path,Obj)) {
|
||||
res.send(true)
|
||||
}
|
||||
else {
|
||||
res.send(false);
|
||||
}
|
||||
//res.send("images uploaded with success!");
|
||||
});
|
||||
|
||||
router.post('/backimg', verifyJWT, (req, res) => {
|
||||
var base64Img = require('base64-img');
|
||||
var name = req.body.name;
|
||||
var src = Variables('src_media') + 'files/' + name + '.jpg';
|
||||
if(base64Img.base64Sync(src)) {
|
||||
var srcCuriosity = base64Img.base64Sync(src);
|
||||
} else {
|
||||
var srcCuriosity = "";
|
||||
}
|
||||
var imagens = {
|
||||
srcCuriosity: srcCuriosity
|
||||
}
|
||||
res.send(imagens);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
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('/getInfo/:idUser/:idUnit', verifyJWT, (req, res) => {
|
||||
console.log(req.body);
|
||||
const idUser = parseInt(req.params.idUser);
|
||||
const idUnit = parseInt(req.params.idUnit);
|
||||
execSQLQuery(`SELECT *
|
||||
FROM customizeZoeProfile
|
||||
WHERE idAluno = ${idUser} AND idUnit = ${idUnit};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertNew', verifyJWT, (req, res) => {
|
||||
const idUser = parseInt(req.body.idUser);
|
||||
const idUnit = parseInt(req.body.idUnit);
|
||||
execSQLQuery(`INSERT INTO
|
||||
customizeZoeProfile (idAluno, idUnit, boughtItens)
|
||||
VALUES (${idUser}, ${idUnit},
|
||||
"Eyes_Blue;Eyes_Green;Eyes_Red;Eyes_Yellow;Eyes_White;Cheek_Basic;");`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/updateCoins', verifyJWT, (req, res) => {
|
||||
const coinsToAdd = parseInt(req.body.coinsToAdd);
|
||||
const idUser = parseInt(req.body.idUser);
|
||||
const idUnit = parseInt(req.body.idUnit);
|
||||
execSQLQuery(`UPDATE customizeZoeProfile
|
||||
SET coins = coins + ${coinsToAdd}
|
||||
WHERE idAluno = ${idUser} AND idUnit = ${idUnit};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/updateItens', verifyJWT, (req, res) => {
|
||||
const itemToAdd = req.body.itemToAdd;
|
||||
const coinsToRemove = parseInt(req.body.coinsToRemove);
|
||||
const idUser = parseInt(req.body.idUser);
|
||||
const idUnit = parseInt(req.body.idUnit);
|
||||
execSQLQuery(`UPDATE customizeZoeProfile
|
||||
SET coins = coins - ${coinsToRemove}, boughtItens = '${itemToAdd}'
|
||||
WHERE idAluno = ${idUser} AND idUnit = ${idUnit};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/updateActualItens', verifyJWT, (req, res) => {
|
||||
const newActuals = req.body.newActuals;
|
||||
const idUser = parseInt(req.body.idUser);
|
||||
const idUnit = parseInt(req.body.idUnit);
|
||||
execSQLQuery(`UPDATE customizeZoeProfile
|
||||
SET actualItens = '${newActuals}'
|
||||
WHERE idAluno = ${idUser} AND idUnit = ${idUnit};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getItensCustomize', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT *
|
||||
FROM zoeCustomizeItens`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
require('../connections/mysql-server');
|
||||
|
||||
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('/getStudents/:codello/:startdate/:enddate/:tkapi', (req, res) => {
|
||||
|
||||
let codello = req.params.codello;
|
||||
let tkapi = req.params.tkapi;
|
||||
let startdate = req.params.startdate;
|
||||
let enddate = req.params.enddate;
|
||||
|
||||
let sqlQry = `select reference_db, studenthourvalue
|
||||
from units
|
||||
cross join config
|
||||
where codello = ${codello}
|
||||
and tk_api = '${tkapi}'`;
|
||||
|
||||
mysqlConnection.query(sqlQry, function (error, results, fields) {
|
||||
if (!error && results.length != 0) {
|
||||
|
||||
var studenthourvalue = results[0]['studenthourvalue'];
|
||||
var reference_db = results[0]['reference_db'];
|
||||
|
||||
let sqlQry = `select *,
|
||||
(ceiling(convert(decimal(10,2),HoraAula)/8) * ${studenthourvalue}) as Valor
|
||||
from (
|
||||
select TT.IDMatricula as Matricula,
|
||||
C.Nome as Nome,
|
||||
sum(datediff(HOUR,TC.HoraInicial,TC.HoraFinal)) as HoraAula
|
||||
from ${reference_db}.dbo.TreinandosTurmas TT
|
||||
inner join ${reference_db}.dbo.TurmasCalendario TC
|
||||
on TC.IdTurma = TT.CodigoTurma
|
||||
and TC.CodigoCurso = TT.IDCurso
|
||||
inner join ${reference_db}.dbo.Clientes C
|
||||
on C.IDCliente = TT.IDTreinando
|
||||
where TC.Ministrado = 1
|
||||
and TT.IDMatricula > 190008
|
||||
and TC.Data between '${startdate}' and '${enddate}'
|
||||
group by IDMatricula, Nome
|
||||
) Res
|
||||
order by Matricula asc`;
|
||||
|
||||
sqlServerConnection.request().query(sqlQry, function (error2, results2, fields) {
|
||||
if (!error2 && results2.length != 0) {
|
||||
//console.log(results2.recordset);
|
||||
res.status(200).send(results2.recordset);
|
||||
} else {
|
||||
res.status(500).send('Não foram encontrados resultados para a pesquisa');
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
res.status(500).send('Código do Cliente ou Token Inválido');
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
return router;
|
||||
}
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,345 @@
|
|||
require('../connections/mysql-server');
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const bodyParser = require('body-parser');
|
||||
|
||||
router.use(bodyParser.urlencoded({ extended: true }));
|
||||
router.use(bodyParser.json());
|
||||
|
||||
var nodemailer = require('nodemailer');
|
||||
|
||||
var transporter = nodemailer.createTransport({
|
||||
//service: 'gmail',
|
||||
host: "email-ssl.com.br",
|
||||
port: 465,
|
||||
secure: true,
|
||||
auth: {
|
||||
//user: 'trocasenhamyrobot@gmail.com',
|
||||
//pass: 'trocasenhamyrobot2021',
|
||||
//user: 'iyrconline@myrobot.com.br',
|
||||
//pass: 'iyrcMyrobot@2255',
|
||||
//user: 'myrobotschool@gmail.com',
|
||||
//pass: 'myrobot2020**==',
|
||||
user: 'staff@myrobot.com.br',
|
||||
pass: 'stAff66**'
|
||||
}
|
||||
});
|
||||
|
||||
var routes = function () {
|
||||
|
||||
router.post('/send', (req, res) => {
|
||||
EnviarEmail(req.body.to, req.body.subject, req.body.text, function(Sucesso) {
|
||||
res.send(Sucesso);
|
||||
});
|
||||
});
|
||||
|
||||
function EnviarEmail(Email, Assunto, Texto, callback) {
|
||||
var mailOptions = {
|
||||
from: 'MyRobot School <staff@myrobot.com.br>',
|
||||
to: Email,
|
||||
subject: Assunto,
|
||||
html: Texto,
|
||||
/*attachments: [{ // Basta incluir esta chave e listar os anexos
|
||||
filename: 'boleto.pdf', // O nome que aparecerá nos anexos
|
||||
path: 'servidor/boletos/boleto_gerado1234.pdf' // O arquivo será lido neste local ao ser enviado
|
||||
}]*/
|
||||
};
|
||||
transporter.sendMail(mailOptions, function (error, info) {
|
||||
if (error) {
|
||||
console.log(error);
|
||||
callback(false);
|
||||
} else {
|
||||
console.log('Email sent to: ' + mailOptions.to + ' - ' + info.response);
|
||||
callback(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
router.get('/getRequest/:encript', (req, res) => {
|
||||
encript = req.params.encript;
|
||||
execSQLQuery(`SELECT * FROM requestpass WHERE encript = '${encript}'`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getReqNotExpired/:idusers/:email/:db', (req, res) => {
|
||||
id = req.params.idusers;
|
||||
email = req.params.email;
|
||||
db = req.params.db;
|
||||
execSQLQuery(`
|
||||
SELECT *
|
||||
FROM requestpass
|
||||
WHERE registration = '${id}' AND email = '${email}' AND db = '${db}'`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.post('/insert', (req, res) => {
|
||||
const idrequestpass = req.body.idrequestpass;
|
||||
const registration = req.body.registration;
|
||||
const email = req.body.email;
|
||||
const encript = req.body.encript;
|
||||
const db = req.body.db;
|
||||
const expired = req.body.expired;
|
||||
execSQLQuery(`
|
||||
INSERT INTO
|
||||
requestpass(
|
||||
registration, email, encript, db, expired
|
||||
) VALUES (
|
||||
${registration}, '${email}', '${encript}', '${db}', ${expired}
|
||||
)`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.patch('/update', (req, res) => {
|
||||
const idrequestpass = req.body.idrequestpass;
|
||||
const registration = req.body.registration;
|
||||
const email = req.body.email;
|
||||
const encript = req.body.encript;
|
||||
const db = req.body.db;
|
||||
const expired = req.body.expired;
|
||||
execSQLQuery(`
|
||||
UPDATE
|
||||
requestpass SET
|
||||
registration = ${registration},
|
||||
email = '${email}',
|
||||
encript = '${encript}',
|
||||
db = '${db}',
|
||||
expired = ${expired}
|
||||
WHERE idrequestpass = ${idrequestpass}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.patch('/expired', (req, res) => {
|
||||
const idrequestpass = req.body.idrequestpass;
|
||||
const expired = req.body.expired;
|
||||
execSQLQuery(`
|
||||
UPDATE
|
||||
requestpass SET
|
||||
expired = ${expired}
|
||||
WHERE idrequestpass = ${idrequestpass}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.post('/insertLeadsSite', (req, res) => {
|
||||
const idleadseventos = parseInt(req.body.idleadseventos);
|
||||
const idunits = parseInt(req.body.idunits);
|
||||
const nome = req.body.nome;
|
||||
let telefone = req.body.telefone;
|
||||
let email = req.body.email;
|
||||
const horario = req.body.horario;
|
||||
const formacontato = req.body.forma;
|
||||
const contato = req.body.contato;
|
||||
|
||||
if(formacontato === "WhatsApp") {
|
||||
telefone = contato;
|
||||
req.body.telefone = telefone;
|
||||
} else if(formacontato === "Email") {
|
||||
email = contato;
|
||||
req.body.email = email;
|
||||
}
|
||||
|
||||
mysqlConnection.query(`insert into leadssite (idleadseventos, idunits, nome, telefone, email, horario) values (?, ?, ?, ?, ?, ?);`, [idleadseventos, idunits, nome, telefone, email, horario], function (error, response, fields) {
|
||||
mysqlConnection.query(`select
|
||||
un.unityname,
|
||||
un.manager,
|
||||
un.email,
|
||||
le.descricao,
|
||||
le.idleadseventos
|
||||
from units un
|
||||
inner join leadseventos le on le.idleadseventos = ${idleadseventos}
|
||||
where un.idunits = ${idunits};`, function (error, InfoUnidade, fields) {
|
||||
const Assunto = InfoUnidade[0]['descricao'];
|
||||
const Texto = MontaEmailCaptacaoLeadsSite(InfoUnidade[0], req.body);
|
||||
EnviarEmail(InfoUnidade[0]['email'], Assunto, Texto, function(Sucesso) {
|
||||
|
||||
const EmailInterno = "joao.pedro@makereducacao.com.br";
|
||||
EnviarEmail(EmailInterno, Assunto, Texto, function(Sucesso2) {
|
||||
res.send(Sucesso);
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function MontaEmailCaptacaoLeadsSite(DadosEvento, DadosLead) {
|
||||
let TextoEmail = "";
|
||||
|
||||
switch (DadosEvento.idleadseventos) {
|
||||
case 1:
|
||||
let Contato = DadosLead.contato;
|
||||
let BotaoContato = "";
|
||||
let OldContato = Contato;
|
||||
|
||||
if(DadosLead.forma === "WhatsApp") {
|
||||
Contato = Contato.replace("(" , "").replace(")","").replace(" ","").replace("-","");
|
||||
BotaoContato = `<div style="width:fit-content;background: #08d319;padding: 1rem 2rem;border-radius: 1.5rem;margin: 0 auto;margin-top: 1rem;cursor: pointer;"><a class="button" style="text-decoration: none;color: #fff;font-weight: bold;font-family: sans-serif;font-size: 18px" href="https://wa.me/55${Contato}" target="_blank">Entrar em contato</a></div>`;
|
||||
} else if (DadosLead.forma === "Email") {
|
||||
BotaoContato = `<div style="width:fit-content;background: #0c60fd;padding: 1rem 2rem;border-radius: 1.5rem;margin: 0 auto;margin-top: 1rem;cursor: pointer;"><a class="button" style="text-decoration: none;color: #fff;font-weight: bold;font-family: sans-serif;font-size: 18px" href="mailto:${Contato}" target="_blank">Entrar em contato</a></div>`
|
||||
}
|
||||
|
||||
TextoEmail = `
|
||||
<div style="background-color:#f7f7f7">
|
||||
<div style="margin:0px auto;max-width:600px">
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="direction:ltr;font-size:0px;padding:10px;padding-left:40px;padding-right:40px;text-align:center"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div style="border:1px solid #d9d9d9;background:white;background-color:white;margin:0px auto;max-width:600px">
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:white;background-color:white;width:100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="direction:ltr;font-size:0px;padding:0px 0;padding-bottom:30px;text-align:center">
|
||||
<div style="margin:0px auto;max-width:600px">
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="direction:ltr;font-size:0px;padding:0;padding-left:0;padding-right:0;text-align:center">
|
||||
<div class="m_-4945555513056369728mj-column-per-100" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" style="font-size:0px;padding:0 0;word-break:break-word">
|
||||
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="width:600px">
|
||||
<img height="auto" src="https://myrobotlab.com.br/assets/images/MailInauguracao/mail-banner.png" style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px" width="600" class="CToWUd a6T" tabindex="0">
|
||||
<div class="a6S" dir="ltr" style="opacity: 0.01; left: 677.5px; top: 180px;">
|
||||
<div id=":173" class="T-I J-J5-Ji aQv T-I-ax7 L3 a5q" role="button" tabindex="0" aria-label="Fazer o download do anexo " data-tooltip-class="a1V" data-tooltip="Fazer o download">
|
||||
<div class="aSK J-J5-Ji aYr"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="font-family:sans-serif;font-size:22px;line-height:150%;text-align:center;color:#FF7600;font-weight: bolder;margin-top: 20px;">Nova visita agendada!</div>
|
||||
<hr style="width: 75%;margin: auto;background-color: #303030;margin-top: 20px;">
|
||||
<div style="font-family:sans-serif;font-size:18px;line-height:150%;text-align:center;color:#000;margin-top: 15px;"><strong style="color: #303030" >Nome:</strong> ${DadosLead.nome}</div>
|
||||
<div style="font-family:sans-serif;font-size:18px;line-height:150%;text-align:center;color:#000;margin-top: 5px;"><strong style="color: #303030">Horario:</strong> ${DadosLead.horario}</div>
|
||||
<div style="font-family:sans-serif;font-size:18px;line-height:150%;text-align:center;color:#000;margin-top: 5px;"><strong style="color: #303030" >Forma de contato:</strong> ${DadosLead.forma}</div>
|
||||
<div style="font-family:sans-serif;font-size:18px;line-height:150%;text-align:center;color:#000;margin-top: 5px;"><strong style="color: #303030" >Contato:</strong> ${OldContato}</div>
|
||||
${BotaoContato}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div style="margin:0px auto;max-width:600px">
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="direction:ltr;font-size:0px;padding:10px;padding-left:40px;padding-right:40px;text-align:center"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
TextoEmail = ` <div style="background-color:#f7f7f7">
|
||||
<div style="margin:0px auto;max-width:600px">
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="direction:ltr;font-size:0px;padding:10px;padding-left:40px;padding-right:40px;text-align:center"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div style="border:1px solid #d9d9d9;background:white;background-color:white;margin:0px auto;max-width:600px">
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:white;background-color:white;width:100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="direction:ltr;font-size:0px;padding:0px 0;padding-bottom:30px;text-align:center">
|
||||
<div style="margin:0px auto;max-width:600px">
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="direction:ltr;font-size:0px;padding:0;padding-left:0;padding-right:0;text-align:center">
|
||||
<div class="m_-4945555513056369728mj-column-per-100" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" style="font-size:0px;padding:0 0;word-break:break-word">
|
||||
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="width:600px">
|
||||
<img height="auto" src="https://myrobotlab.com.br/assets/images/RoboxOnMail/mail-banner.png" style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px" width="600" class="CToWUd a6T" tabindex="0">
|
||||
<div class="a6S" dir="ltr" style="opacity: 0.01; left: 677.5px; top: 180px;">
|
||||
<div id=":173" class="T-I J-J5-Ji aQv T-I-ax7 L3 a5q" role="button" tabindex="0" aria-label="Fazer o download do anexo " data-tooltip-class="a1V" data-tooltip="Fazer o download">
|
||||
<div class="aSK J-J5-Ji aYr"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="font-family:sans-serif;font-size:22px;line-height:150%;text-align:center;color:#FF7600;font-weight: bolder;margin-top: 20px;">Novo lead captado!</div>
|
||||
<hr style="width: 75%;margin: auto;background-color: #303030;margin-top: 20px;">
|
||||
<div style="font-family:sans-serif;font-size:18px;line-height:150%;text-align:center;color:#000;margin-top: 15px;"><strong style="color: #303030" >Nome:</strong> ${DadosLead.nome}</div>
|
||||
<div style="font-family:sans-serif;font-size:18px;line-height:150%;text-align:center;color:#000;margin-top: 5px;"><strong style="color: #303030" >Telefone:</strong> ${DadosLead.telefone}</div>
|
||||
<div style="font-family:sans-serif;font-size:18px;line-height:150%;text-align:center;color:#000;margin-top: 5px;"><strong style="color: #303030" >Email:</strong> ${DadosLead.email}</div>
|
||||
<div style="width:fit-content;background: #08d319;padding: 1rem 2rem;border-radius: 1.5rem;margin: 0 auto;margin-top: 1rem;cursor: pointer;"><a class="button" style="text-decoration: none;color: #fff;font-weight: bold;font-family: sans-serif;font-size: 18px" href="https://wa.me/55${DadosLead.telefone.replace("(","").replace(")","").replace("-","").replace(" ","")}" target="_blank">Abrir no WhatsApp</a></div>
|
||||
<div style="width:fit-content;background: #0c60fd;padding: 1rem 2rem;border-radius: 1.5rem;margin: 0 auto;margin-top: 1rem;cursor: pointer;"><a class="button" style="text-decoration: none;color: #fff;font-weight: bold;font-family: sans-serif;font-size: 18px" href="mailto:${DadosLead.email}" target="_blank">Escrever email</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div style="margin:0px auto;max-width:600px">
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="direction:ltr;font-size:0px;padding:10px;padding-left:40px;padding-right:40px;text-align:center"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
break;
|
||||
}
|
||||
|
||||
return TextoEmail;
|
||||
}
|
||||
|
||||
|
||||
return router;
|
||||
}
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,138 @@
|
|||
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 exercises;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/types', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exercisetype
|
||||
WHERE enabled = 1;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
// router.get('/getExercise/:id', verifyJWT, (req, res) => {
|
||||
// let id = req.params.id;
|
||||
// execSQLQuery(`
|
||||
// SELECT
|
||||
// e.idexercises as 'exercise_id',
|
||||
// e.description as 'exercise_desc',
|
||||
// e.idexercisetype as 'exercise_type',
|
||||
// eq.idexercisequestions as 'question_id',
|
||||
// eq.content as question,
|
||||
// ea.idexerciseanswers as 'answer_id',
|
||||
// ea.content as answer
|
||||
// FROM exercises e
|
||||
// JOIN exercisequestions eq ON e.idexercises = eq.idexercises
|
||||
// JOIN exerciseanswers ea ON eq.idexercisequestions = ea.idexercisequestions
|
||||
// WHERE e.idexercises = ${id}
|
||||
// ORDER BY eq.idexercisequestions, ea.idexerciseanswers ASC;`,
|
||||
// res,
|
||||
// req.originalUrl
|
||||
// );
|
||||
// })
|
||||
|
||||
router.get('/getExercise2/:idexercises', verifyJWT, (req, res) => {
|
||||
const idexercises = parseInt(req.params.idexercises);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exercises
|
||||
WHERE idexercises = ${idexercises};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/:idexercises/getQuestions', verifyJWT, function (req, res, next) {
|
||||
const idexercises = req.params.idexercises;
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exercisequestions
|
||||
WHERE idexercises = ${idexercises};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/:idexercisequestions/getQuestionsById', verifyJWT, function (req, res, next) {
|
||||
const idexercisequestions = parseInt(req.params.idexercisequestions);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exercisequestions
|
||||
WHERE idexercisequestions = ${idexercisequestions};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getExercise/:idexercises', verifyJWT, function (req, res, next) {
|
||||
const idexercises = parseInt(req.params.idexercises);
|
||||
execSQLQuery(`SELECT
|
||||
e.description,
|
||||
e.enabled,
|
||||
e.idexercises,
|
||||
e.idexercisetype,
|
||||
cc.idclasses
|
||||
FROM exercises e
|
||||
JOIN classescontent cc ON e.idexercises = cc.idexercises
|
||||
WHERE e.idexercises = ${idexercises};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/:id/getExercises', verifyJWT, function (req, res, next) {
|
||||
const idclasses = parseInt(req.params.idclasses);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exercises
|
||||
WHERE idclasses = ${idclasses};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insert', verifyJWT, function (req, res) {
|
||||
const description = req.body.description;
|
||||
const idexercisetype = parseInt(req.body.idexercisetype);
|
||||
const enabled = req.body.enabled ? 1 : 0;
|
||||
execSQLQuery(`INSERT INTO exercises (idexercisetype, description, hasmedia, enabled)
|
||||
VALUES (?, ?, 0, ?);`, res, req.originalUrl, [idexercisetype, description, enabled]);
|
||||
});
|
||||
|
||||
router.patch('/update', verifyJWT, function (req, res) {
|
||||
const idexercises = parseInt(req.body.idexercises);
|
||||
const description = req.body.description;
|
||||
const idexercisetype = parseInt(req.body.idexercisetype);
|
||||
const enabled = req.body.enabled ? 1 : 0;
|
||||
execSQLQuery(`UPDATE exercises SET
|
||||
description = ?,
|
||||
idexercisetype = ?,
|
||||
enabled = ?
|
||||
WHERE idexercises = ?;`, res, req.originalUrl, [description, idexercisetype, enabled, idexercises]);
|
||||
});
|
||||
|
||||
router.get('/allExercises', (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exercises;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/allExerciseQuestions', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exercisequestions;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/allExerciseAnswers', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exerciseanswers;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/allExerciseType', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exercisetype;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,235 @@
|
|||
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({
|
||||
limit: '50mb',
|
||||
extended: true
|
||||
}));
|
||||
router.use(bodyParser.json({
|
||||
limit: '50mb',
|
||||
extended: true
|
||||
}));
|
||||
|
||||
var routes = function () {
|
||||
|
||||
router.get('/getAll/', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM files;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getFile/:idfiles', verifyJWT, (req, res) => {
|
||||
const idfiles = parseInt(req.params.idfiles);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM files
|
||||
WHERE idfiles = ${idfiles};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insert', verifyJWT, (req, res) => {
|
||||
const description = req.body.description;
|
||||
const src = req.body.src;
|
||||
const extension = req.body.extension;
|
||||
execSQLQuery(`INSERT INTO files (description, src, extension)
|
||||
VALUES (?, ?, ?);`, res, req.originalUrl, [description, src, extension]);
|
||||
});
|
||||
|
||||
router.patch('/update', verifyJWT, (req, res) => {
|
||||
const idfiles = req.body.idfiles;
|
||||
const description = req.body.description;
|
||||
const src = req.body.src;
|
||||
const extension = req.body.extension;
|
||||
execSQLQuery(`UPDATE files SET
|
||||
description = ?,
|
||||
src = ?,
|
||||
extension = ?
|
||||
WHERE idfiles = ?;`, res, req.originalUrl, [description, src, extension, idfiles]);
|
||||
});
|
||||
|
||||
router.get('/delete/:idfiles', verifyJWT, (req, res) => {
|
||||
const idfiles = req.params.idfiles;
|
||||
mysqlConnection.query(`SELECT * FROM files where idfiles in (${idfiles});`, function (error, Arquivos, fields) {
|
||||
mysqlConnection.query(`delete from files where idfiles in (${idfiles});`, function (error, results, fields) {
|
||||
ExcluirArquivos(Arquivos, 0, function(Sucesso) {
|
||||
res.send(Sucesso);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function ExcluirArquivos(Arquivos, Index, callback) {
|
||||
if (Index < Arquivos.length) {
|
||||
const fs = require('fs');
|
||||
let dir = Variables('src_media') + Arquivos[Index]['src'].split('/')[3] + "/" + Arquivos[Index]['src'].split('/')[4];
|
||||
if(fs.existsSync(dir)) {
|
||||
fs.unlink(dir, function(err) {
|
||||
Index++;
|
||||
ExcluirArquivos(Arquivos, Index, callback);
|
||||
});
|
||||
}
|
||||
else {
|
||||
Index++;
|
||||
ExcluirArquivos(Arquivos, Index, callback);
|
||||
}
|
||||
}
|
||||
else {
|
||||
callback(true);
|
||||
}
|
||||
}
|
||||
|
||||
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') + 'files/' + name;
|
||||
|
||||
var oldpath = files.file.path;
|
||||
if(fs.existsSync(dir)) {
|
||||
fs.unlink(dir, function(err) {
|
||||
fs.rename(oldpath, dir, function (err) {
|
||||
res.send(true);
|
||||
})
|
||||
});
|
||||
}
|
||||
else {
|
||||
fs.rename(oldpath, dir, function (err) {
|
||||
res.send(true);
|
||||
})
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// VIDEOS
|
||||
|
||||
router.get('/getAll1/', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT f.idfiles, f.description, f.src, f.extension, 'Arquivo' as type FROM files f;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getAllVideos/', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT * FROM videos;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getAllVideos1/', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT v.idvideos as idfiles, v.description, concat('https://myrobot.cdn.vooplayer.com/publish/', v.publishid) as src, '.mp4' as extension, 'Vídeo' as type FROM videos v;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getVideo/:idvideos', verifyJWT, (req, res) => {
|
||||
let idvideos = parseInt(req.params.idvideos);
|
||||
execSQLQuery(`SELECT * FROM videos WHERE idvideos = ${idvideos};`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.post('/getVideoFiltrado', verifyJWT, (req, res) => {
|
||||
const filtro = req.body.filtro;
|
||||
|
||||
execSQLQuery(`SELECT * FROM videos WHERE description LIKE "%${filtro}%";`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.post('/insertVideo', verifyJWT, (req, res) => {
|
||||
const idvideos = req.body.idvideos;
|
||||
const publishId = req.body.publishId;
|
||||
const description = req.body.description;
|
||||
|
||||
execSQLQuery(`INSERT INTO videos(publishId, description) VALUES ('${publishId}','${description}');`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.patch('/updateVideo', verifyJWT, (req, res) => {
|
||||
const idvideos = req.body.idvideos;
|
||||
const publishId = req.body.publishId;
|
||||
const description = req.body.description;
|
||||
execSQLQuery(`UPDATE videos SET publishId = '${publishId}', description = '${description}' WHERE idvideos = ${idvideos};`,
|
||||
res, req.originalUrl);
|
||||
})
|
||||
|
||||
|
||||
|
||||
router.post('/CopiarBase64', verifyJWT, (req, res) => {
|
||||
let form = new formidable.IncomingForm();
|
||||
form.maxFileSize = 600 * 1024 * 1024;
|
||||
form.parse(req, function(err, fields, files) {
|
||||
var base64ToImage = require('base64-to-image');
|
||||
const name = fields.name;
|
||||
const ext = fields.ext.replace('.', '');
|
||||
const base64 = fields.base64;
|
||||
const ArrDir = name.split('/');
|
||||
let Diretorio = "";
|
||||
for (let i = 0; i < ArrDir.length; i++) {
|
||||
if (i < ArrDir.length - 1)
|
||||
Diretorio += ArrDir[i] + "/";
|
||||
}
|
||||
const ArrNome = ArrDir[ArrDir.length - 1].split('.');
|
||||
let NomeArquivo = "";
|
||||
for (let i = 0; i < ArrNome.length; i++) {
|
||||
if (i < ArrNome.length - 1)
|
||||
NomeArquivo += ArrNome[i] + ".";
|
||||
}
|
||||
NomeArquivo = NomeArquivo.substring(0, NomeArquivo.length - 1);
|
||||
var ArquivoCopia = { 'fileName': NomeArquivo, 'type': 'jpg' };
|
||||
if (base64ToImage(base64, Variables('src_media') + Diretorio, ArquivoCopia)) {
|
||||
res.send(true);
|
||||
}
|
||||
else {
|
||||
res.send(false);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/CopiaArquivos', 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 oldpath;
|
||||
try {
|
||||
oldpath = files.file.path;
|
||||
}
|
||||
catch(e) {
|
||||
console.log(req.originalUrl + " error 500 - Não foi enviado o arquivo para upload no servidor: " + e);
|
||||
res.send(false);
|
||||
return;
|
||||
}
|
||||
|
||||
const ArrDir = name.split('/');
|
||||
let Diretorio = "";
|
||||
for (let i = 0; i < ArrDir.length; i++) {
|
||||
if (i < ArrDir.length - 1)
|
||||
Diretorio += ArrDir[i] + "/";
|
||||
}
|
||||
|
||||
var dirArquivo = Variables('src_media') + name;
|
||||
var dirPasta = Variables('src_media') + Diretorio;
|
||||
|
||||
if (!fs.existsSync(dirPasta))
|
||||
fs.mkdirSync(dirPasta);
|
||||
|
||||
if (fs.existsSync(dirArquivo)) {
|
||||
fs.unlink(dirArquivo, function(err) {
|
||||
//console.log(err);
|
||||
fs.rename(oldpath, dirArquivo, function (err) {
|
||||
console.log(err);
|
||||
res.send(true);
|
||||
console.log(req.originalUrl + " success 200");
|
||||
});
|
||||
});
|
||||
}
|
||||
else {
|
||||
fs.rename(oldpath, dirArquivo, function (err) {
|
||||
res.send(true);
|
||||
console.log(req.originalUrl + " success 200");
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,476 @@
|
|||
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');
|
||||
const fs = require('fs');
|
||||
const { userInfo } = require('os');
|
||||
|
||||
router.use(bodyParser.urlencoded({
|
||||
limit: '150mb',
|
||||
extended: true
|
||||
}));
|
||||
router.use(bodyParser.json({
|
||||
limit: '150mb',
|
||||
extended: true
|
||||
}));
|
||||
|
||||
var routes = function () {
|
||||
|
||||
router.get('/getVideos/:idFolder', verifyJWT, (req, res) => {
|
||||
const idFolder = parseInt(req.params.idFolder);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM franchisee_media
|
||||
WHERE franchisee_media.type = 'video' AND franchisee_media.folder_key = ${idFolder};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getFiles/:idFolder/:userFor', verifyJWT, (req, res) => {
|
||||
const idFolder = parseInt(req.params.idFolder);
|
||||
const userFor = parseInt(req.params.userFor);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM franchisee_media
|
||||
WHERE ((franchisee_media.type = 'file' OR franchisee_media.type = 'download'
|
||||
OR franchisee_media.type = 'img') AND franchisee_media.folder_key = ${idFolder}) AND userFor = ${userFor}
|
||||
ORDER BY description ASC;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
|
||||
router.get('/getAllFoldersV', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`select * from (
|
||||
select
|
||||
ff.idfranchisee_folder,
|
||||
ff.folder_type,
|
||||
ff.folder_description,
|
||||
ff.folder_into
|
||||
from franchisee_folders ff
|
||||
where ff.folder_type = 'videos' and ff.folder_into = 0
|
||||
union all
|
||||
select
|
||||
ff.idfranchisee_folder,
|
||||
ff.folder_type,
|
||||
concat(ff.folder_description, ' - (', ff2.folder_description, '/', ff.folder_description, ')') as 'folder_description',
|
||||
ff.folder_into
|
||||
from franchisee_folders ff
|
||||
inner join franchisee_folders ff2 on ff2.idfranchisee_folder = ff.folder_into
|
||||
where ff.folder_type = 'videos' and ff.folder_into > 0) R
|
||||
order by R.folder_description asc`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getFoldersV', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM franchisee_folders
|
||||
WHERE folder_type = 'videos' AND folder_into = 0
|
||||
order by folder_description asc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getFoldersV2/:idFolder', verifyJWT, (req, res) => {
|
||||
const idFolder = parseInt(req.params.idFolder);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM franchisee_folders
|
||||
WHERE folder_type = 'videos' AND folder_into = ${idFolder}
|
||||
order by folder_description asc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
|
||||
router.get('/getAllFoldersF/:userFor', verifyJWT, (req, res) => {
|
||||
const userFor = parseInt(req.params.userFor);
|
||||
execSQLQuery(`select * from (
|
||||
select
|
||||
ff.idfranchisee_folder,
|
||||
ff.folder_type,
|
||||
ff.folder_description,
|
||||
ff.folder_into
|
||||
from franchisee_folders ff
|
||||
where ff.folder_type = 'files' and ff.folder_into = 0 and ff.userFor = ${userFor}
|
||||
union all
|
||||
select
|
||||
ff.idfranchisee_folder,
|
||||
ff.folder_type,
|
||||
concat(ff.folder_description, ' - (', ff2.folder_description, '/', ff.folder_description, ')') as 'folder_description',
|
||||
ff.folder_into
|
||||
from franchisee_folders ff
|
||||
inner join franchisee_folders ff2 on ff2.idfranchisee_folder = ff.folder_into
|
||||
where ff.folder_type = 'files' and ff.folder_into > 0 and ff.userFor = ${userFor}) R
|
||||
order by R.folder_description asc`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getFoldersF/:userFor', verifyJWT, (req, res) => {
|
||||
const userFor = parseInt(req.params.userFor);
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
franchisee_folders
|
||||
WHERE
|
||||
franchisee_folders.folder_type = 'files' AND franchisee_folders.folder_into = 0
|
||||
AND franchisee_folders.userFor = ${userFor}
|
||||
ORDER BY folder_description ASC;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);})
|
||||
|
||||
router.get('/getFoldersF2/:idFolder/:userFor', verifyJWT, (req, res) => {
|
||||
const idFolder = parseInt(req.params.idFolder);
|
||||
const userFor = parseInt(req.params.userFor);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM franchisee_folders
|
||||
WHERE folder_into = ${idFolder} AND folder_type != 'DESATIVADO' AND userFor = ${userFor}
|
||||
ORDER BY folder_description ASC;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
|
||||
router.get('/Exclude/:idfranchisee_media', verifyJWT, (req, res) => {
|
||||
const idfranchisee = parseInt(req.params.idfranchisee_media);
|
||||
execSQLQuery(`
|
||||
DELETE FROM
|
||||
franchisee_media
|
||||
WHERE
|
||||
franchisee_media.idfranchisee_media = ${idfranchisee}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);})
|
||||
|
||||
router.get('/Disable/:idfranchisee_media', verifyJWT, (req, res) => {
|
||||
const idfranchisee = parseInt(req.params.idfranchisee_media);
|
||||
execSQLQuery(`UPDATE franchisee_media SET type = 'DESATIVADO' WHERE idfranchisee_media = ${idfranchisee}`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/ExcludeF/:idfranchisee_folder', verifyJWT, (req, res) => {
|
||||
const idfranchisee = parseInt(req.params.idfranchisee_folder);
|
||||
execSQLQuery(`
|
||||
DELETE FROM
|
||||
franchisee_folders
|
||||
WHERE
|
||||
idfranchisee_folder = ${idfranchisee}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);})
|
||||
|
||||
router.get('/getAll', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
franchisee_media`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getAllWithDescription', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
fm.idfranchisee_media,
|
||||
fm.description,
|
||||
fm.publishid,
|
||||
fm.type,
|
||||
fm.folder_key,
|
||||
ff.folder_description
|
||||
FROM
|
||||
franchisee_media fm
|
||||
INNER JOIN
|
||||
franchisee_folders ff ON ff.idfranchisee_folder = fm.folder_key;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getAllF', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
franchisee_folders`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getOne/:idfranchisee_media/:userFor', verifyJWT, (req, res) => {
|
||||
const idfranchisee_media = parseInt(req.params.idfranchisee_media);
|
||||
const userFor = parseInt(req.params.userFor);
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
franchisee_media
|
||||
WHERE
|
||||
idfranchisee_media = ${idfranchisee_media} AND userFor = ${userFor}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getOneF/:idfranchisee_folder/:userFor', verifyJWT, (req, res) => {
|
||||
const idfranchisee_folder = parseInt(req.params.idfranchisee_folder);
|
||||
const userFor = parseInt(req.params.userFor);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM franchisee_folders
|
||||
WHERE franchisee_folders.idfranchisee_folder = ${idfranchisee_folder}
|
||||
AND franchisee_folders.userFor = ${userFor};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.patch('/update', verifyJWT, (req, res) => {
|
||||
const idfranchisee_media = req.body.idfranchisee_media;
|
||||
const description = req.body.description;
|
||||
const type = req.body.type;
|
||||
const publishid = req.body.publishid;
|
||||
const folder_key = req.body.folder_key;
|
||||
const userFor = req.body.userFor;
|
||||
execSQLQuery(`
|
||||
UPDATE
|
||||
franchisee_media
|
||||
SET
|
||||
description = "${description}",
|
||||
publishid = '${publishid}',
|
||||
type = '${type}',
|
||||
folder_key = ${folder_key},
|
||||
userFor = ${userFor}
|
||||
WHERE
|
||||
idfranchisee_media = ${idfranchisee_media}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.post('/insert', verifyJWT, (req, res) => {
|
||||
const description = req.body.description;
|
||||
const type = req.body.type;
|
||||
const publishid = req.body.publishid;
|
||||
const folder_key = req.body.folder_key;
|
||||
const userFor = req.body.userFor;
|
||||
execSQLQuery(`INSERT INTO franchisee_media (description, type, publishid, folder_key, userFor)
|
||||
VALUES (?, ?, ?, ?, ?);`, res, req.originalUrl, [description, type, publishid, folder_key, userFor]);
|
||||
});
|
||||
|
||||
router.post('/insertF', verifyJWT, (req, res) => {
|
||||
const folder_type = req.body.folder_type;
|
||||
const folder_description = req.body.folder_description;
|
||||
const folder_into = req.body.folder_into;
|
||||
const userFor = req.body.userFor;
|
||||
execSQLQuery(`INSERT INTO franchisee_folders (folder_type, folder_description, folder_into, userFor)
|
||||
VALUES (?, ?, ?, ?);`, res, req.originalUrl, [folder_type, folder_description, folder_into, userFor]);
|
||||
});
|
||||
|
||||
router.post('/copy', verifyJWT, (req, res) => {
|
||||
var base64ToImage = require('base64-to-image');
|
||||
var id = req.body.id;
|
||||
var backStr = req.body.back;
|
||||
var backThumb = req.body.backThumb;
|
||||
var backName = 'franch_' + id;
|
||||
var backNameT = 'franchThumb_' + id;
|
||||
var Objback = { 'fileName': backName, 'type': 'jpg' };
|
||||
var ObjbackT = { 'fileName': backNameT, 'type': 'jpg' };
|
||||
var path = Variables('src_media') + 'images/';
|
||||
if(base64ToImage(backStr, path, Objback)){
|
||||
if (base64ToImage(backThumb, path, ObjbackT)){
|
||||
res.send(true);
|
||||
}else{res.send(false);}
|
||||
}else {res.send(false);}
|
||||
});
|
||||
|
||||
router.post('/copy1', 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 id = fields.id;
|
||||
var backThumb = fields.backThumb;
|
||||
var dir = Variables('src_media') + 'images/';
|
||||
var extension = files.back.name.toString();
|
||||
var arrExt = extension.split('.');
|
||||
extension = "." + arrExt[arrExt.length - 1];
|
||||
console.log("name: " + id + " - dir: " + dir + " - extension: " + extension);
|
||||
try {
|
||||
fs.unlink(dir + "franch_" + id + extension, function(err) {});
|
||||
}
|
||||
catch(err) {
|
||||
console.log("arquivo não existe");
|
||||
}
|
||||
var oldpath = files.back.path;
|
||||
fs.rename(oldpath, dir + "franch_" + id + extension, function (err) {
|
||||
if (err) {
|
||||
res.send(false);
|
||||
throw err;
|
||||
}
|
||||
else {
|
||||
var base64ToImage = require('base64-to-image');
|
||||
var ObjbackT = { 'fileName': 'franchThumb_' + id, 'type': 'jpg' };
|
||||
if (base64ToImage(backThumb, dir, ObjbackT)) {
|
||||
res.send(true);
|
||||
}
|
||||
else {
|
||||
res.send(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/copyFile', (req, res) => {
|
||||
|
||||
var localPath = req.body.back;
|
||||
var filetoupload = req.body.filetoupload;
|
||||
var form = new formidable.IncomingForm();
|
||||
console.log(localPath);
|
||||
form.parse(req, function (_err, _fields, files) {
|
||||
console.log("Entrou no parse");
|
||||
var oldpath = localPath;
|
||||
console.log(oldpath);
|
||||
var newpath = Variables('src_media') + 'franchiseeZip/' + filetoupload.name;
|
||||
console.log("EntrouCopy");
|
||||
fs.rename(toString(oldpath), toString(newpath), function (err) {
|
||||
console.log("EntrouCopy2");
|
||||
if (err) throw err;
|
||||
console.log("EntrouCopy3");
|
||||
res.send(true);
|
||||
});
|
||||
});
|
||||
/*} else {
|
||||
res.writeHead(200, {'Content-Type': 'text/html'});
|
||||
res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
|
||||
res.write('<input type="file" name="filetoupload"><br>');
|
||||
res.write('<input type="submit">');
|
||||
res.write('</form>');
|
||||
return res.end();
|
||||
}*/
|
||||
});
|
||||
|
||||
router.post('/copyPdf', verifyJWT, (req, res) => {
|
||||
var base64 = require('base64topdf');
|
||||
var id = req.body.id;
|
||||
var backStr = req.body.back;
|
||||
var backName = 'franch_' + id;
|
||||
var Objback = { 'fileName': backName, 'type': 'pdf' };
|
||||
var path = Variables('src_media') + 'images/';
|
||||
if(base64.base64Decode(backStr, backName.toString())){
|
||||
res.send(true);
|
||||
}else {res.send(false);}
|
||||
});
|
||||
|
||||
router.post('/copyZip', verifyJWT, (req, res) => {
|
||||
var unzip = require('unzip');
|
||||
var fs = require('fs');
|
||||
const file = req.body.file;
|
||||
const name = req.body.name;
|
||||
var dir = Variables('src_media') + 'franchiseeZip/' + name;
|
||||
if (!fs.existsSync(dir)) {
|
||||
fs.mkdirSync(dir);
|
||||
}
|
||||
var path = dir + '/';
|
||||
var data = file.replace(/^data:application\/\x-zip-compressed;base64,/, '');
|
||||
//var data = file.replace(/^data:image\/\w+;base64,/, '');
|
||||
fs.writeFile(path + name + '.zip', data, {encoding: 'base64'}, function(err){
|
||||
setTimeout(() => {
|
||||
console.log('Copiado com sucesso!');
|
||||
res.send(true);
|
||||
} , 3000);
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/copy2', 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') + 'franchiseeZip/' + name + "/";
|
||||
var extension = files.file.name.toString();
|
||||
var arrExt = extension.split('.');
|
||||
extension = "." + arrExt[arrExt.length - 1];
|
||||
console.log("name: " + name + " - dir: " + dir + " - extension: " + extension);
|
||||
if (!fs.existsSync(dir)) {
|
||||
console.log("criar diretorio");
|
||||
fs.mkdirSync(dir);
|
||||
}
|
||||
else {
|
||||
try {
|
||||
fs.unlink(dir + name + extension, function(err) {});
|
||||
}
|
||||
catch(err) {
|
||||
console.log("arquivo não existe");
|
||||
}
|
||||
}
|
||||
var oldpath = files.file.path;
|
||||
fs.rename(oldpath, dir + name + extension, function (err) {
|
||||
if (err) {
|
||||
res.send(false);
|
||||
throw err;
|
||||
}
|
||||
res.send(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
router.patch('/updateF', verifyJWT, (req, res) => {
|
||||
const idfranchisee_folder = req.body.idfranchisee_folder;
|
||||
const folder_type = req.body.folder_type;
|
||||
const folder_description = req.body.folder_description;
|
||||
const folder_into = req.body.folder_into;
|
||||
const userFor = req.body.userFor;
|
||||
execSQLQuery(`UPDATE franchisee_folders SET
|
||||
folder_type = ?,
|
||||
folder_description = ?,
|
||||
folder_into = ?,
|
||||
userFor = ?
|
||||
WHERE idfranchisee_folder = ?;`, res, req.originalUrl, [folder_type, folder_description, folder_into, userFor, idfranchisee_folder]);
|
||||
});
|
||||
|
||||
|
||||
router.get('/getNomesAlunos/:banco', (req, res) => {
|
||||
const db = req.params.banco;
|
||||
execSQLQuery2(`SELECT distinct
|
||||
tt.IDMatricula,
|
||||
cl.Nome
|
||||
FROM ${db}TreinandosTurmas tt
|
||||
INNER JOIN ${db}Clientes cl ON cl.IDCliente = tt.IDTreinando;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
|
||||
// LEADS
|
||||
router.get('/getLeadsEventos', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`select
|
||||
*
|
||||
FROM leadseventos
|
||||
ORDER BY descricao ASC;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getLeadsSite/:idunits/:idleadseventos', verifyJWT, (req, res) => {
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
const idleadseventos = parseInt(req.params.idleadseventos);
|
||||
const SQLQuery = `select
|
||||
ls.*,
|
||||
un.unityname as 'unidade',
|
||||
date_format(ls.insert_date, '%d/%m/%Y %H:%i') as 'data',
|
||||
case when ls.update_date is not null then 'Sim' else 'Não' end as 'visto',
|
||||
case when ls.contatado = 1 then 'Sim' else 'Não' end as 'cont'
|
||||
FROM leadssite ls
|
||||
inner join units un on un.idunits = ls.idunits
|
||||
WHERE ${(idunits == 0) ? 'true' : 'ls.idunits = ' + idunits} and ls.idleadseventos = ${idleadseventos}
|
||||
ORDER BY un.unityname asc, ls.nome ASC;`;
|
||||
execSQLQuery(SQLQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/updateVistoLead/:idleadssite', verifyJWT, (req, res) => {
|
||||
const idleadssite = parseInt(req.params.idleadssite);
|
||||
execSQLQuery(`update leadssite set update_date = now() where idleadssite = ${idleadssite};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/updateContatadoLead/:idleadssite', verifyJWT, (req, res) => {
|
||||
const idleadssite = parseInt(req.params.idleadssite);
|
||||
execSQLQuery(`update leadssite set contatado = 1 where idleadssite = ${idleadssite};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
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('/InserirFeriadosPadrao/:ano', verifyJWT, (req, res) => {
|
||||
const Ano = parseInt(req.params.ano);
|
||||
execSQLQuery(`insert into holidays (date, reason) values
|
||||
('${Ano}-01-01', 'Ano Novo'),
|
||||
('${Ano}-02-15', 'Carnaval'),
|
||||
('${Ano}-02-16', 'Carnaval'),
|
||||
('${Ano}-04-02', 'Paixão de Cristo'),
|
||||
('${Ano}-04-21', 'Tiradentes'),
|
||||
('${Ano}-05-01', 'Dia do Trabalho'),
|
||||
('${Ano}-06-03', 'Corpus Christi'),
|
||||
('${Ano}-09-07', 'Independência do Brasil'),
|
||||
('${Ano}-10-12', 'Dia das Crianças'),
|
||||
('${Ano}-11-02', 'Finados'),
|
||||
('${Ano}-11-15', 'Proclamação da República'),
|
||||
('${Ano}-12-25', 'Natal');`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/InserirFeriado', verifyJWT, (req, res) => {
|
||||
const reason = req.body.reason;
|
||||
const date = req.body.date;
|
||||
execSQLQuery(`INSERT INTO holidays (date, reason)
|
||||
VALUES (?, ?);`, res, req.originalUrl, [date, reason]);
|
||||
});
|
||||
|
||||
router.patch('/AtualizarFeriado', verifyJWT, (req, res) => {
|
||||
const reason = req.body.reason;
|
||||
const date = req.body.date;
|
||||
execSQLQuery(`UPDATE holidays SET
|
||||
date = ?,
|
||||
reason = ?
|
||||
WHERE date = ?;`, res, req.originalUrl, [date, reason, date]);
|
||||
});
|
||||
|
||||
router.post('/getFeriado', verifyJWT, (req, res) => {
|
||||
const date = req.body.date;
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM holidays
|
||||
WHERE date = "${date}";`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllFeriados', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
date_format(date, '%d/%m/%Y') as 'date',
|
||||
date as 'cdate',
|
||||
reason
|
||||
FROM holidays
|
||||
order by cdate asc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getMySQLinSQLServerFeriados', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
concat(date_format(date, '%Y-%m-%d'), ' 00:00:00.000') AS 'Data',
|
||||
reason AS 'Motivo'
|
||||
FROM holidays;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getSQLServerFeriados/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT * FROM ${db}DiasNaoLetivos;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
return router;
|
||||
}
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
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('/getAllLeads/:idunits', verifyJWT, (req, res) => {
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
execSQLQuery(`SELECT igl.*, date_format(igl.insert_date, '%d/%m/%Y %H:%i') as 'inscricao', un.unityname FROM g40_leads igl inner join units un on un.idunits = igl.idunits where ${(idunits > 0) ? 'igl.idunits = ' + idunits : 'true'};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertLead', (req, res) => {
|
||||
const idunits = parseInt(req.body.idunits);
|
||||
const nome = req.body.nome;
|
||||
const email = req.body.email;
|
||||
const cidade = req.body.cidade;
|
||||
const celular = req.body.celular;
|
||||
const idade = req.body.idade;
|
||||
const instituicao = req.body.instituicao;
|
||||
execSQLQuery(`INSERT INTO g40_leads (idunits, nome, email, cidade, celular, idade, instituicao) VALUES
|
||||
(?, ?, ?, ?, ?, ?, ?);`, res, req.originalUrl, [idunits, nome, email, cidade, celular, idade, instituicao]);
|
||||
});
|
||||
|
||||
router.patch('/updateLead', verifyJWT, (req, res) => {
|
||||
const idg40_leads = parseInt(req.body.idg40_leads);
|
||||
const idunits = parseInt(req.body.idunits);
|
||||
const nome = req.body.nome;
|
||||
const email = req.body.email;
|
||||
const cidade = req.body.cidade;
|
||||
const celular = req.body.celular;
|
||||
const idade = req.body.idade;
|
||||
const instituicao = req.body.instituicao;
|
||||
execSQLQuery(`update g40_leads set
|
||||
idunits = ?,
|
||||
nome = ?,
|
||||
email = ?,
|
||||
cidade = ?,
|
||||
celular = ?,
|
||||
idade = ?,
|
||||
instituicao = ?
|
||||
where idg40_leads = ?;`, res, req.originalUrl, [idunits, nome, email, cidade, celular, idade, instituicao, idg40_leads]);
|
||||
});
|
||||
|
||||
|
||||
router.get('/getAllEmpresas/:idunits', verifyJWT, (req, res) => {
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
execSQLQuery(`SELECT ige.*, date_format(ige.insert_date, '%d/%m/%Y %H:%i') as 'inscricao', un.unityname FROM g40_empresas ige inner join units un on un.idunits = ige.idunits where ${(idunits > 0) ? 'ige.idunits = ' + idunits : 'true'};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertEmpresa', (req, res) => {
|
||||
const idunits = parseInt(req.body.idunits);
|
||||
const nome = req.body.nome;
|
||||
const empresa = req.body.empresa;
|
||||
const email = req.body.email;
|
||||
const telefone = req.body.telefone;
|
||||
execSQLQuery(`INSERT INTO g40_empresas (idunits, nome, empresa, email, telefone) VALUES
|
||||
(?, ?, ?, ?, ?);`, res, req.originalUrl, [idunits, nome, empresa, email, telefone]);
|
||||
});
|
||||
|
||||
router.patch('/updateEmpresa', verifyJWT, (req, res) => {
|
||||
const idg40_empresas = parseInt(req.params.idg40_empresas);
|
||||
const idunits = parseInt(req.body.idunits);
|
||||
const nome = req.body.nome;
|
||||
const empresa = req.body.empresa;
|
||||
const email = req.body.email;
|
||||
const telefone = req.body.telefone;
|
||||
execSQLQuery(`update g40_empresas set
|
||||
idunits = ?,
|
||||
nome = ?,
|
||||
emrpesa = ?,
|
||||
email = ?,
|
||||
telefone = ?
|
||||
where idg40_empresas = ?;`, res, req.originalUrl, [idunits, nome, empresa, email, telefone, idg40_empresas]);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,100 @@
|
|||
require('../connections/mysql-server');
|
||||
require('../helpers/CheckToken');
|
||||
require('../helpers/config');
|
||||
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const bodyParser = require('body-parser');
|
||||
const { verify } = require('jsonwebtoken');
|
||||
|
||||
router.use(bodyParser.urlencoded({
|
||||
limit: '10mb',
|
||||
extended: true
|
||||
}
|
||||
));
|
||||
router.use(bodyParser.json({
|
||||
limit: '10mb',
|
||||
extended: true
|
||||
}));
|
||||
|
||||
var routes = function () {
|
||||
|
||||
router.get('/getAllListenRepeat', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`select * from zoelistenrepeat;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getListenRepeat/:idzoelistenrepeat', verifyJWT, (req, res) => {
|
||||
const idzoelistenrepeat = parseInt(req.params.idzoelistenrepeat);
|
||||
execSQLQuery(`select * from zoelistenrepeat where idzoelistenrepeat = ${idzoelistenrepeat};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getLRDetails/:idzoelistenrepeat', (req, res) => {
|
||||
const idzoelistenrepeat = parseInt(req.params.idzoelistenrepeat);
|
||||
execSQLQuery(`select
|
||||
lr.idzoelistenrepeat,
|
||||
lr.description,
|
||||
lrp.phrase,
|
||||
lrp.ordem,
|
||||
lrp.hasmedia
|
||||
from zoelistenrepeat lr
|
||||
inner join zoelistenrepeatprhases lrp on lrp.idzoelistenrepeat = lr.idzoelistenrepeat
|
||||
where lr.idzoelistenrepeat = ${idzoelistenrepeat}
|
||||
order by lrp.ordem asc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/InsertListenRepeat', verifyJWT, (req, res) => {
|
||||
const idzoelistenrepeat = parseInt(req.body.idzoelistenrepeat);
|
||||
const description = req.body.description;
|
||||
execSQLQuery(`INSERT INTO zoelistenrepeat (description)
|
||||
VALUES (?);`, res, req.originalUrl, [description]);
|
||||
});
|
||||
|
||||
router.patch('/UpdateListenRepeat', verifyJWT, (req, res) => {
|
||||
const idzoelistenrepeat = parseInt(req.body.idzoelistenrepeat);
|
||||
const description = req.body.description;
|
||||
execSQLQuery(`UPDATE zoelistenrepeat SET
|
||||
description = ?
|
||||
WHERE idzoelistenrepeat = ?;`, res, req.originalUrl, [description, idzoelistenrepeat]);
|
||||
});
|
||||
|
||||
router.delete('/deleteListenRepeat/:idzoelistenrepeat', verifyJWT, (req, res) => {
|
||||
const idzoelistenrepeat = parseInt(req.params.idzoelistenrepeat);
|
||||
execSQLQuery(`delete from zoelistenrepeat
|
||||
where idzoelistenrepeat = ${idzoelistenrepeat};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getListenRepeatPhrases/:idzoelistenrepeat', verifyJWT, (req, res) => {
|
||||
const idzoelistenrepeat = parseInt(req.params.idzoelistenrepeat);
|
||||
execSQLQuery(`select * from zoelistenrepeatprhases where idzoelistenrepeat = ${idzoelistenrepeat};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/InsertListenRepeatPrhases', verifyJWT, (req, res) => {
|
||||
const idzoelistenrepeatprhases = parseInt(req.body.idzoelistenrepeatprhases);
|
||||
const idzoelistenrepeat = parseInt(req.body.idzoelistenrepeat);
|
||||
const phrase = req.body.phrase;
|
||||
const ordem = parseInt(req.body.ordem);
|
||||
const hasmedia = req.body.hasmedia ? 1 : 0;
|
||||
const idcharactersVoices = parseInt(req.body.idcharactersVoices);
|
||||
const speed = req.body.speed;
|
||||
execSQLQuery(`INSERT INTO zoelistenrepeatprhases (idzoelistenrepeat, phrase, ordem, hasmedia, idcharactersVoices, speed)
|
||||
VALUES (?, ?, ?, ?, ?, ?);`, res, req.originalUrl, [idzoelistenrepeat, phrase, ordem, hasmedia, idcharactersVoices, speed]);
|
||||
});
|
||||
|
||||
router.delete('/deleteListenRepeatPrhases/:idzoelistenrepeat', verifyJWT, (req, res) => {
|
||||
const idzoelistenrepeat = parseInt(req.params.idzoelistenrepeat);
|
||||
execSQLQuery(`delete from zoelistenrepeatprhases
|
||||
where idzoelistenrepeat = ${idzoelistenrepeat};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/SalvarAudioSintetizado/:nome', verifyJWT, (req, res) => {
|
||||
const NomeArquivo = req.params.nome;
|
||||
const shell = require('shelljs');
|
||||
shell.exec(`cp ${Variables("src_media")}/audiosZoe/sintetize.mp3 ${Variables("src_media")}/zoeGamesResources/LR/${NomeArquivo}.mp3`, function(Sucesso) {
|
||||
res.send(true);
|
||||
});
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
require('../connections/mysql-server');
|
||||
require('../helpers/helper');
|
||||
require('../helpers/config');
|
||||
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const bodyParser = require('body-parser');
|
||||
|
||||
router.use(bodyParser.urlencoded({ extended: true }));
|
||||
router.use(bodyParser.json());
|
||||
|
||||
//const helper = new Helpers();
|
||||
|
||||
require("dotenv-safe").load();
|
||||
var jwt = require('jsonwebtoken');
|
||||
|
||||
var routes = function () {
|
||||
|
||||
router.get('/logout', function (req, res) {
|
||||
res.status(200).send({ auth: false, token: null });
|
||||
});
|
||||
|
||||
router.get('/checktoken', (req, res, next) => {
|
||||
var token = req.params.tk;
|
||||
if (!token) return res.status(401).send({ auth: false, message: 'Não foi enviado token' });
|
||||
|
||||
jwt.verify(token, process.env.SECRET, function (err, decoded) {
|
||||
if (err) {
|
||||
res.status(200).send({ response: 'fail' });
|
||||
}
|
||||
else {
|
||||
req.idusers = decoded.id;
|
||||
res.status(200).send({ response: 'success' });
|
||||
}
|
||||
});
|
||||
})
|
||||
return router;
|
||||
}
|
||||
|
||||
module.exports = routes;
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,119 @@
|
|||
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('/getAllPermissoes', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT * from permissoes;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getPermissoesUsuario/:idusers/:idusertype', verifyJWT, (req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const idusertype = parseInt(req.params.idusertype);
|
||||
execSQLQuery(`select distinct * from (
|
||||
select
|
||||
pm.idusers, pm.idjanelas, jn.descricao, jn.title, jn.icon, jn.link, jn.home, jn.children
|
||||
from permissoes pm
|
||||
inner join janelas jn on jn.idjanelas = pm.idjanelas
|
||||
inner join users us on us.idusers = pm.idusers
|
||||
where pm.idusers = ${idusers}
|
||||
union all
|
||||
select
|
||||
${idusers} as 'idusers', up.idjanelas, jn2.descricao, jn2.title, jn2.icon, jn2.link, jn2.home, jn2.children
|
||||
from usertypepermissoes up
|
||||
inner join janelas jn2 on jn2.idjanelas = up.idjanelas
|
||||
where up.idusertype = ${idusertype}) R
|
||||
order by R.children asc, R.title asc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllJanelas', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT * from janelas order by descricao asc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertPermissoesTipoUsuario', verifyJWT, (req, res) => {
|
||||
const Permissoes = req.body.ListaPermissoes;
|
||||
let SQLInsert = `insert into usertypepermissoes (idusertype, idjanelas) values `;
|
||||
for (let i = 0; i < Permissoes.length; i++) {
|
||||
if (i > 0)
|
||||
SQLInsert += `, `;
|
||||
SQLInsert += `(${Permissoes[i].idusertype}, ${Permissoes[i].idjanelas})`;
|
||||
}
|
||||
const SQLDelete = `delete from usertypepermissoes where idusertype = ${Permissoes[0].idusertype};`;
|
||||
mysqlConnection.query(SQLDelete, null, function (error, results, fields) {
|
||||
execSQLQuery(SQLInsert, res, req.originalUrl);
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/insertPermissoesUsuario', verifyJWT, (req, res) => {
|
||||
const Permissoes = req.body.ListaPermissoes;
|
||||
let SQLInsert = `insert into permissoes (idusers, idjanelas) values `;
|
||||
for (let i = 0; i < Permissoes.length; i++) {
|
||||
if (i > 0)
|
||||
SQLInsert += `, `;
|
||||
SQLInsert += `(${Permissoes[i].idusers}, ${Permissoes[i].idjanelas})`;
|
||||
}
|
||||
const SQLDelete = `delete from permissoes where idusers = ${Permissoes[0].idusers};`;
|
||||
mysqlConnection.query(SQLDelete, null, function (error, results, fields) {
|
||||
execSQLQuery(SQLInsert, res, req.originalUrl);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/insertAllPermissoesUsuario/:idusers', (req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
mysqlConnection.query(`select * from janelas;`, null, function (error, resJanelas, fields) {
|
||||
let SQLInsert = "insert into permissoes (idusers, idjanelas) values ";
|
||||
for (let i = 0; i < resJanelas.length; i++) {
|
||||
if (i > 0)
|
||||
SQLInsert += `, `;
|
||||
SQLInsert += `(${idusers}, ${resJanelas[i]['idjanelas']})`;
|
||||
}
|
||||
execSQLQuery(SQLInsert, res, req.originalUrl);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/insertAllPermissoesUsertype/:idusertype', (req, res) => {
|
||||
const idusertype = parseInt(req.params.idusertype);
|
||||
mysqlConnection.query(`select * from janelas;`, null, function (error, resJanelas, fields) {
|
||||
let SQLInsert = "insert into usertypepermissoes (idusertype, idjanelas) values ";
|
||||
for (let i = 0; i < resJanelas.length; i++) {
|
||||
if (i > 0)
|
||||
SQLInsert += `, `;
|
||||
SQLInsert += `(${idusertype}, ${resJanelas[i]['idjanelas']})`;
|
||||
}
|
||||
execSQLQuery(SQLInsert, res, req.originalUrl);
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/insertJanela', verifyJWT, (req, res) => {
|
||||
const idjanelas = parseInt(req.body.idjanelas);
|
||||
const descricao = req.body.descricao;
|
||||
const title = req.body.title;
|
||||
const icon = req.body.icon;
|
||||
const link = req.body.link;
|
||||
const home = req.body.home ? 1 : 0;
|
||||
const children = req.body.children;
|
||||
execSQLQuery(`insert into janelas (descricao, title, icon, link, home, children) values
|
||||
(?, ?, ?, ?, ?, ?);`, res, req.originalUrl, [descricao, title, icon, link, home, children]);
|
||||
});
|
||||
|
||||
router.patch('/updateJanela', verifyJWT, (req, res) => {
|
||||
const idjanelas = parseInt(req.body.idjanelas);
|
||||
const descricao = req.body.descricao;
|
||||
const title = req.body.title;
|
||||
const icon = req.body.icon;
|
||||
const link = req.body.link;
|
||||
const home = req.body.home ? 1 : 0;
|
||||
const children = req.body.children;
|
||||
execSQLQuery(`update janelas set descricao = ?, title = ?, icon = ?, link = ?, home = ?, children = ? where idjanelas = ?;`, res, req.originalUrl, [descricao, title, icon, link, home, children, idjanelas]);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,180 @@
|
|||
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 () {
|
||||
|
||||
//#region PRODUTOS - MATERIAIS
|
||||
router.post('/insert', verifyJWT, (req, res) => {
|
||||
const barcode = req.body.barcode;
|
||||
const description = req.body.description;
|
||||
const value = parseFloat(req.body.value);
|
||||
const service = req.body.service ? 1 : 0;
|
||||
const registerdate = req.body.registerdate;
|
||||
const amountstock = req.body.amountstock;
|
||||
const minstock = req.body.minstock;
|
||||
const maxstock = req.body.maxstock;
|
||||
const idealstock = req.body.idealstock;
|
||||
const present = req.body.present ? 1 : 0;
|
||||
const amountplotspresent = req.body.amountplotspresent ? 1 : 0;
|
||||
const disabled = req.body.disabled ? 1 : 0;
|
||||
|
||||
execSQLQuery(`INSERT INTO products (barcode, description, value, service, registerdate, amountstock, minstock, maxstock, idealstock, present, amountplotspresent, disabled)
|
||||
VALUES (?, ?, ?, ?, now(), ?, ?, ?, ?, ?, ?, ?);`, res, req.originalUrl, [barcode, description, value, service, amountstock, minstock, maxstock, idealstock, present, amountplotspresent, disabled]);
|
||||
});
|
||||
|
||||
router.patch('/update', verifyJWT, (req, res) => {
|
||||
const idproducts = req.body.idproducts;
|
||||
const barcode = req.body.barcode;
|
||||
const description = req.body.description;
|
||||
const value = parseFloat(req.body.value);
|
||||
const service = req.body.service ? 1 : 0;
|
||||
const registerdate = req.body.registerdate;
|
||||
const amountstock = req.body.amountstock;
|
||||
const minstock = req.body.minstock;
|
||||
const maxstock = req.body.maxstock;
|
||||
const idealstock = req.body.idealstock;
|
||||
const present = req.body.present ? 1 : 0;
|
||||
const amountplotspresent = req.body.amountplotspresent ? 1 : 0;
|
||||
const disabled = req.body.disabled ? 1 : 0;
|
||||
|
||||
execSQLQuery(`UPDATE products SET
|
||||
barcode = ?,
|
||||
description = ?,
|
||||
value = ?,
|
||||
service = ?,
|
||||
amountstock = ?,
|
||||
minstock = ?,
|
||||
maxstock = ?,
|
||||
idealstock = ?,
|
||||
present = ?,
|
||||
amountplotspresent = ?,
|
||||
disabled = ?
|
||||
WHERE idproducts = ?;`, res, req.originalUrl, [barcode, description, value, service, amountstock, minstock, maxstock, idealstock, present, amountplotspresent, disabled, idproducts]);
|
||||
});
|
||||
|
||||
router.get('/getProduct/:idproducts', verifyJWT, (req, res) => {
|
||||
const idproducts = parseInt(req.params.idproducts);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM products
|
||||
WHERE idproducts = ${idproducts};`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/list', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
idproducts,
|
||||
barcode,
|
||||
description,
|
||||
concat('R$ ',format(value,2,'de_DE')) as value,
|
||||
disabled
|
||||
FROM products;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getAll', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM products;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getMySQLinSQLServerProducts', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
idproducts AS 'IDProduto',
|
||||
barcode AS 'Codigo',
|
||||
description AS 'Descricao',
|
||||
value AS 'Valor',
|
||||
case when service = 0 then false else true end AS 'Servico',
|
||||
registerdate AS 'DataCadastro',
|
||||
amountstock AS 'QtdEstoque',
|
||||
minstock AS 'QtdMinima',
|
||||
maxstock AS 'QtdMaxima',
|
||||
idealstock AS 'QtdIdeal',
|
||||
present AS 'Brinde',
|
||||
amountplotspresent AS 'qtdParcelasBrinde',
|
||||
case when disabled = 1 then true else false end as 'Desativado'
|
||||
FROM products;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getSQLServerProducts/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT * FROM ${db}Produtos;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.patch('/disable', verifyJWT, (req, res) => {
|
||||
const idproducts = parseInt(req.body.idproducts);
|
||||
execSQLQuery(`
|
||||
UPDATE products
|
||||
SET disabled = not disabled
|
||||
WHERE idproducts = ${idproducts}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region PRODUTOS VENDAS
|
||||
|
||||
router.post('/InserirProdutovenda', verifyJWT, (req, res) => {
|
||||
const description = req.body.description;
|
||||
const disabled = req.body.disabled ? 1 : 0;
|
||||
|
||||
execSQLQuery(`INSERT INTO productsale (description, disabled)
|
||||
VALUES (?, ?);`, res, req.originalUrl, [description, disabled]);
|
||||
});
|
||||
|
||||
router.patch('/AtualizarProdutovenda', verifyJWT, (req, res) => {
|
||||
const idproductsale = req.body.idproductsale;
|
||||
const description = req.body.description;
|
||||
const disabled = req.body.disabled ? 1 : 0;
|
||||
execSQLQuery(`UPDATE productsale SET
|
||||
description = ?,
|
||||
disabled = ?
|
||||
WHERE idproductsale = ?;`, res, req.originalUrl, [description, disabled, idproductsale]);
|
||||
});
|
||||
|
||||
router.get('/getProductSale/:idproductsale', verifyJWT, (req, res) => {
|
||||
const idproductsale = parseInt(req.params.idproductsale);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM productsale
|
||||
WHERE idproductsale = ${idproductsale};`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getAllProductSale', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM productsale;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getMySQLinSQLServerProductSale', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
idproductsale AS 'IDProduto',
|
||||
description AS 'Descricao',
|
||||
case when disabled = 1 then true else false end as 'Desativado'
|
||||
FROM productsale;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getSQLServerProductSale/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT * FROM ${db}ProdutosVendas;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.patch('/disableProductSale', verifyJWT, (req, res) => {
|
||||
const idproductsale = parseInt(req.body.idproductsale);
|
||||
execSQLQuery(`UPDATE productsale
|
||||
SET disabled = not disabled
|
||||
WHERE idproductsale = ${idproductsale};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
//#endregion
|
||||
|
||||
return router;
|
||||
}
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
require('../connections/mysql-server');
|
||||
require('../helpers/CheckToken');
|
||||
require('../helpers/config');
|
||||
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const bodyParser = require('body-parser');
|
||||
|
||||
router.use(bodyParser.urlencoded({
|
||||
limit: '10mb',
|
||||
extended: true
|
||||
}
|
||||
));
|
||||
router.use(bodyParser.json({
|
||||
limit: '10mb',
|
||||
extended: true
|
||||
}));
|
||||
|
||||
var routes = function () {
|
||||
|
||||
router.get('/listLotes', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
qrlotes`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/listQRcodes', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
qrcodes`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/listLotesByID/:id', verifyJWT, (req, res) => {
|
||||
var id = req.params.id;
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
qrlotes
|
||||
WHERE
|
||||
idqrlotes = ${id}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/listQRcodesByAny/:field/:value', verifyJWT, (req, res) => {
|
||||
var field = req.params.field;
|
||||
var value = req.params.value;
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
qrcodes
|
||||
WHERE
|
||||
${field} = '${value}'`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.post('/insertLotes', verifyJWT, (req, res) => {
|
||||
const qtdepack = req.body.qtdepack;
|
||||
const date = req.body.date;
|
||||
const description = req.body.description;
|
||||
execSQLQuery(`INSERT INTO qrlotes(qtdepack, date, description) VALUES (${qtdepack},'${date}', "${description}");`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.post('/insertQRcodes', verifyJWT, (req, res) => {
|
||||
const idqrlotes = req.body.idqrlotes;
|
||||
const idusers = req.body.idusers;
|
||||
const key = req.body.key;
|
||||
const ordem = req.body.ordem;
|
||||
execSQLQuery(`
|
||||
INSERT INTO qrcodes(idqrlotes, idusers, _key, ordem)
|
||||
VALUES
|
||||
(${idqrlotes},${idusers}, '${key}', ${ordem});`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.patch('/updateLotes', verifyJWT, (req, res) => {
|
||||
const idqrlotes = req.body.idqrlotes;
|
||||
const qtdepack = req.body.qtdepack;
|
||||
const date = req.body.date;
|
||||
execSQLQuery(`UPDATE qrlotes SET qtdepack = ${qtdepack}, date = '${date}' WHERE idqrlotes = ${idqrlotes};`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.patch('/updateQRcodes', verifyJWT, (req, res) => {
|
||||
const idqrcodes = req.body.idqrcodes;
|
||||
const idqrlotes = req.body.idqrlotes;
|
||||
const idusers = req.body.idusers;
|
||||
const key = req.body.key;
|
||||
const ordem = req.body.ordem;
|
||||
execSQLQuery(`
|
||||
UPDATE qrcodes SET
|
||||
idqrlotes = ${idqrlotes},
|
||||
idusers = ${idusers},
|
||||
_key = ${key},
|
||||
ordem = ${ordem}
|
||||
WHERE
|
||||
idqrcodes = ${idqrcodes};`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.post('/generateTxt', verifyJWT, (req, res) => {
|
||||
var idqrlotes = req.body.idqrlotes;
|
||||
var name = req.body.name;
|
||||
var content = req.body.content;
|
||||
var fs = require('fs');
|
||||
var path = Variables('src_media') + "qrlotes/" + idqrlotes;
|
||||
fs.mkdirSync(path);
|
||||
fs.writeFile(path + "/" + name + ".txt", content, function (erro) {
|
||||
if (erro) {
|
||||
throw erro;
|
||||
}
|
||||
else {
|
||||
res.send(true);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/save', verifyJWT, (req, res) => {
|
||||
var base64ToImage = require('base64-to-image');
|
||||
var fs = require('fs');
|
||||
var img64 = req.body.src;
|
||||
var idqrlotes = req.body.idqrlotes;
|
||||
var numb = req.body.itens;
|
||||
var Name = 'qr_' + idqrlotes + '_' + numb;
|
||||
var Obj = {'fileName': Name, 'type':'jpg'};
|
||||
var path = Variables('src_media') + "qrlotes/" + idqrlotes;
|
||||
if(!fs.existsSync(path)) {
|
||||
fs.mkdirSync(path);
|
||||
}
|
||||
path += '/';
|
||||
if(base64ToImage(img64,path,Obj)) {
|
||||
res.send(true)
|
||||
}
|
||||
else {
|
||||
res.send(false);
|
||||
}
|
||||
//res.send("images uploaded with success!");
|
||||
});
|
||||
|
||||
router.get('/downloadPack/:idqrlotes', verifyJWT, (req, res) => {
|
||||
var idqrlotes = req.params.idqrlotes;
|
||||
var path = Variables('src_media') + "qrlotes/" + idqrlotes;
|
||||
var fs = require("fs");
|
||||
if(!fs.existsSync(path + "/qrlote_" + idqrlotes + '.zip')) {
|
||||
require('all-unpacker').pack(path + "/qrlote_" + idqrlotes + '.zip', {
|
||||
targetDir: path + "/*",
|
||||
}, function(err, files, text) {
|
||||
if (err) return console.error(err);
|
||||
if (files) console.log('files', files);
|
||||
if (text) {
|
||||
console.log('text', text);
|
||||
console.log("compactado");
|
||||
res.send(true) ;
|
||||
};
|
||||
});
|
||||
}
|
||||
else {
|
||||
res.send(true);
|
||||
}
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
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('/:idexercisequestions/getAnswers', verifyJWT, function (req, res, next) {
|
||||
const idexercisequestions = parseInt(req.params.idexercisequestions);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exerciseanswers
|
||||
WHERE idexercisequestions = ${idexercisequestions};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getQuestionByExercise/:idexercises', verifyJWT, function (req, res, next) {
|
||||
const idexercises = parseInt(req.params.idexercises);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exercisequestions
|
||||
WHERE idexercises = ${idexercises};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getQuestion/:idexercises', verifyJWT, function (req, res, next) {
|
||||
const idexercises = parseInt(req.params.idexercises);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM exercisequestions
|
||||
WHERE idexercises = ${idexercises};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insert', verifyJWT, (req, res) => {
|
||||
const content = req.body.content;
|
||||
const idexercises = parseInt(req.body.idexercises);
|
||||
execSQLQuery(`INSERT INTO exercisequestions (idexercises, content)
|
||||
VALUES (?, ?);`, res, req.originalUrl, [idexercises, content]);
|
||||
});
|
||||
|
||||
router.patch('/update', verifyJWT, function (req, res) {
|
||||
const idexercisequestions = parseInt(req.body.idexercisequestions);
|
||||
const content = req.body.content;
|
||||
const idexercises = parseInt(req.body.idexercises);
|
||||
execSQLQuery(`UPDATE exercisequestions SET
|
||||
content = ?,
|
||||
idexercises = ?
|
||||
WHERE idexercisequestions = ?;`, res, req.originalUrl, [content, idexercises, idexercisequestions]);
|
||||
});
|
||||
|
||||
router.patch('/removerPerguntas', verifyJWT, function (req, res, next) {
|
||||
let idexercisequestions = req.body.idexercisequestions;
|
||||
let ids = idexercisequestions.split(',');
|
||||
index1 = 0;
|
||||
removeQuestion(ids, res);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
index1 = 0;
|
||||
|
||||
function removeQuestion(ids, res) {
|
||||
if (index1 < ids.length - 1) {
|
||||
let sqlQuery = `UPDATE exercisequestions SET idexercises = null WHERE idexercisequestions = ${ids[index1]};`;
|
||||
console.log(sqlQuery);
|
||||
mysqlConnection.query(sqlQuery, function (error, results, fields) {
|
||||
console.log("AnswerID " + ids[index1] + " removed");
|
||||
index1++;
|
||||
removeQuestion(ids, res);
|
||||
});
|
||||
}
|
||||
else {
|
||||
res.send("questions removed");
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,670 @@
|
|||
require('../connections/mysql-server');
|
||||
require('../connections/sql-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 () {
|
||||
|
||||
function CheckFiltros(Filtro, reference_db, callback) {
|
||||
let Condicao1 = "";
|
||||
let Condicao2 = "";
|
||||
if (Filtro == 0) {
|
||||
callback(Condicao1, Condicao2);
|
||||
}
|
||||
else if (Filtro == 1) {
|
||||
Condicao1 = `where R.Cancelada = 'Sim'`;
|
||||
callback(Condicao1, Condicao2);
|
||||
}
|
||||
else if (Filtro == 2) {
|
||||
Condicao1 = `where R.Cancelada = 'Não'`;
|
||||
callback(Condicao1, Condicao2);
|
||||
}
|
||||
else if (Filtro == 3) {
|
||||
Condicao2 = `where T.Cursos = T.Concluidos`;
|
||||
callback(Condicao1, Condicao2);
|
||||
}
|
||||
else if (Filtro == 4 || Filtro == 5) {
|
||||
let MySQLQuery = `select distinct group_concat(sc.idusers) as 'Matriculas' from stepclass sc inner join units un on un.idunits = sc.idunits where un.reference_db = '${reference_db.replace('.dbo.', '')}';`;
|
||||
mysqlConnection.query(MySQLQuery, function (error, Matriculas, fields) {
|
||||
Condicao2 = `where T.Matricula ${(Filtro == 5) ? 'not' : ''} in (${Matriculas[0]['Matriculas']})`
|
||||
callback(Condicao1, Condicao2);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function LoopSQLMatriculas(Unidades, Index, SQLServerQuery, DataInicial, DataFinal, Filtro, callback) {
|
||||
if (Index < Unidades.length) {
|
||||
CheckFiltros(Filtro, Unidades[Index], function(Condicao1, Condicao2) {
|
||||
if (Index > 0) {
|
||||
SQLServerQuery += `union all
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `select * from (
|
||||
select
|
||||
R.Matricula, R.Aluno, R.Data, R.Unidade, R.ValorTotal, R.ValorPrimeira, R.Mensalidade, R.QTDParcela, R.Parcelas, R.ValorParcela, R.TotalMaterial, R.TotalSMaterial, R.TotalCMaterial, R.Cancelada,
|
||||
count(R.IDCurso) as 'Cursos',
|
||||
sum(case when R.Concluiu = 1 then 1 else 0 end) as 'Concluidos',
|
||||
(select top 1 cu.NomeVersao from ${Unidades[Index]}TreinandosTurmas tt inner join ${Unidades[Index]}Cursos cu on cu.Codigo = tt.IDCurso and cu.IDTipoCurso in (3,5) where tt.IDMatricula = R.Matricula) as 'Curso'
|
||||
from (
|
||||
select distinct
|
||||
tt.IDMatricula as 'Matricula',
|
||||
cl.Nome as 'Aluno',
|
||||
convert(varchar, mt.DataMatricula, 103) as 'Data',
|
||||
'${Unidades[Index].replace('.dbo.', '').replace('SGP', '')}' as 'Unidade',
|
||||
ROUND(mt.ValorTotal, 2) as 'ValorTotal',
|
||||
ROUND(pm.ValorMatricula, 2) as 'ValorPrimeira',
|
||||
ROUND(pm.ValorParcela, 2) as 'Mensalidade',
|
||||
pm.QTDParcela,
|
||||
A.Parcelas,
|
||||
ROUND(A.ValorParcela, 2) as 'ValorParcela',
|
||||
ROUND(A.Parcelas * A.ValorParcela, 2) as 'TotalMaterial',
|
||||
ROUND(pm.QTDParcela * pm.ValorParcela, 2) as 'TotalSMaterial',
|
||||
ROUND((pm.QTDParcela * pm.ValorParcela) + (A.Parcelas * A.ValorParcela), 2) as 'TotalCMaterial',
|
||||
case when pr.TipoRequerimento = 'C' then 'Sim' else 'Não' end as 'Cancelada',
|
||||
tt.Concluiu,
|
||||
tt.IDCurso
|
||||
from ${Unidades[Index]}TreinandosTurmas tt
|
||||
inner join ${Unidades[Index]}Matriculas mt on mt.IDMatricula = tt.IDMatricula
|
||||
inner join ${Unidades[Index]}Clientes cl on cl.IDCliente = tt.IDTreinando
|
||||
inner join ${Unidades[Index]}PreMatricula pm on pm.IDPreMatricula = mt.IDPreMatricula
|
||||
left join (select R.*, R.Parcelas * R.ValorParcela as 'TotalMaterial' from (select IDPreMatricula, count(*) as 'Parcelas', ValorParcela from ${Unidades[Index]}PreMatriculaFinanceiroMaterial group by IDPreMatricula, ValorParcela) R) A on A.IDPreMatricula = pm.IDPreMatricula
|
||||
left join ${Unidades[Index]}PreRequerimento pr on pr.IDTreinando = tt.IDTreinando
|
||||
where ${(!DataInicial || !DataFinal) ? '1=1' : "mt.DataMatricula between '" + DataInicial + "' and '" + DataFinal + "'"}) R
|
||||
${Condicao1}
|
||||
group by R.Matricula, R.Aluno, R.Data, R.Unidade, R.ValorTotal, R.ValorPrimeira, R.Mensalidade, R.QTDParcela, R.Parcelas, R.ValorParcela, R.TotalMaterial, R.TotalSMaterial, R.TotalCMaterial, R.Cancelada) T
|
||||
${Condicao2}
|
||||
`;
|
||||
Index++;
|
||||
LoopSQLMatriculas(Unidades, Index, SQLServerQuery, DataInicial, DataFinal, Filtro, callback);
|
||||
});
|
||||
}
|
||||
else {
|
||||
callback(SQLServerQuery);
|
||||
}
|
||||
}
|
||||
|
||||
router.post('/getMatriculas', verifyJWT, (req, res) => {
|
||||
const Unidades = req.body.Unidades;
|
||||
const DataInicial = req.body.DataInicial;
|
||||
const DataFinal = req.body.DataFinal;
|
||||
const Filtro = parseInt(req.body.Filtro);
|
||||
LoopSQLMatriculas(Unidades, 0, "", DataInicial, DataFinal, Filtro, function(SQLServerQuery) {
|
||||
SQLServerQuery += `order by T.Matricula asc;`;
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/getTickets', verifyJWT, (req, res) => {
|
||||
const Unidades = req.body.Unidades;
|
||||
const DataInicial = req.body.DataInicial;
|
||||
const DataFinal = req.body.DataFinal;
|
||||
|
||||
let SQLServerQuery = ``;
|
||||
for (let i = 0; i < Unidades.length; i++) {
|
||||
if (i > 0) {
|
||||
SQLServerQuery += `union all
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `select A.Media, B.Moda, C.*, D.MediaMatricula from (
|
||||
select
|
||||
round(sum(pp.Valor) / count(pp.Valor), 2) as 'Media'
|
||||
from ${Unidades[i]}PreMatriculaParcelas pp
|
||||
inner join ${Unidades[i]}PreMatricula pm on pm.IDPreMatricula = pp.IDPreMatricula
|
||||
inner join ${Unidades[i]}Matriculas mt on mt.IDPreMatricula = pm.IDPreMatricula
|
||||
where pp.Material = 0 and ${(!DataInicial || !DataFinal) ? '1=1' : "mt.DataMatricula between '" + DataInicial + "' and '" + DataFinal + "'"}) A inner join (
|
||||
select top 1
|
||||
round(pp.Valor, 2) as 'Moda'
|
||||
from ${Unidades[i]}PreMatriculaParcelas pp
|
||||
inner join ${Unidades[i]}PreMatricula pm on pm.IDPreMatricula = pp.IDPreMatricula
|
||||
inner join ${Unidades[i]}Matriculas mt on mt.IDPreMatricula = pm.IDPreMatricula
|
||||
where pp.Material = 0 and ${(!DataInicial || !DataFinal) ? '1=1' : "mt.DataMatricula between '" + DataInicial + "' and '" + DataFinal + "'"}
|
||||
group by pp.Valor
|
||||
order by count(pp.Valor) desc) B on 1 = 1
|
||||
inner join (
|
||||
select
|
||||
round(pp.Valor, 2) as 'Valor',
|
||||
'${Unidades[i].replace('.dbo.', '').replace('SGP', '')}' as 'Unidade'
|
||||
from ${Unidades[i]}PreMatriculaParcelas pp
|
||||
inner join ${Unidades[i]}PreMatricula pm on pm.IDPreMatricula = pp.IDPreMatricula
|
||||
inner join ${Unidades[i]}Matriculas mt on mt.IDPreMatricula = pm.IDPreMatricula
|
||||
where pp.Material = 0 and ${(!DataInicial || !DataFinal) ? '1=1' : "mt.DataMatricula between '" + DataInicial + "' and '" + DataFinal + "'"}
|
||||
) C on 1 = 1
|
||||
inner join (
|
||||
select
|
||||
round(sum(pm.ValorMatricula) / count(pm.ValorMatricula), 2) as 'MediaMatricula'
|
||||
from ${Unidades[i]}PreMatricula pm
|
||||
inner join ${Unidades[i]}Matriculas mt on mt.IDPreMatricula = pm.IDPreMatricula
|
||||
where ${(!DataInicial || !DataFinal) ? '1=1' : "mt.DataMatricula between '" + DataInicial + "' and '" + DataFinal + "'"}
|
||||
) D on 1 = 1
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `order by C.Unidade asc, C.Valor asc;`;
|
||||
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/getCancelamentos', verifyJWT, (req, res) => {
|
||||
const Unidades = req.body.Unidades;
|
||||
const DataInicial = req.body.DataInicial;
|
||||
const DataFinal = req.body.DataFinal;
|
||||
|
||||
let SQLServerQuery = ``;
|
||||
for (let i = 0; i < Unidades.length; i++) {
|
||||
if (i > 0) {
|
||||
SQLServerQuery += `union all
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `select distinct
|
||||
cl.Nome as 'Aluno',
|
||||
pr.IDMatricula as 'Matricula',
|
||||
convert(varchar, pr.Data, 103) as 'Data',
|
||||
mv.DescricaoMotivo as 'Motivo',
|
||||
pr.DescricaoMotivo,
|
||||
'${Unidades[i].replace('.dbo.', '').replace('SGP', '')}' as 'Unidade'
|
||||
from ${Unidades[i]}PreRequerimento pr
|
||||
inner join ${Unidades[i]}TreinandosTurmas tt on tt.IDTreinando = pr.IDTreinando
|
||||
inner join ${Unidades[i]}Clientes cl on cl.IDCliente = pr.IDTreinando
|
||||
inner join ${Unidades[i]}Motivos mv on mv.IDMotivo = pr.IDMotivo
|
||||
where pr.TipoRequerimento = 'C' and ${(!DataInicial || !DataFinal) ? '1=1' : "pr.Data between '" + DataInicial + "' and '" + DataFinal + "'"}
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `order by Unidade asc;`;
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/getVisitas', verifyJWT, (req, res) => {
|
||||
const Unidades = req.body.Unidades;
|
||||
const DataInicial = req.body.DataInicial;
|
||||
const DataFinal = req.body.DataFinal;
|
||||
|
||||
let SQLServerQuery = ``;
|
||||
for (let i = 0; i < Unidades.length; i++) {
|
||||
if (i > 0) {
|
||||
SQLServerQuery += `union all
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `select distinct
|
||||
ra.Descricao as 'Resultado',
|
||||
mt.IDMatricula,
|
||||
fa.Descricao as 'FormaAtendimento',
|
||||
ve.Descricao as 'Divulgacao',
|
||||
pv.Descricao as 'Curso',
|
||||
fu.Nome as 'Funcionario',
|
||||
ca.Nome as 'Cliente',
|
||||
convert(varchar, ca.Data, 103) + ' ' + convert(varchar, ca.Hora, 8) as 'Data',
|
||||
'${Unidades[i].replace('.dbo.', '').replace('SGP', '')}' as 'Unidade'
|
||||
from ${Unidades[i]}ControleAtendimento ca
|
||||
inner join ${Unidades[i]}FormasAtendimento fa on fa.IDFormaAtendimento = ca.IDFormaAtendimento
|
||||
inner join ${Unidades[i]}Veiculos ve on ve.IDVeiculo = ca.IDVeiculo
|
||||
left join ${Unidades[i]}ProdutosVendas pv on pv.IDProduto = ca.IDProduto
|
||||
inner join ${Unidades[i]}Funcionarios fu on fu.IDFuncionario = ca.IDFuncionario
|
||||
left join ${Unidades[i]}Atendimentos at on at.IdAtendimento = ca.IDAtendimento
|
||||
left join ${Unidades[i]}ResultadosAtendimento ra on ra.IDResultadoAtendimento = at.IDResultadoAtendimento
|
||||
left join ${Unidades[i]}Matriculas mt on (mt.IDAtendimento + 1) = at.IdAtendimento
|
||||
where ${(!DataInicial || !DataFinal) ? '1=1' : "ca.Data between '" + DataInicial + "' and '" + DataFinal + "'"}
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `order by Unidade asc;`;
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/getAlunosIrregulares', verifyJWT, (req, res) => {
|
||||
const Unidades = req.body.Unidades;
|
||||
let SQLServerQuery = ``;
|
||||
for (let i = 0; i < Unidades.length; i++) {
|
||||
if (i > 0) {
|
||||
SQLServerQuery += `union all
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `
|
||||
select distinct
|
||||
mt.IDMatricula as 'Matricula',
|
||||
c.Nome,
|
||||
case when tt.Faltoso = 0 then 'Não' else 'Sim' end as 'Faltoso',
|
||||
case when tt.Desistente = 0 then 'Não' else 'Sim' end as 'Desistente',
|
||||
case when tt.Concluiu = 0 then 'Não' else 'Sim' end as 'Concluiu',
|
||||
'${Unidades[i].replace('.dbo.', '').replace('SGP', '')}' as 'Unidade'
|
||||
from ${Unidades[i]}MatriculasTreinandos mt
|
||||
inner join ${Unidades[i]}Clientes c ON mt.IDTreinando = c.IDCliente
|
||||
inner join ${Unidades[i]}TreinandosTurmas tt on tt.IDTreinando = mt.IDTreinando
|
||||
where tt.Faltoso = 1 or tt.Concluiu = 1 or tt.Desistente = 1
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `order by Unidade asc;`;
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAlunosDesativados', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`select
|
||||
ad.idusers as 'Matricula',
|
||||
ad.idunits,
|
||||
un.unityname as 'Unidade',
|
||||
ad.desativado,
|
||||
case when ad.desativado = 1 then 'Sim' else 'Não' end as 'DesativadoT'
|
||||
from alunosdesativados ad
|
||||
inner join units un on un.idunits = ad.idunits;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAlunosDesativadosP', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`select
|
||||
uh.idusers as 'Matricula',
|
||||
uh.idunits,
|
||||
un.unityname as 'Unidade',
|
||||
uh.disabled as 'desativado',
|
||||
case when uh.disabled = 1 then 'Sim' else 'Não' end as 'DesativadoT'
|
||||
from usershomework uh
|
||||
inner join units un on un.idunits = uh.idunits;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/getAlunosCursos', verifyJWT, (req, res) => {
|
||||
const Unidades = req.body.Unidades;
|
||||
const DataInicial = req.body.DataInicial;
|
||||
const DataFinal = req.body.DataFinal;
|
||||
|
||||
let SQLServerQuery = ``;
|
||||
for (let i = 0; i < Unidades.length; i++) {
|
||||
if (i > 0) {
|
||||
SQLServerQuery += `union all
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `select
|
||||
S.Curso,
|
||||
S.Alunos,
|
||||
S.Unidade,
|
||||
round((convert(decimal,S.Alunos, 2) / S.Total) * 100, 2) as 'Porcentagem'
|
||||
from (
|
||||
select distinct
|
||||
co.Codigo as 'IDCurso',
|
||||
co.NomeVersao as 'Curso',
|
||||
count(tt.IDCurso) as 'Alunos',
|
||||
'${Unidades[i].replace('.dbo.', '').replace('SGP', '')}' as 'Unidade',
|
||||
(select sum(T.Alunos) as 'Total' from (
|
||||
select distinct
|
||||
co.Codigo as 'IDCurso',
|
||||
count(tt.IDCurso) as 'Alunos'
|
||||
from ${Unidades[i]}TreinandosTurmas tt
|
||||
inner join ${Unidades[i]}Cursos co on co.Codigo = tt.IDCurso and co.IDTipoCurso in (3,5)
|
||||
inner join ${Unidades[i]}Matriculas ma on ma.IDMatricula = tt.IDMatricula and ma.DataMatricula >= '${DataInicial}' and ma.DataMatricula <= '${DataFinal}'
|
||||
group by co.NomeVersao, co.Codigo) T) as 'Total'
|
||||
from ${Unidades[i]}TreinandosTurmas tt
|
||||
inner join ${Unidades[i]}Cursos co on co.Codigo = tt.IDCurso and co.IDTipoCurso in (3,5)
|
||||
inner join ${Unidades[i]}Matriculas ma on ma.IDMatricula = tt.IDMatricula and ma.DataMatricula >= '${DataInicial}' and ma.DataMatricula <= '${DataFinal}'
|
||||
group by co.NomeVersao, co.Codigo) S
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `order by Unidade asc;`;
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
|
||||
router.post('/getAlunosAtivos', (req, res) => {
|
||||
let Unidades = req.body.Unidades;
|
||||
const CruzaMySQL = req.body.cruzamysql;
|
||||
const Cancelada = req.body.cancelada ? 1 : 0;
|
||||
const Suspensa = req.body.suspensa ? 1 : 0;
|
||||
const Desistente = req.body.desistente ? 1 : 0;
|
||||
const Faltoso = req.body.faltoso ? 1 : 0;
|
||||
const Concluiu = req.body.concluiu ? 1 : 0;
|
||||
const DataInicial = req.body.DataInicial;
|
||||
const DataFinal = req.body.DataFinal;
|
||||
|
||||
let NovaUnidades = [];
|
||||
for (let i = 0; i < Unidades.length; i++) {
|
||||
NovaUnidades.push({"db": Unidades[i], "TabelaDatas": [], "TabelaSQL": "(select * from ("});
|
||||
}
|
||||
|
||||
GetUltimaAulaMatriculas(0, NovaUnidades, function(newUnidades) {
|
||||
let SQLServerQuery = ``;
|
||||
for (let i = 0; i < Unidades.length; i++) {
|
||||
if (i > 0) {
|
||||
SQLServerQuery += `union all
|
||||
`;
|
||||
}
|
||||
if (!CruzaMySQL) {
|
||||
SQLServerQuery += `select ROW_NUMBER() OVER(ORDER BY GG.Unidade ASC, GG.Matricula ASC) AS 'N', * from (
|
||||
select distinct
|
||||
T.Unidade,
|
||||
T.IDMatricula as 'Matricula',
|
||||
T.Nome,
|
||||
T.Responsavel,
|
||||
T.Endereco,
|
||||
T.Fone,
|
||||
T.UltimaData
|
||||
from (
|
||||
select
|
||||
'${NovaUnidades[i]['db'].replace('.dbo.', '').replace('SGP', '')}' as 'Unidade',
|
||||
*,
|
||||
case when R.CH_Consumida >= R.CargaHorariaTotal then 1 else 0 end as 'Concluiu'
|
||||
from (
|
||||
select
|
||||
tt.IDMatricula,
|
||||
tt.IDTreinando,
|
||||
tt.IDCurso,
|
||||
tu.IdTurma,
|
||||
(select re.Nome from ${NovaUnidades[i]['db']}Clientes re where re.IDCliente = mt.IDClienteResponsavel) as 'Responsavel',
|
||||
cl.Endereco,
|
||||
case
|
||||
when cl.Celular != '' then cl.Celular
|
||||
when cl.FoneResidencial != '' then cl.FoneResidencial
|
||||
when cl.FoneRecado != '' then cl.FoneRecado
|
||||
when cl.FoneComercial != '' then cl.FoneComercial
|
||||
end as 'Fone',
|
||||
cl.Nome,
|
||||
tu.Codigo,
|
||||
tu.DataInicio,
|
||||
(select top(1) tc.Data from ${NovaUnidades[i]['db']}TurmasCalendario tc where tc.IdTurma = tt.CodigoTurma and tc.CodigoCurso = tt.IDCurso order by tc.IdTurmasCalendario asc) as 'PrimeiraAula',
|
||||
tu.DataTermino,
|
||||
(select top(1) tc.Data from ${NovaUnidades[i]['db']}TurmasCalendario tc where tc.IdTurma = tt.CodigoTurma and tc.CodigoCurso = tt.IDCurso order by tc.IdTurmasCalendario desc) as 'UltimaAula',
|
||||
cu.CH_Individual,
|
||||
(select (count(*) * 2) from ${NovaUnidades[i]['db']}Chamadas ch where ch.IDTurma = tt.CodigoTurma and ch. IDCurso = tt.IDCurso) as 'CH_Consumida',
|
||||
(select top(1) ch.Data from ${NovaUnidades[i]['db']}Chamadas ch where ch.IDTurma = tt.CodigoTurma and ch. IDCurso = tt.IDCurso order by ch.IDChamadas desc) as 'UltimaChamada',
|
||||
H_${i}.UltimaData,
|
||||
case when pr.IDPreRequerimento is not null then 1 else 0 end as 'Trancada',
|
||||
tt.Desistente,
|
||||
tt.Faltoso,
|
||||
tu.Cancelada,
|
||||
tu.Suspensa,
|
||||
tu.CargaHorariaTotal,
|
||||
mt.DataMatricula
|
||||
from ${NovaUnidades[i]['db']}TreinandosTurmas tt
|
||||
inner join ${NovaUnidades[i]['db']}Turmas tu on tu.IdTurma = tt.CodigoTurma
|
||||
inner join ${NovaUnidades[i]['db']}Cursos cu on cu.Codigo = tt.IDCurso
|
||||
inner join ${NovaUnidades[i]['db']}Clientes cl on cl.IDCliente = tt.IDTreinando
|
||||
inner join ${NovaUnidades[i]['db']}Matriculas mt on mt.IDMatricula = tt.IDMatricula
|
||||
left join ${NovaUnidades[i]['db']}PreRequerimento pr on pr.IDMatricula = tt.IDMatricula and pr.IDTurma = tt. CodigoTurma and pr.TipoRequerimento = 'T'
|
||||
left join ${NovaUnidades[i]['TabelaSQL']} on H_${i}.Matricula = tt.IDMatricula) R
|
||||
) T
|
||||
where (T.Cancelada = ${Cancelada} and T.Suspensa = ${Suspensa} and T.Desistente = ${Desistente} and T.Faltoso = ${Faltoso} and T.Concluiu = ${Concluiu} and T.DataMatricula < '${DataFinal}') or
|
||||
T.UltimaData between '${DataInicial}' and '${DataFinal}'
|
||||
) GG
|
||||
`;
|
||||
}
|
||||
else {
|
||||
SQLServerQuery += `select ROW_NUMBER() OVER(ORDER BY GG.Unidade ASC, GG.Matricula ASC) AS 'N', * from (
|
||||
select distinct
|
||||
T.Unidade,
|
||||
T.IDMatricula as 'Matricula',
|
||||
T.Nome,
|
||||
T.Responsavel,
|
||||
T.Endereco,
|
||||
T.Fone
|
||||
from (
|
||||
select
|
||||
'${NovaUnidades[i]['db'].replace('.dbo.', '').replace('SGP', '')}' as 'Unidade',
|
||||
*,
|
||||
case when R.CH_Sistema >= R.CargaHorariaTotal then 1 else 0 end as 'Concluiu'
|
||||
from (
|
||||
select
|
||||
tt.IDMatricula,
|
||||
tt.IDTreinando,
|
||||
tt.IDCurso,
|
||||
tu.IdTurma,
|
||||
(select re.Nome from ${NovaUnidades[i]['db']}Clientes re where re.IDCliente = mt.IDClienteResponsavel) as 'Responsavel',
|
||||
cl.Endereco,
|
||||
case
|
||||
when cl.Celular != '' then cl.Celular
|
||||
when cl.FoneResidencial != '' then cl.FoneResidencial
|
||||
when cl.FoneRecado != '' then cl.FoneRecado
|
||||
when cl.FoneComercial != '' then cl.FoneComercial
|
||||
end as 'Fone',
|
||||
cl.Nome,
|
||||
tu.Codigo,
|
||||
tu.DataInicio,
|
||||
(select top(1) tc.Data from ${NovaUnidades[i]['db']}TurmasCalendario tc where tc.IdTurma = tt.CodigoTurma and tc.CodigoCurso = tt.IDCurso order by tc.IdTurmasCalendario asc) as 'PrimeiraAula',
|
||||
tu.DataTermino,
|
||||
(select top(1) tc.Data from ${NovaUnidades[i]['db']}TurmasCalendario tc where tc.IdTurma = tt.CodigoTurma and tc.CodigoCurso = tt.IDCurso order by tc.IdTurmasCalendario desc) as 'UltimaAula',
|
||||
cu.CH_Individual,
|
||||
(select (count(*) * 2) from ${NovaUnidades[i]['db']}Chamadas ch where ch.IDTurma = tt.CodigoTurma and ch. IDCurso = tt.IDCurso) as 'CH_Consumida',
|
||||
(select top(1) ch.Data from ${NovaUnidades[i]['db']}Chamadas ch where ch.IDTurma = tt.CodigoTurma and ch. IDCurso = tt.IDCurso order by ch.IDChamadas desc) as 'UltimaChamada',
|
||||
H_${i}.UltimaData,
|
||||
H_${i}.PrimeiraData,
|
||||
H_${i}.CH_Sistema,
|
||||
case when pr.IDPreRequerimento is not null then 1 else 0 end as 'Trancada',
|
||||
tt.Desistente,
|
||||
tt.Faltoso,
|
||||
tu.Cancelada,
|
||||
tu.Suspensa,
|
||||
tu.CargaHorariaTotal,
|
||||
mt.DataMatricula
|
||||
from ${NovaUnidades[i]['db']}TreinandosTurmas tt
|
||||
left join ${NovaUnidades[i]['db']}Turmas tu on tu.IdTurma = tt.CodigoTurma
|
||||
inner join ${NovaUnidades[i]['db']}Cursos cu on cu.Codigo = tt.IDCurso
|
||||
left join ${NovaUnidades[i]['db']}ProgramaTreinamentoCursos pc on pc.CodigoCurso = cu.Codigo
|
||||
left join ${NovaUnidades[i]['db']}ProgramaTreinamento pt on pt.Codigo = pc.Codigo and pt.Desativado = 0
|
||||
inner join ${NovaUnidades[i]['db']}Clientes cl on cl.IDCliente = tt.IDTreinando
|
||||
left join ${NovaUnidades[i]['db']}Matriculas mt on mt.IDMatricula = tt.IDMatricula
|
||||
left join ${NovaUnidades[i]['db']}PreRequerimento pr on pr.IDMatricula = tt.IDMatricula and pr.IDTurma = tt. CodigoTurma and pr.TipoRequerimento = 'T'
|
||||
left join ${NovaUnidades[i]['TabelaSQL']} on H_${i}.Matricula = tt.IDMatricula) R
|
||||
) T
|
||||
where (T.Cancelada = ${Cancelada} and T.Suspensa = ${Suspensa} and T.Desistente = ${Desistente} and T.Faltoso = ${Faltoso} and T.Concluiu = ${Concluiu} and T.DataMatricula < '${DataFinal}')
|
||||
${(Concluiu == 1) ? `` : `or ((T.PrimeiraData <= '${DataInicial}' and T.UltimaData >= '${DataFinal}') or
|
||||
(T.PrimeiraData between '${DataInicial}' and '${DataFinal}') or
|
||||
(T.UltimaData between '${DataInicial}' and '${DataFinal}') or
|
||||
(T.PrimeiraData between '${DataInicial}' and '${DataFinal}' and T.UltimaData >= '${DataFinal}') or
|
||||
(T.UltimaData between '${DataInicial}' and '${DataFinal}' and T.PrimeiraData <= '${DataInicial}')
|
||||
)`}) GG
|
||||
`;
|
||||
}
|
||||
}
|
||||
SQLServerQuery += `order by GG.Unidade asc, GG.Matricula asc;`;
|
||||
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
});
|
||||
|
||||
function GetUltimaAulaMatriculas(Index, Unidades, callback) {
|
||||
if (Index < Unidades.length) {
|
||||
let SQLQuery = `select
|
||||
sc.idusers,
|
||||
max(date_format(sc.insert_date, '%Y-%m-%d')) as 'UltimaAula'
|
||||
from stepclass sc
|
||||
inner join units un on un.idunits = sc.idunits
|
||||
where un.reference_db = '${Unidades[Index]['db'].replace('.dbo.', '')}'
|
||||
group by sc.idusers;`;
|
||||
let newSQLQuery = `select
|
||||
sc.idusers,
|
||||
tc.idtraineeprogram,
|
||||
(count(sc.insert_date) * 2) as 'CH_Consumida',
|
||||
min(date_format(sc.insert_date, '%Y-%m-%d')) as 'PrimeiraAula',
|
||||
max(date_format(sc.insert_date, '%Y-%m-%d')) as 'UltimaAula'
|
||||
from stepclass sc
|
||||
inner join classes cl on cl.idclasses = sc.idclasses
|
||||
inner join traineeprogramcourses tc on tc.idcourses = cl.idcourses
|
||||
inner join traineeprogram tp on tp.idtraineeprogram = tc.idtraineeprogram and tp.disabled = 0
|
||||
inner join units un on un.idunits = sc.idunits
|
||||
where un.reference_db = '${Unidades[Index]['db'].replace('.dbo.', '')}'
|
||||
group by sc.idusers, tc.idtraineeprogram;`;
|
||||
mysqlConnection.query(newSQLQuery, function (error, Datas, fields) {
|
||||
Unidades[Index]['TabelaDatas'] = Datas;
|
||||
for (let i = 0; i < Datas.length; i++) {
|
||||
if (i > 0)
|
||||
Unidades[Index]['TabelaSQL'] += `union all `;
|
||||
Unidades[Index]['TabelaSQL'] += `select '${Datas[i]['idusers']}' as 'Matricula', '${Datas[i]['PrimeiraAula']}' as 'PrimeiraData', '${Datas[i]['UltimaAula']}' as 'UltimaData', '${Datas[i]['idtraineeprogram']}' as 'ProgramaTreinamento', '${Datas[i]['CH_Consumida']}' as 'CH_Sistema' `;
|
||||
}
|
||||
if (Datas.length == 0) {
|
||||
Unidades[Index]['TabelaSQL'] += `select '' as 'Matricula', '' as 'PrimeiraData', '' as 'UltimaData', '' as 'ProgramaTreinamento', '' as 'CH_Sistema'`;
|
||||
}
|
||||
Unidades[Index]['TabelaSQL'] += `) G_${Index}) H_${Index}`;
|
||||
Index++;
|
||||
GetUltimaAulaMatriculas(Index, Unidades, callback);
|
||||
});
|
||||
}
|
||||
else {
|
||||
callback(Unidades);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
router.post('/getContasReceber', verifyJWT, (req, res) => {
|
||||
const Unidades = req.body.Unidades;
|
||||
const DataInicial = req.body.DataInicial;
|
||||
const DataFinal = req.body.DataFinal;
|
||||
|
||||
LoopContasReceber(0, Unidades, DataInicial, DataFinal, [], function(Resultados) {
|
||||
res.send({ "status": 200, "error": null, "response": Resultados });
|
||||
});
|
||||
//SQLServerQuery += `order by Unidade asc;`;
|
||||
//console.log(SQLServerQuery);
|
||||
//execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
function LoopContasReceber(Index, Unidades, DataInicial, DataFinal, Resultados, callback) {
|
||||
if (Index < Unidades.length) {
|
||||
sqlServerConnection.request().query(`exec ${Unidades[Index]}proc_InicializaRelAtrasadas '${DataInicial}','${DataFinal}',0,1,0,0,'G',0,'';`, function (error, results, fields) {
|
||||
for (let i = 0; i < results['recordsets'][0].length; i++) {
|
||||
results['recordsets'][0][i]['Unidade'] = Unidades[Index].split('.dbo.')[0].replace('SGP', '');
|
||||
|
||||
Resultados.push(results['recordsets'][0][i]);
|
||||
}
|
||||
Index++;
|
||||
LoopContasReceber(Index, Unidades, DataInicial, DataFinal, Resultados, callback);
|
||||
});
|
||||
}
|
||||
else {
|
||||
callback(Resultados);
|
||||
}
|
||||
}
|
||||
|
||||
router.post('/getParcelasAtrasadas', verifyJWT, (req, res) => {
|
||||
const Unidade = req.body.Unidade;
|
||||
const IDMatricula = req.body.IDMatricula;
|
||||
const IDCliente = req.body.IDCliente;
|
||||
|
||||
let SQLServerQuery = `exec ${Unidade}proc_PesquisaParcelasAtrasadas ${IDMatricula},${IDCliente},3, .02, .0003;`;
|
||||
//SQLServerQuery += `order by Unidade asc;`;
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/getHistoricoFinanceiro', verifyJWT, (req, res) => {
|
||||
const Unidade = req.body.Unidade;
|
||||
const IDMatricula = req.body.IDMatricula;
|
||||
|
||||
let SQLServerQuery = `exec ${Unidade}proc_ContasReceberHistorico .02, .0003,3,${IDMatricula};`;
|
||||
//SQLServerQuery += `order by Unidade asc;`;
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/InserirCobranca', verifyJWT, (req, res) => {
|
||||
const Unidade = req.body.Unidade;
|
||||
const IDMatricula = req.body.IDMatricula;
|
||||
const IDFuncionario = req.body.IDFuncionario;
|
||||
const DataStr = new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '').split(" ")[0];
|
||||
const Data = DataStr.split('-')[0] + "-" + DataStr.split('-')[1] + "-" + DataStr.split('-')[2];
|
||||
const Hora = new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '').split(" ")[1];
|
||||
const Protestado = req.body.Protestado ? 1 : 0;
|
||||
const Observacao = req.body.Observacao;
|
||||
const IDTipoRequisicao = req.body.IDTipoRequisicao;
|
||||
const IDDepartamento = req.body.IDDepartamento;
|
||||
|
||||
let SQLServerQuery = `exec ${Unidade}proc_InserirCobranca ${IDMatricula},${IDFuncionario},'${Data}','${Hora}',${Protestado},'${Observacao}',${IDTipoRequisicao},${IDDepartamento};`;
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getListaFuncionarios/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`select IDFuncionario, Nome from ${db}Funcionarios;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getHistoricoCobrancas/:db/:IDMatricula', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
const IDMatricula = req.params.IDMatricula;
|
||||
execSQLQuery2(`exec ${db}proc_HistoricoGeral ${IDMatricula};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/verificaAGendamento/:db/:IDMatricula', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
const IDMatricula = req.params.IDMatricula;
|
||||
execSQLQuery2(`exec ${db}proc_VerificaAgendamentoCobranca ${IDMatricula};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/InserirAgendamento', verifyJWT, (req, res) => {
|
||||
const Unidade = req.body.Unidade;
|
||||
const IDMatricula = req.body.IDMatricula;
|
||||
const DataAgendamento = req.body.DataAgendamento;
|
||||
|
||||
let SQLServerQuery = `exec ${Unidade}proc_InserirAgendamentoCobranca ${IDMatricula},'${DataAgendamento}',1;`;
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.patch('/AtualizarDadosCliente', verifyJWT, (req, res) => {
|
||||
const Unidade = req.body.Unidade;
|
||||
const IDCliente = req.body.Cliente;
|
||||
const CEP = req.body.CEP;
|
||||
const Endereco = req.body.Endereco;
|
||||
const Bairro = req.body.Bairro;
|
||||
const Cidade = req.body.Cidade;
|
||||
const UF = req.body.UF;
|
||||
const Celular = req.body.Celular;
|
||||
const FoneComercial = req.body.FoneComercial;
|
||||
const FoneResidencial = req.body.FoneResidencial;
|
||||
const FoneRecado = req.body.FoneRecado;
|
||||
|
||||
let SQLServerQuery = `update SGP${Unidade}.dbo.Clientes set
|
||||
CEP = '${CEP}',
|
||||
Endereco = '${Endereco}',
|
||||
Bairro = '${Bairro}',
|
||||
Cidade = '${Cidade}',
|
||||
UF = '${UF}',
|
||||
Celular = '${Celular}',
|
||||
FoneComercial = '${FoneComercial}',
|
||||
FoneResidencial = '${FoneResidencial}',
|
||||
FoneRecado = '${FoneRecado}'
|
||||
where IDCliente = ${IDCliente};`;
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/getAgendamentosCobranca', verifyJWT, (req, res) => {
|
||||
const Unidades = req.body.Unidades;
|
||||
const DataInicial = req.body.DataInicial;
|
||||
const DataFinal = req.body.DataFinal;
|
||||
|
||||
let SQLServerQuery = ``;
|
||||
for (let i = 0; i < Unidades.length; i++) {
|
||||
if (i > 0) {
|
||||
SQLServerQuery += `union all
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `select
|
||||
'${Unidades[i].replace('.dbo.', '').replace('SGP', '')}' as 'Unidade',
|
||||
cb.IDCobranca,
|
||||
ac.IDAgendamentoCobranca,
|
||||
cb.IDMatricula,
|
||||
cl.Nome as 'Cliente',
|
||||
cl.Celular,
|
||||
convert(varchar, cb.Data, 103) + ' ' + convert(varchar, cb.Hora, 24) as 'Data',
|
||||
convert(varchar, ac.DataAgendamento, 103) as 'DataAgendamento',
|
||||
cb.Observacao
|
||||
from ${Unidades[i]}Cobranca cb
|
||||
inner join ${Unidades[i]}AgendamentoCobranca ac on ac.IDCobranca = cb.IDCobranca
|
||||
inner join ${Unidades[i]}Matriculas mt on mt.IDMatricula = cb.IDMatricula
|
||||
inner join ${Unidades[i]}Clientes cl on cl.IDCliente = mt.IDClienteResponsavel
|
||||
where ${(!DataInicial || !DataFinal) ? '1=1' : "ac.DataAgendamento between '" + DataInicial + "' and '" + DataFinal + "'"}
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `order by Unidade asc;`;
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(SQLServerQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
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: '10mb',
|
||||
extended: true
|
||||
}
|
||||
));
|
||||
router.use(bodyParser.json({
|
||||
limit: '10mb',
|
||||
extended: true
|
||||
}));
|
||||
|
||||
var routes = function () {
|
||||
|
||||
router.get('/getAll', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM slides;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getSlide/:idslides', verifyJWT, (req, res) => {
|
||||
const idslides = parseInt(req.params.idslides);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM slides
|
||||
WHERE idslides = ${idslides};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insert', verifyJWT, (req, res) => {
|
||||
const idslides = parseInt(req.body.idslides);
|
||||
const title = req.body.title;
|
||||
const itens = parseInt(req.body.itens);
|
||||
execSQLQuery(`INSERT INTO slides(title, itens) VALUES
|
||||
(?, ?);`, res, req.originalUrl, [title, itens]);
|
||||
});
|
||||
|
||||
router.patch('/update', verifyJWT, (req, res) => {
|
||||
const idslides = parseInt(req.body.idslides);
|
||||
const title = req.body.title;
|
||||
const itens = parseInt(req.body.itens);
|
||||
execSQLQuery(`UPDATE slides SET
|
||||
title = ?,
|
||||
itens = ?
|
||||
WHERE idslides = ?;`, res, req.originalUrl, [title, itens, idslides]);
|
||||
});
|
||||
|
||||
router.get('/renomeiaSlide/:idslides/:apartirde', verifyJWT, (req, res) => {
|
||||
const idslides = parseInt(req.params.idslides);
|
||||
const apartirde = parseInt(req.params.apartirde);
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const Diretorio = Variables('src_media') + 'images/';
|
||||
fs.readdir(Diretorio, (err, files) => {
|
||||
let ListaSlides = [];
|
||||
files.forEach(file => {
|
||||
if (path.basename(file).includes("slide_" + idslides)) {
|
||||
ListaSlides.push(file);
|
||||
}
|
||||
});
|
||||
LoopRenomeiaSlide(0, apartirde, idslides, 0, ListaSlides, Diretorio, function(Sucesso) {
|
||||
res.send(Sucesso);
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
function LoopRenomeiaSlide(Index, apartirde, idslides, newI, ListaSlides, Diretorio, callback) {
|
||||
const fs = require('fs');
|
||||
if (Index < ListaSlides.length) {
|
||||
if (Index != apartirde) {
|
||||
if (Index >= apartirde) {
|
||||
let NovoNome = "slide_" + idslides + "_" + newI + ".jpg";
|
||||
console.log("De: " + ListaSlides[Index] + " - Para: " + NovoNome);
|
||||
fs.rename(Diretorio + ListaSlides[Index], Diretorio + NovoNome, function (err) {
|
||||
Index++;
|
||||
newI++;
|
||||
LoopRenomeiaSlide(Index, apartirde, idslides, newI, ListaSlides, Diretorio, callback);
|
||||
});
|
||||
}
|
||||
else {
|
||||
Index++;
|
||||
newI++;
|
||||
LoopRenomeiaSlide(Index, apartirde, idslides, newI, ListaSlides, Diretorio, callback);
|
||||
}
|
||||
}
|
||||
else {
|
||||
fs.unlink(Diretorio + ListaSlides[Index], function (err) {
|
||||
Index++;
|
||||
LoopRenomeiaSlide(Index, apartirde, idslides, newI, ListaSlides, Diretorio, callback);
|
||||
});
|
||||
}
|
||||
}
|
||||
else {
|
||||
callback(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
require('../connections/sql-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('/dbs', verifyJWT, (req, res) => {
|
||||
execSQLQuery2(`SELECT
|
||||
name
|
||||
FROM master.dbo.sysdatabases
|
||||
WHERE cmptlevel = 80
|
||||
ORDER BY name ASC;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,314 @@
|
|||
require("../connections/mysql-server");
|
||||
require("../connections/sql-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());
|
||||
|
||||
const sqlServer = function (sqlQry) {
|
||||
return new Promise((resolve, reject) => {
|
||||
sqlServerConnection
|
||||
.request()
|
||||
.query(sqlQry, function (error, Result, fields) {
|
||||
let Retorno = [];
|
||||
if (error) {
|
||||
Retorno = { status: 500, error: error, response: [] };
|
||||
console.log(error);
|
||||
return reject(error);
|
||||
} else {
|
||||
resolve(Result);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
var routes = function () {
|
||||
router.get("/getAllStudent", (req, res) => {
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
*
|
||||
FROM agenda;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.post("/insertStudent/:banco", (req, res) => {
|
||||
const db = req.params.banco;
|
||||
console.log(db, "banco de dado");
|
||||
let { nome, senha, IdUnidade, IdCurso, idFuncionario } = req.body;
|
||||
senha = encriptPassword(senha);
|
||||
console.log([nome, senha, IdUnidade, IdCurso]);
|
||||
let sqlQry = `SELECT MAX([IDCliente]) as 'lastClientId' FROM ${db}[Clientes];`;
|
||||
console.log(sqlQry);
|
||||
sqlServerConnection
|
||||
.request()
|
||||
.query(sqlQry, function (error, IdClientResult, fields) {
|
||||
let Retorno = [];
|
||||
if (error || IdClientResult.length == 0) {
|
||||
Retorno = { status: 500, error: error, response: [] };
|
||||
return res.send(JSON.stringify(Retorno));
|
||||
} else {
|
||||
let { lastClientId } = IdClientResult.recordsets[0][0];
|
||||
console.log(lastClientId);
|
||||
let newClientId = lastClientId + 1;
|
||||
let sqlInsertClient = `INSERT INTO ${db}[Clientes] (IDCliente, IDUnidade, Nome, PessoaFisica, SenhaIntranet)
|
||||
VALUES (${newClientId}, ${IdUnidade}, '${nome}', 1, '${senha}');`;
|
||||
console.log("antes da segunda");
|
||||
console.log(sqlInsertClient);
|
||||
sqlServerConnection
|
||||
.request()
|
||||
.query(
|
||||
sqlInsertClient,
|
||||
function (error, cadastroClientResult, fields) {
|
||||
console.log("dentro da segunda");
|
||||
if (error) {
|
||||
Retorno = { status: 500, error: error, response: [] };
|
||||
return res.send(JSON.stringify(Retorno));
|
||||
} else {
|
||||
let sqlLastTurmaId = `(SELECT MAX([IdTurma]) as lastTurmaId FROM ${db}[Turmas])`;
|
||||
sqlServerConnection
|
||||
.request()
|
||||
.query(
|
||||
sqlLastTurmaId,
|
||||
function (error, IdTurmarResult, fields) {
|
||||
console.log("dentro da quinta");
|
||||
let Retorno = [];
|
||||
if (error || IdTurmarResult.length == 0) {
|
||||
Retorno = {
|
||||
status: 500,
|
||||
error: error,
|
||||
response: [],
|
||||
};
|
||||
return res.send(JSON.stringify(Retorno));
|
||||
} else {
|
||||
let { lastTurmaId } = IdTurmarResult.recordsets[0][0];
|
||||
console.log(lastTurmaId);
|
||||
let newTurmaId = lastTurmaId + 1;
|
||||
let sqlInsertTurma = `INSERT INTO ${db}[Turmas] (IdTurma, Codigo, Nome, DataInicio, DataTermino, HorarioRegular, Domingo, Segunda, Terca, Quarta, Quinta, Sexta, Sabado, Cancelada, Suspensa, IgnoraFerias, ServeCafe, ValorHoraAula, SequenciaRotativa, BloqueadaVenda, CursosParalelos, ForcarDataFinal, IDFuncionario)
|
||||
Values (${newTurmaId}, '230PYCO000', '${nome}', getDate(), dateadd(yy, 1, getdate()), 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ${idFuncionario});`;
|
||||
console.log(sqlInsertTurma);
|
||||
sqlServerConnection
|
||||
.request()
|
||||
.query(
|
||||
sqlInsertTurma,
|
||||
function (error, CadastroTurmaResult, fields) {
|
||||
console.log("dentro da sexta");
|
||||
let Retorno = [];
|
||||
if (error) {
|
||||
Retorno = {
|
||||
status: 500,
|
||||
error: error,
|
||||
response: [],
|
||||
};
|
||||
return res.send(JSON.stringify(Retorno));
|
||||
} else {
|
||||
let sqlLastMatriculaId = `SELECT MAX([IDMatricula]) as 'lastMatriculaId' FROM ${db}[Matriculas];`;
|
||||
sqlServerConnection
|
||||
.request()
|
||||
.query(
|
||||
sqlLastMatriculaId,
|
||||
function (
|
||||
error,
|
||||
IdMatriculaResult,
|
||||
fields
|
||||
) {
|
||||
console.log("dentro da terceira");
|
||||
let Retorno = [];
|
||||
if (
|
||||
error ||
|
||||
IdMatriculaResult.length == 0
|
||||
) {
|
||||
Retorno = {
|
||||
status: 500,
|
||||
error: error,
|
||||
response: [],
|
||||
};
|
||||
return res.send(
|
||||
JSON.stringify(Retorno)
|
||||
);
|
||||
} else {
|
||||
let { lastMatriculaId } =
|
||||
IdMatriculaResult.recordsets[0][0];
|
||||
console.log(lastMatriculaId);
|
||||
let newMatriculaId =
|
||||
lastMatriculaId + 1;
|
||||
let sqlIsertMatricula = `INSERT INTO ${db}[Matriculas] (IDMatricula, IDUnidade, CodigoTurma, ContratoImpresso, Certificado, Folha, CartasBoasVindas, DescontoDiferencial, DescontoPontualidade, UsaPerDescPontualidade)
|
||||
values (${newMatriculaId}, ${IdUnidade}, ${newTurmaId}, 0, 0, 0, 0, 0, 0, 0);`;
|
||||
console.log(sqlIsertMatricula);
|
||||
sqlServerConnection
|
||||
.request()
|
||||
.query(
|
||||
sqlIsertMatricula,
|
||||
function (
|
||||
error,
|
||||
CadMatriculasResult,
|
||||
fields
|
||||
) {
|
||||
console.log("dentro da quarta");
|
||||
|
||||
let Retorno = [];
|
||||
if (error) {
|
||||
Retorno = {
|
||||
status: 500,
|
||||
error: error,
|
||||
response: [],
|
||||
};
|
||||
return res.send(
|
||||
JSON.stringify(Retorno)
|
||||
);
|
||||
} else {
|
||||
let sqlInsertMatriculaCursos = `insert into ${db}[MatriculasCursos] (IDMatricula, IDCurso, CodigoTurma, Gratis, MaterialImbutido)
|
||||
values (${newMatriculaId}, ${IdCurso}, ${newTurmaId}, 0, 1);`;
|
||||
sqlServerConnection
|
||||
.request()
|
||||
.query(
|
||||
sqlInsertMatriculaCursos,
|
||||
function (
|
||||
error,
|
||||
CadastroMatriculaCursoResult,
|
||||
fields
|
||||
) {
|
||||
let Retorno = [];
|
||||
if (error) {
|
||||
Retorno = {
|
||||
status: 500,
|
||||
error: error,
|
||||
response: [],
|
||||
};
|
||||
return res.send(
|
||||
JSON.stringify(
|
||||
Retorno
|
||||
)
|
||||
);
|
||||
} else {
|
||||
let sqlInsertTreinandoTurmas = ` Insert Into ${db}[TreinandosTurmas] (IDMatricula, IDTreinando, IDCurso, CodigoTurma, Concluiu, Desistente, Faltoso, EmitiuCertificado, RecebeuMaterial, Aprovado)
|
||||
Values (${newMatriculaId}, ${newClientId}, ${IdCurso}, ${newTurmaId}, 0, 0, 0, 0, 0, 0);`;
|
||||
sqlServerConnection
|
||||
.request()
|
||||
.query(
|
||||
sqlInsertTreinandoTurmas,
|
||||
function (
|
||||
error,
|
||||
CadastroMatriculaCursoResult,
|
||||
fields
|
||||
) {
|
||||
let Retorno =
|
||||
[];
|
||||
if (error) {
|
||||
Retorno = {
|
||||
status: 500,
|
||||
error:
|
||||
error,
|
||||
response:
|
||||
[],
|
||||
};
|
||||
return res.send(
|
||||
JSON.stringify(
|
||||
Retorno
|
||||
)
|
||||
);
|
||||
} else {
|
||||
return res.send(
|
||||
JSON.stringify(
|
||||
{
|
||||
mensage:
|
||||
"Aluno matriculado com sucesso",
|
||||
matricula:
|
||||
newMatriculaId,
|
||||
idturma:
|
||||
newTurmaId,
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
router.post("/editStudent", (req, res) => {
|
||||
const id = req.body.id;
|
||||
const title = req.body.title;
|
||||
const date = req.body.date;
|
||||
const hour = req.body.hour;
|
||||
const duration = req.body.duration;
|
||||
const description = req.body.description;
|
||||
const access = req.body.access;
|
||||
execSQLQuery(
|
||||
` UPDATE agenda SET
|
||||
title='${title}',
|
||||
date='${date}',
|
||||
hour='2021-01-01T${hour}',
|
||||
duration='${duration}',
|
||||
description='${description}',
|
||||
access='${access}'
|
||||
WHERE (idagenda = '${id}')`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.post("/deleteStudent", (req, res) => {
|
||||
const id = req.body.id;
|
||||
execSQLQuery(
|
||||
` DELETE FROM agenda
|
||||
WHERE (idagenda = '${id}')`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.post("/insertTurmaCalendarioChamada/:banco", async (req, res) => {
|
||||
const db = req.params.banco;
|
||||
const { IDCurso, IDTurma, IDFuncionario, numeroDeAulas } = req.body;
|
||||
console.log(IDCurso, IDTurma, IDFuncionario, numeroDeAulas);
|
||||
let sqlQry = `insert into ${db}[TurmasCalendario] (IdTurmasCalendario, IdTurma, CodigoCurso, CodigoInstrutor, Data, HoraInicial, HoraFinal, Ministrado, PesquisaOpiniao )
|
||||
values((select max(IdTurmasCalendario) from ${db}[TurmasCalendario]) + 1, ${IDTurma}, ${IDCurso}, ${IDFuncionario}, getDate(), getDate(), getDate(), 0, 0 )`;
|
||||
console.log(sqlQry);
|
||||
let infos = [];
|
||||
for (let i = 0; i < numeroDeAulas; i++) {
|
||||
try {
|
||||
let result = await sqlServer(sqlQry);
|
||||
console.log(result);
|
||||
console.log("cadastrei papai");
|
||||
setTimeout(() => {}, 1000);
|
||||
console.log(`cadastro ${i}`);
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
console.log(infos);
|
||||
// return res.send(
|
||||
// JSON.stringify({
|
||||
// message: "InseridoAulasChamadas",
|
||||
// })
|
||||
// );
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,597 @@
|
|||
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');
|
||||
|
||||
router.use(bodyParser.urlencoded({
|
||||
limit: '10mb',
|
||||
extended: true
|
||||
}));
|
||||
router.use(bodyParser.json({
|
||||
limit: '10mb',
|
||||
extended: true
|
||||
}));
|
||||
|
||||
var routes = function () {
|
||||
|
||||
router.get('/getTurmas/:idfuncuionario/:db', verifyJWT, (req, res) => {
|
||||
var idfuncuionario = parseInt(req.params.idfuncuionario);
|
||||
var db = req.params.db;
|
||||
execSQLQuery2(`SELECT DISTINCT
|
||||
IdTurma
|
||||
FROM ${db}TurmasCalendario
|
||||
/*WHERE CodigoInstrutor = ${idfuncuionario}*/;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getMatriculas/:idturma/:db', verifyJWT, (req, res) => {
|
||||
var idturma = parseInt(req.params.idturma);
|
||||
var db = req.params.db;
|
||||
execSQLQuery2(`
|
||||
SELECT DISTINCT
|
||||
IDMatricula
|
||||
FROM
|
||||
${db}Matriculas
|
||||
WHERE
|
||||
CodigoTurma = ${idturma}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getNomeAluno/:idmatricula/:db', verifyJWT, (req, res) => {
|
||||
var idmatricula = parseInt(req.params.idmatricula);
|
||||
var db = req.params.db;
|
||||
execSQLQuery2(`
|
||||
SELECT
|
||||
${db}Clientes.Nome
|
||||
FROM
|
||||
${db}MatriculasTreinandos
|
||||
INNER JOIN
|
||||
${db}Clientes
|
||||
ON
|
||||
${db}MatriculasTreinandos.IDTreinando = ${db}Clientes.IDCliente
|
||||
WHERE
|
||||
${db}MatriculasTreinandos.IDMatricula = '${idmatricula}'`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getCallsOfClassesNotMaked/:idmatricula/:qtdeaulas/:idcourses/:idunits/:nome', verifyJWT, (req, res) => {
|
||||
var idmatricula = parseInt(req.params.idmatricula);
|
||||
var qtdeaulas = parseInt(req.params.qtdeaulas);
|
||||
var idcourses = parseInt(req.params.idcourses);
|
||||
var idunits = parseInt(req.params.idunits);
|
||||
var nome = req.params.nome;
|
||||
var sqlQry = `SELECT
|
||||
t.idclasses,
|
||||
(select name from classes where idclasses = t.idclasses) as Aula,
|
||||
${idcourses} AS CodigoCurso,
|
||||
(select name from courses where idcourses = ${idcourses}) as NomeVersao,
|
||||
${idmatricula} AS IDMatricula,
|
||||
'${nome}' AS Nome
|
||||
FROM (
|
||||
SELECT DISTINCT
|
||||
CASE WHEN c.idclasses = r.idclasses THEN 1 ELSE 0 END AS Completed,
|
||||
c.*
|
||||
FROM
|
||||
classes c
|
||||
LEFT JOIN
|
||||
(SELECT DISTINCT
|
||||
c.idclasses
|
||||
FROM
|
||||
stepclass sc
|
||||
INNER JOIN
|
||||
classes c
|
||||
ON
|
||||
sc.idclasses = c.idclasses
|
||||
WHERE
|
||||
sc.idusers = ${idmatricula}
|
||||
AND
|
||||
c.idcourses = ${idcourses}
|
||||
AND
|
||||
sc.idunits = ${idunits}) r
|
||||
ON
|
||||
r.idclasses = c.idclasses
|
||||
WHERE
|
||||
ordem + 1 <= ${qtdeaulas}
|
||||
AND
|
||||
idcourses = ${idcourses}
|
||||
ORDER BY
|
||||
c.ordem) t
|
||||
WHERE
|
||||
t.Completed = 0
|
||||
ORDER BY
|
||||
t.ordem;`;
|
||||
execSQLQuery(sqlQry, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getStudentsByTeacher/:db/:idinstrutor', verifyJWT, (req, res) => {
|
||||
var db = req.params.db;
|
||||
var idinstrutor = parseInt(req.params.idinstrutor);
|
||||
execSQLQuery2(`SELECT
|
||||
Matriculas2.IDMatricula,
|
||||
Turmas2.CodigoCurso,
|
||||
(SELECT COUNT(*) AS Ministradas FROM ${db}TurmasCalendario WHERE CodigoCurso = Turmas2.CodigoCurso AND IdTurma = (SELECT TOP(1) CodigoTurma FROM ${db}TreinandosTurmas WHERE IDMatricula = Matriculas2.IDMatricula) AND Ministrado = 1) AS Ministradas,
|
||||
(SELECT TOP(1) c.Nome FROM ${db}Clientes c INNER JOIN ${db}TreinandosTurmas tt ON c.IDCliente = tt.IDTreinando WHERE tt.IDMatricula = Matriculas2.IDMatricula) AS Nome
|
||||
FROM (SELECT DISTINCT
|
||||
IdTurma,
|
||||
CodigoCurso
|
||||
FROM ${db}TurmasCalendario tc
|
||||
/*WHERE CodigoInstrutor = ${idinstrutor}*/) Turmas2
|
||||
INNER JOIN (SELECT DISTINCT
|
||||
IDMatricula,
|
||||
CodigoTurma
|
||||
FROM ${db}Matriculas) Matriculas2 ON Turmas2.IdTurma = Matriculas2.CodigoTurma
|
||||
WHERE Turmas2.CodigoCurso > 0;`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.get('/getQtdeStepclass/:idunits/:idusers/:idcourses', verifyJWT, (req, res) => {
|
||||
var idunits = parseInt(req.params.idunits);
|
||||
var idusers = parseInt(req.params.idusers);
|
||||
var idcourses = parseInt(req.params.idcourses);
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
COUNT(sc.idusers) as qtde_stepclass
|
||||
FROM
|
||||
stepclass sc
|
||||
INNER JOIN
|
||||
classes c ON sc.idclasses = c.idclasses
|
||||
INNER JOIN
|
||||
courses co ON co.idcourses = c.idcourses
|
||||
WHERE
|
||||
sc.idusers = ${idusers} AND sc.idunits = ${idunits}
|
||||
AND co.idcourses = ${idcourses};`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getCalls/:db/:idinstrutor', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
var idinstrutor = parseInt(req.params.idinstrutor);
|
||||
execSQLQuery2(`SELECT DISTINCT
|
||||
co.NomeVersao,
|
||||
tt.IDMatricula,
|
||||
c.Nome,
|
||||
CONVERT(varchar, tc.Data, 103) AS Data,
|
||||
CASE
|
||||
WHEN tc.Ministrado = 0 THEN 'Não' else 'Sim'
|
||||
END AS Ministrado
|
||||
FROM ${db}TurmasCalendario tc
|
||||
INNER JOIN ${db}TreinandosTurmas tt ON tt.CodigoTurma = tc.IdTurma
|
||||
INNER JOIN ${db}Clientes c ON c.IDCliente = tt.IDTreinando
|
||||
INNER JOIN ${db}Cursos co ON co.Codigo = tc.CodigoCurso
|
||||
WHERE /*tc.CodigoInstrutor = ${idinstrutor} and*/ tt.IDMatricula > 190008 and tc.Ministrado = 0;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getClassByOrdem/:idcourses/:ordem', verifyJWT, (req, res) => {
|
||||
let idcourses = req.params.idcourses;
|
||||
let ordem = req.params.ordem;
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
idclasses
|
||||
FROM
|
||||
classes
|
||||
WHERE
|
||||
idcourses = ${idcourses}
|
||||
AND
|
||||
ordem = ${ordem};`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getExerciseContent/:idclasses', verifyJWT, (req, res) => {
|
||||
let idclasses = req.params.idclasses;
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
e.idexercises,
|
||||
e.description AS Enunciado,
|
||||
eq.idexercisequestions,
|
||||
eq.content AS Questao,
|
||||
ea.idexerciseanswers,
|
||||
ea.content AS Resposta,
|
||||
ea.iscorrect,
|
||||
ea.hasmedia,
|
||||
(select
|
||||
t.description
|
||||
from
|
||||
texts t
|
||||
inner join
|
||||
classescontent cc
|
||||
on
|
||||
cc.idgames = t.idtexts
|
||||
where
|
||||
cc.idclasses = ${idclasses}) as Jogo
|
||||
FROM
|
||||
classescontent cc
|
||||
INNER JOIN
|
||||
exercisequestions eq ON cc.idexercises = eq.idexercises
|
||||
INNER JOIN
|
||||
exercises e ON e.idexercises = eq.idexercises
|
||||
INNER JOIN
|
||||
exerciseanswers ea ON ea.idexercisequestions = eq.idexercisequestions
|
||||
WHERE
|
||||
cc.idclasses = ${idclasses}
|
||||
ORDER BY
|
||||
cc.ordem`, res, req.originalUrl);
|
||||
})
|
||||
|
||||
router.post('/getAulasRealizadas', verifyJWT, (req, res) => {
|
||||
let idusers = req.body.idusers;
|
||||
let idunits = req.body.idunits;
|
||||
let ip_externo = req.body.ip_externo;
|
||||
let porta_mysql = req.body.porta;
|
||||
|
||||
let SQLQry = `SELECT DISTINCT
|
||||
(SELECT idcourses FROM classes WHERE idclasses = sc.idclasses) AS IDCurso,
|
||||
(SELECT description FROM courses WHERE idcourses = IDCurso) AS Curso,
|
||||
idclasses AS IDAula,
|
||||
(SELECT description FROM classes WHERE idclasses = sc.idclasses) AS Aula,
|
||||
CASE WHEN datefinal IS NOT NULL THEN datefinal ELSE '--/--/----' END AS Data,
|
||||
CASE WHEN completedClass = 0 THEN 'Não concluída' ELSE 'Concluída' END AS Status,
|
||||
CASE WHEN homework = 1 THEN 'Realizada' WHEN homework = 0 THEN 'Falhou' WHEN homework IS NULL THEN 'Não realizada' END AS LicaoCasa,
|
||||
CASE WHEN notegame = 1 THEN 'Sucesso' WHEN notegame IS NULL THEN 'Não concluído' WHEN notegame = 0 THEN 'Falhou' END AS Jogo,
|
||||
(SELECT s.title FROM slides s WHERE idslides = (SELECT cc.idslides FROM classescontent cc INNER JOIN slides s1 ON cc. idslides = s1.idslides WHERE cc.idclasses = IDAula AND cc.idslides IS NOT NULL AND s1.title LIKE 'Montagem%')) AS Projeto,
|
||||
CASE WHEN note IS NOT NULL THEN note ELSE '--' END as Nota,
|
||||
(SELECT ordem + 1 FROM classes WHERE idclasses = sc.idclasses) AS Ordem
|
||||
FROM
|
||||
stepclass sc
|
||||
WHERE
|
||||
idunits = ${idunits} AND idusers = ${idusers}
|
||||
ORDER BY IDCurso, Ordem;`;
|
||||
mysqlConnection.query(SQLQry, function (error, results, fields) {
|
||||
let Status = 0;
|
||||
if (!error && results.length != 0) {
|
||||
Status = 200;
|
||||
console.log("/getAulasRealizadas success 200");
|
||||
}
|
||||
else {
|
||||
Status = 500;
|
||||
console.log("/getAulasRealizadas fail 500 " + error);
|
||||
}
|
||||
res.send(JSON.stringify({
|
||||
"status": Status,
|
||||
"error": [],
|
||||
"error2": error,
|
||||
"response": [],
|
||||
"response2": results
|
||||
}))
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
router.post('/getExerciciosAluno', verifyJWT, (req, res) => {
|
||||
let idusers = req.body.idusers;
|
||||
let idclasses = req.body.idclasses;
|
||||
let idunits = req.body.idunits;
|
||||
let ip_externo = req.body.ip_externo;
|
||||
let porta_mysql = req.body.porta;
|
||||
|
||||
let SQLQry = `SELECT
|
||||
(SELECT e.description FROM exercises e WHERE eq.idexercises = e.idexercises) AS Enunciado,
|
||||
eq.content AS Questao,
|
||||
ea.content AS Resposta,
|
||||
CASE WHEN ea.iscorrect = 1 THEN 'Correta' ELSE 'Errada' END AS Correcao,
|
||||
(SELECT e.idexercisetype FROM exercises e WHERE eq.idexercises = e.idexercises) AS Tipo
|
||||
FROM
|
||||
exercisequestions eq
|
||||
INNER JOIN
|
||||
exerciseanswers ea
|
||||
ON
|
||||
eq.idexercisequestions = ea.idexercisequestions
|
||||
INNER JOIN
|
||||
usergivenanswers ua
|
||||
ON
|
||||
ua.idexerciseanswers = ea.idexerciseanswers
|
||||
WHERE
|
||||
ua.idusers = ${idusers} AND ua.idclasses = ${idclasses} and ua.idunits = ${idunits};`;
|
||||
|
||||
mysqlConnection.query(SQLQry, function (error, results, fields) {
|
||||
let Status = 0;
|
||||
if (!error && results.length != 0) {
|
||||
Status = 200;
|
||||
console.log("/getAulasRealizadas success 200");
|
||||
}
|
||||
else {
|
||||
Status = 500;
|
||||
console.log("/getAulasRealizadas fail 500 " + error);
|
||||
}
|
||||
|
||||
res.send(JSON.stringify({
|
||||
"status": Status,
|
||||
"error2": error,
|
||||
"response2": results
|
||||
}))
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
router.post('/getTurmasDetalhes', verifyJWT, (req, res) => {
|
||||
const idfuncuionario = parseInt(req.body.IDFuncionario);
|
||||
const Unidades = req.body.Unidades;
|
||||
let SQLQuery = "";
|
||||
for (let i = 0; i < Unidades.length; i++) {
|
||||
if (i > 0) {
|
||||
SQLQuery += `union all
|
||||
`;
|
||||
}
|
||||
/*SQLQuery += `select distinct
|
||||
${Unidades[i]['idunits']} as 'IDUnits',
|
||||
'${Unidades[i]['unityname']}' as 'Unidade',
|
||||
tt.IDMatricula as 'Matricula',
|
||||
cl.Nome as 'Aluno',
|
||||
tu.IdTurma,
|
||||
cu.Codigo as 'IDCurso',
|
||||
cu.NomeVersao as 'Curso',
|
||||
(select top 1 convert(varchar, tc2.HoraInicial, 8) from ${Unidades[i]['reference_db']}.dbo.TurmasCalendario tc2 where tc2.IdTurma = tu.IdTurma) as 'HoraInicial',
|
||||
(select top 1 convert(varchar, tc2.HoraFinal, 8) from ${Unidades[i]['reference_db']}.dbo.TurmasCalendario tc2 where tc2.IdTurma = tu.IdTurma) as 'HoraFinal',
|
||||
--convert(varchar, tu.HoraInicial, 8) as 'HoraInicial',
|
||||
--convert(varchar, tu.HoraFinal, 8) as 'HoraFinal',
|
||||
convert(VARCHAR, tu.DataInicio, 103) as 'DataInicio',
|
||||
convert(VARCHAR, tu.DataTermino, 103) as 'DataTermino',
|
||||
(select count(*) from ${Unidades[i]['reference_db']}.dbo.TurmasCalendario tc1 where tc1.CodigoCurso = cu.Codigo and tc1.IdTurma = tu.IdTurma and tc1.Ministrado = 1) as 'Chamadas'
|
||||
from ${Unidades[i]['reference_db']}.dbo.Turmas tu
|
||||
inner join ${Unidades[i]['reference_db']}.dbo.TurmasCalendario tc on tc.IdTurma = tu.IdTurma
|
||||
inner join ${Unidades[i]['reference_db']}.dbo.Cursos cu on cu.Codigo = tc.CodigoCurso
|
||||
inner join ${Unidades[i]['reference_db']}.dbo.TreinandosTurmas tt on tt.CodigoTurma = tu.IdTurma and tt.IDCurso = cu.Codigo
|
||||
inner join ${Unidades[i]['reference_db']}.dbo.Clientes cl on cl.IDCliente = tt.IDTreinando
|
||||
`;*/
|
||||
SQLQuery += `select distinct
|
||||
${Unidades[i]['idunits']} as 'IDUnits',
|
||||
'${Unidades[i]['unityname']}' as 'Unidade',
|
||||
mt.IDMatricula as 'Matricula',
|
||||
cl.Nome as 'Aluno',
|
||||
tu.IdTurma,
|
||||
tt.IDCurso,
|
||||
cu.NomeVersao as 'Curso',
|
||||
(select top 1 convert(varchar, tc2.HoraInicial, 8) from ${Unidades[i]['reference_db']}.dbo.TurmasCalendario tc2 where tc2.IdTurma = tu.IdTurma) as 'HoraInicial',
|
||||
(select top 1 convert(varchar, tc2.HoraFinal, 8) from ${Unidades[i]['reference_db']}.dbo.TurmasCalendario tc2 where tc2.IdTurma = tu.IdTurma) as 'HoraFinal',
|
||||
convert(varchar, tu.DataInicio, 103) as 'DataInicio',
|
||||
convert(varchar, tu.DataTermino, 103) as 'DataTermino',
|
||||
(select count(*) from ${Unidades[i]['reference_db']}.dbo.TurmasCalendario tc1 where tc1.CodigoCurso = tt.IDCurso and tc1.IdTurma = tu.IdTurma and tc1.Ministrado = 1) as 'Chamadas'
|
||||
from ${Unidades[i]['reference_db']}.dbo.Matriculas mt
|
||||
inner join ${Unidades[i]['reference_db']}.dbo.Turmas tu on tu.IdTurma = mt.CodigoTurma
|
||||
inner join ${Unidades[i]['reference_db']}.dbo.TreinandosTurmas tt on tt.IDMatricula = mt.IDMatricula
|
||||
inner join ${Unidades[i]['reference_db']}.dbo.Clientes cl on cl.IDCliente = tt.IDTreinando
|
||||
inner join ${Unidades[i]['reference_db']}.dbo.Cursos cu on cu.Codigo = tt.IDCurso
|
||||
`;
|
||||
}
|
||||
SQLQuery += `/*where tc.CodigoInstrutor = ${idfuncuionario}*/
|
||||
group by mt.IDMatricula, cl.Nome, tu.IdTurma, tt.IDCurso, cu.NomeVersao, HoraInicial, HoraFinal, tu.DataInicio, tu.DataTermino
|
||||
order by mt.IDMatricula asc;`;
|
||||
|
||||
execSQLQuery2(SQLQuery, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getProgressoAula/:idusers/:idunits/:idcourses', verifyJWT, (req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
const idcourses = parseInt(req.params.idcourses);
|
||||
execSQLQuery(`select distinct
|
||||
*,
|
||||
(Tab1.NM / Tab1.VezesAssistida) as 'NotaMedia',
|
||||
(Tab1.NMGeral / Tab1.VezesAssistidaGeral) as 'NotaMediaGeral'
|
||||
from (select
|
||||
cl.idclasses,
|
||||
sc.idstepclass,
|
||||
sc.idusers,
|
||||
sc.idunits,
|
||||
cl.name as 'Aula',
|
||||
case when sc.idstepclass then 'Sim' else 'Não' end as 'Iniciada',
|
||||
case when sc.completedClass = 1 then 'Sim' else 'Não' end as 'Finalizada',
|
||||
date_format(sc.insert_date, '%d/%m/%Y %h:%i') as 'DataInicio',
|
||||
date_format(sc.update_date, '%d/%m/%Y %h:%i') as 'DataFinalizada',
|
||||
sc.datefinal as 'DataFechamento',
|
||||
case when sc.liberado = 1 then 'Sim' else 'Não' end as 'liberado',
|
||||
case
|
||||
when sc.homework = 1 or ((select count(*) from userstages us where us.idclasses = sc.idclasses and us.idunits = sc.idunits and us.idusers = sc.idusers and us.idstages = 2) > 0) then 'Concluída'
|
||||
when sc.homework is null and sc.completedClass = 1 then 'Não Realizada'
|
||||
else null
|
||||
end as 'TarefaCasa',
|
||||
(select date_format(us.insert_date, '%d/%m/%Y %h:%i') from userstages us where us.idclasses = sc.idclasses and us.idunits = sc.idunits and us.idusers = sc.idusers and us.idstages = 2 limit 1) as 'DataTarefa',
|
||||
(select round(us.note, 2) from userstages us where us.idclasses = sc.idclasses and us.idunits = sc.idunits and us.idusers = sc.idusers and us.idstages = 3 limit 1) as 'notaProjeto',
|
||||
round(sc.note, 2) as 'Nota',
|
||||
case
|
||||
when (sc.notegame = 1 and sc.completedClass = 1) then (sum(ea.iscorrect) + 1)
|
||||
when ((sc.notegame = 0 or sc.notegame is null) and sc.completedClass = 1) then coalesce(sum(ea.iscorrect), 0)
|
||||
else null
|
||||
end as 'Acertos',
|
||||
case
|
||||
when (sc.notegame = 0 and sc.completedClass = 1) then (sum(case when ea.iscorrect = 1 then 0 else 1 end) + 1)
|
||||
when ((sc.notegame = 1 or sc.notegame is null) and sc.completedClass = 1) then coalesce(sum(case when ea.iscorrect = 1 then 0 else 1 end), 0)
|
||||
else null
|
||||
end as 'Erros',
|
||||
ExA.Questoes,
|
||||
(select count(*) from stepclass sc1 where sc1.idclasses = cl.idclasses and sc1.idunits = ${idunits}) as 'VezesAssistida',
|
||||
(select count(*) from stepclass sc1 where sc1.idclasses = cl.idclasses) as 'VezesAssistidaGeral',
|
||||
(select count(*) from classes cl1 where cl1.idcourses = cl.idcourses and cl1.disabled = 0) as 'AulasCurso',
|
||||
(select sum(sc1.note) from stepclass sc1 where sc1.idclasses = cl.idclasses and sc1.idunits = ${idunits}) as 'NM',
|
||||
(select sum(sc1.note) from stepclass sc1 where sc1.idclasses = cl.idclasses) as 'NMGeral',
|
||||
cn.note as 'NotaCurso'
|
||||
from classes cl
|
||||
left join stepclass sc on cl.idclasses = sc.idclasses and sc.idusers = ${idusers} and sc.idunits = ${idunits}
|
||||
left join usergivenanswers ug on ug.idclasses = sc.idclasses and ug.idusers = sc.idusers and ug.idunits = sc.idunits
|
||||
left join exerciseanswers ea on ea.idexerciseanswers = ug.idexerciseanswers
|
||||
left join coursenotes cn on cn.idcourses = ${idcourses} and cn.idunits = ${idunits} and cn.idusers = ${idusers}
|
||||
inner join (select distinct
|
||||
cl.idclasses,
|
||||
cl.name as 'Aula',
|
||||
count(cc.idexercises) as 'Questoes'
|
||||
from classes cl
|
||||
inner join classescontent cc on cc.idclasses = cl.idclasses
|
||||
left join exercisequestions eq on eq.idexercises = cc.idexercises
|
||||
group by cl.idclasses, cc.idclasses
|
||||
order by cl.idclasses asc) ExA on cl.idclasses = ExA.idclasses
|
||||
where cl.idcourses = ${idcourses}
|
||||
group by cl.idclasses, sc.idusers, sc.idunits, cl.name, sc.completedClass, sc.insert_date, sc.update_date, sc. note, sc.notegame, cl.ordem, cn.note
|
||||
order by cl.ordem asc) Tab1;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/getAulasDoDiaSQLServer', verifyJWT, (req, res) => {
|
||||
const Unidades = req.body.Unidades;
|
||||
const DataInicial = req.body.DataInicial;
|
||||
const DataFinal = req.body.DataFinal;
|
||||
let SQLServerQuery = ``;
|
||||
for (let i = 0; i < Unidades.length; i++) {
|
||||
if (i > 0) {
|
||||
SQLServerQuery += `union all
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `select
|
||||
* ,
|
||||
case when R.Ministrado = 'Sim' then (select count(*) from ${Unidades[i]}Chamadas ch where ch.IDCurso = R.IDCurso and ch.IdTurma = R.IdTurma) else (select (count(*) + 1) from ${Unidades[i]}Chamadas ch where ch.IDCurso = R.IDCurso and ch.IdTurma = R.IdTurma) end as 'Chamadas'
|
||||
from (select
|
||||
fu.Nome as 'Professor',
|
||||
tc.IdTurma,
|
||||
tt.IDMatricula,
|
||||
cl.Nome as 'Aluno',
|
||||
tt.IDCurso,
|
||||
cu.NomeVersao as 'Curso',
|
||||
CONVERT(varchar(10), tc.Data, 103) as 'Data',
|
||||
CONVERT(varchar(10), tc.HoraInicial, 108) as 'HoraInicial',
|
||||
CONVERT(varchar(10), tc.HoraFinal, 108) as 'HoraFinal',
|
||||
case when tc.MInistrado = 1 then 'Sim' else 'Não' end as 'Ministrado',
|
||||
'${Unidades[i].replace('.dbo.', '')}' as 'Unidade',
|
||||
0 as 'Concluida'
|
||||
from ${Unidades[i]}TurmasCalendario tc
|
||||
inner join ${Unidades[i]}TreinandosTurmas tt on tt.CodigoTurma = tc.IdTurma and tt.IDCurso = tc.CodigoCurso
|
||||
inner join ${Unidades[i]}Clientes cl on cl.IDCliente = tt.IDTreinando
|
||||
inner join ${Unidades[i]}Cursos cu on cu.Codigo = tt.IDCurso
|
||||
inner join ${Unidades[i]}Funcionarios fu on fu.IDFuncionario = tc.CodigoInstrutor
|
||||
where tc.Data >= '${DataInicial}' and tc.Data <= '${DataFinal}' and tt.IDMatricula > 190008) R
|
||||
`;
|
||||
}
|
||||
SQLServerQuery += `order by R.Data asc, R.HoraInicial asc;`;
|
||||
|
||||
sqlServerConnection.request().query(SQLServerQuery, function (error, results, fields) {
|
||||
if (!error && results && results['recordset']) {
|
||||
let Calendario = results['recordset'];
|
||||
mysqlConnection.query(`select * from classes;`, function (error, Aulas, fields) {
|
||||
for (let i = 0; i < Calendario.length; i++) {
|
||||
for (let o = 0; o < Aulas.length; o++) {
|
||||
if (Calendario[i]['IDCurso'] == Aulas[o]['idcourses'] && Calendario[i]['Chamadas'] == (Aulas[o]['ordem'] + 1)) {
|
||||
Calendario[i]['Aula'] = Calendario[i]['Chamadas'] + " - " + Aulas[o]['description'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
res.send(JSON.stringify({
|
||||
"status": 200,
|
||||
"error": error,
|
||||
"response": Calendario,
|
||||
}));
|
||||
console.log(new Date().toUTCString() + " - " + req.originalUrl + " success 200");
|
||||
});
|
||||
}
|
||||
else {
|
||||
res.send(JSON.stringify({
|
||||
"status": 500,
|
||||
"error": error,
|
||||
"response": [],
|
||||
}));
|
||||
console.log(req.originalUrl + " error 500");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/getAulasDoDiaMySQL', verifyJWT, (req, res) => {
|
||||
const Unidades = req.body.Unidades;
|
||||
const DataInicial = req.body.DataInicial;
|
||||
const DataFinal = req.body.DataFinal;
|
||||
let SQLQuery = `select distinct * from (`;
|
||||
for (let i = 0; i < Unidades.length; i++) {
|
||||
if (i > 0) {
|
||||
SQLQuery += `union all
|
||||
`;
|
||||
}
|
||||
SQLQuery += `SELECT distinct
|
||||
date_format(sc.insert_date, '%d/%m/%Y') as 'Data',
|
||||
'' as 'Professor',
|
||||
sc.idusers as 'IDMatricula',
|
||||
'' as 'Aluno',
|
||||
cl.idcourses as 'IDCurso',
|
||||
co.name as 'Curso',
|
||||
concat(cl.ordem + 1, ' - ', cl.description) as 'Aula',
|
||||
date_format(sc.insert_date, '%H:%i:%s') as 'HoraInicial',
|
||||
date_format(sc.update_date, '%H:%i:%s') as 'HoraFinal',
|
||||
un.reference_db as 'Unidade',
|
||||
sc.completedClass as 'Concluida',
|
||||
false as 'Assistida',
|
||||
2 as 'Horas'
|
||||
FROM stepclass sc
|
||||
inner join classes cl on cl.idclasses = sc.idclasses
|
||||
inner join units un on un.idunits = sc.idunits and un.reference_db = '${Unidades[i].replace('.dbo.', '')}'
|
||||
inner join courses co on co.idcourses = cl.idcourses
|
||||
where date_format(sc.insert_date, '%Y-%m-%d') >= '${DataInicial}' and date_format(sc.insert_date, '%Y-%m-%d') <= '${DataFinal}'
|
||||
`;
|
||||
}
|
||||
SQLQuery += `order by Data asc, HoraInicial asc) R;`;
|
||||
|
||||
mysqlConnection.query(SQLQuery, function (error, Aulas, fields) {
|
||||
res.send(JSON.stringify({
|
||||
"status": 200,
|
||||
"error": error,
|
||||
"response": Aulas,
|
||||
}));
|
||||
console.log(new Date().toUTCString() + " - " + req.originalUrl + " success 200");
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/getCursosAluno', verifyJWT, (req, res) => {
|
||||
const idcourses = req.body.idcourses;
|
||||
const idusers = parseInt(req.body.idusers);
|
||||
const idunits = parseInt(req.body.idunits);
|
||||
const SQLQuery1 = `select distinct
|
||||
co.idcourses,
|
||||
co.name as 'Curso',
|
||||
co.durationtraineeindividual as 'CargaHoraria',
|
||||
co.aditional as 'Adicional',
|
||||
co.extracourse as 'CursoExtra',
|
||||
(select un.unityname from units un where un.idunits = ${idunits}) as 'Unidade',
|
||||
(select count(*) from classes cl where cl.idcourses = co.idcourses) as 'Aulas',
|
||||
(select count(*) from classes cl inner join stepclass sc on sc.idclasses = cl.idclasses where cl.idcourses = co.idcourses and sc.idusers = ${idusers} and sc.idunits = ${idunits}) as 'AulasAssistidas'
|
||||
from courses co
|
||||
left join classes cl on cl.idcourses = co.idcourses
|
||||
left join stepclass sc on sc.idclasses = cl.idclasses
|
||||
where co.idcourses in ${idcourses}
|
||||
group by co.idcourses, co.name, co.durationtraineeindividual, co.aditional, co.extracourse;`;
|
||||
mysqlConnection.query(SQLQuery1, function (error, Cursos, fields) {
|
||||
let ExitCursos = [];
|
||||
for (let i = 0; i < Cursos.length; i++) {
|
||||
if (Cursos[i]['Curso'].includes('Módulo')) {
|
||||
let Incluso = false;
|
||||
for (let o = 0; o < ExitCursos.length; o++) {
|
||||
if (Cursos[i]['Curso'].includes(ExitCursos[o]['Curso'])) {
|
||||
ExitCursos[o]['QtdModulos']++;
|
||||
Incluso = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!Incluso)
|
||||
ExitCursos.push( { 'Curso': Cursos[i]['Curso'].split(' - Módulo')[0], 'QtdModulos': 1, 'Modulos': [] } );
|
||||
ExitCursos[ExitCursos.length - 1]['Modulos'].push( Cursos[i] );
|
||||
}
|
||||
else {
|
||||
ExitCursos.push( { 'Curso': Cursos[i]['Curso'].split(' - Módulo')[0], 'QtdModulos': 1, 'Modulos': [] } );
|
||||
ExitCursos[ExitCursos.length - 1]['Modulos'].push( Cursos[i] );
|
||||
}
|
||||
}
|
||||
res.send(JSON.stringify({
|
||||
"status": 200,
|
||||
"error": error,
|
||||
"response": ExitCursos
|
||||
}));
|
||||
console.log(new Date().toUTCString() + " - " + req.originalUrl + " success 200");
|
||||
});
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
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;
|
||||
|
|
@ -0,0 +1,196 @@
|
|||
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 traineeprogram`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getTraineeprogram/:id', verifyJWT, (req, res) => {
|
||||
id = parseInt(req.params.id);
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
*
|
||||
FROM traineeprogram
|
||||
WHERE idtraineeprogram = ${id}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getTraineeprogramCourses/:id', verifyJWT, (req, res) => {
|
||||
id = parseInt(req.params.id);
|
||||
execSQLQuery(`
|
||||
select
|
||||
c.name,
|
||||
tc.ordem,
|
||||
tc.idtraineeprogramcourses
|
||||
from
|
||||
traineeprogramcourses tc
|
||||
inner join
|
||||
courses c
|
||||
on
|
||||
tc.idcourses = c.idcourses
|
||||
where
|
||||
tc.idtraineeprogram = ${id}
|
||||
order by ordem;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/list', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
idtraineeprogram,
|
||||
name,
|
||||
description,
|
||||
concat('R$ ',format(totalvalue,2,'de_DE')) as totalvalue,
|
||||
disabled
|
||||
FROM traineeprogram`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.patch('/disable', verifyJWT, (req, res) => {
|
||||
const idtraineeprogram = parseInt(req.body.idtraineeprogram);
|
||||
execSQLQuery(`
|
||||
UPDATE traineeprogram
|
||||
SET disabled = not disabled
|
||||
WHERE idtraineeprogram = ${idtraineeprogram}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.post('/insert', verifyJWT, (req, res) => {
|
||||
const idaccountplan = req.body.idaccountplan ? 1 : 0;
|
||||
const name = req.body.name;
|
||||
const description = req.body.description;
|
||||
const totalvalue = parseFloat(req.body.totalvalue);
|
||||
const totalmaterialvalue = parseFloat(req.body.totalmaterialvalue);
|
||||
const durationtotal = parseFloat(req.body.durationtotal);
|
||||
const disabled = req.body.disabled ? 1 : 0;
|
||||
const codetraineeprog = req.body.codetraineeprog ? 1 : 0;
|
||||
const peopletec = req.body.peopletec ? 1 : 0;
|
||||
const matvaluefix = req.body.matvaluefix ? 1 : 0;
|
||||
execSQLQuery(`INSERT INTO
|
||||
traineeprogram(
|
||||
idaccountplan, name, description,
|
||||
totalvalue, totalmaterialvalue, durationtotal,
|
||||
disabled, codetraineeprog, peopletec, matvaluefix
|
||||
) VALUES (
|
||||
'${idaccountplan}',"${name}","${description}",
|
||||
'${totalvalue}',${totalmaterialvalue},${durationtotal},
|
||||
'${disabled}','${codetraineeprog}','${peopletec}','${matvaluefix}'
|
||||
)`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.patch('/update', verifyJWT, (req, res) => {
|
||||
const idtraineeprogram = req.body.idtraineeprogram;
|
||||
const idaccountplan = req.body.idaccountplan ? 1 : 0;
|
||||
const name = req.body.name;
|
||||
const description = req.body.description;
|
||||
const totalvalue = parseFloat(req.body.totalvalue);
|
||||
const totalmaterialvalue = parseFloat(req.body.totalmaterialvalue);
|
||||
const durationtotal = parseFloat(req.body.durationtotal);
|
||||
const disabled = req.body.disabled ? 1 : 0;
|
||||
const codetraineeprog = req.body.codetraineeprog ? 1 : 0;
|
||||
const peopletec = req.body.peopletec ? 1 : 0;
|
||||
const matvaluefix = req.body.matvaluefix ? 1 : 0;
|
||||
execSQLQuery(`
|
||||
UPDATE traineeprogram SET
|
||||
idaccountplan = '${idaccountplan}',
|
||||
name = "${name}",
|
||||
description = "${description}",
|
||||
totalvalue = ${totalvalue},
|
||||
totalmaterialvalue = ${totalmaterialvalue},
|
||||
durationtotal = '${durationtotal}',
|
||||
disabled = '${disabled}',
|
||||
codetraineeprog = '${codetraineeprog}',
|
||||
peopletec = '${peopletec}',
|
||||
matvaluefix = '${matvaluefix}'
|
||||
WHERE idtraineeprogram = ${idtraineeprogram}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.post('/addTraineeNote', verifyJWT, (req, res) => {
|
||||
const idtraineeprogram = req.body.idtraineeprogram;
|
||||
const idusers = req.body.idusers;
|
||||
const idunits = req.body.idunits;
|
||||
const note = parseFloat(req.body.note);
|
||||
execSQLQuery(`
|
||||
INSERT INTO
|
||||
traineeprogramnotes(idtraineeprogram, idusers, note, idunits)
|
||||
VALUES
|
||||
(${idtraineeprogram}, ${idusers}, ${idunits}, ${note});`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getMySQLinSQLServerTraineeprogram', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
idtraineeprogram AS 'Codigo',
|
||||
idaccountplan AS 'IDPlanoConta',
|
||||
name AS 'Nome',
|
||||
description AS 'DescricaoContrato',
|
||||
totalvalue AS 'ValorTotal',
|
||||
totalmaterialvalue AS 'ValorMaterialTotal',
|
||||
durationtotal AS 'CargaHorariaTotal',
|
||||
disabled AS 'Desativado',
|
||||
codetraineeprog AS 'CodigoProgTreinamento',
|
||||
peopletec AS 'PeopleTec'
|
||||
FROM traineeprogram;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getSQLServerTraineeprogram/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT
|
||||
*
|
||||
FROM ${db}ProgramaTreinamento;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getMySQLinSQLServerTraineeprogramcourses', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
idtraineeprogram AS 'Codigo',
|
||||
idcourses AS 'CodigoCurso',
|
||||
value AS 'Valor',
|
||||
materialvalue AS 'ValorMaterial',
|
||||
duration AS 'CargaHoraria',
|
||||
ordem AS 'Ordem',
|
||||
opinionsearch AS 'PesquisaOpiniao',
|
||||
materialpercentual AS 'PercentualMaterial'
|
||||
FROM traineeprogramcourses;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getSQLServerTraineeprogramcourses/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT
|
||||
*
|
||||
FROM ${db}ProgramaTreinamentoCursos;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,151 @@
|
|||
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 traineeprogramcourses`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getTraineeprogramcourses/:id', verifyJWT, (req, res) => {
|
||||
id = parseInt(req.params.id);
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
*
|
||||
FROM traineeprogramcourses
|
||||
WHERE idtraineeprogramcourses = ${id}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/getTraineeprogramByCourse/:idcourses', verifyJWT, (req, res) => {
|
||||
var idcourses = parseInt(req.params.idcourses);
|
||||
execSQLQuery(`
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
traineeprogramcourses
|
||||
WHERE
|
||||
idcourses = ${idcourses}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.delete('/deleteTraineeprogramcourses/:id', verifyJWT, (req, res) => {
|
||||
id = parseInt(req.params.id);
|
||||
execSQLQuery(`
|
||||
DELETE FROM traineeprogramcourses
|
||||
WHERE idtraineeprogramcourses = ${id}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.get('/list/:id', verifyJWT, (req, res) => {
|
||||
id = parseInt(req.params.id);
|
||||
execSQLQuery(`SELECT
|
||||
c.idcourses,
|
||||
c.name,
|
||||
tpc.idtraineeprogramcourses,
|
||||
concat('R$ ',format(tpc.value,2,'de_DE')) as value,
|
||||
concat('R$ ',format(tpc.materialvalue,2,'de_DE')) as materialvalue,
|
||||
tpc.duration,
|
||||
tpc.ordem,
|
||||
tpc.opinionsearch,
|
||||
concat(tpc.materialpercentual,'%') as materialpercentual,
|
||||
case when tpc.opinionsearch = 0 then 'Não' else 'Sim' end as pesquisa
|
||||
FROM
|
||||
courses c
|
||||
inner join traineeprogramcourses tpc
|
||||
on tpc.idcourses = c.idcourses
|
||||
WHERE
|
||||
tpc.idtraineeprogram = ${id} order by ordem`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.post('/insert', verifyJWT, (req, res) => {
|
||||
const idcourse = req.body.idcourses;
|
||||
const value = parseFloat(req.body.value);
|
||||
const materialvalue = parseFloat(req.body.materialvalue);
|
||||
const duration = parseFloat(req.body.duration);
|
||||
const order = req.body.ordem;
|
||||
const opinionsearch = req.body.opinionsearch;
|
||||
const materialpercentual = parseFloat(req.body.materialpercentual);
|
||||
const idtraineeprogram = req.body.idtraineeprogram;
|
||||
execSQLQuery(`INSERT INTO
|
||||
traineeprogramcourses(
|
||||
idcourses, value, materialvalue,
|
||||
duration, ordem, opinionsearch,
|
||||
materialpercentual, idtraineeprogram
|
||||
) VALUES (
|
||||
'${idcourse}','${value}','${materialvalue}',
|
||||
'${duration}','${order}','${opinionsearch}',
|
||||
'${materialpercentual}','${idtraineeprogram}'
|
||||
)`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.patch('/update/:id', verifyJWT, (req, res) => {
|
||||
id = parseInt(req.params.id);
|
||||
const idtraineeprogramcourses = req.body.idtraineeprogramcourses;
|
||||
const idcourse = req.body.idcourses;
|
||||
const value = parseFloat(req.body.value);
|
||||
const materialvalue = parseFloat(req.body.materialvalue);
|
||||
const duration = parseFloat(req.body.duration);
|
||||
const order = req.body.ordem;
|
||||
const opinionsearch = req.body.opinionsearch;
|
||||
const materialpercentual = parseFloat(req.body.materialpercentual);
|
||||
const idtraineeprogram = req.body.idtraineeprogram;
|
||||
execSQLQuery(`
|
||||
UPDATE traineeprogramcourses SET
|
||||
idcourses = '${idcourse}',
|
||||
value = '${value}',
|
||||
materialvalue = '${materialvalue}',
|
||||
duration = '${duration}',
|
||||
ordem = ${order},
|
||||
opinionsearch = ${opinionsearch},
|
||||
materialpercentual = '${materialpercentual}',
|
||||
idtraineeprogram = '${idtraineeprogram}'
|
||||
WHERE idtraineeprogramcourses = ${id}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
router.patch('/attOrdem0', verifyJWT, (req, res) => {
|
||||
const idtraineeprogramcourses = req.body.idtraineeprogramcourses;
|
||||
const ordemagora = req.body.ordemagora;
|
||||
execSQLQuery(`
|
||||
UPDATE
|
||||
traineeprogramcourses
|
||||
SET
|
||||
ordem = ${ordemagora}
|
||||
WHERE
|
||||
idtraineeprogramcourses = ${idtraineeprogramcourses}`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
})
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
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('/gettypecourse/:idtypescourse', verifyJWT, (req, res) => {
|
||||
const idtypescourse = parseInt(req.params.idtypescourse);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM typescourse
|
||||
WHERE idtypescourse = ${idtypescourse};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getList', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM typescourse;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insert', verifyJWT, (req, res) => {
|
||||
const idtypescourse = parseInt(req.body.idtypescourse);
|
||||
const description = req.body.description;
|
||||
const gradecalc = req.body.gradecalc;
|
||||
const disabled = req.body.disabled ? 1 : 0;
|
||||
execSQLQuery(`INSERT INTO typescourse(description, gradecalc, disabled) VALUES
|
||||
(?, ?, ?);`, res, req.originalUrl, [description, gradecalc, disabled]);
|
||||
});
|
||||
|
||||
router.patch('/update', verifyJWT, (req, res) => {
|
||||
const idtypescourse = parseInt(req.body.idtypescourse);
|
||||
const description = req.body.description;
|
||||
const gradecalc = req.body.gradecalc;
|
||||
const disabled = req.body.disabled ? 1 : 0;
|
||||
execSQLQuery(`UPDATE typescourse SET
|
||||
description = ?,
|
||||
gradecalc = ?,
|
||||
disabled = ?
|
||||
WHERE idtypescourse = ?;`, res, req.originalUrl, [description, gradecalc, disabled, idtypescourse]);
|
||||
});
|
||||
|
||||
router.get('/disable/:idtypescourse', verifyJWT, (req, res) => {
|
||||
const idtypescourse = parseInt(req.params.idtypescourse);
|
||||
execSQLQuery(`UPDATE typescourse SET
|
||||
disabled = not disabled
|
||||
WHERE idtypescourse = ${idtypescourse};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
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("/listLogin", (req, res) => {
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
un.idunits,
|
||||
un.description,
|
||||
un.reference_db,
|
||||
un.unityname,
|
||||
un.ip_externo,
|
||||
un.ip_local,
|
||||
un.porta_mysql
|
||||
FROM units un
|
||||
WHERE un.idunits in (60);`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.post('/authUser', (req, res) => {
|
||||
const type = parseInt(req.body.type);
|
||||
const password = encriptPassword(req.body.password);
|
||||
const user = req.body.login;
|
||||
this.id = type + user + password;
|
||||
const db = req.body.db;
|
||||
|
||||
if (user == "190000" && password == encriptPassword("zoeteacher"))
|
||||
{
|
||||
execMySQLQueryLogin(`SELECT
|
||||
'190000' as 'IDMatricula',
|
||||
'maker2019' as 'SenhaIntranet',
|
||||
'Sistema' as 'Nome',
|
||||
4 as 'idusertype';`, res, req.originalUrl);
|
||||
}
|
||||
else {
|
||||
const query = `SELECT
|
||||
CAST(us.user AS UNSIGNED) AS IDMatricula,
|
||||
'maker2019' AS SenhaIntranet,
|
||||
us.Name AS Nome,
|
||||
4 AS idusertype
|
||||
FROM users us
|
||||
WHERE us.user = '${user}' AND us.password = '${password}' AND us.idusertype = 18;`;
|
||||
execMySQLQueryLogin(query, res, req.originalUrl);
|
||||
}
|
||||
});
|
||||
|
||||
router.get("/getRobotCourses", verifyJWT, (req, res) => {
|
||||
execSQLQuery(
|
||||
`SELECT
|
||||
0 as 'IDMatricula',
|
||||
idcourses as 'IDCurso',
|
||||
name as 'NomeVersao',
|
||||
aditional as 'Adicional',
|
||||
extracourse as 'CursoExtra'
|
||||
FROM courses
|
||||
WHERE idtypescourse in (5, 8) and disabled = 0;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
});
|
||||
|
||||
router.get("/getRobotCourseByStudent/:idusers/:banco", verifyJWT, (req, res) => {
|
||||
const idusers = parseInt(req.params.idusers);
|
||||
const db = req.params.banco;
|
||||
execSQLQuery(
|
||||
`SELECT distinct
|
||||
sc.idusers as IDMatricula,
|
||||
co.idcourses as IDCurso,
|
||||
co.name as NomeVersao
|
||||
FROM studentCourses sc
|
||||
INNER JOIN courses co on co.idcourses = sc.idcourses
|
||||
WHERE sc.idusers = ${idusers} and co.disabled = 0;`,
|
||||
res,
|
||||
req.originalUrl
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
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,
|
||||
coalesce((select
|
||||
sc.callCounter
|
||||
from studentCall sc
|
||||
inner join units un on un.idunits = sc.idunit
|
||||
where sc.idusers = ${idusers} and sc.idcourses = co.idcourses and un.reference_db = '${db}'
|
||||
), 0) as qtde_presencas
|
||||
from courses co
|
||||
where co.idcourses = ${idcourses};`;
|
||||
execSQLQuery(sqlQuery, 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.get('/getZoeRobotsApks/:idzoerobots', (req, res) => {
|
||||
const idzoerobots = req.params.idzoerobots;
|
||||
mysqlConnection.query(
|
||||
`SELECT * FROM zoerobotsapks where idzoerobots = ${idzoerobots};`,
|
||||
function (error, results, fields) {
|
||||
console.log(
|
||||
new Date().toUTCString() + ' - ' + req.originalUrl + ' success 200'
|
||||
);
|
||||
res.send(`{"Aplicativos": ` + JSON.stringify(results) + `}`);
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,427 @@
|
|||
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');
|
||||
|
||||
var accessToken = "b78050152a551b71665045f03a2161fa";
|
||||
var clientSecret = "VumfHSuZcTIAe6hyvHgrRGv+UVX9xEQlX1HqFgiA+7DDhLIIXt1hjy2mP3Ht/MQyYs++ja8Ok5+aWabRRJ5uGY+dQDIlmZGeWpplffT6VowLOLe6JEYH4OLdmv5sNQtR";
|
||||
var clientIDVimeo = "addbd91428cb667f7c5d50e47626ddb8554170cb";
|
||||
|
||||
router.use(bodyParser.urlencoded({
|
||||
parameterLimit: 100000,
|
||||
limit: '2000mb',
|
||||
extended: true
|
||||
}));
|
||||
router.use(bodyParser.json({
|
||||
parameterLimit: 100000,
|
||||
limit: '2000mb',
|
||||
extended: true
|
||||
}));
|
||||
|
||||
const routes = function () {
|
||||
|
||||
router.get('/', verifyJWT, (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM media;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllMedia', (req, res) => {
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM media;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getMedia/:idmedia', verifyJWT, (req, res) => {
|
||||
const idmedia = parseInt(req.params.idmedia);
|
||||
execSQLQuery(`SELECT
|
||||
*
|
||||
FROM media
|
||||
WHERE idmedia = ${idmedia};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/viewvideo/:_key', (req, res) => {
|
||||
var _key = req.params._key;
|
||||
execSQLQueryVideo(`SELECT * FROM videoaccess WHERE _key = '${_key}' AND expired = 0`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertVA', verifyJWT, (req, res) => {
|
||||
const idvideoaccess = req.body.idvideoaccess;
|
||||
const _key = (req.body._key).trim();
|
||||
const expired = req.body.expired ? 1 : 0;
|
||||
const url = req.body.url;
|
||||
const tag = req.body.tag;
|
||||
|
||||
execSQLQuery(`INSERT INTO videoaccess(_key, expired, url, tag)
|
||||
VALUES (?, ?, ?, ?);`, res, req.originalUrl, [_key, expired, url, tag]);
|
||||
});
|
||||
|
||||
router.patch('/updateVA', verifyJWT, (req, res) => {
|
||||
const idvideoaccess = req.body.idvideoaccess;
|
||||
const _key = (req.body._key).trim();
|
||||
const expired = req.body.expired ? 1 : 0;
|
||||
const url = req.body.url;
|
||||
execSQLQuery(`UPDATE videoaccess SET
|
||||
_key = ?,
|
||||
expired = ?,
|
||||
url = ?
|
||||
WHERE idvideoaccess = ?;`, res, req.originalUrl, [_key, expired, url, idvideoaccess]);
|
||||
});
|
||||
|
||||
router.get('/getVA/:tag', verifyJWT, (req, res) => {
|
||||
const tag = req.params.tag;
|
||||
execSQLQuery(`SELECT * FROM videoaccess WHERE tag = '${tag}' AND expired = 0;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/insertMedia', verifyJWT, (req, res) => {
|
||||
const idmedia = req.body.idmedia;
|
||||
const description = req.body.description;
|
||||
const publishid = req.body.publishid;
|
||||
const type = req.body.type;
|
||||
execSQLQuery(`INSERT INTO media(description, publishid, type)
|
||||
VALUES (?, ?, ?);`, res, req.originalUrl, [description, publishid, type]);
|
||||
});
|
||||
|
||||
router.patch('/updateMedia', verifyJWT, (req, res) => {
|
||||
const idmedia = req.body.idmedia;
|
||||
const description = req.body.description;
|
||||
const publishid = req.body.publishid;
|
||||
const type = req.body.type;
|
||||
execSQLQuery(`UPDATE media SET
|
||||
description = ?,
|
||||
publishid = ?,
|
||||
type = ?
|
||||
WHERE idmedia = ?;`, res, req.originalUrl, [description, publishid, type, idmedia]);
|
||||
});
|
||||
|
||||
router.get('/backVideo/:idvideo/:Online', (req, res) => {
|
||||
var idvideos = req.params.idvideo;
|
||||
var dir = Variables('src_media') + 'videos/tmp/var/www/html/videos/' + idvideos + '.mp4';
|
||||
const fs = require('fs');
|
||||
|
||||
if (fs.existsSync(dir)) {
|
||||
console.log("Requisição de vídeo: " + idvideos);
|
||||
res.send(true);
|
||||
}
|
||||
else {
|
||||
const shell = require('shelljs');
|
||||
shell.exec(`unzip -o -P "${Variables('passdecrypt')}" ${Variables('src_media')}videos/${idvideos}.zip -d ${Variables('src_media')}videos/tmp/`, function (ResExtract) {
|
||||
console.log("RESULTADO: " + ResExtract);
|
||||
if (ResExtract == 0) { // EXTRAIDO COM SUCESSO
|
||||
shell.exec(`chmod -R 777 ${Variables('src_media')}videos/tmp/`);
|
||||
if (fs.existsSync(dir)) {
|
||||
console.log("Requisição de vídeo: " + idvideos);
|
||||
res.send(true);
|
||||
}
|
||||
else {
|
||||
res.send(false);
|
||||
}
|
||||
}
|
||||
else { // ERRO AO EXTRAIR ( BAIXA O ARQUIVO DO SERVIDOR E REPRODUZ NO VIMEO )
|
||||
shell.exec('cd ' + Variables('src_media') + 'videos/;wget http://18.228.91.135/videos/' + idvideos + '.zip', function (sucesso) {
|
||||
console.log(sucesso);
|
||||
});
|
||||
res.send(false);
|
||||
}
|
||||
});
|
||||
/*require('all-unpacker').unpack(Variables('src_media') + 'videos/' + idvideos + '.zip', {
|
||||
targetDir: Variables('src_media') + 'videos/tmp/',
|
||||
password: Variables('passdecrypt'),
|
||||
forceOverwrite: true,
|
||||
}, function(err, files, text) {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
shell.exec('cd ' + Variables('src_media') + 'videos/;wget http://18.228.91.135/videos/' + idvideos + '.zip', function (sucesso) {
|
||||
console.log(sucesso);
|
||||
});
|
||||
if (check == 0) {
|
||||
res.redirect("https://player.vimeo.com/video/" + idvideos);
|
||||
}
|
||||
else {
|
||||
res.send(false);
|
||||
}
|
||||
}
|
||||
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 vídeo: " + idvideos);
|
||||
if (check == 0) {
|
||||
res.setHeader('Content-Type', 'video/mp4');
|
||||
res.send(data);
|
||||
}
|
||||
else {
|
||||
res.send(true);
|
||||
}
|
||||
});
|
||||
//res.redirect(dir);
|
||||
};
|
||||
});*/
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/deleteVideo/:publishid', verifyJWT, (req, res) => {
|
||||
const publishid = req.params.publishid;
|
||||
let Vimeo = require('vimeo').Vimeo;
|
||||
let client = new Vimeo(clientIDVimeo, clientSecret, accessToken);
|
||||
client.request({
|
||||
method: 'DELETE',
|
||||
path: '/videos/' + publishid,
|
||||
}, function (error, body, status_code, headers) {
|
||||
mysqlConnection.query(`DELETE FROM media WHERE publishid = '${publishid}';`, function (error, results, fields) {
|
||||
const fs = require('fs');
|
||||
fs.unlink(Variables('src_media') + 'videos/' + publishid + '.zip', function(Sucesso) {
|
||||
res.send(JSON.stringify({
|
||||
"status": 200,
|
||||
"error": error,
|
||||
"response": results
|
||||
}));
|
||||
console.log(req.originalUrl + "/ success 200");
|
||||
});
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
let uploads = {};
|
||||
|
||||
router.post('/uploadwithProgress', verifyJWT, (req, res, next) => {
|
||||
let fs = require('fs');
|
||||
let fileId = req.headers['x-file-id'];
|
||||
let startByte = parseInt(req.headers['x-start-byte'], 10);
|
||||
let name = req.headers['name'];
|
||||
let fileSize = parseInt(req.headers['size'], 10);
|
||||
let Copiar = req.headers['Copiar'] || "1";
|
||||
let ext = '.mp4';
|
||||
console.log('file Size', fileSize, fileId, startByte);
|
||||
if (uploads[fileId] && fileSize == uploads[fileId].bytesReceived) {
|
||||
res.end();
|
||||
return;
|
||||
}
|
||||
console.log(fileSize);
|
||||
|
||||
if (!fileId) {
|
||||
res.writeHead(400, "No file id");
|
||||
res.end(400);
|
||||
}
|
||||
console.log(uploads[fileId]);
|
||||
if (!uploads[fileId])
|
||||
uploads[fileId] = {};
|
||||
|
||||
let upload = uploads[fileId]; //Bytes of file already present
|
||||
|
||||
let fileStream;
|
||||
|
||||
let Caminho = `${Variables('src_media')}videos/`;
|
||||
let dir = `${Caminho}${name}`;
|
||||
|
||||
//checking bytes of file uploaded and sending to server
|
||||
if (!startByte) {
|
||||
upload.bytesReceived = 0;
|
||||
let name = req.headers['name'];
|
||||
fileStream = fs.createWriteStream(dir + ext, {
|
||||
flags: 'w' //with "w"(write stream ) it keeps on adding data
|
||||
});
|
||||
} else {
|
||||
if (upload.bytesReceived != startByte) {//if same name file is sent with different size it will not upload
|
||||
res.writeHead(400, "Wrong start byte");
|
||||
res.end(upload.bytesReceived);
|
||||
return;
|
||||
}
|
||||
// append to existing file
|
||||
fileStream = fs.createWriteStream(dir + ext, {
|
||||
flags: 'a'
|
||||
});
|
||||
}
|
||||
req.on('data', function (data) {
|
||||
upload.bytesReceived += data.length; //adding length of data we are adding
|
||||
});
|
||||
req.pipe(fileStream);
|
||||
// when the request is finished, and all its data is written
|
||||
fileStream.on('close', function () {
|
||||
console.log(upload.bytesReceived, fileSize);
|
||||
if (upload.bytesReceived == fileSize) {
|
||||
console.log("Upload finished");
|
||||
delete uploads[fileId];
|
||||
|
||||
// can do something else with the uploaded file here
|
||||
|
||||
UploadVimeo(name, dir + ext, function(URI) {
|
||||
if (URI == false) {
|
||||
// ERRO
|
||||
fs.unlink(dir + ext, function(Sucesso) {
|
||||
res.send({ 'status': 'falhou' });
|
||||
res.end();
|
||||
})
|
||||
}
|
||||
else {
|
||||
// SUCESSO
|
||||
let novoNome = URI.split('/')[2];
|
||||
if (Copiar == "1") {
|
||||
fs.rename(dir + ext, Caminho + novoNome + ext, function(Sucesso) {
|
||||
zipVideoSync(novoNome, Caminho + novoNome, function(Sucesso) {
|
||||
res.send({ 'status': 'uploaded', 'uri': URI });
|
||||
res.end();
|
||||
});
|
||||
})
|
||||
}
|
||||
else {
|
||||
fs.unlink(dir + ext, function(Sucesso) {
|
||||
res.send({ 'status': 'uploaded', 'uri': URI });
|
||||
res.end();
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
} else {
|
||||
// connection lost, leave the unfinished file around
|
||||
console.log("File unfinished, stopped at " + upload.bytesReceived);
|
||||
res.writeHead(500, "Server Error");
|
||||
res.end();
|
||||
}
|
||||
});
|
||||
|
||||
// in case of I/O error - finish the request
|
||||
fileStream.on('error', function (err) {
|
||||
console.log("fileStream error", err);
|
||||
res.writeHead(500, "File error");
|
||||
res.end();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/status', verifyJWT, (req, res) => {
|
||||
//console.log('Successfully came');
|
||||
//From GET request 3 parameters below and store in variable
|
||||
let fileId = req.headers['x-file-id'];
|
||||
let name = req.headers['name'];
|
||||
let fileSize = parseInt(req.headers['size'], 10);
|
||||
console.log(name);
|
||||
if (name) {
|
||||
try {
|
||||
let stats = fs.statSync(`${Variables('src_media')}videos/${name}`); //grabs file information and returns
|
||||
//checking file exists or not
|
||||
if (stats.isFile()) {
|
||||
console.log(`fileSize is ${fileSize} and already uploaded file size ${stats.size}`);
|
||||
if (fileSize == stats.size) {
|
||||
res.send({ 'status': 'file is present' }) //returns if file exists
|
||||
return;
|
||||
}
|
||||
if (!uploads[fileId])
|
||||
uploads[fileId] = {}
|
||||
console.log(uploads[fileId]);
|
||||
uploads[fileId]['bytesReceived'] = stats.size;//checks total amount of file uploaded
|
||||
console.log(uploads[fileId], stats.size);
|
||||
}
|
||||
} catch (er) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
let upload = uploads[fileId];
|
||||
if (upload)
|
||||
res.send({ "uploaded": upload.bytesReceived });//returns to FrontEnd amout of bytes uploaded
|
||||
else
|
||||
res.send({ "uploaded": 0 });
|
||||
|
||||
});
|
||||
|
||||
router.get('/SolucaoProblemas/:publishid/:tentativa', verifyJWT, (req, res) => {
|
||||
const publishid = req.params.publishid;
|
||||
const tentativa = parseInt(req.params.tentativa);
|
||||
const fs = require('fs');
|
||||
if (tentativa == 1) {
|
||||
fs.unlink(Variables('src_media') + 'videos/tmp/var/www/html/videos/' + publishid + '.mp4', function(Sucesso) {
|
||||
console.log("Video MP4 excluido com sucesso!");
|
||||
res.send(true);
|
||||
});
|
||||
}
|
||||
else {
|
||||
fs.unlink(Variables('src_media') + 'videos/' + publishid + '.zip', function(Sucesso) {
|
||||
console.log("Video ZIP excluido com sucesso!");
|
||||
fs.unlink(Variables('src_media') + 'videos/tmp/var/www/html/videos/' + publishid + '.mp4', function(Sucesso) {
|
||||
console.log("Video MP4 excluido com sucesso!");
|
||||
res.send(true);
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
function UploadVimeo(description, oldpath, callback) {
|
||||
let Vimeo = require('vimeo').Vimeo;
|
||||
let client = new Vimeo(clientIDVimeo, clientSecret, accessToken);
|
||||
client.upload(
|
||||
oldpath,
|
||||
{
|
||||
'name': description,
|
||||
'description': description
|
||||
},
|
||||
function (uri) {
|
||||
console.log('Your video URI is: ' + uri);
|
||||
callback(uri);
|
||||
},
|
||||
function (bytes_uploaded, bytes_total) {
|
||||
var percentage = (bytes_uploaded / bytes_total * 100).toFixed(2)
|
||||
console.log(bytes_uploaded, bytes_total, percentage + '%')
|
||||
},
|
||||
function (error) {
|
||||
console.log('Failed because: ' + error)
|
||||
callback(false);
|
||||
})
|
||||
}
|
||||
|
||||
function zipVideoSync(name, dir, callback) {
|
||||
const fs = require('fs');
|
||||
require('all-unpacker').pack(Variables('src_media') + 'videos/' + name + '.zip', {
|
||||
targetDir: Variables('src_media') + 'videos/' + name + '.mp4',
|
||||
password: Variables('passdecrypt'),
|
||||
}, function(err, files, text) {
|
||||
if (err) return console.error(err);
|
||||
if (files) console.log('files', files);
|
||||
if (text) {
|
||||
console.log('text', text);
|
||||
if(fs.unlinkSync(dir + '.mp4'))
|
||||
console.log("Falha ao excluir");
|
||||
else
|
||||
console.log("Excluído com sucesso!");
|
||||
callback(true);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = routes;
|
||||
|
||||
/*
|
||||
//função pack - inserida no index.js da biblioteca all-unpacker//
|
||||
|
||||
unpackAll.pack = function pack(archiveFile, options, callback) {
|
||||
if (!callback) return new Error('No callback function');
|
||||
if (!archiveFile) archiveFile = options.archiveFile;
|
||||
if (!archiveFile) return callback(Error("Error: archiveFile or options.archiveFile missing."), null);
|
||||
if (!options) options = {};
|
||||
|
||||
var unar = options.unar;
|
||||
if (!unar) unar = (process.platform != "linux") ? path.join(__dirname,'zip') : 'zip';
|
||||
var ar = [unar];
|
||||
|
||||
if (options.password) {
|
||||
ar.push('-P');
|
||||
ar.push(options.password);
|
||||
}
|
||||
|
||||
ar.push('SOURCEFILE');
|
||||
|
||||
var targetDir = options.targetDir;
|
||||
ar.push(targetDir);
|
||||
|
||||
var cmd = quote(ar).replace('SOURCEFILE', archiveFile);
|
||||
exec_unar(cmd, targetDir, callback);
|
||||
};
|
||||
*/
|
||||
|
|
@ -0,0 +1,427 @@
|
|||
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('/getAllFormasAtendimento/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT
|
||||
*
|
||||
FROM ${db}FormasAtendimento where IDFormaAtendimento > 100;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllVeiculos/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT
|
||||
*
|
||||
FROM ${db}Veiculos where IDVeiculo > 100;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllProdutosVendas/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT
|
||||
*
|
||||
FROM ${db}ProdutosVendas where IDProduto > 100;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllResultadosAtendimento/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT
|
||||
*
|
||||
FROM ${db}ResultadosAtendimento where IDResultadoAtendimento > 100;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllFuncionarios/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT
|
||||
*
|
||||
FROM ${db}Funcionarios;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/CadastrarControleDeVisita/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
const IDControle = parseInt(req.body.IDControle);
|
||||
const IDFormaAtendimento = parseInt(req.body.IDFormaAtendimento);
|
||||
const IDVeiculo = parseInt(req.body.IDVeiculo);
|
||||
const IDProduto = parseInt(req.body.IDProduto);
|
||||
const IDFuncionario = parseInt(req.body.IDFuncionario);
|
||||
const Nome = req.body.Nome;
|
||||
const Telefone = req.body.Telefone;
|
||||
const CursoPraVoce = req.body.CursoPraVoce ? 1 : 0;
|
||||
const Concluido = req.body.Concluido ? 1 : 0;
|
||||
const CursoPraQuem = req.body.CursoPraQuem;
|
||||
const Observacao = req.body.Observacao;
|
||||
const Data = req.body.Data;
|
||||
const Hora = req.body.Hora;
|
||||
const PessoaFisica = req.body.PessoaFisica ? 1 : 0;
|
||||
const IDPessoa = parseInt(req.body.IDPessoa);
|
||||
const IDFuncionarioTelemarketing = parseInt(req.body.IDFuncionarioTelemarketing);
|
||||
const IDAtendimento = parseInt(req.body.IDAtendimento) || 0;
|
||||
const Celular = req.body.Celular;
|
||||
const Email = req.body.Email;
|
||||
|
||||
execSQLQuery2(`INSERT INTO ${db}ControleAtendimento (IDControle, IDFormaAtendimento, IDVeiculo, IDProduto, IDFuncionario, Nome, Telefone, CursoPraVoce, Concluido, CursoPraQuem, Observacao, Data, Hora, PessoaFisica, IDPessoa, IDFuncionarioTelemarketing, IDAtendimento, Celular, Email)
|
||||
VALUES (${IDControle}, ${IDFormaAtendimento}, ${IDVeiculo}, ${IDProduto}, ${IDFuncionario}, '${Nome}', '${Telefone}', ${CursoPraVoce}, ${Concluido}, '${CursoPraQuem}', '${Observacao}', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, ${PessoaFisica}, ${IDPessoa}, ${IDFuncionarioTelemarketing}, ${IDAtendimento}, '${Celular}', '${Email}');`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.patch('/AtualizarControleDeVisita/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
const IDControle = parseInt(req.body.IDControle);
|
||||
const IdAtendimento = parseInt(req.body.IDAtendimento);
|
||||
execSQLQuery2(`UPDATE ${db}ControleAtendimento SET IDAtendimento = ${IdAtendimento} WHERE IDControle = ${IDControle};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/CadastrarPessoa/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
const IDPessoa = parseInt(req.body.IDPessoa);
|
||||
const IDFuncionarioCadastro = parseInt(req.body.IDFuncionarioCadastro);
|
||||
const Nome = req.body.Nome;
|
||||
const FoneResidencial = req.body.FoneResidencial;
|
||||
const Celular = req.body.Celular;
|
||||
|
||||
execSQLQuery2(`INSERT INTO ${db}Pessoas (IDPessoa, IDResponsavel, IDFuncionarioCadastro, IDCupom, IDOrigemCadastro, Nome, NomeFantasia, Sexo, DataNascimento, Endereco, Complemento, Bairro, Cidade, CEP, UF, FoneResidencial, FoneComercial, Celular, Fax, CPF, RG, CGC, InscricaoEstadual, Profissao, EmpresaTrabalha, EnderecoEmpresa, BairroEmpresa, CidadeEmpresa, CEPEmpresa, UFEmpresa, NomePai, NomeMae, NomeConjugue, e_mail, Data, DataRetorno, ResponsavelEmpresa, Contato, PessoaFisica)
|
||||
VALUES (${IDPessoa}, 0, ${IDFuncionarioCadastro}, 0, 0, '${Nome}', null, '', '1900-01-01', '', null, '', '', '', '', '${FoneResidencial}', '', '${Celular}', null, '', '', null, null, '', '', '', '', '', '', '', '', '', '', '', CURRENT_TIMESTAMP, null, null, null, 1);`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/CadastrarAtendimento/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
const IdAtendimento = parseInt(req.body.IdAtendimento);
|
||||
const IDAtendente = parseInt(req.body.IDAtendente);
|
||||
const Resumo = req.body.Resumo;
|
||||
const IDFormaAtendimento = parseInt(req.body.IDFormaAtendimento);
|
||||
const IDResultadoAtendimento = parseInt(req.body.IDResultadoAtendimento);
|
||||
const ProximoRetorno = req.body.ProximoRetorno;
|
||||
const Finalizado = req.body.Finalizado ? 1 : 0;
|
||||
const Concluido = req.body.Concluido ? 1 : 0;
|
||||
const DataVisita = req.body.DataVisita;
|
||||
|
||||
const SQLInsert = `INSERT INTO ${db}Atendimentos (IdAtendimento, IDAtendente, DataHora, Data, Hora, Resumo, IDFormaAtendimento, IDResultadoAtendimento, ProximoRetorno, DataVisita, Finalizado, Concluido, IDFuncionarioCadastro) VALUES (${IdAtendimento}, ${IDAtendente}, CURRENT_TIMESTAMP, null, null, '${Resumo}', ${IDFormaAtendimento}, ${IDResultadoAtendimento}, ${(ProximoRetorno) ? "'" + ProximoRetorno + "'" : null}, '${DataVisita}', ${Finalizado}, ${Concluido}, null);`;
|
||||
console.log(SQLInsert);
|
||||
execSQLQuery2(SQLInsert, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/CadastrarAtendimentosCabecalho/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
const IdAtendimento = parseInt(req.body.IdAtendimento);
|
||||
const IDPessoa = parseInt(req.body.IDPessoa);
|
||||
const IDResultadoAtendimento = parseInt(req.body.IDResultadoAtendimento);
|
||||
const ProximoRetorno = req.body.ProximoRetorno;
|
||||
const Concluido = req.body.Concluido ? 1 : 0;
|
||||
const IDFuncionarioCadastro = parseInt(req.body.IDFuncionarioCadastro);
|
||||
|
||||
execSQLQuery2(`INSERT INTO ${db}AtendimentosCabecalho (IdAtendimento, IDPessoa, IDResultadoAtendimento, ProximoRetorno, DataAtendimento, Concluido, SemInteresse, NivelInteresse, IDFuncionarioCadastro, IDTipoCurso, IDMatricula, Automatico) VALUES (${IdAtendimento}, ${IDPessoa}, ${IDResultadoAtendimento}, ${(ProximoRetorno) ? "'" + ProximoRetorno + "'" : null}, CURRENT_TIMESTAMP, ${Concluido}, 0, 0, ${IDFuncionarioCadastro}, 0, null, 0);`, res, req.originalUrl);
|
||||
if (IDResultadoAtendimento == 102) {
|
||||
sqlServerConnection.request().query(`update ${db}AtendimentosCabecalho set Concluido = 1 where IdAtendimento = ${IdAtendimento};`, function (error, results, fields) {
|
||||
console.log("Fechou Matrícula");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/CadastrarPessoasProdutos/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
const IDProduto = parseInt(req.body.IDProduto);
|
||||
const IDPessoa = parseInt(req.body.IDPessoa);
|
||||
|
||||
execSQLQuery2(`INSERT INTO ${db}PessoasProdutos (IDPessoa, IDProduto) VALUES (${IDPessoa}, ${IDProduto});`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllControleAtendimento/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT
|
||||
*
|
||||
FROM ${db}ControleAtendimento
|
||||
ORDER BY IDControle ASC;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllPessoas/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT
|
||||
*
|
||||
FROM ${db}Pessoas
|
||||
ORDER BY IDPessoa ASC;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAllAtendimentos/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
execSQLQuery2(`SELECT
|
||||
*
|
||||
FROM ${db}Atendimentos
|
||||
ORDER BY IdAtendimento ASC;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/CadastrarVeiculo/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
const IDVeiculo = parseInt(req.body.IDVeiculo);
|
||||
const Descricao = req.body.Descricao;
|
||||
|
||||
execSQLQuery2(`INSERT INTO ${db}Veiculos (IDVeiculo, Descricao) VALUES (${IDVeiculo}, '${Descricao}');`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/getVisitasCadastradas/:db', verifyJWT, (req, res) => {
|
||||
const IDFuncionario = parseInt(req.body.IDFuncionario);
|
||||
const DataInicial = req.body.DataInicial;
|
||||
const DataFinal = req.body.DataFinal;
|
||||
const Tipo = req.body.Tipo;
|
||||
const db = req.params.db;
|
||||
let SQLServerQuery = `select distinct * from (
|
||||
select distinct
|
||||
ctd.IDControle,
|
||||
--ctd.IDFormaAtendimento,
|
||||
ctd.IDProduto,
|
||||
ctd.IDPessoa,
|
||||
ctd.IDVeiculo,
|
||||
rat.Descricao as 'Resultado',
|
||||
--fat.Descricao as 'FormaAtendimento',
|
||||
--vei.Descricao as 'Divulgacao',
|
||||
--pv.Descricao as 'Curso',
|
||||
--fun.Nome as 'Funcionario',
|
||||
ctd.Nome as 'Cliente',
|
||||
ctd.Celular as 'Celular',
|
||||
(convert(varchar, ctd.Data, 103) + ' ' + convert(varchar, ctd.Data, 8)) as 'DataL',
|
||||
(convert(varchar, atd.ProximoRetorno, 103) + ' ' + convert(varchar, atd.ProximoRetorno, 8)) as 'Retorno',
|
||||
ctd.Data,
|
||||
atd.ProximoRetorno,
|
||||
ctd.Observacao
|
||||
/*from ${db}ControleAtendimento ctd
|
||||
left join ${db}Atendimentos atd on atd.IdAtendimento = ctd.IDAtendimento and convert(varchar, atd.Data, 120) = convert(varchar, ctd.Data, 120)
|
||||
left join ${db}PessoasProdutos pp on pp.IDPessoa = ctd.IDPessoa
|
||||
left join ${db}ProdutosVendas pv on pv.IDProduto = ctd.IDProduto
|
||||
left join ${db}ResultadosAtendimento rat on rat.IDResultadoAtendimento = atd.IDResultadoAtendimento
|
||||
inner join ${db}FormasAtendimento fat on fat.IDFormaAtendimento = ctd.IDFormaAtendimento
|
||||
inner join ${db}Veiculos vei on vei.IDVeiculo = ctd.IDVeiculo
|
||||
inner join ${db}Funcionarios fun on fun.IDFuncionario = ctd.IDFuncionario*/
|
||||
from ${db}ControleAtendimento ctd
|
||||
left join ${db}Atendimentos atd on atd.IdAtendimento = ctd.IDAtendimento and convert(varchar, atd.DataVisita, 100) = convert(varchar, ctd.Data, 100)
|
||||
--inner join ${db}PessoasProdutos pp on pp.IDPessoa = ctd.IDPessoa
|
||||
--inner join ${db}ProdutosVendas pv on pv.IDProduto = pp.IDProduto
|
||||
inner join ${db}ResultadosAtendimento rat on rat.IDResultadoAtendimento = atd.IDResultadoAtendimento
|
||||
--inner join ${db}FormasAtendimento fat on fat.IDFormaAtendimento = ctd.IDFormaAtendimento
|
||||
--inner join ${db}Veiculos vei on vei.IDVeiculo = ctd.IDVeiculo
|
||||
--inner join ${db}Funcionarios fun on fun.IDFuncionario = ctd.IDFuncionario
|
||||
where ${(IDFuncionario > 0) ? ('(ctd.IDFuncionarioTelemarketing = ' + IDFuncionario + ' or ctd.IDFuncionario = ' + IDFuncionario + ' or atd.IDAtendente = ' + IDFuncionario + ')') : '1=1'} and ${(DataInicial == null || DataFinal == null) ? '1=1' : Tipo + " between '" + DataInicial + " 00:00' and '" + DataFinal + " 23:59'"}
|
||||
|
||||
union all
|
||||
|
||||
select distinct
|
||||
(select top 1 ctd2.IDControle from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'IDControle',
|
||||
(select top 1 ctd2.IDProduto from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'IDProduto',
|
||||
(select top 1 ctd2.IDPessoa from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'IDPessoa',
|
||||
(select top 1 ctd2.IDVeiculo from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'IDVeiculo',
|
||||
rat.Descricao as 'Resultado',
|
||||
(select top 1 ctd2.Nome from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'Cliente',
|
||||
(select top 1 ctd2.Celular from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'Celular',
|
||||
(select top 1 (convert(varchar, ctd2.Data, 103) + ' ' + convert(varchar, ctd2.Data, 8)) from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'DataL',
|
||||
(convert(varchar, atd.ProximoRetorno, 103) + ' ' + convert(varchar, atd.ProximoRetorno, 8)) as 'Retorno',
|
||||
(select top 1 ctd2.Data from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'Data',
|
||||
atd.ProximoRetorno,
|
||||
(select top 1 ctd2.Observacao from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'Observacao'
|
||||
from ${db}Atendimentos atd
|
||||
left join ${db}ResultadosAtendimento rat on rat.IDResultadoAtendimento = atd.IDResultadoAtendimento
|
||||
where atd.IdAtendimento in (select IDAtendimento from ${db}ControleAtendimento where IDFuncionarioTelemarketing = ${IDFuncionario} and IDAtendimento != 0)
|
||||
) R
|
||||
where ${(Tipo == "ProximoRetorno") ? 'R.ProximoRetorno is not null' : '1=1'}
|
||||
order by R.${Tipo} desc;`;
|
||||
let NewSQLQuery = `select distinct
|
||||
R.IDControle, max(R.IDProduto) as 'IDProduto', R.IDPessoa, R.IDVeiculo, R.Resultado, R.Cliente, R.Celular, R.DataL, R.Retorno, R.Data, R.ProximoRetorno, R.Observacao
|
||||
from (
|
||||
select distinct
|
||||
ctd.IDControle,
|
||||
(select top(1) pp.IDProduto from ${db}PessoasProdutos pp where pp.IDPessoa = ctd.IDPessoa order by IDProduto asc) as 'IDProduto',
|
||||
ctd.IDPessoa,
|
||||
ctd.IDVeiculo,
|
||||
rat.Descricao as 'Resultado',
|
||||
ctd.Nome as 'Cliente',
|
||||
ctd.Celular as 'Celular',
|
||||
(convert(varchar, ctd.Data, 103) + ' ' + convert(varchar, ctd.Data, 8)) as 'DataL',
|
||||
(convert(varchar, atd.ProximoRetorno, 103) + ' ' + convert(varchar, atd.ProximoRetorno, 8)) as 'Retorno',
|
||||
ctd.Data,
|
||||
atd.ProximoRetorno,
|
||||
atd.Resumo as 'Observacao'
|
||||
from ${db}ControleAtendimento ctd
|
||||
left join ${db}Atendimentos atd on atd.IdAtendimento = ctd.IDAtendimento and convert(varchar, atd.DataVisita, 100) = convert(varchar, ctd.Data, 100)
|
||||
inner join ${db}ResultadosAtendimento rat on rat.IDResultadoAtendimento = atd.IDResultadoAtendimento
|
||||
where 1=1 and 1=1
|
||||
|
||||
union all
|
||||
|
||||
select distinct
|
||||
(select top 1 ctd2.IDControle from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'IDControle',
|
||||
(select top 1 ctd2.IDProduto from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'IDProduto',
|
||||
(select top 1 ctd2.IDPessoa from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'IDPessoa',
|
||||
(select top 1 ctd2.IDVeiculo from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'IDVeiculo',
|
||||
rat.Descricao as 'Resultado',
|
||||
(select top 1 ctd2.Nome from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'Cliente',
|
||||
(select top 1 ctd2.Celular from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'Celular',
|
||||
(select top 1 (convert(varchar, ctd2.Data, 103) + ' ' + convert(varchar, ctd2.Data, 8)) from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'DataL',
|
||||
(convert(varchar, atd.ProximoRetorno, 103) + ' ' + convert(varchar, atd.ProximoRetorno, 8)) as 'Retorno',
|
||||
(select top 1 ctd2.Data from ${db}ControleAtendimento ctd2 where ctd2.IDAtendimento = atd.IDAtendimento) as 'Data',
|
||||
atd.ProximoRetorno,
|
||||
atd.Resumo as 'Observacao'
|
||||
from ${db}Atendimentos atd
|
||||
left join ${db}ResultadosAtendimento rat on rat.IDResultadoAtendimento = atd.IDResultadoAtendimento
|
||||
where atd.IdAtendimento in (select IDAtendimento from ${db}ControleAtendimento where IDFuncionarioTelemarketing = 0 and IDAtendimento != 0)
|
||||
) R
|
||||
where 1=1
|
||||
group by R.IDControle, R.IDPessoa, R.IDVeiculo, R.Resultado, R.Cliente, R.Celular, R.DataL, R.Retorno, R.Data, R.ProximoRetorno, R.Observacao
|
||||
order by R.Data desc;`;
|
||||
let NewSQLQuery2 = `select distinct
|
||||
ctd.IDControle,
|
||||
(select top(1) pp.IDProduto from ${db}PessoasProdutos pp where pp.IDPessoa = ctd.IDPessoa order by IDProduto asc) as 'IDProduto',
|
||||
ctd.IDPessoa,
|
||||
ctd.IDVeiculo,
|
||||
rat.Descricao as 'Resultado',
|
||||
ctd.Nome as 'Cliente',
|
||||
ctd.Celular as 'Celular',
|
||||
(convert(varchar, ctd.Data, 103) + ' ' + convert(varchar, ctd.Data, 8)) as 'DataL',
|
||||
(convert(varchar, atd.ProximoRetorno, 103) + ' ' + convert(varchar, atd.ProximoRetorno, 8)) as 'Retorno',
|
||||
ctd.Data,
|
||||
atd.ProximoRetorno,
|
||||
atd.Resumo as 'Observacao'
|
||||
from ${db}ControleAtendimento ctd
|
||||
left join ${db}Atendimentos atd on atd.IdAtendimento = ctd.IDAtendimento and convert(varchar, atd. DataVisita, 100) = convert(varchar, ctd.Data, 100)
|
||||
inner join ${db}ResultadosAtendimento rat on rat.IDResultadoAtendimento = atd.IDResultadoAtendimento
|
||||
where 1=1 and 1=1
|
||||
order by ctd.Data desc;`;
|
||||
//console.log(SQLServerQuery);
|
||||
execSQLQuery2(NewSQLQuery2, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getAtendimentosPessoa/:Celular/:db', verifyJWT, (req, res) => {
|
||||
const db = req.params.db;
|
||||
const Celular = req.params.Celular;
|
||||
execSQLQuery2(`select
|
||||
atd.*
|
||||
from ${db}Atendimentos atd
|
||||
inner join ${db}ControleAtendimento cat on cat.IDAtendimento = atd.IdAtendimento
|
||||
where cat.Celular = '${Celular}'
|
||||
order by atd.DataHora desc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.get('/getVisitasAbertas/:idunits', verifyJWT, (req, res) => {
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
execSQLQuery(`select *, date_format(data_checkin, '%Y-%m-%d %H:%i:%s') as 'DataL' from visitas where idunits = ${idunits} and checkout = 0 order by data_checkin desc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/FazerCheckIn', verifyJWT, (req, res) => {
|
||||
const idvisitas = req.body.idvisitas;
|
||||
const idunits = parseInt(req.body.idunits);
|
||||
const idcontrole = parseInt(req.body.idcontrole);
|
||||
const idatendimento = parseInt(req.body.idatendimento);
|
||||
const idformaatendimento = parseInt(req.body.idformaatendimento);
|
||||
const idveiculo = parseInt(req.body.idveiculo);
|
||||
const idproduto = parseInt(req.body.idproduto);
|
||||
const idpessoa = parseInt(req.body.idpessoa);
|
||||
const idresultadoatendimento = parseInt(req.body.idresultadoatendimento);
|
||||
const nome = req.body.nome;
|
||||
const telefone = req.body.telefone;
|
||||
const checkin = req.body.checkin ? 1 : 0;
|
||||
const data_checkin = req.body.data_checkin;
|
||||
const idusers_checkin = parseInt(req.body.idusers_checkin);
|
||||
const checkout = req.body.checkout ? 1 : 0;
|
||||
const data_checkout = req.body.data_checkout;
|
||||
const idusers_checkout = parseInt(req.body.idusers_checkout);
|
||||
const retorno = req.body.retorno;
|
||||
|
||||
execSQLQuery(`insert into visitas (idunits, idcontrole, idformaatendimento, idveiculo, idproduto, idpessoa, nome, telefone, checkin, data_checkin, idusers_checkin) values (?, ?, ?, ?, ?, ?, ?, ?, ?, now(), ?);`, res, req.originalUrl, [idunits, idcontrole, idformaatendimento, idveiculo, idproduto, idpessoa, nome, telefone, checkin, idusers_checkin]);
|
||||
});
|
||||
|
||||
router.post('/FazerCheckOut', verifyJWT, (req, res) => {
|
||||
const idvisitas = parseInt(req.body.idvisitas);
|
||||
const idunits = parseInt(req.body.idunits);
|
||||
const idcontrole = parseInt(req.body.idcontrole);
|
||||
const idatendimento = parseInt(req.body.idatendimento);
|
||||
const idformaatendimento = parseInt(req.body.idformaatendimento);
|
||||
const idveiculo = parseInt(req.body.idveiculo);
|
||||
const idproduto = parseInt(req.body.idproduto);
|
||||
const idpessoa = parseInt(req.body.idpessoa);
|
||||
const idresultadoatendimento = parseInt(req.body.idresultadoatendimento);
|
||||
const nome = req.body.nome;
|
||||
const telefone = req.body.telefone;
|
||||
const checkin = req.body.checkin ? 1 : 0;
|
||||
const data_checkin = req.body.data_checkin;
|
||||
const idusers_checkin = parseInt(req.body.idusers_checkin);
|
||||
const checkout = req.body.checkout ? 1 : 0;
|
||||
const data_checkout = req.body.data_checkout;
|
||||
const idusers_checkout = parseInt(req.body.idusers_checkout);
|
||||
const retorno = req.body.retorno;
|
||||
|
||||
execSQLQuery(`update visitas set
|
||||
idatendimento = ?,
|
||||
idproduto = ?,
|
||||
idresultadoatendimento = ?,
|
||||
checkout = ?,
|
||||
data_checkout = now(),
|
||||
idusers_checkout = ?,
|
||||
retorno = ?
|
||||
where idvisitas = ?;`, res, req.originalUrl, [idatendimento, idproduto, idresultadoatendimento, checkout, idusers_checkout, retorno, idvisitas]);
|
||||
});
|
||||
|
||||
|
||||
router.get('/getEnviosLeads/:idunits', verifyJWT, (req, res) => {
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
execSQLQuery(`select idenviosleads, descricao, date_format(data_envio, '%d/%m/%Y %H:%i:%s') as 'data_envio' from enviosleads where idunits = ${idunits} order by data_envio desc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.delete('/deleteEnviosLeads/:idenviosleads', verifyJWT, (req, res) => {
|
||||
const idenviosleads = parseInt(req.params.idenviosleads);
|
||||
execSQLQuery(`delete from enviosleads where idenviosleads = ${idenviosleads};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/CadastrarEnvio', verifyJWT, (req, res) => {
|
||||
const idunits = parseInt(req.body.idunits);
|
||||
const descricao = req.body.descricao;
|
||||
execSQLQuery(`insert into enviosleads (idunits, descricao) values (?, ?);`, res, req.originalUrl, [idunits, descricao]);
|
||||
});
|
||||
|
||||
|
||||
router.get('/getLeadsFranqueados/:idunits', verifyJWT, (req, res) => {
|
||||
const idunits = parseInt(req.params.idunits);
|
||||
execSQLQuery(`select lf.*, date_format(lf.insert_date, '%d/%m/%Y %H:%i:%s') as 'data_cadastro', case when lf.visto = 0 then 'Não' else 'Sim' end as 'status' from leadsfranqueados lf where lf.idunits = ${idunits} order by data_cadastro desc;`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.delete('/deleteLeadsFranqueados/:idleadsfranqueados', verifyJWT, (req, res) => {
|
||||
const idleadsfranqueados = parseInt(req.params.idleadsfranqueados);
|
||||
execSQLQuery(`delete from leadsfranqueados where idleadsfranqueados = ${idleadsfranqueados};`, res, req.originalUrl);
|
||||
});
|
||||
|
||||
router.post('/CadastrarLeadFranqueado', verifyJWT, (req, res) => {
|
||||
const idunits = parseInt(req.body.idunits);
|
||||
const aluno = req.body.aluno;
|
||||
const responsavel = req.body.responsavel;
|
||||
const email = req.body.email;
|
||||
const telefone1 = req.body.telefone1;
|
||||
const telefone2 = req.body.telefone2;
|
||||
const telefone3 = req.body.telefone3;
|
||||
execSQLQuery(`insert into leadsfranqueados (idunits, aluno, responsavel, email, telefone1, telefone2, telefone3) values (?, ?, ?, ?, ?, ?, ?);`, res, req.originalUrl, [idunits, aluno, responsavel, email, telefone1, telefone2, telefone3]);
|
||||
});
|
||||
|
||||
router.patch('/AtualizarLeadFranqueado', verifyJWT, (req, res) => {
|
||||
const idleadsfranqueados = parseInt(req.body.idleadsfranqueados);
|
||||
const aluno = req.body.aluno;
|
||||
const responsavel = req.body.responsavel;
|
||||
const email = req.body.email;
|
||||
const telefone1 = req.body.telefone1;
|
||||
const telefone2 = req.body.telefone2;
|
||||
const telefone3 = req.body.telefone3;
|
||||
const visto = req.body.visto ? 1 : 0;
|
||||
execSQLQuery(`update leadsfranqueados set
|
||||
aluno = ?,
|
||||
responsavel = ?,
|
||||
email = ?,
|
||||
telefone1 = ?,
|
||||
telefone2 = ?,
|
||||
telefone3 = ?,
|
||||
visto = ?
|
||||
where idleadsfranqueados = ?;`, res, req.originalUrl, [aluno, responsavel, email, telefone1, telefone2, telefone3, visto, idleadsfranqueados]);
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
[
|
||||
{
|
||||
"uid": "zoe_api",
|
||||
"append": true,
|
||||
"watch": false,
|
||||
"script": "server.js",
|
||||
"sourceDir": "/var/www/zoe_api/",
|
||||
"workingDir": "/var/www/zoe_api/"
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
require("dotenv-safe").load();
|
||||
var jwt = require('jsonwebtoken');
|
||||
|
||||
//#region Encript
|
||||
function LTrim(x) {
|
||||
return x.replace(/^\s+/, "");
|
||||
}
|
||||
|
||||
global.encriptPassword = function encriptPassword(password, amount = 10) {
|
||||
return Cript(RPad(password, amount), " ");
|
||||
}
|
||||
|
||||
function RPad(St, Tm) {
|
||||
text = (LTrim(St) + " ").substr(0, Tm);
|
||||
return text;
|
||||
}
|
||||
|
||||
function Cript(St, Pw) {
|
||||
x = "";
|
||||
|
||||
p = 0;
|
||||
|
||||
for (i = 0; i < St.length; i++) {
|
||||
|
||||
if (p > Pw.length) {
|
||||
p = 1;
|
||||
}
|
||||
j = ord(Pw.substr(p, 1)) + 128;
|
||||
n = ord(St.substr(i, 1));
|
||||
|
||||
x = x + Again(n, j);
|
||||
p = 0;
|
||||
}
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
function Again(n, j) {
|
||||
exitloop = false;
|
||||
|
||||
while (exitloop == false) {
|
||||
|
||||
n = n ^ j;
|
||||
|
||||
if (n < 31) {
|
||||
n = 128 + n;
|
||||
} else if ((n > 127) && (n < 159)) {
|
||||
n = n - 128;
|
||||
} else {
|
||||
exitloop = true;
|
||||
}
|
||||
}
|
||||
return String.fromCharCode(n);
|
||||
}
|
||||
|
||||
function ord(string) {
|
||||
var str = string + ''
|
||||
var code = str.charCodeAt(0)
|
||||
|
||||
if (code >= 0xD800 && code <= 0xDBFF) {
|
||||
var hi = code
|
||||
if (str.length === 1) {
|
||||
return code
|
||||
}
|
||||
var low = str.charCodeAt(1)
|
||||
return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000
|
||||
}
|
||||
if (code >= 0xDC00 && code <= 0xDFFF) {
|
||||
return code
|
||||
}
|
||||
return code
|
||||
}
|
||||
//#endregion
|
||||
|
||||
global.verifyJWT = function verifyJWT(req, res, next) {
|
||||
//console.log(req.headers.token);
|
||||
var token = decodeURI(req.headers.token);
|
||||
if(!token)
|
||||
token = req.params.tk || req.body.token;
|
||||
//console.log(token);
|
||||
//token = encriptPassword(token, token.length);
|
||||
//console.log(token);
|
||||
if (!token) return res.status(401).send({ auth: false, message: 'Não foi enviado token' });
|
||||
|
||||
jwt.verify(token, process.env.SECRET, function (err, decoded) {
|
||||
if (err) {
|
||||
//console.log(err);
|
||||
res.status(200).send({ status: 'expired' });
|
||||
}
|
||||
else {
|
||||
req.idusers = decoded.id;
|
||||
next();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
global.fixApostrofe = function fixApostrofe(content) {
|
||||
for (let i = 0; i < 20; i++) {
|
||||
content = content.replace("'", ''');
|
||||
}
|
||||
return content;
|
||||
}
|
||||
|
||||
global.fixAspas = function fixAspas(content) {
|
||||
for (let i = 0; i < 20; i++) {
|
||||
content = content.replace('"', '"');
|
||||
}
|
||||
return content;
|
||||
}
|
||||
|
||||
global.replaceAll = function ReplaceAll(Texto, Palavras, TrocarPor, Vezes) {
|
||||
for (let i = 0; i < Vezes; i++) {
|
||||
for (let o = 0; o < Palavras.length; o++) {
|
||||
Texto = Texto.replace(Palavras[o], TrocarPor[o]);
|
||||
}
|
||||
}
|
||||
return Texto;
|
||||
}
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
var Online = true; // MODO PRODUCAO - ACESSA O BANCO ONLINE QUANDO TRUE - ACESSA O BANCO LOCAL QUANDO FALSE
|
||||
var linux = true; // MODO DESENVOLVIMENTO - TRUE PARA LINUX OU FALSE PARA WINDOWS
|
||||
var passdecrypt = ""; // CHAVE DE DESCRIPTOGRAFIA DOS VIDEOS - ADIQUIRE VALOR COM CONSULTA AO BANCO
|
||||
var porta_mysql = "3306"; // PORTA PADRAO MYSQL
|
||||
var tk_fixed = ""; // TOKEN FIXO - ADIQUIRE VALOR COM CONSULTA AO BANCO
|
||||
|
||||
global.Variables = function Variables(data) {
|
||||
var ret;
|
||||
switch (data) {
|
||||
case 'passdecrypt':
|
||||
ret = passdecrypt;
|
||||
break;
|
||||
case 'tk_fixed':
|
||||
ret = tk_fixed;
|
||||
break;
|
||||
case 'portHttp':
|
||||
ret = 3337;
|
||||
break;
|
||||
case 'portHttps':
|
||||
ret = 1338;
|
||||
break;
|
||||
case 'time_token':
|
||||
ret = 36000; // 9000 = 2,5 horas
|
||||
break;
|
||||
case 'src_qrcodes':
|
||||
ret = 'http://18.228.91.135/qrlotes/';
|
||||
break;
|
||||
case 'ip_mysql':
|
||||
if(Online == true)
|
||||
ret = '18.228.91.135';
|
||||
//ret = '10.23.0.79';
|
||||
else
|
||||
ret = '127.0.0.1';
|
||||
break;
|
||||
case 'user_mysql':
|
||||
if(Online == true)
|
||||
ret = 'root';
|
||||
else
|
||||
ret = 'myrobot';
|
||||
break;
|
||||
case 'password_mysql':
|
||||
if(Online == true)
|
||||
//ret = '123123';
|
||||
ret = 'maker2018**==';
|
||||
else
|
||||
ret = 'myrobot2019';
|
||||
break;
|
||||
case 'database_mysql':
|
||||
ret = 'myrobot';
|
||||
break;
|
||||
case 'ip_sqlServer':
|
||||
ret = '18.231.41.93';
|
||||
break;
|
||||
case 'porta_mysql':
|
||||
ret = porta_mysql;
|
||||
break;
|
||||
case 'user_sqlServer':
|
||||
ret = 'Usuario';
|
||||
break;
|
||||
case 'password_sqlServer':
|
||||
ret = 'AbbAchUs';
|
||||
break;
|
||||
case 'src_media':
|
||||
if(linux == false)
|
||||
ret = 'C:/var/www/html/';
|
||||
else
|
||||
ret = '/var/www/html/';
|
||||
break;
|
||||
case 'src_fotos':
|
||||
if(linux == false)
|
||||
ret = 'C:/var/www/fotos/';
|
||||
else
|
||||
ret = '/var/www/fotos/';
|
||||
break;
|
||||
case 'local':
|
||||
if(Online == true)
|
||||
ret = 'Online';
|
||||
else
|
||||
ret = 'Local';
|
||||
break;
|
||||
case 'linux':
|
||||
ret = linux;
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
global.Variables_Set = function Variables_Set(Variavel, Valor) {
|
||||
switch (Variavel) {
|
||||
case "local":
|
||||
Online = Valor;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// CONSULTA VALORES PADROES NO BANCO
|
||||
require('../connections/mysql-server');
|
||||
mysqlConnection.query(`SELECT * FROM config;`, function (error, results, fields) {
|
||||
if (!error && results.length > 0) {
|
||||
passdecrypt = results[0]['passdecrypt'];
|
||||
tk_fixed = results[0]['tk_fixed'];
|
||||
}
|
||||
})
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
var fs = require('fs');
|
||||
var JsBarcode = require('jsbarcode');
|
||||
var { createCanvas } = require("canvas");
|
||||
var canvas = createCanvas();
|
||||
var JSZip = require("jszip");
|
||||
var zip = new JSZip();
|
||||
|
||||
function NovoGeradorBarCode(numBarCodeGerado) {
|
||||
for (i = 0; i < numBarCodeGerado; i++) {
|
||||
let random = Math.random();
|
||||
console.log(random);
|
||||
let date = new Date;
|
||||
random = random.toString().match(/[^.][0-9]{6}/)[0];
|
||||
let month = (date.getMonth() + 1).toString().padStart(2, "0");
|
||||
let day = date.getDate().toString().padStart(2, "0");
|
||||
let milli = date.getMilliseconds().toString().slice(1,3);
|
||||
let barCode = random.concat(month, day, milli);
|
||||
console.log('barcode',barCode);
|
||||
JsBarcode(canvas, barCode);
|
||||
zip.file(`barcode_${i}.png`, canvas.toBuffer());
|
||||
}
|
||||
|
||||
zip.generateNodeStream({type:'nodebuffer',streamFiles:true})
|
||||
.pipe(fs.createWriteStream('C:\\Users\\Maker\\Desktop\\out.zip'))
|
||||
.on('finish', function () {
|
||||
console.log("out.zip written.");
|
||||
});
|
||||
}
|
||||
|
|
@ -0,0 +1,333 @@
|
|||
class Helpers {
|
||||
|
||||
constructor() {
|
||||
var jwt = require('jsonwebtoken');
|
||||
}
|
||||
|
||||
verifyJWT(req, res, next){
|
||||
var token = req.headers['x-access-token'];
|
||||
if (!token) return res.status(401).send({ auth: false, message: 'Não foi enviado token' });
|
||||
|
||||
jwt.verify(token, process.env.SECRET, function(err, decoded) {
|
||||
if (err) return res.status(500).send({ auth: false, message: 'Falha na autenticação do token' });
|
||||
|
||||
// se tudo estiver ok, salva no request para uso posterior
|
||||
req.idusers = decoded.id;
|
||||
next();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Helpers;
|
||||
|
||||
|
||||
/* index.js da biblioteca all-unpacker
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
// see http://unarchiver.c3.cx/commandline
|
||||
// unar and lsar
|
||||
var log = require('npmlog');
|
||||
var path = require('path');
|
||||
var exec = require('child_process').exec;
|
||||
var os = require('os');
|
||||
|
||||
// from http://github.com/substack/node-shell-quote, needed to remove more escaping
|
||||
var map = require('array-map');
|
||||
function quote(xs) {
|
||||
return map(xs, function (s) {
|
||||
return String(s).replace(/([#!"$&'(),;<=>?@\[\\\]^`{|}])/g, '\\$1');
|
||||
}).join(' ');
|
||||
};
|
||||
//
|
||||
|
||||
module.exports = unpackAll.list = unpackAll;
|
||||
|
||||
var archiveTypePattern = /: [A-Z,7]*$/g;
|
||||
|
||||
var escapeFileName = function(s) {
|
||||
return '"'+s+'"';
|
||||
//if (isWindows()) return '"'+s+'"';
|
||||
//// '"'+cmd.replace(/(["\s'$`\\])/g,'\\$1')+'"'
|
||||
//return s;
|
||||
};
|
||||
|
||||
var isInt = function isInt(x) {
|
||||
return !isNaN(x) && eval(x).toString().length == parseInt(eval(x)).toString().length;
|
||||
};
|
||||
|
||||
|
||||
unpackAll.defaultListFilter = function defaultListFilter(s) {
|
||||
return s && s != ''
|
||||
&& s.indexOf('\r') == -1
|
||||
&& s.indexOf('\n') == -1
|
||||
&& !s.match(archiveTypePattern);
|
||||
};
|
||||
|
||||
function exec_unar(runcmd, extractDir, docallback) {
|
||||
exec(runcmd, function (err, stdout, stderr) {
|
||||
if (err) return docallback(Error(err), null);
|
||||
if (stderr && stderr.length > 0) return docallback(Error('Error: ' + stderr), null);
|
||||
if (stdout && stdout.length > 0) {
|
||||
if (stdout.indexOf('No files extracted')>=1) return docallback(Error('Error: No files extracted'), null);
|
||||
}
|
||||
return docallback(null, extractDir, stdout);
|
||||
});
|
||||
}
|
||||
|
||||
unpackAll.pack = function pack(archiveFile, options, callback) {
|
||||
if (!callback) return new Error('No callback function');
|
||||
if (!archiveFile) archiveFile = options.archiveFile;
|
||||
if (!archiveFile) return callback(Error("Error: archiveFile or options.archiveFile missing."), null);
|
||||
if (!options) options = {};
|
||||
|
||||
var unar = options.unar;
|
||||
if (!unar) unar = (process.platform != "linux") ? path.join(__dirname,'zip') : 'zip';
|
||||
var ar = [unar];
|
||||
|
||||
if (options.password) {
|
||||
ar.push('-P');
|
||||
ar.push(options.password);
|
||||
}
|
||||
|
||||
ar.push('SOURCEFILE');
|
||||
|
||||
var targetDir = options.targetDir;
|
||||
ar.push(targetDir);
|
||||
|
||||
var cmd = quote(ar).replace('SOURCEFILE', archiveFile);
|
||||
exec_unar(cmd, targetDir, callback);
|
||||
};
|
||||
|
||||
unpackAll.unpackZip = function unpackZip(archiveFile, options, callback) {
|
||||
if (!callback) return new Error('No callback function');
|
||||
if (!archiveFile) archiveFile = options.archiveFile;
|
||||
if (!archiveFile) return callback(Error("Error: archiveFile or options.archiveFile missing."), null);
|
||||
if (!options) options = {};
|
||||
|
||||
var unar = options.unar;
|
||||
if (!unar) unar = (process.platform != "linux") ? path.join(__dirname,'unzip') : 'unzip';
|
||||
var ar = [unar];
|
||||
|
||||
if (options.password) {
|
||||
ar.push('-P');
|
||||
ar.push(options.password);
|
||||
}
|
||||
|
||||
ar.push('SOURCEFILE');
|
||||
|
||||
if (options.forceDirectory) ar.push('-d');
|
||||
|
||||
var targetDir = options.targetDir;
|
||||
ar.push(targetDir);
|
||||
|
||||
var cmd = quote(ar).replace('SOURCEFILE', archiveFile);
|
||||
exec_unar(cmd, targetDir, callback);
|
||||
};
|
||||
|
||||
unpackAll.unpack = function unpack(archiveFile, options, callback) {
|
||||
if (!callback) return new Error('No callback function');
|
||||
if (!archiveFile) archiveFile = options.archiveFile;
|
||||
if (!archiveFile) return callback(Error("Error: archiveFile or options.archiveFile missing."), null);
|
||||
if (!options) options = {};
|
||||
|
||||
// Unar command:
|
||||
var unar = options.unar;
|
||||
if (!unar) unar = (process.platform != "linux") ? path.join(__dirname,'unar') : 'unar';
|
||||
var ar = [unar];
|
||||
|
||||
// Archive file (source):
|
||||
ar.push('SOURCEFILE');
|
||||
//ar.push(archiveFile);
|
||||
|
||||
// -output-directory (-o) <string>: The directory to write the contents of the archive to. Defaults to the current directory.
|
||||
ar.push('-o');
|
||||
var targetDir = options.targetDir;
|
||||
if (!targetDir) targetDir = path.join(os.tmpdir(), 'tmp');
|
||||
ar.push(targetDir);
|
||||
|
||||
// -force-overwrite (-f): Always overwrite files when a file to be unpacked already exists on disk. By default, the program asks the user if possible, otherwise skips the file.
|
||||
if (options.forceOverwrite) ar.push('-f');
|
||||
|
||||
// -force-rename (-r): Always rename files when a file to be unpacked already exists on disk.
|
||||
if (options.forceRename) ar.push('-r');
|
||||
|
||||
// -force-skip (-s): Always skip files when a file to be unpacked already exists on disk.
|
||||
if (options.forceSkip) ar.push('-s');
|
||||
|
||||
// -force-directory (-d): Always create a containing directory for the contents of the unpacked archive. By default, a directory is created if there is more than one top-level file or folder.
|
||||
if (options.forceDirectory) ar.push('-d');
|
||||
|
||||
// -no-directory (-D): Never create a containing directory for the contents of the unpacked archive.
|
||||
if (options.noDirectory) ar.push('-D');
|
||||
|
||||
// -no-recursion (-nr): Do not attempt to extract archives contained in other archives. For instance, when unpacking a .tar.gz file, only unpack the .gz file and not its contents.
|
||||
if (options.noRecursion) ar.push('-nr');
|
||||
|
||||
// -copy-time (-t): Copy the file modification time from the archive file to the containing directory, if one is created.
|
||||
if (options.copyTime) ar.push('-t');
|
||||
|
||||
// -quiet (-q): Run in quiet mode.
|
||||
if (options.quiet) ar.push('-q');
|
||||
|
||||
// -password (-p) <string>: The password to use for decrypting protected archives.
|
||||
if (options.password) {
|
||||
ar.push('-p');
|
||||
ar.push(options.password);
|
||||
}
|
||||
// -password-encoding (-E) <name>: The encoding to use for the password for the archive, when it is not known. If not specified, then either the encoding given by the -encoding option or the auto-detected encoding is used.
|
||||
if (options.passwordEncoding) {
|
||||
ar.push('-E');
|
||||
ar.push(options.passwordEncoding);
|
||||
}
|
||||
|
||||
// -encoding (-e) <encoding name>: The encoding to use for filenames in the archive, when it is not known. If not specified, the program attempts to auto-detect the encoding used. Use "help" or "list" as the argument to give
|
||||
if (options.encoding) {
|
||||
ar.push('-e');
|
||||
ar.push(options.encoding);
|
||||
}
|
||||
|
||||
if (options.indexes) {
|
||||
// -indexes (-i): Instead of specifying the files to unpack as filenames or wildcard patterns, specify them as indexes, as output by lsar.
|
||||
if (Array.isArray(options.indexes)) {
|
||||
options.indexes.forEach(function (idx) {
|
||||
ar.push('-i');
|
||||
ar.push(''+idx); // string!
|
||||
});
|
||||
} else if (isInt(options.indexes)) {
|
||||
console.error('options.indexes must be an array of integer, but it is: ' + JSON.stringify(options.indexes))
|
||||
}
|
||||
} else if (options.files) {
|
||||
if (Array.isArray(options.files)) {
|
||||
options.files.forEach(function (s) {
|
||||
ar.push(s);
|
||||
});
|
||||
} else {
|
||||
ar.push(options.files);
|
||||
}
|
||||
}
|
||||
|
||||
//if (!options.quiet) log.info('command', quote(ar));
|
||||
|
||||
var cmd = quote(ar).replace('SOURCEFILE', archiveFile);
|
||||
//if (!options.quiet) log.info('cmd', cmd);
|
||||
exec_unar(cmd, targetDir, callback);
|
||||
}; // unpackAll.unpack
|
||||
|
||||
unpackAll.unpackonly = function unpackonly(archiveFile, unpackDir, unpackOnly, callback) {
|
||||
if (!callback) return new Error('No callback function');
|
||||
if (!archiveFile) return callback(Error("Error: archiveFile missing."), null);
|
||||
if (!unpackDir) return callback(Error("Error: target Directory missing."), null);
|
||||
if (!unpackOnly) return callback(Error("Error: files or directory to extract form archive missing."), null);
|
||||
|
||||
// Unar command:
|
||||
var unar = (process.platform != "linux") ? path.join(__dirname,'unar') : 'unar';
|
||||
var ar = [unar];
|
||||
|
||||
// Archive file (source):
|
||||
ar.push('SOURCEFILE');
|
||||
//ar.push(archiveFile);
|
||||
|
||||
// -output-directory (-o) <string>: The directory to write the contents of the archive to. Defaults to the current directory.
|
||||
ar.push('-o');
|
||||
ar.push(unpackDir);
|
||||
|
||||
// -force-overwrite (-f): Always overwrite files when a file to be unpacked already exists on disk. By default, the program asks the user if possible, otherwise skips the file.
|
||||
ar.push('-f');
|
||||
|
||||
// -no-directory (-D): Never create a containing directory for the contents of the unpacked archive.
|
||||
ar.push('-D');
|
||||
|
||||
// -copy-time (-t): Copy the file modification time from the archive file to the containing directory, if one is created.
|
||||
ar.push('-t');
|
||||
|
||||
if (unpackOnly) {
|
||||
if (Array.isArray(unpackOnly)) {
|
||||
unpackOnly.forEach(function (s) {
|
||||
ar.push(s);
|
||||
});
|
||||
} else {
|
||||
ar.push(unpackOnly);
|
||||
}
|
||||
}
|
||||
|
||||
//log.info('command', quote(ar));
|
||||
|
||||
var cmd = quote(ar).replace('SOURCEFILE', escapeFileName(archiveFile));
|
||||
//log.info('cmd', cmd);
|
||||
exec_unar(cmd, unpackDir, callback);
|
||||
}; // unpackAll.unpackonly
|
||||
|
||||
unpackAll.list = function list(archiveFile, options, callback) {
|
||||
if (!callback) return new Error('No callback function');
|
||||
if (!archiveFile) archiveFile = options.archiveFile;
|
||||
if (!archiveFile) return callback(Error("Error: archiveFile or options.archiveFile missing."), null);
|
||||
|
||||
if (!options) options = {};
|
||||
|
||||
// Usar command:
|
||||
var lsar = options.lsar;
|
||||
if (!lsar) lsar = (process.platform != "linux") ? path.join(__dirname,'lsar') : 'lsar';
|
||||
var ar = [lsar];
|
||||
|
||||
// Archive file (source):
|
||||
ar.push('SOURCEFILE');
|
||||
|
||||
// -no-recursion (-nr): Do not attempt to extract archives contained in other archives. For instance, when unpacking a .tar.gz file, only unpack the .gz file and not its contents.
|
||||
if (options.noRecursion) ar.push('-nr');
|
||||
|
||||
// -password (-p) <string>: The password to use for decrypting protected archives.
|
||||
if (options.password) {
|
||||
ar.push('-p');
|
||||
ar.push(options.password);
|
||||
}
|
||||
// -password-encoding (-E) <name>: The encoding to use for the password for the archive, when it is not known. If not specified, then either the encoding given by the -encoding option or the auto-detected encoding is used.
|
||||
if (options.passwordEncoding) {
|
||||
ar.push('-E');
|
||||
ar.push(options.passwordEncoding);
|
||||
}
|
||||
|
||||
// -encoding (-e) <encoding name>: The encoding to use for filenames in the archive, when it is not known. If not specified, the program attempts to auto-detect the encoding used. Use "help" or "list" as the argument to give
|
||||
if (options.encoding) {
|
||||
ar.push('-e');
|
||||
ar.push(options.encoding);
|
||||
}
|
||||
|
||||
// -print-encoding (-pe): Print the auto-detected encoding and the confidence factor after the file list
|
||||
if (options.printEncoding) {
|
||||
ar.push('-pe');
|
||||
ar.push(options.printEncoding);
|
||||
}
|
||||
|
||||
// -json (-j): Print the listing in JSON format.
|
||||
if (options.json) ar.push('-j');
|
||||
|
||||
// -json-ascii (-ja): Print the listing in JSON format, encoded as pure ASCII text.
|
||||
if (options.jsonAscii) ar.push('-ja');
|
||||
|
||||
var cmd = quote(ar).replace('SOURCEFILE', escapeFileName(archiveFile));
|
||||
if (!options.quiet) log.info('cmd', cmd);
|
||||
exec(cmd, function (err, stdout, stderr) {
|
||||
if (err) return callback(Error(err), null);
|
||||
if (stderr && stderr.length > 0) return callback(Error('Error: ' + stderr), null);
|
||||
|
||||
var lines = stdout.split(/(\r?\n)/g);
|
||||
if (lines.length > 0) {
|
||||
var files = lines.filter(unpackAll.defaultListFilter);
|
||||
return callback(null, files);
|
||||
|
||||
} else {
|
||||
return callback(Error('Error: no files foound in archive. ' + stderr), null);
|
||||
}
|
||||
});
|
||||
}; // unpackAll.list
|
||||
|
||||
unpackAll();
|
||||
|
||||
function unpackAll() {
|
||||
}
|
||||
|
||||
})();
|
||||
|
||||
*/
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
FIRSTLINE;SECONDLINE
|
||||
D28B 6277;B8F2 3011
|
||||
BE2B 6277;48F1 3011
|
||||
|
|
|
@ -0,0 +1,115 @@
|
|||
const { v4: uuidv4 } = require("uuid");
|
||||
const fs = require("fs");
|
||||
const { stringify } = require("csv-stringify");
|
||||
|
||||
let columns = {
|
||||
fisrt: "FIRSTLINE",
|
||||
second: "SECONDLINE",
|
||||
};
|
||||
var serialList = [];
|
||||
|
||||
function genSerialList(quantity, results) {
|
||||
let oldValues = [];
|
||||
Object.values(results).forEach((element) => {
|
||||
oldValues.push(element.serial);
|
||||
});
|
||||
serialList = [];
|
||||
return new Promise((resolve, reject) => {
|
||||
while (serialList.length < quantity) {
|
||||
let uui = uuidv4();
|
||||
uui = uui.replace(/-/gm, "");
|
||||
uui = uui.toUpperCase();
|
||||
let milliseconds = Date.now().toString();
|
||||
milliseconds = milliseconds.match(/[0-9]{4}/gm);
|
||||
let partition = uui.match(/[0-9A-Z]{4}/gm);
|
||||
|
||||
let head = partition[0].concat(
|
||||
" ",
|
||||
milliseconds[1],
|
||||
" ",
|
||||
partition[1],
|
||||
" ",
|
||||
milliseconds[2]
|
||||
);
|
||||
let body = partition[2].concat(
|
||||
" ",
|
||||
milliseconds[1],
|
||||
" ",
|
||||
partition[3],
|
||||
" ",
|
||||
milliseconds[2]
|
||||
);
|
||||
let legs = partition[4].concat(
|
||||
" ",
|
||||
milliseconds[1],
|
||||
" ",
|
||||
partition[5],
|
||||
" ",
|
||||
milliseconds[2]
|
||||
);
|
||||
let tail = partition[6].concat(
|
||||
" ",
|
||||
milliseconds[1],
|
||||
" ",
|
||||
partition[7],
|
||||
" ",
|
||||
milliseconds[2]
|
||||
);
|
||||
|
||||
let now = new Date();
|
||||
oldValues.includes(head)
|
||||
? ""
|
||||
: serialList.push({ serial: head, createdAt: now, updatedAt: now });
|
||||
oldValues.includes(body)
|
||||
? ""
|
||||
: serialList.push({ serial: body, createdAt: now, updatedAt: now });
|
||||
oldValues.includes(legs)
|
||||
? ""
|
||||
: serialList.push({ serial: legs, createdAt: now, updatedAt: now });
|
||||
oldValues.includes(tail)
|
||||
? ""
|
||||
: serialList.push({ serial: tail, createdAt: now, updatedAt: now });
|
||||
}
|
||||
|
||||
serialList = serialList.slice(0, quantity);
|
||||
resolve(serialList);
|
||||
});
|
||||
}
|
||||
|
||||
function generateCSV(list) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let filename = `${__dirname}\\mycsv.csv`;
|
||||
let data = [];
|
||||
Object.values(list).forEach((element) => {
|
||||
let partSerial = element.serial.match(/[0-9A-Z]{4}/gm);
|
||||
data.push([
|
||||
partSerial[0].concat(" ", partSerial[1]),
|
||||
partSerial[2].concat(" ", partSerial[3]),
|
||||
]);
|
||||
});
|
||||
stringify(
|
||||
data,
|
||||
{
|
||||
header: true,
|
||||
columns: columns,
|
||||
delimiter: ";",
|
||||
},
|
||||
(err, output) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
}
|
||||
fs.writeFile(filename, output, (err) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
}
|
||||
resolve(filename);
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
genSerialList,
|
||||
generateCSV,
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,72 @@
|
|||
{
|
||||
"name": "myrobot_api",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@google-cloud/speech": "^4.2.0",
|
||||
"alexa-sdk": "^1.0.25",
|
||||
"alexa-verifier": "^2.0.1",
|
||||
"alexa-verifier-middleware": "^1.0.2",
|
||||
"all-unpacker": "^0.1.2",
|
||||
"angularx-qrcode": "^1.5.3",
|
||||
"archiver": "^3.0.0",
|
||||
"ask-sdk-core": "^2.7.0",
|
||||
"ask-sdk-model": "^1.18.0",
|
||||
"async": "^2.6.2",
|
||||
"base-64": "^0.1.0",
|
||||
"base64-img": "^1.0.4",
|
||||
"base64-to-image": "^1.0.2",
|
||||
"base64topdf": "^1.1.8",
|
||||
"body-parser": "^1.19.0",
|
||||
"canvas": "^2.9.1",
|
||||
"cors": "^2.8.5",
|
||||
"csv-stringify": "^6.1.0",
|
||||
"del": "^4.1.1",
|
||||
"dotenv-safe": "^6.1.0",
|
||||
"express": "^4.17.1",
|
||||
"express-formidable": "^1.2.0",
|
||||
"express-routes-map": "0.0.1",
|
||||
"fastest-levenshtein": "^1.0.12",
|
||||
"file-base64": "^1.0.0",
|
||||
"forever": "^1.0.0",
|
||||
"formidable": "^1.2.1",
|
||||
"gzipme": "^0.1.2",
|
||||
"ibm-watson": "^6.0.0",
|
||||
"joi": "^13.7.0",
|
||||
"jsbarcode": "^3.11.5",
|
||||
"jsonwebtoken": "^8.5.1",
|
||||
"jszip": "^3.10.0",
|
||||
"lokijs": "^1.5.6",
|
||||
"minizip-asm.js": "^1.0.10",
|
||||
"mp3-to-wav": "^0.1.11",
|
||||
"mssql": "^4.3.7",
|
||||
"multer": "^1.4.1",
|
||||
"mysql": "^2.18.1",
|
||||
"ng2-file-upload": "^1.3.0",
|
||||
"node-7z": "^1.1.0",
|
||||
"node-7z-forall": "^1.0.0",
|
||||
"node-lame": "^1.2.0",
|
||||
"node-unrar": "^0.1.5",
|
||||
"nodemailer": "^4.7.0",
|
||||
"nodemon": "^1.19.4",
|
||||
"rand-token": "^0.4.0",
|
||||
"rimraf": "^2.6.3",
|
||||
"rxjs-compat": "^6.5.2",
|
||||
"shelljs": "^0.8.3",
|
||||
"striptags": "^3.1.1",
|
||||
"tedious": "^2.7.1",
|
||||
"unrar": "^0.1.7",
|
||||
"unrar-promise": "^2.0.1",
|
||||
"unzip": "^0.1.11",
|
||||
"unzipper": "^0.9.15",
|
||||
"vimeo": "^2.1.1",
|
||||
"winrarjs": "0.0.16",
|
||||
"xmlhttprequest": "^1.8.0"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,160 @@
|
|||
require("./helpers/config");
|
||||
const express = require("express");
|
||||
const https = require("https");
|
||||
const http = require("http");
|
||||
const fs = require("fs");
|
||||
const app = express();
|
||||
const portHttp = Variables("portHttp");
|
||||
const portHttps = Variables("portHttps");
|
||||
const cors = require("cors");
|
||||
const bodyParser = require("body-parser");
|
||||
const cluster = require("cluster");
|
||||
const numCPUs = require("os").cpus().length;
|
||||
let HttpsLigado = false;
|
||||
|
||||
var corsOptions = {
|
||||
origin: "*",
|
||||
optionsSuccessStatus: 200,
|
||||
};
|
||||
|
||||
app.use(cors(corsOptions));
|
||||
app.use(bodyParser.urlencoded({ extended: true }));
|
||||
app.use(bodyParser.json());
|
||||
|
||||
app.use(function (req, res, next) {
|
||||
res.header("Access-Control-Allow-Origin", "*");
|
||||
res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
|
||||
res.header(
|
||||
"Access-Control-Allow-Headers",
|
||||
"Origin, X-Requested-With, Content-Type, Accept, Authorization"
|
||||
);
|
||||
next();
|
||||
});
|
||||
|
||||
if (cluster.isMaster) {
|
||||
console.log(`Master ${process.pid} is running`);
|
||||
|
||||
for (let i = 0; i < numCPUs; i++) {
|
||||
cluster.fork();
|
||||
}
|
||||
|
||||
cluster.on("exit", (worker, code, signal) => {
|
||||
console.log(`worker ${worker.process.pid} died`);
|
||||
});
|
||||
} else {
|
||||
console.log(`Worker ${process.pid} started`);
|
||||
|
||||
app.get("/cluster", (req, res) => {
|
||||
let worker = cluster.worker.id;
|
||||
res.send(`Running on worker with id ==> ${worker}`);
|
||||
});
|
||||
|
||||
http.createServer(app).listen(portHttp, function () {
|
||||
console.log("API running success");
|
||||
});
|
||||
|
||||
if (HttpsLigado) {
|
||||
var httpsOptions = {
|
||||
key: fs.readFileSync("/etc/ca-certificates/myrobotlab_com_br.key"),
|
||||
cert: fs.readFileSync("/etc/ca-certificates/myrobotlab_com_br.crt"),
|
||||
};
|
||||
https.createServer(httpsOptions, app).listen(portHttps);
|
||||
}
|
||||
}
|
||||
|
||||
const unityController = require("./controllers/unityController")();
|
||||
const courseController = require("./controllers/courseController")();
|
||||
const addressController = require("./controllers/addressController")();
|
||||
const classController = require("./controllers/classController")();
|
||||
const sqlServerController = require("./controllers/sqlServerController")();
|
||||
const productsController = require("./controllers/productsController")();
|
||||
const loginController = require("./controllers/loginController")();
|
||||
const exerciseController = require("./controllers/exerciseController")();
|
||||
const questionController = require("./controllers/questionController")();
|
||||
const answerController = require("./controllers/answerController")();
|
||||
const traineeprogramController = require("./controllers/traineeprogramController")();
|
||||
const traineeprogramcoursesController = require("./controllers/traineeprogramcoursesController")();
|
||||
const textController = require("./controllers/textController")();
|
||||
const classescontentController = require("./controllers/classescontentController")();
|
||||
const videoController = require("./controllers/videoController")();
|
||||
const usersController = require("./controllers/usersController")();
|
||||
const emailController = require("./controllers/emailController")();
|
||||
const typescourseController = require("./controllers/typescourseController")();
|
||||
const migrationController = require("./controllers/migrationController")();
|
||||
const slidesController = require("./controllers/slidesController")();
|
||||
const conceptsController = require("./controllers/conceptsController")();
|
||||
const teacherController = require("./controllers/teacherController")();
|
||||
const franchiseeController = require("./controllers/franchiseeController")();
|
||||
const appController = require("./controllers/appController")();
|
||||
const qrController = require("./controllers/qrController")();
|
||||
const curiositiesController = require("./controllers/curiositiesController")();
|
||||
const barcodeController = require("./controllers/barcodeController")();
|
||||
const elloController = require("./controllers/elloController")();
|
||||
const fileController = require("./controllers/fileController")();
|
||||
const alexaController = require("./controllers/alexaController")();
|
||||
const animationsController = require("./controllers/animationsController")();
|
||||
const iyrcController = require("./controllers/iyrcController")();
|
||||
const chatController = require("./controllers/chatController")();
|
||||
const chamadaController = require("./controllers/chamadaController")();
|
||||
const holidayController = require("./controllers/holidayController")();
|
||||
const charactersController = require("./controllers/charactersController")();
|
||||
const visitasController = require("./controllers/visitasController")();
|
||||
const chattimeController = require("./controllers/chattimeController")();
|
||||
const relatorioController = require("./controllers/relatorioController")();
|
||||
const configController = require("./controllers/configController")();
|
||||
const listenrepeatController = require("./controllers/listenrepeatController")();
|
||||
const customizeController = require("./controllers/customizeController")();
|
||||
const ig40Controller = require("./controllers/ig40Controller")();
|
||||
const permissoesController = require("./controllers/permissoesController")();
|
||||
const agendaController = require("./controllers/agendaController")();
|
||||
const studentController = require("./controllers/studentController")();
|
||||
const unileverController = require("./controllers/unileverController")();
|
||||
|
||||
app.use("/api/units", unityController);
|
||||
app.use("/api/courses", courseController);
|
||||
app.use("/api/address", addressController);
|
||||
app.use("/api/classes", classController);
|
||||
app.use("/api/sqlserver", sqlServerController);
|
||||
app.use("/api/products", productsController);
|
||||
app.use("/api/access", loginController);
|
||||
app.use("/api/exercises", exerciseController);
|
||||
app.use("/api/questions", questionController);
|
||||
app.use("/api/answers", answerController);
|
||||
app.use("/api/products", productsController);
|
||||
app.use("/api/traineeprogram", traineeprogramController);
|
||||
app.use("/api/traineeprogramcourses", traineeprogramcoursesController);
|
||||
app.use("/api/text", textController);
|
||||
app.use("/api/classescontent", classescontentController);
|
||||
app.use("/api/videos", videoController);
|
||||
app.use("/api/email", emailController);
|
||||
app.use("/api/typescourse", typescourseController);
|
||||
app.use("/api/migration", migrationController);
|
||||
app.use("/api/users", usersController);
|
||||
app.use("/api/slides", slidesController);
|
||||
app.use("/api/concepts", conceptsController);
|
||||
app.use("/api/teacher", teacherController);
|
||||
app.use("/api/franchisee", franchiseeController);
|
||||
app.use("/api/app", appController);
|
||||
app.use("/api/qr", qrController);
|
||||
app.use("/api/curiosities", curiositiesController);
|
||||
app.use("/api/barcode", barcodeController);
|
||||
app.use("/api/ello", elloController);
|
||||
app.use("/api/files", fileController);
|
||||
app.use("/api/alexa", alexaController);
|
||||
app.use("/api/animations", animationsController);
|
||||
app.use("/api/iyrc", iyrcController);
|
||||
app.use("/api/chat", chatController);
|
||||
app.use("/api/chamadas", chamadaController);
|
||||
app.use("/api/holidays", holidayController);
|
||||
app.use("/api/characters", charactersController);
|
||||
app.use("/api/visitas", visitasController);
|
||||
app.use("/api/chattime", chattimeController);
|
||||
app.use("/api/relatorios", relatorioController);
|
||||
app.use("/api/config", configController);
|
||||
app.use("/api/listenrepeat", listenrepeatController);
|
||||
app.use("/api/customize", customizeController);
|
||||
app.use("/api/ig40", ig40Controller);
|
||||
app.use("/api/permissoes", permissoesController);
|
||||
app.use("/api/agenda", agendaController);
|
||||
app.use("/api/student", studentController);
|
||||
app.use("/api/unilever", unileverController);
|
||||
Loading…
Reference in New Issue