ZoeApi/controllers/franchiseeController.js

476 lines
16 KiB
JavaScript

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;