const express = require('express');
const router = express.Router();
var routes = function () {
router.get('/ativarUsuario/:idusuarios', function (req, res) {
const idusuarios = parseInt(req.params.idusuarios);
if (!idusuarios || isNaN(idusuarios)) {
return res.status(400).send(RenderPaginaAtivacao({
sucesso: false,
titulo: 'Link inválido',
mensagem: 'O link de ativação utilizado é inválido ou está incompleto.',
textoBotao: 'Voltar ao site'
}));
}
const sqlQuery = `
UPDATE usuarios
SET habilitado = 1
WHERE idusuarios = ?;
`;
mysqlConnection.query(sqlQuery, [idusuarios], function (error, results) {
console.log(`${new Date().toUTCString()} - ${req.originalUrl} ${(error) ? '500 error' : '200 success'}`);
if (error) {
return res.status(500).send(RenderPaginaAtivacao({
sucesso: false,
titulo: 'Erro ao ativar conta',
mensagem: 'Não foi possível ativar sua conta no momento. Tente novamente mais tarde ou entre em contato com o suporte.',
textoBotao: 'Voltar ao site'
}));
}
if (!results || results.affectedRows === 0) {
return res.status(404).send(RenderPaginaAtivacao({
sucesso: false,
titulo: 'Conta não encontrada',
mensagem: 'Não encontramos uma conta associada a este link de ativação.',
textoBotao: 'Voltar ao site'
}));
}
return res.status(200).send(RenderPaginaAtivacao({
sucesso: true,
titulo: 'Conta ativada com sucesso!',
mensagem: 'Sua conta foi ativada e você já pode acessar a plataforma Zendion, INC.',
textoBotao: 'Entrar agora'
}));
});
});
function RenderPaginaAtivacao({ sucesso, titulo, mensagem, textoBotao }) {
const corPrincipal = sucesso ? '#071b63' : '#991b1b';
const corFundoIcone = sucesso ? '#dcfce7' : '#fee2e2';
const corIcone = sucesso ? '#15803d' : '#b91c1c';
const icone = sucesso ? '✓' : '!';
const linkBotao = sucesso ? 'https://zendioninc.com.br/login' : 'https://zendioninc.com.br/home';
return `
${titulo}
Zendion, INC. • Este é um processo automático de ativação de conta.
`;
}
router.get('/getUsuarios', function (req, res) {
const sqlQuery = `SELECT * FROM usuarios;`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getUsuarioByID/:idusuarios', function (req, res) {
const idusuarios = parseInt(req.params.idusuarios);
const sqlQuery = `SELECT * FROM usuarios WHERE idusuarios = ${idusuarios};`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getSistemasDoUsuario/:idusuarios', function (req, res) {
const idusuarios = parseInt(req.params.idusuarios);
const sqlQuery = `SELECT
s.idsistemas,
s.nome,
su.data_download,
su.idusuarios,
s.descricao,
(SELECT COUNT(1) FROM chaves cv WHERE cv.idsistemas = s.idsistemas AND cv.idusuarios = su.idusuarios AND cv.data_validade > CURRENT_DATE) AS chavesValidas,
CASE WHEN s.idtiposlicenca = 6 THEN 1 ELSE 0 END AS gratis
FROM sistemasusuario su
INNER JOIN sistemas s ON s.idsistemas = su.idsistemas
WHERE su.idusuarios = ${idusuarios};`;
ExecuteQuery(sqlQuery, req, res);
});
router.post('/authUser', function (req, res) {
let usuario = req.body.usuario;
let senha = req.body.senha;
const sqlQuery = `SELECT
idusuarios,
nome,
idtiposdeusuario,
habilitado
FROM usuarios
WHERE usuario = '${usuario}' AND senha = '${senha}';`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getTiposdeusuario', function (req, res) {
const sqlQuery = `SELECT * FROM tiposdeusuario;`;
ExecuteQuery(sqlQuery, req, res);
});
router.post('/insertUsuarios', function (req, res) {
let idusuarios = req.body.idusuarios;
let nome = req.body.nome;
let usuario = req.body.usuario;
let senha = req.body.senha;
let email = req.body.email;
let idtiposdeusuario = req.body.idtiposdeusuario;
let cpf = req.body.cpf;
let habilitado = req.body.habilitado ? 1 : 0;
const sqlQuery = `INSERT INTO usuarios (nome, usuario, senha, data_cadastro, cpf, habilitado, email, idtiposdeusuario)
VALUES ('${nome}', UPPER('${usuario}'), UPPER('${senha}'), now(), '${cpf}', ${habilitado}, '${email}', ${idtiposdeusuario});`;
ExecuteQuery(sqlQuery, req, res);
});
router.patch('/updateUsuarios', function (req, res) {
let idusuarios = req.body.idusuarios;
let nome = req.body.nome;
let usuario = req.body.usuario;
let senha = req.body.senha;
let email = req.body.email;
let idtiposdeusuario = req.body.idtiposdeusuario;
let cpf = req.body.cpf;
let habilitado = req.body.habilitado ? 1 : 0;
const sqlQuery = `UPDATE usuarios SET
nome = '${nome}',
usuario = UPPER('${usuario}'),
senha = UPPER('${senha}'),
cpf = '${cpf}',
habilitado = ${habilitado},
email = '${email}',
idtiposdeusuario = ${idtiposdeusuario}
WHERE idusuarios = ${idusuarios};`;
ExecuteQuery(sqlQuery, req, res);
});
router.delete('/deleteUsuarios/:idusuarios', function (req, res) {
let idusuarios = parseInt(req.params.idusuarios);
const sqlQuery = `DELETE FROM usuarios WHERE idusuarios = ${idusuarios};`;
ExecuteQuery(sqlQuery, req, res);
});
router.post('/setUsada', function (req, res) {
let chave = req.body.Chave;
const sqlQuery = `UPDATE chaves SET usada = 1 WHERE licenca = '${chave}';`;
ExecuteQuery(sqlQuery, req, res);
});
router.post('/validaLicenca', function (req, res) {
let usuario = req.body.Usuario;
let senha = req.body.Senha;
let chave = req.body.Chave;
const sqlQuery = `SELECT
u.nome AS Nome,
u.cpf AS CPF,
c.usada AS Usada,
c.idsistemas AS IDSistema
FROM chaves c
INNER JOIN usuarios u ON c.idusuarios = u.idusuarios
WHERE c.licenca = '${chave}' AND u.usuario = '${usuario}' AND u.senha = '${senha}' AND u.habilitado = 1 AND c.usada = 0;`;
ExecuteQuery(sqlQuery, req, res);
});
router.post('/insertTrocasenha', function (req, res) {
let idusuarios = parseInt(req.body.idusuarios);
let tag = req.body.tag;
const sqlQuery = `INSERT INTO trocasenha (idusuarios, tag, usada) VALUES (${idusuarios}, '${tag}', 0);`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getTrocasenha', function (req, res, next) {
const sqlQuery = `SELECT * FROM trocasenha WHERE usada = 0;`;
ExecuteQuery(sqlQuery, req, res);
});
router.get('/getTrocasenhaByTag/:tag', function (req, res, next) {
let tag = req.params.tag;
const sqlQuery = `SELECT * FROM trocasenha WHERE tag = '${tag}' AND usada = 0;`;
ExecuteQuery(sqlQuery, req, res);
});
router.post('/setExpirado', function (req, res, next) {
let tag = req.body.tag;
const sqlQuery = `UPDATE trocasenha SET usada = 1 WHERE tag = '${tag}';`;
ExecuteQuery(sqlQuery, req, res);
});
router.patch('/trocaSenha', function (req, res, next) {
const idusuarios = parseInt(req.body.idusuarios);
const senha = req.body.senha;
const sqlQuery = `UPDATE usuarios SET
senha = UPPER('${senha}')
WHERE idusuarios = ${idusuarios};`;
ExecuteQuery(sqlQuery, req, res);
});
router.post('/validaLicencaByChave/:idsistemas', function (req, res, next) {
const idsistemas = parseInt(req.params.idsistemas);
const chave = req.body.Chave;
const sqlQuery = `SELECT
u.nome AS Nome,
u.cpf AS CPF,
c.usada AS Usada,
c.idsistemas AS IDSistema
FROM chaves c
INNER JOIN usuarios u ON c.idusuarios = u.idusuarios
WHERE c.licenca = '${chave}' AND c.idsistemas = ${idsistemas} AND u.habilitado = 1 AND c.usada = 0;`;
ExecuteQuery(sqlQuery, req, res);
});
return router;
}
module.exports = routes;