flexbiz-server
Version:
Flexible Server
7 lines (6 loc) • 2.5 kB
JavaScript
let async=require("async"),fs=require("fs"),waitevent=require("./waitevent"),campaignSchema=new Schema({id_app:{type:String,required:!0},title:{type:String,required:!0,maxlength:1024},steps:Schema.Types.Mixed,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],
delete_right:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String]});(global.configs||{}).createIndexes&&(campaignSchema.index({id_app:1,title:1}),campaignSchema.index({title:"text"},{name:"campaign_index"}),campaignSchema.index({status:1}),campaignSchema.index({user_created:1,visible_to:1,visible_to_users:1}));let model=mongoose.models.campaign||mongoose.model("campaign",campaignSchema);
model.getEvents=function($obj$$){let $events$$=[];$obj$$&&$obj$$.children&&$obj$$.children.length>0&&$obj$$.children.forEach($c$$=>{$c$$.step_style=="waitevent"&&$c$$.model_id&&$events$$.push($c$$);$events$$=$events$$.concat(model.getEvents($c$$))});return $events$$};
model.deleteEvents=($obj$$,$next$$)=>{let $events$$=model.getEvents($obj$$.steps);async.mapSeries($events$$,($event$$,$callback$$)=>{waitevent.findOne({_id:$event$$.model_id}).lean().then($ev$$=>{$ev$$&&$ev$$.type&&global.globalEvents.removeAllListeners($ev$$.type+"_"+$obj$$._id+"_"+($ev$$.type=="schedule"?$event$$._id:$ev$$.exfields[$ev$$.type]));$callback$$()}).catch($e$$=>{Logger.error($e$$)})},()=>{$next$$()})};
model.listenerEvents=($obj$$,$next$$)=>{let $events$$=model.getEvents($obj$$.steps);async.mapSeries($events$$,($event$$,$callback$$)=>{waitevent.findOne({_id:$event$$.model_id}).lean().then($ev$$=>{if($ev$$&&$ev$$.type)global.globalEvents.on($ev$$.type+"_"+$obj$$._id+"_"+($ev$$.type=="schedule"?$event$$._id:$ev$$.exfields[$ev$$.type]),function($obj_ev$$){$event$$.children&&$event$$.children.forEach($p$$=>{$p$$.children&&$p$$.children.forEach($step$$=>{if($step$$.action_model&&$step$$.action_func&&
fs.existsSync(global.rootDir+"/actions/"+$step$$.action_model+".js")){let $modelAction$$=require("../actions/"+$step$$.action_model);if($modelAction$$.actions&&$modelAction$$.actions[$step$$.action_func])$modelAction$$.actions[$step$$.action_func]($obj$$,$obj_ev$$,$step$$,()=>{})}})})});$callback$$()}).catch($e$$=>{Logger.error($e$$)})},()=>{$next$$()})};module.exports=model;