flexbiz-server
Version:
Flexible Server
7 lines (6 loc) • 2.45 kB
JavaScript
'use strict';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&&0<$obj$$.children.length&&$obj$$.children.forEach($c$$=>{"waitevent"==$c$$.step_style&&$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().exec(($e$$,$ev$$)=>{$ev$$&&$ev$$.type&&global.globalEvents.removeAllListeners($ev$$.type+"_"+$obj$$._id+"_"+("schedule"==$ev$$.type?$event$$._id:$ev$$.exfields[$ev$$.type]));$callback$$()})},()=>{$next$$()})};
model.listenerEvents=($obj$$,$next$$)=>{let $events$$=model.getEvents($obj$$.steps);async.mapSeries($events$$,($event$$,$callback$$)=>{waitevent.findOne({_id:$event$$.model_id}).lean().exec(($e$$,$ev$$)=>{if($ev$$&&$ev$$.type)global.globalEvents.on($ev$$.type+"_"+$obj$$._id+"_"+("schedule"==$ev$$.type?$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$$()})},()=>{$next$$()})};module.exports=model;