var express = require('express'); import DateUtils from '../../tools/utilities/DateUtils'; import StringUtils from '../../tools/utilities/StringUtils'; 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 router = express.Router(); var multer = require('multer'); var fs = require('fs-extra'); var Models = require('../../models'); const dateUtils = new DateUtils(); const rightsManager = new RightsManager(); var uploadPath = "./content/blog-images/" + dateUtils.getDate('year', new Date()) + "/" + dateUtils.getDate('month', new Date()); var Sequelize = require('sequelize'); const Op = Sequelize.Op; var _ = require('lodash'); 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 feature_upload = multer( { storage: storage }).array('feature_image'); var post_upload = multer( { storage: storage }).array('post_image'); //** SYNC POSTS */ router.post("/sync", (req, res, next) => { let payload = req.body; console.log("***PAYLOAD***", payload) Models.User.findById(req.session.user.id).then((user) => { if (rightsManager.check(user.role, OBJECT_POST, TASK_UPDATE)) { for (let index = 0; index < payload.length; index++) { const item = payload[index]; Models.FreshPost.findOne( { where: { "post": { [Op.contains]: { slug: item.post.slug } } } }).then(found => { if (!_.isEqual(item.post, found.post)) { found.update(item).then(updated => { console.log("UPDATED", updated); }).catch(err => { //console.log("***ERROR***", err); }) } else { //chilld } }).catch(err => { Models.FreshPost.create(item).then(fresh => { //console.log(fresh) }) }) } res.json( { message: "postsSynced" }); } else { res.json( { message: "Nah. You can't do that. Talk to the admin, sport." }); } }); }) router.get('/json', function(req, res, next) { Models.FreshPost.findAll( { order: [ ['id', 'DESC'] ] }).then(function(posts) { res.json(posts) }).catch(function(err) { //next(err); }) }) /*** POST IMAGE */ router.post('/add-post-image', function(req, res, next) { //console.log(req.body); if (!req.session.user) return res.json( { message: "You need to be logged in, champ." }); Models.User.findById(req.session.user.id).then((user) => { if (rightsManager.check(user.role, OBJECT_POST, TASK_CREATE)) { post_upload(req, res, function(err) { if (err) { //console.log('Error in Saving Entry: ' + err); res.json( { message: err }); throw err; } else { var postImage = req.files[0].path; return res.json( { message: "post image added", url: postImage.substr(7, postImage.length) }); } }); } else { res.json( { message: "Nah. You can't do that. Talk to the admin, sport." }); } }); }); router.post('/add-feature-image', function(req, res, next) { //console.log(req.body); if (!req.session.user) return res.json( { message: "You need to be logged in, champ." }); Models.User.findById(req.session.user.id).then((user) => { if (rightsManager.check(user.role, OBJECT_POST, TASK_CREATE)) { feature_upload(req, res, function(err) { if (err) { //console.log('Error in Saving Entry: ' + err); res.json( { message: err }); throw err; } else { var postImage = req.files[0].path; return res.json( { message: "post image added", url: postImage.substr(7, postImage.length) }); } }); } else { res.json( { message: "Nah. You can't do that. Talk to the admin, sport." }); } }); }); module.exports = router;