%PDF- %PDF-
| Direktori : /home/opti/workflow/src/routes/ |
| Current File : /home/opti/workflow/src/routes/document.js |
var express = require('express');
var formidable = require('formidable');
var guard = require('connect-ensure-login');
var fs = require('fs');
var path = require('path');
var router = express.Router();
var db = require('../models');
var secured = require('../middleware/login');
var con = require('../../config');
router.get('/', guard.ensureLoggedIn(), (req, res, next) => {
var user = req.user;
db.Document.findOne({ where: { orgId: user.orgId, createdBy: user.id, parent: 0, name: 'root' } })
.then(result => {
if (result != null) {
res.redirect(`/document/my-document/${result.uuid}`);
} else {
db.Document.create({ orgId: req.user.orgId, createdBy: user.id, parent: 0, name: 'root' })
.then(newDoc => {
if (newDoc) {
res.redirect(`/document/my-document/${newDoc.uuid}`);
}
});
}
});
});
router.get('/my-document/:docId', guard.ensureLoggedIn(), (req, res, next) => {
var user = req.user;
db.Document.findOne({ where: { orgId: user.orgId, createdBy: user.id, uuid: req.params.docId } })
.then(document => {
db.Document.findAll({ where: { orgId: user.orgId, createdBy: user.id, parent: document.id } })
.then(documents => {
res.render('document/myDocument', { title: 'Document Management', docId: document.id, documents, user: user, script: "roleList" });
});
});
});
router.post('/new-folder', guard.ensureLoggedIn(), (req, res, next) => {
db.Document.create({ name: req.body.folderName, createdBy: req.user.id, orgId: req.user.orgId, type: 1, parent: req.body.parentId })
.then(result => {
if (result != null) {
req.flash('welcome');
res.redirect('back');
} else {
req.flash('welcome');
res.redirect('back');
}
});
});
router.post('/new-file', guard.ensureLoggedIn(), (req, res, next) => {
const form = new formidable.IncomingForm();
form.parse(req, async (err, fields, files) => {
const fileUpload = files.fileName;
const uploadInfo = fields;
if (fileUpload.fileName === null) {
req.flash('error', 'Please Fill All The Required Forms');
res.redirect('back');
}
if (fileUpload && fileUpload.name) {
const name = `${Math.round(Math.random() * 10000)}.${fileUpload.name.split('.').pop()}`;
const dest = path.join(__dirname, '..', 'public', 'app-assets', 'document', name);
const data = fs.readFileSync(fileUpload.path);
fs.writeFileSync(dest, data);
fs.unlinkSync(fileUpload.path);
uploadInfo.fileName = name;
uploadInfo.size = fileUpload.size;
uploadInfo.extension = fileUpload.type;
}
db.Document.create({ name: uploadInfo.name, fileName: uploadInfo.fileName, size: uploadInfo.size, extension: uploadInfo.extension, createdBy: req.user.id, orgId: req.user.orgId, type: 2, parent: uploadInfo.parentId })
.then(result => {
if (result != null) {
req.flash('welcome');
res.redirect('back');
} else {
req.flash('welcome');
res.redirect('back');
}
});
});
});
router.get('/my-document/view/:docId', guard.ensureLoggedIn(), async (req, res, next) => {
var user = req.user;
const doc = await db.Document.findOne({ where: { orgId: user.orgId, createdBy: user.id, uuid: req.params.docId } })
const documents = await db.Document.findAll({ where: { orgId: req.user.orgId, createdBy: user.id, parent: doc.id } });
res.render('document/viewDoc', { title: 'Document Management', docId: doc.id, documents, user: user, script: "roleList" });
});
router.post('/sub-folder/:parentId', guard.ensureLoggedIn(), async (req, res, next) => {
// console.log(req.body);
// return false;
const subFolder = await db.Document.create({ name: req.body.folderName, createdBy: req.user.id, orgId: req.user.orgId, type: 1, parent: req.params.parentId });
if (subFolder != null) {
req.flash('welcome');
res.redirect('back');
} else {
req.flash('welcome');
res.redirect('back');
}
});
// Download file
router.get('/download/:file', guard.ensureLoggedIn(), async (req, res) => {
db.Document.findOne({ where: { orgId: req.user.orgId, fileName: req.params.file } })
.then(result => {
const file = path.join(__dirname, '..', 'public', 'app-assets', 'document', result.fileName);
res.download(file);
});
});
router.post('/update-folder', guard.ensureLoggedIn(), (req, res) => {
db.Document.update({ name: req.body.folderName }, { where: { id: req.body.folderId } })
.then(document => {
if (document) {
res.redirect('back');
}
}).catch(function () {
console.log("There was an error updating Business Structure")
res.redirect('back');
})
})
router.post('/update-file', guard.ensureLoggedIn(), (req, res, next) => {
const form = new formidable.IncomingForm();
form.parse(req, async (err, fields, files) => {
const fileUpload = files.fileName;
const uploadInfo = fields;
if (fileUpload.fileName === null) {
req.flash('error', 'Please Fill All The Required Forms');
res.redirect('back');
} else {
if (fileUpload && fileUpload.name) {
const name = `${Math.round(Math.random() * 10000)}.${fileUpload.name.split('.').pop()}`;
const dest = path.join(__dirname, '..', 'public', 'app-assets', 'document', name);
const data = fs.readFileSync(fileUpload.path);
fs.writeFileSync(dest, data);
fs.unlinkSync(fileUpload.path);
uploadInfo.fileName = name;
uploadInfo.size = fileUpload.size;
uploadInfo.extension = fileUpload.type;
}
db.Document.findOne({ where: { id: uploadInfo.docId } })
.then(async result => {
if (result !== null) {
const getCounter = await result.update({ counter: result.counter + 1 });
uploadInfo.name = `${fields.name}_v${getCounter.counter}`
db.Document.create({ name: uploadInfo.name, fileName: uploadInfo.fileName, size: uploadInfo.size, extension: uploadInfo.extension, createdBy: req.user.id, orgId: req.user.orgId, type: 2, parent: getCounter.parent })
.then(result => {
if (result != null) {
req.flash('welcome');
res.redirect('back');
} else {
req.flash('welcome');
res.redirect('back');
}
});
} else {
res.redirect('back');
}
});
}
});
});
router.post('/delete', guard.ensureLoggedIn(), async (req, res) => {
await db.Document.destroy({ where: { orgId: req.user.orgId, id: req.body.id } });
res.send('success');
});
module.exports = router;