kpiplus
Version:
KPI+
1 lines • 1.33 kB
JavaScript
var events=require("events"),underscore=require("underscore"),async=require("async");let tontucthoi=require("../models/tontucthoi");var post=function(t,e,o,i){e||(e=[]),this.master=t.toObject(),underscore.isObject(e)?this.details=e:this.details=e.toObject(),this.model_book=o,this.prepare=i,this.prepare||(this.prepare=function(t,e){e(t)})};post.prototype.remove=function(t){t||(t=function(){});let e=this.master,o=this.model_book;async.parallel({sks:t=>{if("sokho"===o.modelName.toLowerCase()){require("../models/sokho").find({id_ct:e._id}).lean().exec(function(e,o){if(e)return t(e);t(null,o)})}else t(null,[])}},(i,n)=>{if(i)return t(i);o.remove({id_ct:e._id},function(e){if(e)return t(e);n.sks.length>0?tontucthoi.tinhTonTucThoi(n.sks,(e,o)=>{t(e,o)}):t(e)})})},post.prototype.run=function(t){if(t||(t=function(){}),!this.details)return t(null);let e=this.master,o=this.details,i=this.model_book,n=this;this.remove(function(s){if(s)return t(s);async.map(o,function(t,o){n.prepare(t,function(t){let n=new i;n.set("id_ct",e._id);for(let o in i.schema.paths)"id_ct"!=o&&"_id"!=o&&(v=t[o],v?n.set(o,v):(v=e[o],v&&n.set(o,v)));n.save(function(t,e){if(t)return o(t);o&&o(null,e)})})},function(e,o){if(e)return t(e);"sokho"===i.modelName.toLowerCase()?tontucthoi.tinhTonTucThoi(o,(e,i)=>{t(e,o)}):t(null,o)})})},module.exports=post;