/* jshint node: true */ var _ = require('lodash'), util = require('../util'), upload = require('../upload'), config = require('../../../config.json'), Project = require('../schemas/Project'); var projects = { index: function(req, res){ Project.find({ user_id: req.user._id }, function(err, docs){ res.json(docs) }) }, show: function(req, res){ Project.findOne({ slug: req.params.slug }, function(err, doc){ if (doc) { res.json(doc) return } else { var name = util.sanitize(req.params.slug) Project.count({}, function(err, count){ name = "Project #" + (count || 0) res.json({ _id: "new", name: name, isNew: true }) }) } }) }, create: function(req, res){ var data = util.cleanQuery(req.body) data.user_id = req.user._id data.name = util.sanitize(data.name) data.slug = util.slugify(data.name) data.description = util.sanitize(data.description) data.rooms = JSON.parse(data.rooms) data.walls = JSON.parse(data.walls) data.media = JSON.parse(data.media) data.colors = JSON.parse(data.colors) data.startPosition = JSON.parse(data.startPosition) data.created_at = new Date () upload.put("projects", req.files.thumbnail, { unacceptable: function(err){ res.json({ error: { errors: { thumbnail: { message: "Problem saving thumbnail: " + err } } } }) }, success: function(url){ data.photo = url done() } }) function done() { new Project(data).save(function(err, doc){ if (err || ! doc) { return res.json({ error: err }) } res.json(doc) }) } }, update: function(req, res){ var _id = req.body._id if (_id == "new") { return docs.create(req, res) } if (req.files.thumbnail) { upload.put("projects", req.files.thumbnail, { unacceptable: function(err){ res.json({ error: { errors: { thumbnail: { message: "Problem saving thumbnail: " + err } } } }) }, success: function(url){ data.photo = url done() } }) } else { done() } function done() { Project.findOne({ _id: _id }, function(err, doc){ if (err || ! doc) { return res.json({ error: err }) } var data = util.cleanQuery(req.body) // data.user_id = req.user._id data.name = util.sanitize(data.name) if (data.name != doc.name) { data.slug = util.slugify(data.name) } data.description = util.sanitize(data.description) data.updated_at = new Date () _.extend(doc, data) doc.rooms = JSON.parse(data.rooms) doc.walls = JSON.parse(data.walls) doc.colors = JSON.parse(data.colors) doc.media = JSON.parse(data.media) doc.startPosition = JSON.parse(data.startPosition) doc.save(function(err, doc){ if (err || ! doc) { return res.json({ error: err }) } res.json(doc) }) }) } }, destroy: function(req, res){ var _id = req.body._id if (! _id || ! _id.length) { res.json({ error: 404 }) return } Project.remove({ _id: _id }, function(err){ res.json({ status: "OK" }) }) }, } module.exports = projects