import RightsManager, { TASK_CREATE, TASK_UPDATE, TASK_READ, TASK_DELETE, OBJECT_CLIENT_ADMIN, OBJECT_CLIENT_USER, OBJECT_PROJECT_CLIENT, OBJECT_PROJECT_FOLIO, OBJECT_BOOKMARK, OBJECT_POST } from '../../tools/utilities/RightsManager'; var express = require('express'); var router = express.Router(); var multer = require('multer'); var fs = require('fs-extra'); var Models = require('../../models'); var User = require('../../models/User.js'); var uploadPath = "./content/client-images/"; fs.ensureDir(uploadPath, function(err) { //console.log(err) // => null // dir has now been created, including the directory it is to be placed in }) var storage = multer.diskStorage({ destination: function(req, file, cb) { cb(null, uploadPath) }, filename: function(req, file, cb) { var splice = file.originalname.split(':'); cb(null, splice[0]); } }); var upload = multer({storage: storage}).array('projectImages'); var rightsManager = new RightsManager(); /* Create New Client Project */ router.post('/add', function(req, res, next) { if (!req.user) return res.json({message: "You need to be logged in, champ."}) User.findById(req.user._id).then((user) => { upload(req, res, function(err) { if (err) { //console.log('Error in Saving Entry: ' + err); res.json({message: err}); throw err; } else { if (rightsManager.check(user.role, OBJECT_PROJECT_FOLIO, TASK_CREATE)) { var project = new Project(req.body); project.owner = user._id; project.user = []; project.comments = []; project.tasks = []; project.created = new Date().getTime(); project.edited = new Date().getTime(); if (req.files != "") { project.images = req.files; } else { console.log("NOTHING TO SAVE"); } project.save().then((project) => { res.json({message: "new client project added"}); }).catch((err) => { console.log(err); }) } else { res.json({message: "Nah. You can't do that. Talk to the admin, sport."}); } } }); }).catch((err) => { console.log(err); }) }); /* Get Client Project List */ router.get('/', function(req, res, next) { if (!req.user) return res.json({message: "You need to be logged in, champ."}) User.findById(req.user._id).then((user) => { if ( rightsManager.check(user.role, OBJECT_POST, TASK_READ )) { Project.find({}).then((projects) => { res.json(projects); }).then((users) => { //res.json({message: "got user list"}); }).catch((err) => { console.log(err); }); } else { res.json({message: "Nah. You can't do that. Talk to the admin, sport."}); } }).catch((err) => { console.log(err); }) }); /* Get Client Project by ID */ router.get('/:id', function(req, res, next) { if (!req.user) return res.json({message: "You need to be logged in, champ."}); User.findById(req.user._id).then((user) => { if (RightsManager.check(user.role, [RightsManager.OBJECT_PROJECT_CLIENT], RightsManager.TASK_READ)) { Project.findById(req.params.id).then((project) => { res.json(project); }).catch((err) => { console.log(err); }); } }) }); /* Update Client Project by ID */ router.post('/update/:id', function(req, res, next) { if (!req.user) return res.json({message: "You need to be logged in, champ."}); User.findById(req.user._id).then((user) => { if ( rightsManager.check(user.role, OBJECT_POST, TASK_UPDATE) ) { upload(req, res, function(err) { if (err) { //console.log('Error in Saving Entry: ' + err); res.json({message: err}); throw err; } else { Project.findByIdAndUpdate(req.params.id, req.body).then((project) => { if (req.files != "") { project.images = req.files; } else { console.log("NOTHING TO SAVE"); } project.edited = new Date().getTime(); project.save().then((saved) => { res.json({message: "project updated"}); }).catch((err) => { console.log(err); }) }).catch((err) => { console.log(err); }) } }); } else { res.json({message: "Nah. You can't do that. Talk to the admin, sport."}); } }); }); /* Delete Client Project by ID */ router.delete('/:id', function(req, res, next) { if (!req.user) return res.json({message: "users only, yo. you're not that"}); User.findById(req.user._id).then((user) => { if ( rightsManager.check(user.role, OBJECT_POST, TASK_DELETE) ) { Project.findByIdAndRemove(req.params.id).then((project) => { res.json({message: 'project has been removed'}); }).catch((err) => { console.log(err); }) } else { res.json({message: "Nah. You can't do that. Talk to the admin, sport."}); } }); }); module.exports = router;