%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;