%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/opti/workflow/src/routes/
Upload File :
Create Path :
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;

Zerion Mini Shell 1.0