MakerBook/api/controllers/coursesController.js

82 lines
2.8 KiB
JavaScript

const execQuery = require('../connector');
const express = require('express');
const router = express.Router();
const fileUtils = require('../utils/fileUtils');
const formUtils = require('../utils/formUtils');
const formidable = require("formidable");
const routes = function () {
router.get('/list', (req, res) => {
execQuery('SELECT * FROM listcourses;', [], req, res);
});
router.get('/get/:id', (req, res) => {
const id = req.params.id;
execQuery('SELECT * FROM courses WHERE id = ?;', [id], req, res);
});
router.post('/create', (req, res) => {
let body = new formidable.IncomingForm();
body.maxFileSize = 1024 * 1024 * 1024;
body.parse(req, function (err, fields, files) {
const pdf = files.pdf;
const form = formUtils.normalizarFormulario(fields);
const query = 'INSERT INTO courses (description, enabled, duration, ext) VALUES (?, ?, ?, ?);';
execQuery(
query,
[form.description, form.enabled, form.duration, ".pdf"],
req,
res,
async (results, callback) => {
const courseId = results["insertId"];
if (pdf && pdf.length > 0) {
await fileUtils.salvarPDF(pdf[0], "course_" + courseId);
}
callback(results);
}
);
});
});
router.post('/update', (req, res) => {
let body = new formidable.IncomingForm();
body.maxFileSize = 1024 * 1024 * 1024;
body.parse(req, function (err, fields, files) {
const pdf = files.pdf;
const form = formUtils.normalizarFormulario(fields);
const query = 'UPDATE courses SET description = ?, enabled = ?, duration = ? WHERE id = ?;';
execQuery(
query,
[form.description, form.enabled, form.duration, form.id],
req,
res,
async (results, callback) => {
const courseId = form.id;
if (pdf && pdf.length > 0) {
await fileUtils.salvarPDF(pdf[0], "course_" + courseId);
}
callback(results);
}
);
});
});
router.delete('/delete/:id', (req, res) => {
const id = req.params.id;
execQuery('DELETE FROM courses WHERE id = ?;', [id], req, res, async (results, callback) => {
const diretorioParaExcluir = './pdfs/course_' + id.toString() + ".pdf";
await fileUtils.excluirArquivo(diretorioParaExcluir);
callback(results);
});
});
return router;
}
module.exports = routes;