271 lines
9.2 KiB
JavaScript
271 lines
9.2 KiB
JavaScript
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; |