/* jshint node: true */ var _ = require('lodash'), util = require('../util'), upload = require('../upload'), middleware = require('../middleware'), config = require('../../../config.json'), Blueprint = require('../schemas/Blueprint'), Layout = require('../schemas/Layout'); var layouts = { index: function(req, res){ Layout.find({ is_stock: true }, function(err, stock_layouts){ Layout.find({ user_id: req.user._id, is_stock: false }, function(err, user_layouts){ Blueprint.find({ user_id: req.user._id }, function(err, blueprints){ res.json({ layouts: stock_layouts, user_layouts: user_layouts, blueprints: blueprints, user: res.locals.user, layoutCount: res.locals.layoutCount, projectCount: res.locals.projectCount, }) }) }) }) }, show: function(req, res){ Layout.findOne({ slug: req.params.slug }, function(err, doc){ if (doc) { res.json(doc) return } else { var name = util.sanitize(req.params.slug) if (name == "new") { name = "" } res.json({ _id: "new", name: name, isNew: true }) } }) }, create: function(req, res){ var data = util.cleanQuery(req.body) data.name = util.sanitize(data.name) data.slug = util.slugify(data.name) data.user_id = req.user._id data.rooms = JSON.parse(data.rooms) data.startPosition = JSON.parse(data.startPosition) Layout.findOne({ slug: data.slug }, function(err, doc){ if (! err || doc) { data.slug = data.slug + "-" + Date.now() } do_upload() }) function do_upload () { upload.put("layouts", 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 Layout(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) } var data = util.cleanQuery(req.body) data.name = util.sanitize(data.name) data.slug = util.slugify(data.name) data.user_id = req.user._id upload.put("layouts", 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() { Layout.findOne({ _id: _id }, function(err, doc){ if (err || ! doc) { return res.json({ error: err }) } _.extend(doc, data) doc.rooms = JSON.parse(data.rooms) 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 } Layout.remove({ _id: _id }, function(err){ res.json({ status: "OK" }) }) }, } module.exports = layouts