ZoeApi/controllers/answerController.js

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;