diff --git a/lib/controllers/ModelSubdocController.js b/lib/controllers/ModelSubdocController.js index 8952d0f..13a5e84 100644 --- a/lib/controllers/ModelSubdocController.js +++ b/lib/controllers/ModelSubdocController.js @@ -20,29 +20,29 @@ module.exports = function(app, name){ //default data get method //trigger method for data collection get //The fetched record is at req.record - beforeGetItem: function(req, res){}, + beforeGetItem: function(req, res, next){next();}, afterGetItem: function(req, res){}, //trigger method for data collection fetch //The fetched records is at req.recordCollection - beforeGetCollection: function(req, res){}, + beforeGetCollection: function(req, res, next){next();}, afterGetCollection: function(req, res){}, //trigger method for data create //The created record is at req.record - beforeCreate: function(req, res){}, + beforeCreate: function(req, res, next){next();}, afterCreate: function(req, res){}, //trigger method for data update //The old record is at req.record //The new record is at req.recordNew - beforeUpdate: function(req, res){}, + beforeUpdate: function(req, res, next){next();}, afterUpdate: function(req, res){}, //trigger method for data delete //The old record is at req.record - beforeDelete: function(req, res){}, + beforeDelete: function(req, res, next){next();}, afterDelete: function(req, res){}, ensureExists:function(req,res,next){ @@ -72,62 +72,66 @@ module.exports = function(app, name){ }); }, getItem:function(req,res){ - getSelf().beforeGetItem(); - var item = req.record.get(getSelf()._path).id(req.params.subId); - if(item){ - res.json(200,item); - }else{ - res.send(406); - } - getSelf().afterGetItem(); + getSelf().beforeGetItem(req,res,function(){ + var item = req.record.get(getSelf()._path).id(req.params.subId); + if(item){ + res.json(200,item); + }else{ + res.send(406); + } + getSelf().afterGetItem(); + }); }, getCollection: function(req, res){ - getSelf().beforeGetCollection(req, res); - var results = app.openbiz.services.ArrayPaginator(req.record.get(getSelf()._path),req.query); - res.json(200,results); - getSelf().afterGetCollection(req, res); + getSelf().beforeGetCollection(req, res,function(){ + var results = app.openbiz.services.ArrayPaginator(req.record.get(getSelf()._path),req.query); + res.json(200,results); + getSelf().afterGetCollection(req, res); + }); }, delete:function(req,res){ - getSelf().beforeDelete(req, res); - var item = req.record.get(getSelf()._path).id(req.params.subId); - if(item == null){ - res.send(304); - } - else{ - getSelf().processChangeLog(req,"DELETE",item); - req.record.get(getSelf()._path).remove(item); - req.record.save(function(err){ - if(err){ - res.json(500,{error:err}); - } - else{ - getSelf().afterDelete(req, res); - res.send(204); - } - }); - } + getSelf().beforeDelete(req, res,function(){ + var item = req.record.get(getSelf()._path).id(req.params.subId); + if(item == null){ + res.send(304); + } + else{ + getSelf().processChangeLog(req,"DELETE",item); + req.record.get(getSelf()._path).remove(item); + req.record.save(function(err){ + if(err){ + res.json(500,{error:err}); + } + else{ + getSelf().afterDelete(req, res); + res.send(204); + } + }); + } + }); }, update:function(req,res){ - getSelf().beforeUpdate(req, res); - var item = req.record.get(getSelf()._path).id(req.params.subId); - if(item == null){ - res.send(304); - }else{ - getSelf().processChangeLog(req,"UPDATE",item); - for(var i in req.body){ - item[i] = req.body[i]; - } - req.record.save(function(err){ - if(err){ - res.json(500,{error:err}); - } - else{ - req.recordNew = req.record; - getSelf().afterUpdate(req, res); - res.send(204); + getSelf().beforeUpdate(req, res,function(){ + var item = req.record.get(getSelf()._path).id(req.params.subId); + if(item == null){ + res.send(304); + }else{ + getSelf().processChangeLog(req,"UPDATE",item); + for(var i in req.body){ + item[i] = req.body[i]; } - }); - } + req.record.save(function(err){ + if(err){ + res.json(500,{error:err}); + } + else{ + req.recordNew = req.record; + getSelf().afterUpdate(req, res); + res.send(204); + } + }); + } + }); }, processChangeLog:function(req,action,item){ var updateLog = { @@ -140,7 +144,10 @@ module.exports = function(app, name){ switch(action){ case "UPDATE": { for(var i in req.body){ - if(!_.isEqual(item[i], req.body[i])){ + if(_.isDate(req.record[i])){ + req.body[i] = new Date(req.body[i]); + } + if(!_.isEqual(item[i].toString(), req.body[i].toString())){ updateLog.original[i] = item[i]; updateLog.current[i] = req.body[i]; }