flexbiz-server 12.0.9 → 12.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flexbiz-server",
3
3
  "main": "./server/app.js",
4
4
  "description": "Flexible Server",
5
- "version": "12.0.9",
5
+ "version": "12.0.10",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -58,30 +58,30 @@ $body$jscomp$2_query$$[$k$$];else{let $item$$={};"number"==$ctrl$$.model.schema.
58
58
  $or$$.length&&("$and"===$body$jscomp$2_query$$.cType?$condition$jscomp$1$$.$and=$or$$:$condition$jscomp$1$$.$or=$or$$);$shareRoute$$||0==$ctrl$$.require_id_app||($condition$jscomp$1$$.id_app=$req$$.user.current_id_app);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition$jscomp$1$$,function($error$$,$condition$jscomp$0$$){setImmediate(()=>{if($error$$)return $res$$.status(400).send({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$0$$,
59
59
  function($e$$,$condition$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$next$$()}):($req$$.condition=$condition$jscomp$0$$,$next$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$1$$,function($e$$,$condition$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});
60
60
  $req$$.condition=$condition$$;$next$$()}):($req$$.condition=$condition$jscomp$1$$,$next$$())})},function($req$$,$res$$,$next$$){if($shareRoute$$)return $next$$();permission.getRightByItem($req$$.user.current_id_app,$model$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $next$$($e$jscomp$0$$);if($admin$$)return $next$$();$req$$.admin=$admin$$;let $condition$$=$req$$.condition;$condition$$||($condition$$={});$condition$$.$and||($condition$$.$and=
61
- []);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,$_condition$$,($e$$,$_condition$$)=>{setImmediate(()=>{if($e$$)return $next$$($e$$);_.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$);$req$$.condition=$condition$$;$next$$()})});else _.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$),$req$$.condition=$condition$$,$next$$()})},$ctrl$$.name)},function($req$$,$res$$,$next$$){if($shareRoute$$)return $next$$();
62
- setImmediate(()=>{$ctrl$$.options.assignWiths?async.map($ctrl$$.options.assignWiths,($col$$,$callback$$)=>{setImmediate(()=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($req$$.user.current_id_app,$m$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);if($admin$$)return $callback$$();$_condition$$.id_app=$req$$.user.current_id_app;$m$$.find($_condition$$).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>
63
- {if($e$$)return $callback$$($e$$);let $dsdt$$=underscore.pluck($rs$$,$col$$.ref_field);$dsdt$$.push("");$dsdt$$.push(null);$req$$.condition[$col$$.ref_field]={$in:$dsdt$$};$callback$$()})})})},$ctrl$$.name)})},$e$$=>{setImmediate(()=>{if($e$$)return $next$$($e$$);$next$$()})}):$next$$()})},function($req$$,$res$$,$next$$){if($shareRoute$$)return $next$$();setImmediate(()=>{if($req$$.admin||"dmdt"===$ctrl$$.name)return $next$$();if(underscore.has($model$$.schema.paths,"ma_dt")||underscore.has($model$$.schema.paths,
64
- "id_dt")){let $dmdt$$=mongoose.models.dmdt;permission.getRightDataView($req$$.user.current_id_app,$dmdt$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $next$$($e$jscomp$0$$);if($admin$$)return $next$$();$_condition$$.id_app=$req$$.user.current_id_app;$req$$.condition.ma_dt&&($_condition$$.ma_dt=$req$$.condition.ma_dt);$dmdt$$.find($_condition$$,{ma_dt:1,_id:1}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return $next$$($e$$);if(underscore.has($model$$.schema.paths,
65
- "ma_dt")){var $dsdt$jscomp$1_dsdt$$=underscore.pluck($rs$$,"ma_dt");$dsdt$jscomp$1_dsdt$$.push("");$dsdt$jscomp$1_dsdt$$.push(null);$dsdt$jscomp$1_dsdt$$.push(void 0);$req$$.condition.ma_dt={$in:$dsdt$jscomp$1_dsdt$$}}else $dsdt$jscomp$1_dsdt$$=underscore.pluck($rs$$,"_id"),$dsdt$jscomp$1_dsdt$$.push(""),$dsdt$jscomp$1_dsdt$$.push(null),$dsdt$jscomp$1_dsdt$$.push(void 0),$req$$.condition.id_dt={$in:$dsdt$jscomp$1_dsdt$$};$next$$()})})})})}else $next$$()})},function($req$$,$res$$,$next$$){setImmediate(()=>
66
- {if($shareRoute$$||$req$$.admin||"dmkho"===$ctrl$$.name)return $next$$();if(underscore.has($model$$.schema.paths,"ma_kho")||underscore.has($model$$.schema.paths,"ma_kho_x")||underscore.has($model$$.schema.paths,"ma_kho_n")){let $dmkho$$=mongoose.models.dmkho;permission.getRightDataView($req$$.user.current_id_app,$dmkho$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $next$$($e$jscomp$0$$);if($admin$$)return $next$$();$_condition$$.id_app=
67
- $req$$.user.current_id_app;$req$$.condition.ma_kho&&($_condition$$.ma_kho=$req$$.condition.ma_kho);$dmkho$$.find($_condition$$,{ma_kho:1}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return $next$$($e$$);let $dskho$$=underscore.pluck($rs$$,"ma_kho");$dskho$$.push("");$dskho$$.push(null);$dskho$$.push(void 0);if(underscore.has($model$$.schema.paths,"ma_kho"))return $req$$.condition.ma_kho={$in:$dskho$$},$next$$();if("pxc"===$ctrl$$.name&&underscore.has($model$$.schema.paths,"ma_kho_x"))return $req$$.condition.ma_kho_x=
68
- {$in:$dskho$$},$next$$();if("pnc"===$ctrl$$.name&&underscore.has($model$$.schema.paths,"ma_kho_n"))return $req$$.condition.ma_kho_n={$in:$dskho$$},$next$$();$next$$()})})})})}else $next$$()})},function($req$$,$res$$,$next$$){setImmediate(()=>{if($shareRoute$$)return $next$$();permission.hasRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.module,"view",function($error$$,$permission$$){setImmediate(()=>{if($ctrl$$.options.onQuery)$req$$.permission=$permission$$,$ctrl$$.options.onQuery($req$$,
69
- $e$$=>{if($e$$)return $next$$($e$$);if(!$req$$.permission)return $res$$.send([]);$next$$()});else{if(!$permission$$)return $res$$.send([]);$next$$()}})},{notNeedRight:$ctrl$$.options.notNeedRight})})},async function($req$$,$res$$,$next$$){setImmediate(async()=>{let $condition$$=$req$$.condition;$condition$$||($condition$$={});if($shareRoute$$){$condition$$.shared=!0;var $id_sellers_query$$=(await app.find({sale_online:!0},{_id:1}).lean()).map($a$$=>$a$$._id);$condition$$.$and||($condition$$.$and=
70
- []);$condition$$.$and.push({id_app:{$in:$id_sellers_query$$}});$condition$$.id_app&&$condition$$.$and.push({id_app:$condition$$.id_app})}else underscore.has($model$$.schema.paths,"id_app")&&!1!==$ctrl$$.require_id_app&&($condition$$.id_app=$req$$.user.current_id_app);underscore.extend($condition$$,$ctrl$$.keyValues);$condition$$.$and&&0===$condition$$.$and.length&&delete $condition$$.$and;$condition$$.$or&&0===$condition$$.$or.length&&delete $condition$$.$or;$condition$$.$nor&&0===$condition$$.$nor.length&&
71
- delete $condition$$.$nor;$id_sellers_query$$=null;if($req$$.query.count)$condition$$.$where?(console.log("phai loai bo $where trong condition"),$id_sellers_query$$=$model$$.count($condition$$,function($e$$,$data$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send({rows_number:$data$$})})):$id_sellers_query$$=$model$$.countDocuments($condition$$,function($e$$,$data$$){if($e$$)return console.error($e$$),$e$$.error?
72
- $res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send({rows_number:$data$$})});else{let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}var $fields$$=$req$$.query.fields;let $gfields$$={};$fields$$&&(underscore.isArray($fields$$)?$fields$$.forEach($f$$=>{"_id"!==$f$$&&($gfields$$[$f$$]=1)}):underscore.isObject($fields$$)?$gfields$$={...$gfields$$,
73
- ...$fields$$}:$fields$$.split(",").filter($f$$=>$f$$&&0>$field_not_right$$.indexOf($f$$)).forEach($f$$=>{"_id"!==$f$$&&($gfields$$[$f$$]=1)}));$field_not_right$$.forEach($f$$=>{$gfields$$[$f$$]=0});!$fields$$&&(($fields$$=$req$$.query.notfields)&&(underscore.isArray($fields$$)?$fields$$.forEach($f$$=>{$f$$&&"_id"!==$f$$&&($gfields$$[$f$$]=0)}):underscore.isObject($fields$$)?$gfields$$={...$gfields$$,...$fields$$}:$fields$$.split(",").forEach($f$$=>{$f$$&&"_id"!==$f$$&&($gfields$$[$f$$]=0)})),$shareRoute$$||
74
- "public"===$req$$.user.email)&&($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0);$condition$$.$text&&($gfields$$||($gfields$$={}),$gfields$$.textScore={$meta:"textScore"});if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate)try{$id_sellers_query$$=$model$$.aggregate([{$match:$condition$$}]);$req$$.query.group&&($group_page$$=JSON.parse($req$$.query.group),$id_sellers_query$$.group($group_page$$));if($req$$.query.match){let $match$$=JSON.parse($req$$.query.match);
75
- $id_sellers_query$$.match($match$$)}if($req$$.query.project)$limit_project$$=JSON.parse($req$$.query.project),$id_sellers_query$$.project($limit_project$$);else if($gfields$$&&0<Object.keys($gfields$$).length)$limit_project$$=$gfields$$;else if($limit_project$$={_id:1},$group_page$$)for(let $key$$ in $group_page$$)$limit_project$$[$key$$]=1;$id_sellers_query$$.project($limit_project$$);if($req$$.query.aggregate){let $aggregate$$=JSON.parse($req$$.query.aggregate);$id_sellers_query$$.append($aggregate$$)}}catch($e$$){return $res$$.status(400).send({error:$e$$.message||
76
- $e$$.error||$e$$})}else console.log("search data",$ctrl$$.name,"shared",$shareRoute$$,$condition$$),$id_sellers_query$$=$model$$.find($condition$$,$gfields$$);!$sort$$&&$gfields$$.textScore?$sort$$={textScore:{$meta:"textScore"}}:$sort$$&&($sort$$._id=1);$sort$$&&$id_sellers_query$$.sort($sort$$);var $group_page$$=$req$$.query.page,$limit_project$$=$req$$.query.limit;$limit_project$$&&($limit_project$$=Number($limit_project$$));$limit_project$$||($limit_project$$=!1!==$ctrl$$.require_id_app&&"right"!==
77
- $ctrl$$.name?20:1E5);$limit_project$$&&500<$limit_project$$&&"xlsx"!==$req$$.query.type_data&&!$req$$.query.print&&!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name&&($limit_project$$=500);$group_page$$?$id_sellers_query$$.skip((Number($group_page$$)-1)*$limit_project$$).limit($limit_project$$):$id_sellers_query$$.limit($limit_project$$);$id_sellers_query$$.lean&&($id_sellers_query$$=$id_sellers_query$$.lean());$id_sellers_query$$.exec(function($e$jscomp$0$$,$obj4view$$){if($e$jscomp$0$$)return console.error($e$jscomp$0$$,
78
- $condition$$),$res$$.status(400).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});$obj4view$$||($obj4view$$=[]);async.parallel({found:function($callback$$){$ctrl$$.found?$ctrl$$.found($req$$.user,$condition$$,$obj4view$$,function($error$$,$items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,$obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>{$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});
79
- $callback$$(null)}},function($error$jscomp$0$$,$rs$jscomp$0$$){setImmediate(()=>{if($error$jscomp$0$$)return $next$$($error$jscomp$0$$);$obj4view$$=$rs$jscomp$0$$.found;async.parallel({e_view:function($callback$$){$ctrl$$.onView($req$$.user,$obj4view$$,($error$$,$viewValue$$)=>{setImmediate(()=>{if($error$$)return console.error("Erron on view:",$error$$),$callback$$($error$$);$callback$$(null,$viewValue$$)})},{req:$req$$,shareRoute:$shareRoute$$})}},async function($app$jscomp$1_dir_root_template_e$$,
80
- $_groupBy_func_string_rs$$){if($error$jscomp$0$$)return $next$$($error$jscomp$0$$);if($req$$.query.type_data&&"xlsx"==$req$$.query.type_data){$app$jscomp$1_dir_root_template_e$$=(configs.paths||{}).templates;let $template_id$$,$excelTemplate$$;if($template_id$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($template_id$$))return $res$$.status(400).send({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});$excelTemplate$$=await global.getModel("exportexceltemplate").findById($template_id$$);
81
- if(!$excelTemplate$$||!$excelTemplate$$.file)return $res$$.status(400).send({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});var $_rs_msg_templatePath$$=$app$jscomp$1_dir_root_template_e$$?`${path.dirname($app$jscomp$1_dir_root_template_e$$)}${$excelTemplate$$.file}`:`${path.dirname(__dirname)}${$excelTemplate$$.file}`}else $app$jscomp$1_dir_root_template_e$$&&($_rs_msg_templatePath$$=`${$app$jscomp$1_dir_root_template_e$$}/excels/lists/${$ctrl$$.name}.xlsx`),$_rs_msg_templatePath$$&&fs.existsSync($_rs_msg_templatePath$$)||
82
- ($_rs_msg_templatePath$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($_rs_msg_templatePath$$))return $_rs_msg_templatePath$$="File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$_rs_msg_templatePath$$+"'",$res$$.status(400).send({error:$_rs_msg_templatePath$$});$app$jscomp$1_dir_root_template_e$$={};$_groupBy_func_string_rs$$.e_view.forEach($item$$=>{for(let $_key$$ in $item$$){let $_v$$=$item$$[$_key$$];if(underscore.isObject($_v$$))for(let $__key$$ in $_v$$){let $__v$$=
83
- $_v$$[$__key$$];if(!underscore.isFunction($__v$$))if(0<=$__key$$.indexOf("ngay")||0<=$__key$$.indexOf("date"))try{$item$$[`${$_key$$}_${$__key$$}`]=new Date($__v$$)}catch($e$$){$item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else $item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else if($_v$$&&0<=$_key$$.indexOf("ngay")||0<=$_key$$.indexOf("date"))try{let $d$$=moment($_v$$,"YYYY-MM-DD");$d$$.isValid()&&($item$$[`${$_key$$}`]=$d$$.toDate(),$item$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){console.error("Error convert to date",
84
- $_v$$,$e$$)}}});$app$jscomp$1_dir_root_template_e$$.detail=$_groupBy_func_string_rs$$.e_view;if($excelTemplate$$&&$excelTemplate$$.handle_data){$_groupBy_func_string_rs$$=`return (async ()=>{
61
+ []);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,$_condition$$,($e$$,$_condition$$)=>{setImmediate(()=>{if($e$$)return $next$$($e$$);_.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$);$req$$.condition=$condition$$;$next$$()})});else _.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$),$req$$.condition=$condition$$,$next$$()})},$ctrl$$.name,{notNeedRight:$ctrl$$.options.notNeedRight})},
62
+ function($req$$,$res$$,$next$$){if($shareRoute$$)return $next$$();setImmediate(()=>{$ctrl$$.options.assignWiths?async.map($ctrl$$.options.assignWiths,($col$$,$callback$$)=>{setImmediate(()=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($req$$.user.current_id_app,$m$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);if($admin$$)return $callback$$();$_condition$$.id_app=$req$$.user.current_id_app;
63
+ $m$$.find($_condition$$).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return $callback$$($e$$);let $dsdt$$=underscore.pluck($rs$$,$col$$.ref_field);$dsdt$$.push("");$dsdt$$.push(null);$req$$.condition[$col$$.ref_field]={$in:$dsdt$$};$callback$$()})})})},$ctrl$$.name,{notNeedRight:$ctrl$$.options.notNeedRight})})},$e$$=>{setImmediate(()=>{if($e$$)return $next$$($e$$);$next$$()})}):$next$$()})},function($req$$,$res$$,$next$$){if($shareRoute$$)return $next$$();setImmediate(()=>{if($req$$.admin||
64
+ "dmdt"===$ctrl$$.name)return $next$$();if(underscore.has($model$$.schema.paths,"ma_dt")||underscore.has($model$$.schema.paths,"id_dt")){let $dmdt$$=mongoose.models.dmdt;permission.getRightDataView($req$$.user.current_id_app,$dmdt$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $next$$($e$jscomp$0$$);if($admin$$)return $next$$();$_condition$$.id_app=$req$$.user.current_id_app;$req$$.condition.ma_dt&&($_condition$$.ma_dt=$req$$.condition.ma_dt);
65
+ $dmdt$$.find($_condition$$,{ma_dt:1,_id:1}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return $next$$($e$$);if(underscore.has($model$$.schema.paths,"ma_dt")){var $dsdt$jscomp$1_dsdt$$=underscore.pluck($rs$$,"ma_dt");$dsdt$jscomp$1_dsdt$$.push("");$dsdt$jscomp$1_dsdt$$.push(null);$dsdt$jscomp$1_dsdt$$.push(void 0);$req$$.condition.ma_dt={$in:$dsdt$jscomp$1_dsdt$$}}else $dsdt$jscomp$1_dsdt$$=underscore.pluck($rs$$,"_id"),$dsdt$jscomp$1_dsdt$$.push(""),$dsdt$jscomp$1_dsdt$$.push(null),$dsdt$jscomp$1_dsdt$$.push(void 0),
66
+ $req$$.condition.id_dt={$in:$dsdt$jscomp$1_dsdt$$};$next$$()})})})})}else $next$$()})},function($req$$,$res$$,$next$$){setImmediate(()=>{if($shareRoute$$||$req$$.admin||"dmkho"===$ctrl$$.name)return $next$$();if(underscore.has($model$$.schema.paths,"ma_kho")||underscore.has($model$$.schema.paths,"ma_kho_x")||underscore.has($model$$.schema.paths,"ma_kho_n")){let $dmkho$$=mongoose.models.dmkho;permission.getRightDataView($req$$.user.current_id_app,$dmkho$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,
67
+ $admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $next$$($e$jscomp$0$$);if($admin$$)return $next$$();$_condition$$.id_app=$req$$.user.current_id_app;$req$$.condition.ma_kho&&($_condition$$.ma_kho=$req$$.condition.ma_kho);$dmkho$$.find($_condition$$,{ma_kho:1}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return $next$$($e$$);let $dskho$$=underscore.pluck($rs$$,"ma_kho");$dskho$$.push("");$dskho$$.push(null);$dskho$$.push(void 0);if(underscore.has($model$$.schema.paths,"ma_kho"))return $req$$.condition.ma_kho=
68
+ {$in:$dskho$$},$next$$();if("pxc"===$ctrl$$.name&&underscore.has($model$$.schema.paths,"ma_kho_x"))return $req$$.condition.ma_kho_x={$in:$dskho$$},$next$$();if("pnc"===$ctrl$$.name&&underscore.has($model$$.schema.paths,"ma_kho_n"))return $req$$.condition.ma_kho_n={$in:$dskho$$},$next$$();$next$$()})})})})}else $next$$()})},function($req$$,$res$$,$next$$){setImmediate(()=>{if($shareRoute$$)return $next$$();permission.hasRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.module,"view",function($error$$,
69
+ $permission$$){setImmediate(()=>{if($ctrl$$.options.onQuery)$req$$.permission=$permission$$,$ctrl$$.options.onQuery($req$$,$e$$=>{if($e$$)return $next$$($e$$);if(!$req$$.permission)return $res$$.send([]);$next$$()});else{if(!$permission$$)return $res$$.send([]);$next$$()}})},{notNeedRight:$ctrl$$.options.notNeedRight})})},async function($req$$,$res$$,$next$$){setImmediate(async()=>{let $condition$$=$req$$.condition;$condition$$||($condition$$={});if($shareRoute$$){$condition$$.shared=!0;var $id_sellers_query$$=
70
+ (await app.find({sale_online:!0},{_id:1}).lean()).map($a$$=>$a$$._id);$condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push({id_app:{$in:$id_sellers_query$$}});$condition$$.id_app&&$condition$$.$and.push({id_app:$condition$$.id_app})}else underscore.has($model$$.schema.paths,"id_app")&&!1!==$ctrl$$.require_id_app&&($condition$$.id_app=$req$$.user.current_id_app);underscore.extend($condition$$,$ctrl$$.keyValues);$condition$$.$and&&0===$condition$$.$and.length&&delete $condition$$.$and;$condition$$.$or&&
71
+ 0===$condition$$.$or.length&&delete $condition$$.$or;$condition$$.$nor&&0===$condition$$.$nor.length&&delete $condition$$.$nor;$id_sellers_query$$=null;if($req$$.query.count)$condition$$.$where?(console.log("phai loai bo $where trong condition"),$id_sellers_query$$=$model$$.count($condition$$,function($e$$,$data$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send({rows_number:$data$$})})):$id_sellers_query$$=
72
+ $model$$.countDocuments($condition$$,function($e$$,$data$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send({rows_number:$data$$})});else{let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}var $fields$$=$req$$.query.fields;let $gfields$$={};$fields$$&&(underscore.isArray($fields$$)?$fields$$.forEach($f$$=>
73
+ {"_id"!==$f$$&&($gfields$$[$f$$]=1)}):underscore.isObject($fields$$)?$gfields$$={...$gfields$$,...$fields$$}:$fields$$.split(",").filter($f$$=>$f$$&&0>$field_not_right$$.indexOf($f$$)).forEach($f$$=>{"_id"!==$f$$&&($gfields$$[$f$$]=1)}));$field_not_right$$.forEach($f$$=>{$gfields$$[$f$$]=0});!$fields$$&&(($fields$$=$req$$.query.notfields)&&(underscore.isArray($fields$$)?$fields$$.forEach($f$$=>{$f$$&&"_id"!==$f$$&&($gfields$$[$f$$]=0)}):underscore.isObject($fields$$)?$gfields$$={...$gfields$$,...$fields$$}:
74
+ $fields$$.split(",").forEach($f$$=>{$f$$&&"_id"!==$f$$&&($gfields$$[$f$$]=0)})),$shareRoute$$||"public"===$req$$.user.email)&&($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0);$condition$$.$text&&($gfields$$||($gfields$$={}),$gfields$$.textScore={$meta:"textScore"});if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate)try{$id_sellers_query$$=$model$$.aggregate([{$match:$condition$$}]);$req$$.query.group&&($group_page$$=JSON.parse($req$$.query.group),$id_sellers_query$$.group($group_page$$));
75
+ if($req$$.query.match){let $match$$=JSON.parse($req$$.query.match);$id_sellers_query$$.match($match$$)}if($req$$.query.project)$limit_project$$=JSON.parse($req$$.query.project),$id_sellers_query$$.project($limit_project$$);else if($gfields$$&&0<Object.keys($gfields$$).length)$limit_project$$=$gfields$$;else if($limit_project$$={_id:1},$group_page$$)for(let $key$$ in $group_page$$)$limit_project$$[$key$$]=1;$id_sellers_query$$.project($limit_project$$);if($req$$.query.aggregate){let $aggregate$$=JSON.parse($req$$.query.aggregate);
76
+ $id_sellers_query$$.append($aggregate$$)}}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}else console.log("search data",$ctrl$$.name,"shared",$shareRoute$$,JSON.stringify($condition$$)),$id_sellers_query$$=$model$$.find($condition$$,$gfields$$);!$sort$$&&$gfields$$.textScore?$sort$$={textScore:{$meta:"textScore"}}:$sort$$&&($sort$$._id=1);$sort$$&&$id_sellers_query$$.sort($sort$$);var $group_page$$=$req$$.query.page,$limit_project$$=$req$$.query.limit;$limit_project$$&&
77
+ ($limit_project$$=Number($limit_project$$));$limit_project$$||($limit_project$$=!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name?20:1E5);$limit_project$$&&500<$limit_project$$&&"xlsx"!==$req$$.query.type_data&&!$req$$.query.print&&!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name&&($limit_project$$=500);$group_page$$?$id_sellers_query$$.skip((Number($group_page$$)-1)*$limit_project$$).limit($limit_project$$):$id_sellers_query$$.limit($limit_project$$);$id_sellers_query$$.lean&&($id_sellers_query$$=
78
+ $id_sellers_query$$.lean());$id_sellers_query$$.exec(function($e$jscomp$0$$,$obj4view$$){if($e$jscomp$0$$)return console.error($e$jscomp$0$$,$condition$$),$res$$.status(400).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});$obj4view$$||($obj4view$$=[]);async.parallel({found:function($callback$$){$ctrl$$.found?$ctrl$$.found($req$$.user,$condition$$,$obj4view$$,function($error$$,$items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,$obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>
79
+ {$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});$callback$$(null)}},function($error$jscomp$0$$,$rs$jscomp$0$$){setImmediate(()=>{if($error$jscomp$0$$)return $next$$($error$jscomp$0$$);$obj4view$$=$rs$jscomp$0$$.found;async.parallel({e_view:function($callback$$){$ctrl$$.onView($req$$.user,$obj4view$$,($error$$,$viewValue$$)=>{setImmediate(()=>{if($error$$)return console.error("Erron on view:",$error$$),$callback$$($error$$);$callback$$(null,$viewValue$$)})},{req:$req$$,
80
+ shareRoute:$shareRoute$$})}},async function($app$jscomp$1_dir_root_template_e$$,$_groupBy_func_string_rs$$){if($error$jscomp$0$$)return $next$$($error$jscomp$0$$);if($req$$.query.type_data&&"xlsx"==$req$$.query.type_data){$app$jscomp$1_dir_root_template_e$$=(configs.paths||{}).templates;let $template_id$$,$excelTemplate$$;if($template_id$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($template_id$$))return $res$$.status(400).send({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});
81
+ $excelTemplate$$=await global.getModel("exportexceltemplate").findById($template_id$$);if(!$excelTemplate$$||!$excelTemplate$$.file)return $res$$.status(400).send({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});var $_rs_msg_templatePath$$=$app$jscomp$1_dir_root_template_e$$?`${path.dirname($app$jscomp$1_dir_root_template_e$$)}${$excelTemplate$$.file}`:`${path.dirname(__dirname)}${$excelTemplate$$.file}`}else $app$jscomp$1_dir_root_template_e$$&&($_rs_msg_templatePath$$=`${$app$jscomp$1_dir_root_template_e$$}/excels/lists/${$ctrl$$.name}.xlsx`),
82
+ $_rs_msg_templatePath$$&&fs.existsSync($_rs_msg_templatePath$$)||($_rs_msg_templatePath$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($_rs_msg_templatePath$$))return $_rs_msg_templatePath$$="File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$_rs_msg_templatePath$$+"'",$res$$.status(400).send({error:$_rs_msg_templatePath$$});$app$jscomp$1_dir_root_template_e$$={};$_groupBy_func_string_rs$$.e_view.forEach($item$$=>{for(let $_key$$ in $item$$){let $_v$$=
83
+ $item$$[$_key$$];if(underscore.isObject($_v$$))for(let $__key$$ in $_v$$){let $__v$$=$_v$$[$__key$$];if(!underscore.isFunction($__v$$))if(0<=$__key$$.indexOf("ngay")||0<=$__key$$.indexOf("date"))try{$item$$[`${$_key$$}_${$__key$$}`]=new Date($__v$$)}catch($e$$){$item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else $item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else if($_v$$&&0<=$_key$$.indexOf("ngay")||0<=$_key$$.indexOf("date"))try{let $d$$=moment($_v$$,"YYYY-MM-DD");$d$$.isValid()&&($item$$[`${$_key$$}`]=$d$$.toDate(),
84
+ $item$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){console.error("Error convert to date",$_v$$,$e$$)}}});$app$jscomp$1_dir_root_template_e$$.detail=$_groupBy_func_string_rs$$.e_view;if($excelTemplate$$&&$excelTemplate$$.handle_data){$_groupBy_func_string_rs$$=`return (async ()=>{
85
85
  ${$excelTemplate$$.handle_data}
86
86
  })`;try{$app$jscomp$1_dir_root_template_e$$=await evalute($_groupBy_func_string_rs$$,{data:$app$jscomp$1_dir_root_template_e$$,moment,numeral,_,utils})()}catch($e$$){return console.error($e$$,$_groupBy_func_string_rs$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}}excelReport($_rs_msg_templatePath$$,$app$jscomp$1_dir_root_template_e$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||
87
87
  $e$$});$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx");$res$$.end($result$$,"binary")})})}else $req$$.query.print&&$req$$.query.id_rpt&&global.mongoose.Types.ObjectId.isValid($req$$.query.id_rpt)?htmlReport($req$$.query.id_rpt,{...$req$$.user.current_app_info,...$req$$.query,company:{...$req$$.user.current_app_info},detail:$_groupBy_func_string_rs$$.e_view,details:$_groupBy_func_string_rs$$.e_view}).then($rs$$=>
@@ -259,11 +259,12 @@ $msgError$$=$r$$.error?(new Function("obj","return `"+$r$$.error.replace("{{VALU
259
259
  controller.prototype.delete=function(){let $model$$=this.model,$ctrl$$=this,$module$$=this.module,$codeSync$$=this.codeSync,$keySync$$=this.keySync;this.router.route(this.route_name+"/:id").delete(function($req$$,$res$$,$next$$){if(!global.mongoose.Types.ObjectId.isValid($req$$.params.id))return $res$$.status(400).send({error:ERR_NOT_FOUND,code:ERR_NOT_FOUND_CODE});$model$$.findOne({_id:$req$$.params.id}).lean().exec(async function($e$jscomp$169_user$$,$obj$$){if($e$jscomp$169_user$$)return console.error($e$jscomp$169_user$$),
260
260
  $e$jscomp$169_user$$.error?$res$$.status(400).send($e$jscomp$169_user$$):$res$$.status(400).send({error:$e$jscomp$169_user$$.message||$e$jscomp$169_user$$.error||$e$jscomp$169_user$$});if(!$obj$$)return $res$$.status(404).send({error:ERR_NOT_FOUND,code:ERR_NOT_FOUND_CODE});$e$jscomp$169_user$$=$req$$.user;if(0>global.configs.admins.indexOf($e$jscomp$169_user$$.email)){let $requireOtp$$=$ctrl$$.options.requireOtp;$requireOtp$$&&_.isFunction($requireOtp$$)&&($requireOtp$$=$requireOtp$$($obj$$,{action:"delete",
261
261
  _id:$req$$.params.id,user:$e$jscomp$169_user$$}));if($requireOtp$$)try{await permission.verifyOTP($e$jscomp$169_user$$.email,$req$$.query["otp-id"],$req$$.query["otp-code"])}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$,code:ERR_VERIFY_OTP})}}setImmediate(()=>{permission.hasRight($obj$$.id_app,$req$$.user.email,$module$$,"delete",function($error$jscomp$0$$,$hr$$){if($hr$$)checkReference($model$$,$obj$$,function($error$$){if($error$$)return $res$$.status(400).send({error:ERR_ARISE+
262
- ($error$$.error||$error$$.message||$error$$),code:ERR_ARISE_CODE});$req$$.obj=$obj$$;$next$$()});else return $res$$.status(403).send({error:$error$jscomp$0$$||ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE})},{obj:$obj$$,notNeedRight:$ctrl$$.options.notNeedRight})})})},function($req$$,$res$$,$next$$){setImmediate(()=>{let $obj$jscomp$0$$=$req$$.obj;$ctrl$$.deleting?$ctrl$$.deleting($req$$.user,$obj$jscomp$0$$,function($e$$,$obj$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):
263
- $res$$.status(400).send({error:$e$$.message||$e$$});$req$$.obj=$obj$$;$next$$()},{req:$req$$}):($req$$.obj=$obj$jscomp$0$$,$next$$())})},function($req$$,$res$$){setImmediate(()=>{let $obj$jscomp$0$$=$req$$.obj;$ctrl$$.emit("deleting",{...$obj$jscomp$0$$});$model$$.deleteOne({_id:$obj$jscomp$0$$._id},function($e$jscomp$1$$){if($e$jscomp$1$$)return console.error($e$jscomp$1$$),$e$jscomp$1$$.error?$res$$.status(400).send($e$jscomp$1$$):$res$$.status(400).send({error:$e$jscomp$1$$.message||$e$jscomp$1$$});
264
- setImmediate(()=>{$ctrl$$.deleteData({...$obj$jscomp$0$$});log.create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"DELETE",data:{id:$obj$jscomp$0$$._id,data:$obj$jscomp$0$$}},$req$$.user.email,$req$$.header("user-agent"),$req$$);link.deleteMany({$or:[{id_a:$obj$jscomp$0$$._id},{id_b:$obj$jscomp$0$$._id}]},function($e$$){$e$$&&console.error("Can't delete links\n"+$e$$)})});setImmediate(()=>{$ctrl$$.emit("deleted",$obj$jscomp$0$$);runWebhooks($ctrl$$,$obj$jscomp$0$$,"DELETE")});pushNotification($ctrl$$,
265
- $obj$jscomp$0$$,"delete",null,null,{exclude_token:$req$$.query.access_token});setImmediate(()=>{deletePost($req$$.user,$obj$jscomp$0$$,async $e$jscomp$0$$=>{if($e$jscomp$0$$)return console.error($e$jscomp$0$$),$e$jscomp$0$$.error?$res$$.status(400).send($e$jscomp$0$$):$res$$.status(400).send({error:$e$jscomp$0$$.message||$e$jscomp$0$$});if($ctrl$$.dynamicDeletePost)try{await $ctrl$$.dynamicDeletePost($obj$jscomp$0$$)}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}setImmediate(()=>
266
- {$ctrl$$.deleted?$ctrl$$.deleted($req$$.user,$obj$jscomp$0$$,function($e$$,$obj$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($obj$$)})}):$res$$.send($obj$jscomp$0$$)})},$codeSync$$,$keySync$$)})})})})};
262
+ ($error$$.error||$error$$.message||$error$$),code:ERR_ARISE_CODE});$req$$.obj=$obj$$;$next$$()});else return $res$$.status(403).send({error:$error$jscomp$0$$||ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE})},{obj:$obj$$,notNeedRight:$ctrl$$.options.notNeedRight})})})},function($req$$,$res$$,$next$$){setImmediate(()=>{let $obj$jscomp$1$$=$req$$.obj;$ctrl$$.deleting?$ctrl$$.deleting($req$$.user,$obj$jscomp$1$$,function($e$$,$obj$jscomp$0$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):
263
+ $res$$.status(400).send({error:$e$$.message||$e$$});$ctrl$$.dynamicDeleting?$ctrl$$.dynamicDeleting($req$$.user,$obj$jscomp$0$$,function($error$$,$obj$$){if($error$$)return $next$$($error$$);$req$$.obj=$obj$$;$next$$()}):($req$$.obj=$obj$jscomp$0$$,$next$$())},{req:$req$$}):$ctrl$$.dynamicDeleting?$ctrl$$.dynamicDeleting($req$$.user,$obj$jscomp$1$$,function($error$$,$obj$$){if($error$$)return $next$$($error$$);$req$$.obj=$obj$$;$next$$()}):($req$$.obj=$obj$jscomp$1$$,$next$$())})},function($req$$,
264
+ $res$$){setImmediate(()=>{let $obj$jscomp$0$$=$req$$.obj;$ctrl$$.emit("deleting",{...$obj$jscomp$0$$});$model$$.deleteOne({_id:$obj$jscomp$0$$._id},function($e$jscomp$1$$){if($e$jscomp$1$$)return console.error($e$jscomp$1$$),$e$jscomp$1$$.error?$res$$.status(400).send($e$jscomp$1$$):$res$$.status(400).send({error:$e$jscomp$1$$.message||$e$jscomp$1$$});setImmediate(()=>{$ctrl$$.deleteData({...$obj$jscomp$0$$});log.create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"DELETE",data:{id:$obj$jscomp$0$$._id,
265
+ data:$obj$jscomp$0$$}},$req$$.user.email,$req$$.header("user-agent"),$req$$);link.deleteMany({$or:[{id_a:$obj$jscomp$0$$._id},{id_b:$obj$jscomp$0$$._id}]},function($e$$){$e$$&&console.error("Can't delete links\n"+$e$$)})});setImmediate(()=>{$ctrl$$.emit("deleted",$obj$jscomp$0$$);runWebhooks($ctrl$$,$obj$jscomp$0$$,"DELETE")});pushNotification($ctrl$$,$obj$jscomp$0$$,"delete",null,null,{exclude_token:$req$$.query.access_token});setImmediate(()=>{deletePost($req$$.user,$obj$jscomp$0$$,async $e$jscomp$0$$=>
266
+ {if($e$jscomp$0$$)return console.error($e$jscomp$0$$),$e$jscomp$0$$.error?$res$$.status(400).send($e$jscomp$0$$):$res$$.status(400).send({error:$e$jscomp$0$$.message||$e$jscomp$0$$});if($ctrl$$.dynamicDeletePost)try{await $ctrl$$.dynamicDeletePost($obj$jscomp$0$$)}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}setImmediate(()=>{$ctrl$$.deleted?$ctrl$$.deleted($req$$.user,$obj$jscomp$0$$,function($e$$,$obj$$){setImmediate(()=>{if($e$$)return console.error($e$$),
267
+ $e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($obj$$)})}):$res$$.send($obj$jscomp$0$$)})},$codeSync$$,$keySync$$)})})})})};
267
268
  controller.prototype.history=function(){let $name$$=this.name;this.router.route(this.route_name+"/g/history/:id").get(function($actions_req$$,$res$$){let $query$$={id_func:$name$$,id_app:$actions_req$$.user.current_id_app,"data.id":$actions_req$$.params.id};($actions_req$$=$actions_req$$.query.actions)?($actions_req$$=$actions_req$$.split(","),$query$$.action={$in:$actions_req$$,$ne:"GET"}):$query$$.action={$ne:"GET"};log.find($query$$).lean().exec(function($e$$,$rs$$){setImmediate(()=>$e$$?(console.error($e$$),
268
269
  $e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$})):$res$$.send($rs$$))})})};
269
270
  controller.prototype.logs=function(){let $ctrl$$=this,$name$$=this.name;this.router.route(this.route_name+"/g/log/:action").get(function($req$$,$res$$){var $action$jscomp$3_den_ngay$$=$req$$.params.action.toUpperCase();let $query$$={id_func:$name$$,id_app:$req$$.user.current_id_app};"ALL"!==$action$jscomp$3_den_ngay$$&&($query$$.action=$action$jscomp$3_den_ngay$$);if($req$$.query.tu_ngay){var $date_created_tu_ngay$$=moment(new Date($req$$.query.tu_ngay)).startOf("date").toDate();$date_created_tu_ngay$$=
@@ -3,22 +3,22 @@ exports.nguoiPhuTrach=async($group_id_app_p$$,$email$$)=>{if(!$group_id_app_p$$)
3
3
  exports.dsDangPhuTrach=async($id_app$$,$email$$)=>{if(!$id_app$$)return[];$email$$=(await UserGroup.find({phu_trach:$email$$,id_app:$id_app$$})).map($g$$=>$g$$._id.toString());return(await Participant.find({id_app:$id_app$$,group_id:{$in:$email$$}})).map($p$$=>$p$$.email)};
4
4
  exports.isAdmin=function($current_id_app$$,$email$$,$callback$$){if(!$current_id_app$$)return $callback$$(null,!0);App.findOne({_id:$current_id_app$$}).lean().exec(async($error$$,$app$$)=>{if($error$$)return $callback$$($error$$,!1);if(!$app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i",!1);if(global.configs.check_expire_date&&$app$$.expire_date&&(new Date($app$$.expire_date)).getTime()<(new Date).getTime())return $callback$$("C\u00f4ng ty n\u00e0y \u0111\u00e3 h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng",
5
5
  !1);$error$$=await Participant.findOne({id_app:$current_id_app$$,email:$email$$});if(!$error$$)return $callback$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp c\u00f4ng ty n\u00e0y",!1);$callback$$(null,$error$$.admin,$app$$,$error$$)})};
6
- exports.hasRight=async function($current_id_app$$,$email$$,$module$$,$action$$,$callback$jscomp$0$$,$options$$){$options$$||($options$$={});if(!$current_id_app$$||$options$$.notNeedRight)return $callback$jscomp$0$$(null,!0);$options$$.data&&($options$$.data.trang_thai||0==$options$$.data.trang_thai)&&($options$$.data.trang_thai=$options$$.data.trang_thai.toString());$options$$.obj&&($options$$.obj.trang_thai||0==$options$$.obj.trang_thai)&&($options$$.obj.trang_thai=$options$$.obj.trang_thai.toString());
7
- var $data_trang_thai$$=$options$$.data||$options$$.obj||{};const $ma_ct$$=(($options$$.obj||{}).ma_ct||($options$$.data||{}).ma_ct||"").toString().toUpperCase(),$ma_trang_thai$$=($data_trang_thai$$.trang_thai||$data_trang_thai$$.progress||"").toString().toUpperCase();if($ma_ct$$&&$ma_trang_thai$$&&($data_trang_thai$$=await trangthai.findOne({ma_trang_thai:$ma_trang_thai$$,ma_ct:$ma_ct$$}))&&$data_trang_thai$$.not_need_right)return $callback$jscomp$0$$(null,!0);exports.isAdmin($current_id_app$$,$email$$,
8
- async($e_key_right$$,$admin$$,$app$$,$participant$$)=>{if($e_key_right$$)return $callback$jscomp$0$$($e_key_right$$,!1);if($options$$.data&&$options$$.data.id_app){if($options$$.data.id_app!=$current_id_app$$)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);if($options$$.obj&&$options$$.data.id_app!=$options$$.obj.id_app)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",
9
- !1)}if($options$$.obj&&$options$$.obj.id_app&&$options$$.obj.id_app!=$current_id_app$$)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);if($options$$.notNeedRight||!global.modulesInMenu[$module$$]&&("view"===$action$$||"add"===$action$$&&"group"===$module$$.toLowerCase()))return $callback$jscomp$0$$(null,!0,$app$$);if($options$$.obj&&!$admin$$)if(2===$options$$.obj.visible_to){if(!underscore.contains($options$$.obj.visible_to_users,
10
- $email$$)&&$options$$.obj.of_user!==$email$$.toLowerCase()&&$options$$.obj.user_created&&$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase())return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1)}else if(1===$options$$.obj.visible_to&&$options$$.obj.of_user!==$email$$.toLowerCase()&&$options$$.obj.user_created&&$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase()&&await exports.nguoiPhuTrach($options$$.obj.id_app,
11
- $options$$.obj.user_created)!=$email$$.toLowerCase()&&$options$$.obj.phu_trach!=$email$$.toLowerCase()&&0>($options$$.obj.attends||[]).indexOf($email$$))return $callback$jscomp$0$$("Ch\u1ec9 ng\u01b0\u1eddi t\u1ea1o, ph\u1ee5 tr\u00e1ch, h\u1ed7 tr\u1ee3 v\u00e0 admin m\u1edbi c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);$action$$=$action$$.toLowerCase();$e_key_right$$=$email$$;$participant$$&&$participant$$.group_id&&($e_key_right$$=$participant$$.group_id.toLowerCase());
12
- right.findOne({id_app:$current_id_app$$,email:$e_key_right$$,module:$module$$.toLowerCase()},async function($error$jscomp$2_user_phu_trach$$,$_right__right_trang_thai$$){if($error$jscomp$2_user_phu_trach$$)return $callback$jscomp$0$$($error$jscomp$2_user_phu_trach$$,!1);if(!$admin$$){if(!$_right__right_trang_thai$$||!$_right__right_trang_thai$$[$action$$])return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",!1);if($options$$.obj&&
13
- $_right__right_trang_thai$$&&!$_right__right_trang_thai$$.viewOfOther&&$options$$.obj.user_created.toLowerCase()!==$email$$&&(2!==$options$$.obj.visible_to||!underscore.contains($options$$.obj.visible_to_users,$email$$))&&($error$jscomp$2_user_phu_trach$$=await exports.nguoiPhuTrach($options$$.obj.id_app,$options$$.obj.user_created),$options$$.obj.phu_trach!==$email$$&&$error$jscomp$2_user_phu_trach$$!=$email$$&&0>($options$$.obj.attends||[]).indexOf($email$$)))return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",
6
+ exports.hasRight=async function($current_id_app$$,$email$$,$module$$,$action$$,$callback$jscomp$0$$,$options$$={}){if(!$current_id_app$$||$options$$.notNeedRight)return $callback$jscomp$0$$(null,!0);$options$$.data&&($options$$.data.trang_thai||0==$options$$.data.trang_thai)&&($options$$.data.trang_thai=$options$$.data.trang_thai.toString());$options$$.obj&&($options$$.obj.trang_thai||0==$options$$.obj.trang_thai)&&($options$$.obj.trang_thai=$options$$.obj.trang_thai.toString());var $data_trang_thai$$=
7
+ $options$$.data||$options$$.obj||{};const $ma_ct$$=(($options$$.obj||{}).ma_ct||($options$$.data||{}).ma_ct||"").toString().toUpperCase(),$ma_trang_thai$$=($data_trang_thai$$.trang_thai||$data_trang_thai$$.progress||"").toString().toUpperCase();if($ma_ct$$&&$ma_trang_thai$$&&($data_trang_thai$$=await trangthai.findOne({ma_trang_thai:$ma_trang_thai$$,ma_ct:$ma_ct$$}))&&$data_trang_thai$$.not_need_right)return $callback$jscomp$0$$(null,!0);exports.isAdmin($current_id_app$$,$email$$,async($e_key_right$$,
8
+ $admin$$,$app$$,$participant$$)=>{if($e_key_right$$)return $callback$jscomp$0$$($e_key_right$$,!1);if($options$$.data&&$options$$.data.id_app){if($options$$.data.id_app!=$current_id_app$$)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);if($options$$.obj&&$options$$.data.id_app!=$options$$.obj.id_app)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1)}if($options$$.obj&&
9
+ $options$$.obj.id_app&&$options$$.obj.id_app!=$current_id_app$$)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);if($options$$.notNeedRight||!global.modulesInMenu[$module$$]&&("view"===$action$$||"add"===$action$$&&"group"===$module$$.toLowerCase()))return $callback$jscomp$0$$(null,!0,$app$$);if($options$$.obj&&!$admin$$)if(2===$options$$.obj.visible_to){if(!underscore.contains($options$$.obj.visible_to_users,$email$$)&&$options$$.obj.of_user!==
10
+ $email$$.toLowerCase()&&$options$$.obj.user_created&&$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase())return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1)}else if(1===$options$$.obj.visible_to&&$options$$.obj.of_user!==$email$$.toLowerCase()&&$options$$.obj.user_created&&$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase()&&await exports.nguoiPhuTrach($options$$.obj.id_app,$options$$.obj.user_created)!=
11
+ $email$$.toLowerCase()&&$options$$.obj.phu_trach!=$email$$.toLowerCase()&&0>($options$$.obj.attends||[]).indexOf($email$$))return $callback$jscomp$0$$("Ch\u1ec9 ng\u01b0\u1eddi t\u1ea1o, ph\u1ee5 tr\u00e1ch, h\u1ed7 tr\u1ee3 v\u00e0 admin m\u1edbi c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);$action$$=$action$$.toLowerCase();$e_key_right$$=$email$$;$participant$$&&$participant$$.group_id&&($e_key_right$$=$participant$$.group_id.toLowerCase());right.findOne({id_app:$current_id_app$$,
12
+ email:$e_key_right$$,module:$module$$.toLowerCase()},async function($error$jscomp$2_user_phu_trach$$,$_right__right_trang_thai$$){if($error$jscomp$2_user_phu_trach$$)return $callback$jscomp$0$$($error$jscomp$2_user_phu_trach$$,!1);if(!$admin$$){if(!$_right__right_trang_thai$$||!$_right__right_trang_thai$$[$action$$])return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",!1);if($options$$.obj&&$_right__right_trang_thai$$&&!$_right__right_trang_thai$$.viewOfOther&&
13
+ $options$$.obj.user_created.toLowerCase()!==$email$$&&(2!==$options$$.obj.visible_to||!underscore.contains($options$$.obj.visible_to_users,$email$$))&&($error$jscomp$2_user_phu_trach$$=await exports.nguoiPhuTrach($options$$.obj.id_app,$options$$.obj.user_created),$options$$.obj.phu_trach!==$email$$&&$error$jscomp$2_user_phu_trach$$!=$email$$&&0>($options$$.obj.attends||[]).indexOf($email$$)))return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",
14
14
  !1);if($ma_trang_thai$$&&($_right__right_trang_thai$$=$_right__right_trang_thai$$[`${$action$$}_trang_thai`])&&!$_right__right_trang_thai$$[$ma_trang_thai$$]&&void 0!=$_right__right_trang_thai$$[$ma_trang_thai$$])return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y")}$options$$.obj?async.parallel({trangthai:$callback$$=>{$options$$.obj&&("update"===$action$$||"delete"===$action$$)&&$options$$.obj.ma_ct?trangthai.findOne({ma_ct:$options$$.obj.ma_ct.toUpperCase(),
15
15
  ma_trang_thai:$options$$.obj.trang_thai},function($e$$,$trang_thai$$){if($e$$)return $callback$$($e$$);if($trang_thai$$){if("update"===$action$$){if(0==$trang_thai$$.allow_update)return $callback$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y kh\u00f4ng cho ph\u00e9p s\u1eeda");if(1==$trang_thai$$.lock_data)return $callback$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c kho\u00e1")}if("delete"===$action$$&&($trang_thai$$.lock_data||0==$trang_thai$$.allow_delete))return $callback$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y kh\u00f4ng cho ph\u00e9p xo\u00e1")}return $callback$$()}):
16
- $callback$$()}},$e$$=>{$e$$?$callback$jscomp$0$$($e$$,!1):$callback$jscomp$0$$(null,!0,$app$$)}):$callback$jscomp$0$$(null,!0,$app$$)})})};
17
- exports.getRightByItem=function($id_app$$,$model$$,$email$$,$next$$,$module$$){exports.isAdmin($id_app$$,$email$$,async function($e$jscomp$3_key_right$$,$admin$$,$app$$,$participant$$){if($e$jscomp$3_key_right$$)return $next$$($e$jscomp$3_key_right$$);let $condition$$={};$module$$||($module$$=$model$$&&$model$$.collection&&$model$$.collection.name&&1<$model$$.collection.name.length?$model$$.collection.name.substr(0,$model$$.collection.name.length-1).toLowerCase():"");if($admin$$)$next$$(null,$condition$$,
18
- $admin$$);else{const $ds_dang_phu_trach$$=await exports.dsDangPhuTrach($id_app$$,$email$$);$ds_dang_phu_trach$$.push($email$$);let $allUsers$$;$app$$={visible_to:null};let $visible$$=[];underscore.has($model$$.schema.paths,"visible_to")&&($condition$$.$and||($condition$$.$and=[]),$allUsers$$={visible_to:0},$e$jscomp$3_key_right$$={visible_to:2,visible_to_users:$email$$},$admin$$={visible_to:5,visible_to_users:($participant$$||{}).group_id},$visible$$.push($allUsers$$),$visible$$.push($e$jscomp$3_key_right$$),
19
- $visible$$.push($admin$$),$visible$$.push($app$$));$e$jscomp$3_key_right$$=$email$$;$participant$$&&$participant$$.group_id&&($e$jscomp$3_key_right$$=$participant$$.group_id.toLowerCase());right.findOne({id_app:$id_app$$,email:$e$jscomp$3_key_right$$,module:$module$$},function($_right_trang_thai$jscomp$1_error$$,$allow_trang_thai_result$$){if($allow_trang_thai_result$$&&(!1===$allow_trang_thai_result$$.viewOfOther?($visible$$.push({user_created:{$in:$ds_dang_phu_trach$$}}),$allUsers$$&&($allUsers$$.user_created=
20
- {$in:$ds_dang_phu_trach$$})):($ds_dang_phu_trach$$.push(null),$ds_dang_phu_trach$$.push(void 0),$ds_dang_phu_trach$$.push("")),!0===underscore.has($model$$.schema.paths,"trang_thai")&&($_right_trang_thai$jscomp$1_error$$=$allow_trang_thai_result$$.view_trang_thai))){$allow_trang_thai_result$$=[void 0,null,""];for(let $t$$ in $_right_trang_thai$jscomp$1_error$$)$_right_trang_thai$jscomp$1_error$$[$t$$]&&$allow_trang_thai_result$$.push($t$$);$allUsers$$?$allUsers$$.trang_thai={$in:$allow_trang_thai_result$$}:
21
- $condition$$.trang_thai={$in:$allow_trang_thai_result$$}}underscore.has($model$$.schema.paths,"of_user")&&$visible$$.push({of_user:$email$$});underscore.has($model$$.schema.paths,"phu_trach")&&$visible$$.push({phu_trach:{$in:$ds_dang_phu_trach$$}});underscore.has($model$$.schema.paths,"attends")&&$visible$$.push({attends:{$in:$ds_dang_phu_trach$$}});0<$visible$$.length&&($condition$$.$and||($condition$$.$and=[]),$condition$$.$and.push({$or:$visible$$}));$next$$(null,$condition$$,!1)})}})};
16
+ $callback$$()}},$e$$=>{$e$$?$callback$jscomp$0$$($e$$,!1):$callback$jscomp$0$$(null,!0,$app$$)}):$callback$jscomp$0$$(null,!0,$app$$)})},$options$$)};
17
+ exports.getRightByItem=function($id_app$$,$model$$,$email$$,$next$$,$module$$,$options$$={}){exports.isAdmin($id_app$$,$email$$,async function($e$jscomp$3_key_right$$,$admin$$,$app$$,$participant$$){if($e$jscomp$3_key_right$$)return $next$$($e$jscomp$3_key_right$$);let $condition$$={};$module$$||($module$$=$model$$&&$model$$.collection&&$model$$.collection.name&&1<$model$$.collection.name.length?$model$$.collection.name.substr(0,$model$$.collection.name.length-1).toLowerCase():"");if($admin$$||$options$$.notNeedRight)$next$$(null,
18
+ $condition$$,$admin$$);else{const $ds_dang_phu_trach$$=await exports.dsDangPhuTrach($id_app$$,$email$$);$ds_dang_phu_trach$$.push($email$$);let $allUsers$$;$app$$={visible_to:null};let $visible$$=[];underscore.has($model$$.schema.paths,"visible_to")&&($condition$$.$and||($condition$$.$and=[]),$allUsers$$={visible_to:0},$e$jscomp$3_key_right$$={visible_to:2,visible_to_users:$email$$},$admin$$={visible_to:5,visible_to_users:($participant$$||{}).group_id},$visible$$.push($allUsers$$),$visible$$.push($e$jscomp$3_key_right$$),
19
+ $visible$$.push($admin$$),$visible$$.push($app$$));$e$jscomp$3_key_right$$=$email$$;$participant$$&&$participant$$.group_id&&($e$jscomp$3_key_right$$=$participant$$.group_id.toLowerCase());right.findOne({id_app:$id_app$$,email:$e$jscomp$3_key_right$$,module:$module$$},function($_right_trang_thai$jscomp$1_error$$,$_right$$){if($_right$$&&(!1===$_right$$.viewOfOther?($visible$$.push({user_created:{$in:$ds_dang_phu_trach$$}}),$allUsers$$&&($allUsers$$.user_created={$in:$ds_dang_phu_trach$$})):($ds_dang_phu_trach$$.push(null),
20
+ $ds_dang_phu_trach$$.push(void 0),$ds_dang_phu_trach$$.push("")),!0===underscore.has($model$$.schema.paths,"trang_thai")&&($_right_trang_thai$jscomp$1_error$$=$_right$$.view_trang_thai))){$_right$$=[void 0,null,""];for(let $t$$ in $_right_trang_thai$jscomp$1_error$$)$_right_trang_thai$jscomp$1_error$$[$t$$]&&$_right$$.push($t$$);$allUsers$$?$allUsers$$.trang_thai={$in:$_right$$}:$condition$$.trang_thai={$in:$_right$$}}underscore.has($model$$.schema.paths,"of_user")&&$visible$$.push({of_user:$email$$});
21
+ underscore.has($model$$.schema.paths,"phu_trach")&&$visible$$.push({phu_trach:{$in:$ds_dang_phu_trach$$}});underscore.has($model$$.schema.paths,"attends")&&$visible$$.push({attends:{$in:$ds_dang_phu_trach$$}});0<$visible$$.length&&($condition$$.$and||($condition$$.$and=[]),$condition$$.$and.push({$or:$visible$$}));$next$$(null,$condition$$,!1)})}},$options$$)};
22
22
  exports.getRightDataView=function($id_app$$,$model$$,$email$$,$next$$){exports.isAdmin($id_app$$,$email$$,function($condition$jscomp$1_e$$,$admin$$){if($condition$jscomp$1_e$$)return $next$$($condition$jscomp$1_e$$);$condition$jscomp$1_e$$={};if(!$admin$$&&!0===underscore.has($model$$.schema.paths,"dataview_to_users")){$condition$jscomp$1_e$$.$and||($condition$jscomp$1_e$$.$and=[]);let $dataview$$=[{dataview_to:null}];$dataview$$.push({dataview_to:0});$dataview$$.push({dataview_to:1,user_created:$email$$});
23
23
  $dataview$$.push({dataview_to:2,dataview_to_users:$email$$});$condition$jscomp$1_e$$.$and.push({$or:$dataview$$})}$next$$(null,$condition$jscomp$1_e$$,$admin$$)})};
24
24
  exports.getFieldNotRight=async($_fields_id_app$$,$_p_email$$,$ma_ct$$)=>{if(!$_fields_id_app$$)return[];$_p_email$$=await Participant.ofApp($_fields_id_app$$,$_p_email$$);if(0<$_p_email$$.length){$_p_email$$=$_p_email$$[0].group_id;let $field_not_right$$;try{$field_not_right$$=await right.getInfo($_fields_id_app$$,{email:$_p_email$$,module:$ma_ct$$.toLowerCase()},"field_not_right")}catch($e$$){return[]}$_fields_id_app$$=[];for(let $_key$$ in $field_not_right$$)$field_not_right$$[$_key$$]&&$_fields_id_app$$.push($_key$$);
@@ -14,10 +14,10 @@ Array.prototype.joinModel2=function($id_app$$,$model$jscomp$0$$,$joinFields$$,$f
14
14
  $join$$.bkey&&!$item$$[$join$$.akey])return console.log("can't join with this condition",$join$$.akey,$join$$.bkey),$callback$$(null);$query$$[$join$$.bkey]=$item$$[$join$$.akey]}let $_model$$;($_model$$="function"!==typeof $model_origin$$||$model_origin$$.findOne?$model_origin$$:$model_origin$$($item$$))&&$_model$$.schema&&($_model$$.schema.paths.id_app?$query$$.id_app=$item$$.id_app||$query$$.id_app:delete $query$$.id_app);let $b$$=_.findWhere($model$$,$query$$),$d_session$$="";if($query$$._id)$d_session$$=
15
15
  "stp:"+$query$$._id;else{for(let $key$$ in $query$$)"id_app"!==$key$$&&$query$$[$key$$]&&($d_session$$=$d_session$$?$d_session$$+":"+$key$$+":"+$query$$[$key$$]:$key$$+":"+$query$$[$key$$]);$d_session$$=$query$$.id_app?"id_app:"+$query$$.id_app+":"+$d_session$$:($id_app$$||"")+":"+$d_session$$}(new Promise(($resolve$jscomp$0$$,$reject$$)=>{$_model$$&&!$b$$?(new Promise($resolve$$=>{setImmediate(()=>{$options$$.cache&&$d_session$$&&$_model$$.collection&&$_model$$.collection.name&&cachedKeys[$_model$$.collection.name.substring(0,
16
16
  $_model$$.collection.name.length-1)]?global.clientRedis.get($d_session$$,function($err$$,$reply$$){$resolve$$($reply$$)}):$resolve$$()})})).then($rep$$=>{setImmediate(async()=>{if($rep$$)$b$$=JSON.parse($rep$$),$resolve$jscomp$0$$($b$$);else{let $q$$={};for($fields$jscomp$1_key$$ in $query$$)void 0!==$query$$[$fields$jscomp$1_key$$]&&($q$$[$fields$jscomp$1_key$$]=$query$$[$fields$jscomp$1_key$$]);if(0===Object.keys($q$$).length)return $resolve$jscomp$0$$(null);$id_app$$&&($q$$.id_app=$id_app$$);if(""==
17
- $q$$._id||$q$$._id&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return $resolve$jscomp$0$$(null);var $fields$jscomp$1_key$$=$join$$.fields_need_get_data;if(_.isString($_model$$)){if(!mongoose.models[$_model$$])return $reject$$("Collection is not exists");$_model$$=mongoose.models[$_model$$]}try{const $rs$$=await $_model$$.findOne($q$$,$fields$jscomp$1_key$$).lean().exec();$rs$$&&($rs$$._id=$rs$$._id.toString(),$b$$=$rs$$);$resolve$jscomp$0$$($b$$)}catch($e$$){console.error($e$$),$resolve$jscomp$0$$($b$$)}}})}):
18
- $resolve$jscomp$0$$($b$$)})).then(()=>{setImmediate(()=>{$b$$&&($join$$.fields||$join$$.setFields||$join$$.asyncSetFields)?($join$$.fields&&(_.isFunction($join$$.fields)?$join$$.fields($item$$,$b$$):(_.isArray($join$$.fields)||($join$$.fields=[$join$$.fields]),$join$$.fields.forEach(function($map$$){if(_.isObject($map$$)){let $name$$=$map$$.name,$value$$=$map$$.value;if($name$$&&$value$$)$item$$[$name$$]=$b$$[$value$$];else for(let $key$$ in $map$$)$item$$[$key$$]=$b$$[$map$$[$key$$]]}else $item$$[$map$$]=
19
- $b$$[$map$$]}))),$join$$.setFields&&$join$$.setFields($item$$,$b$$),$join$$.asyncSetFields?setImmediate(()=>{$join$$.asyncSetFields($item$$,$b$$,()=>{$callback$$(null)})}):$callback$$(null)):$callback$$(null)})})})},function($error$$){setImmediate(()=>{if($error$$)return $callback$jscomp$0$$($error$$);$callback$jscomp$0$$()})})})},function($error$$){setImmediate(()=>{$error$$&&console.error($error$$);$fn$$($self$$)})})}).catch($error$$=>{console.error($error$$);$fn$$($self$$)})})};
20
- Array.prototype.asyncJoinModel2=function($id_app$$,$model$$,$joinFields$$,$options$$={cache:!0}){let $_this$$=this;return new Promise($resolve$$=>{$_this$$.joinModel2($id_app$$,$model$$,$joinFields$$,$rs$$=>{$resolve$$($rs$$)},$options$$)})};
17
+ $q$$._id||$q$$._id&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return $resolve$jscomp$0$$(null);var $fields$jscomp$1_key$$=$join$$.fields_need_get_data;if(_.isString($_model$$)){if(!mongoose.models[$_model$$])return $reject$$("Collection "+$_model$$+" is not exists");$_model$$=mongoose.models[$_model$$]}try{const $rs$$=await $_model$$.findOne($q$$,$fields$jscomp$1_key$$).lean().exec();$rs$$&&($rs$$._id=$rs$$._id.toString(),$b$$=$rs$$);$resolve$jscomp$0$$($b$$)}catch($e$$){console.error($e$$),
18
+ $resolve$jscomp$0$$($b$$)}}})}):$resolve$jscomp$0$$($b$$)})).then(()=>{setImmediate(()=>{$b$$&&($join$$.fields||$join$$.setFields||$join$$.asyncSetFields)?($join$$.fields&&(_.isFunction($join$$.fields)?$join$$.fields($item$$,$b$$):(_.isArray($join$$.fields)||($join$$.fields=[$join$$.fields]),$join$$.fields.forEach(function($map$$){if(_.isObject($map$$)){let $name$$=$map$$.name,$value$$=$map$$.value;if($name$$&&$value$$)$item$$[$name$$]=$b$$[$value$$];else for(let $key$$ in $map$$)$item$$[$key$$]=
19
+ $b$$[$map$$[$key$$]]}else $item$$[$map$$]=$b$$[$map$$]}))),$join$$.setFields&&$join$$.setFields($item$$,$b$$),$join$$.asyncSetFields?setImmediate(()=>{$join$$.asyncSetFields($item$$,$b$$,()=>{$callback$$(null)})}):$callback$$(null)):$callback$$(null)})})})},function($error$$){setImmediate(()=>{if($error$$)return $callback$jscomp$0$$($error$$);$callback$jscomp$0$$()})})})},function($error$$){setImmediate(()=>{$error$$&&console.error($error$$);$fn$$($self$$)})})}).catch($error$$=>{console.error($error$$);
20
+ $fn$$($self$$)})})};Array.prototype.asyncJoinModel2=function($id_app$$,$model$$,$joinFields$$,$options$$={cache:!0}){let $_this$$=this;return new Promise($resolve$$=>{$_this$$.joinModel2($id_app$$,$model$$,$joinFields$$,$rs$$=>{$resolve$$($rs$$)},$options$$)})};
21
21
  Array.prototype.crossJoin=function($otherArray$$,$where$$,$fn$$){setImmediate(()=>{let $newArray$$=[];for(let $e1$$ of this){var $_otherArray__where$$={};if($where$$)for(let $key$$ in $where$$)$_otherArray__where$$[$where$$[$key$$]]=$e1$$[$key$$];$_otherArray__where$$=_.where($otherArray$$,$_otherArray__where$$);if(0===$_otherArray__where$$.length)$newArray$$.push($e1$$);else for(let $item$$ of $_otherArray__where$$)$_otherArray__where$$={},_.extend($_otherArray__where$$,$e1$$),_.extend($_otherArray__where$$,
22
22
  $item$$),$newArray$$.push($_otherArray__where$$)}$fn$$($newArray$$)})};Array.prototype.asyncCrossJoin=function($otherArray$$,$where$$){let $_this$$=this;return new Promise($resolve$$=>{$_this$$.crossJoin($otherArray$$,$where$$,$rs$$=>{$resolve$$($rs$$)})})};
23
23
  Array.prototype.pivot=function($rowFields$$,$colPivot$$,$colSum$$,$fn$$,$options$$={},$log$$=()=>{}){setImmediate(()=>{$log$$("pivot:start");this.groupBy($colPivot$$,[],($e$jscomp$0$$,$colFields$$)=>{$log$$("pivot:group by col");$colFields$$=_.pluck($colFields$$,$colPivot$$);this.groupBy($rowFields$$,[],($e$$,$report$$)=>{setImmediate(()=>{$log$$("pivot:group by row");for(let $r$$ of $report$$)for(let $c$$ of $colFields$$){let $w$$={};$w$$[$colPivot$$]=$c$$;$rowFields$$.forEach(function($rf$$){$w$$[$rf$$]=
@@ -3,5 +3,5 @@ module.exports=function($condition$$,$fn$$,$log$$=()=>{}){$log$$("stocksummary:
3
3
  dkvt($condition$$,function($error$$,$result$$){if($error$$)return $callback$$($error$$);$callback$$(null,$result$$)})},ps:function($callback$$){let $ma_vt$$=$condition$$.ma_vt;underscore.isArray($ma_vt$$)&&($ma_vt$$={$in:$ma_vt$$});const $query$$={id_app:$id_app$$,ngay_ct:{$gte:$condition$$.tu_ngay,$lte:$condition$$.den_ngay}};$condition$$.ma_kho&&($query$$.ma_kho=$condition$$.ma_kho);$condition$$.ma_dvcs&&($query$$.ma_dvcs=$condition$$.ma_dvcs);$ma_vt$$&&($query$$.ma_vt=$ma_vt$$);$condition$$.ma_lo&&
4
4
  ($query$$.ma_lo=$condition$$.ma_lo);$condition$$.ma_tt1&&($query$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($query$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($query$$.ma_tt3=$condition$$.ma_tt3);!$condition$$.exclude_ct_dc||$condition$$.ma_kho||$groupBy$$.find($g$$=>"ma_kho"===$g$$)||($query$$.ma_ct={$nin:["PNC","PXC"]});$log$$("stocksummary: calculate araising");sokho.find($query$$).lean().exec(($error$$,$pss$$)=>{$error$$?$callback$$($error$$):($pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap=
5
5
  $ps$$.sl_nhap_qd;$ps$$.sl_xuat=$ps$$.sl_xuat_qd;return $ps$$}),$pss$$.joinModel2($id_app$$,dmvt,{where:"ma_vt",fields:["ma_nvt","ma_nvt2","ma_nvt3","ma_nvt4"]},()=>{$callback$$(null,$pss$$)}))})}},function($data_error$$,$results$$){$data_error$$?$fn$$($data_error$$):($data_error$$=$results$$.dn.concat($results$$.ps),$log$$("stocksummary: group by"),$data_error$$.groupBy($groupBy$$,[{name:"ton_dau",value:"ton00"},{name:"du_dau",value:"du00"},"sl_nhap","sl_xuat","tien_nhap","tien_xuat"],($e$jscomp$1_result$$,
6
- $groups$$)=>{if($e$jscomp$1_result$$)return $fn$$($e$jscomp$1_result$$);for(let $r$$ of $groups$$)$r$$.ton_cuoi=$r$$.ton_dau+$r$$.sl_nhap-$r$$.sl_xuat,$r$$.du_cuoi=Math.round($r$$.du_dau,0)+Math.round($r$$.tien_nhap,0)-Math.round($r$$.tien_xuat,0);$e$jscomp$1_result$$=underscore.filter($groups$$,function($r$$){return 0!==Math.abs($r$$.ton_dau)+Math.abs($r$$.du_dau)+Math.abs($r$$.sl_nhap)+Math.abs($r$$.tien_nhap)+Math.abs($r$$.sl_xuat)+Math.abs($r$$.tien_xuat)+Math.abs($r$$.ton_cuoi)+Math.abs($r$$.du_cuoi)});
7
- $log$$("stocksummary: finish");$fn$$(null,$e$jscomp$1_result$$)}))})}else $fn$$("L\u1ed7i: B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: tu_ngay,den_ngay,id_app")};
6
+ $groups$$)=>{if($e$jscomp$1_result$$)return $fn$$($e$jscomp$1_result$$);for(let $r$$ of $groups$$)isNaN($r$$.ton_dau)&&($r$$.ton_dau=0),isNaN($r$$.sl_nhap)&&($r$$.sl_nhap=0),isNaN($r$$.sl_xuat)&&($r$$.sl_xuat=0),$r$$.ton_cuoi=($r$$.ton_dau||0)+($r$$.sl_nhap||0)-($r$$.sl_xuat||0),$r$$.du_cuoi=Math.round($r$$.du_dau,0)+Math.round($r$$.tien_nhap,0)-Math.round($r$$.tien_xuat,0);$e$jscomp$1_result$$=underscore.filter($groups$$,function($r$$){return 0!==Math.abs($r$$.ton_dau)+Math.abs($r$$.du_dau)+Math.abs($r$$.sl_nhap)+
7
+ Math.abs($r$$.tien_nhap)+Math.abs($r$$.sl_xuat)+Math.abs($r$$.tien_xuat)+Math.abs($r$$.ton_cuoi)+Math.abs($r$$.du_cuoi)});$log$$("stocksummary: finish");$fn$$(null,$e$jscomp$1_result$$)}))})}else $fn$$("L\u1ed7i: B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: tu_ngay,den_ngay,id_app")};
@@ -3,9 +3,9 @@ new global.Schema({stt:{type:Number,default:0},name:{type:String,required:"Y\u00
3
3
  index:{type:Boolean,default:!1},is_tmp:{type:Boolean,default:!1},is_title:{type:Boolean,default:!1},on_view:{type:Boolean,default:!0},maxlength:Number,min:global.Schema.Types.Mixed,max:global.Schema.Types.Mixed,ref_model:{type:String},ref_field:{type:String},ref_label:{type:String},ref_label_as:{type:String},ref_search_fields:{type:String},ref_condition:{type:String},multiple:Boolean,not_display:global.Schema.Types.Mixed,not_input:global.Schema.Types.Mixed,min_width_display:{type:Number,default:80},
4
4
  format:{type:String},align:{type:String},color:{type:String},bold:Boolean,html_variant_display:{type:String},html_component_display:{type:String},html_component_input:{type:String},grid_configs:String,handle_value_changed:{type:String},handle_search_condition:String,tab:{type:String},group:{type:String},help_text:{type:String},line:{type:Number,default:0}}),listinfoSchema=new global.Schema({menu_position:String,code:{type:String,required:!0,index:!0,lowercase:!0,trim:!0},title:{type:String,required:!0},
5
5
  title2:{type:String},mother_code:{type:String,lowercase:!0},api_code:{type:String,lowercase:!0},model_code:{type:String,lowercase:!0},fields:[fieldScheme],postinfos:[global.Schema.Types.Mixed],exfields:global.Schema.Types.Mixed,create_model:{type:Boolean,default:!1},breadcrumbs:{type:String},not_add:Boolean,not_edit:Boolean,not_delete:Boolean,handle_cell_clicked:{type:String},expression_check_save:String,on_saved:String,on_deleting:String,on_deleted:String,on_init:String,on_init_update:String,handle_view_server:String,
6
- handle_oncreating_server:String,handle_oncreated_server:String,handle_onupdating_server:String,handle_onupdated_server:String,search_required:Boolean,search_form:String,default_condition:String,require_condition:String,export_yn:Boolean,sort_by:String,not_need_right:{type:Boolean,default:!1},require_id_app:{type:Boolean,default:!0},private_data:Boolean,view_tabs:[],allow_users:{type:String},create_menu:Boolean,show_view_tabs_on_grid:Boolean,form_size:{type:String,default:"md"},is_dashboard_item:{type:Boolean,
7
- default:!1},dashboard_default:{type:Boolean,default:!0},dashboard_ids:{type:String},dashboard_stt:{type:Number},get_other_fields:String,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:""}});listinfoSchema.index({code:1});listinfoSchema.index({title:1});listinfoSchema.index({title2:1});listinfoSchema.index({mother_code:1});listinfoSchema.index({api_code:1});listinfoSchema.index({model_code:1});
8
- listinfoSchema.index({mother_code:1});listinfoSchema.index({is_dashboard_item:1});listinfoSchema.index({dashboard_ids:1});listinfoSchema.index({mother_code:"text",code:"text",title:"text"},{name:"listinfo_index2_text"});listinfoSchema.index({status:1});listinfoSchema.index({user_created:1,visible_to:1,visible_to_users:1});
6
+ handle_oncreating_server:String,handle_oncreated_server:String,handle_onupdating_server:String,handle_onupdated_server:String,handle_ondeleting_server:String,search_required:Boolean,search_form:String,default_condition:String,require_condition:String,export_yn:Boolean,sort_by:String,not_need_right:{type:Boolean,default:!1},require_id_app:{type:Boolean,default:!0},private_data:Boolean,view_tabs:[],allow_users:{type:String},input_users:{type:String},create_menu:Boolean,show_view_tabs_on_grid:Boolean,
7
+ form_size:{type:String,default:"md"},is_dashboard_item:{type:Boolean,default:!1},dashboard_default:{type:Boolean,default:!0},dashboard_ids:{type:String},dashboard_stt:{type:Number},get_other_fields:String,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:""}});listinfoSchema.index({code:1});listinfoSchema.index({title:1});listinfoSchema.index({title2:1});listinfoSchema.index({mother_code:1});
8
+ listinfoSchema.index({api_code:1});listinfoSchema.index({model_code:1});listinfoSchema.index({mother_code:1});listinfoSchema.index({is_dashboard_item:1});listinfoSchema.index({dashboard_ids:1});listinfoSchema.index({mother_code:"text",code:"text",title:"text"},{name:"listinfo_index2_text"});listinfoSchema.index({status:1});listinfoSchema.index({user_created:1,visible_to:1,visible_to_users:1});
9
9
  const model=global.mongoose.models.listinfo||global.mongoose.model("listinfo",listinfoSchema),requireFields={id_app:{type:String,required:!0},exfields:global.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]};
10
10
  model.createSchema=$info_textFields$$=>{if(!$info_textFields$$.create_model)return null;var $api_code_index_name$$=$info_textFields$$.api_code||$info_textFields$$.code,$_requireFields_fields$$={...requireFields};0!=$info_textFields$$.require_id_app&&"false"!=$info_textFields$$.require_id_app||delete $_requireFields_fields$$.id_app;let $mySchema$$=new global.Schema($_requireFields_fields$$,{strict:!1}),$require_paths$$=Object.keys($mySchema$$.paths);$_requireFields_fields$$={};for($f_uq$$ of $info_textFields$$.fields.filter($f$$=>
11
11
  "Link"!==$f$$.type&&"Files"!==$f$$.type&&"Action"!==$f$$.type&&"Group"!==$f$$.type&&0>$require_paths$$.indexOf($f$$.name))){$f_uq$$.unique&&($f_uq$$.index=!0);let $_field$$=Object.assign({},$f_uq$$);if("DateTime"==$_field$$.type||"Time"==$_field$$.type)$_field$$.type="Date";if("File"==$_field$$.type||"OtherFile"==$_field$$.type)$_field$$.type="Mixed";"Array"==$_field$$.type&&($_field$$.type="Mixed");"Pdf"==$_field$$.type&&($_field$$.type="String");"Image"==$_field$$.type&&($_field$$.type="String");
@@ -26,18 +26,26 @@ evalute($condition_postInfo_scriptCondition$$,{master:$obj$$,data:$obj$$,moment}
26
26
  ${$postInfo$$.script}
27
27
  })()`,{master:{...$obj$$},data:{...$obj$$},moment});return new Promise(($resolve$$,$reject$$)=>{if("socai"===$postInfo$$.model)(new PostSocai($obj$$,$data$$)).run(($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)});else{let $m$$=global.getModel($postInfo$$.model);(new PostBook($obj$$,$data$$,$m$$,function($detail$$,$callback$$){$callback$$($detail$$)})).run(function($e$$,$rs$$){if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})}})})()))},dynamicFinding=($_listInfo$$,$user$$,$condition$$,
28
28
  $next$$)=>{if($_listInfo$$.api_code&&$_listInfo$$.api_code!=$_listInfo$$.code)return $next$$(null,$condition$$);$_listInfo$$.private_data&&($condition$$.user_created=$user$$.email);if($_listInfo$$.require_condition)try{let $script$$=$_listInfo$$.require_condition;0>$script$$.indexOf("return ")&&($script$$=`return ${$script$$}`);const $require_condition$$=evalute($script$$);for(let $key$$ in $require_condition$$)$condition$$[$key$$]=$require_condition$$[$key$$]}catch($e$$){return console.error($e$$),
29
- $next$$(`Error on require condition: ${$e$$.message}`)}$next$$(null,$condition$$)},dynamicCreating=async($_listInfo$$,$user$$,$obj$$,$next$jscomp$0$$)=>{if($_listInfo$$.handle_oncreating_server&&""!==$_listInfo$$.handle_oncreating_server.trim()){if(0>$_listInfo$$.handle_oncreating_server.indexOf("next"))return $next$jscomp$0$$("Script x\u1eed l\u00fd d\u1eef li\u1ec7u tr\u01b0\u1edbc khi t\u1ea1o y\u00eau c\u1ea7u g\u1ecdi function next");try{await new Promise(($resolve$$,$reject$$)=>{async.parallel([$next$$=>
30
- {const $func_body$$=`(async ()=>{
29
+ $next$$(`Error on require condition: ${$e$$.message}`)}$next$$(null,$condition$$)},dynamicCreating=async($listInfo_supportUsers$$,$user$$,$obj$$,$next$jscomp$0$$)=>{let $_listInfo$$=await model.findOne({_id:$listInfo_supportUsers$$._id}).lean();if(!$_listInfo$$)return $next$jscomp$0$$("Kh\u00f4ng t\u00ecm th\u1ea5y danh m\u1ee5c n\u00e0y");for(let $key$$ in $_listInfo$$)$listInfo_supportUsers$$[$key$$]=$_listInfo$$[$key$$];$listInfo_supportUsers$$=configs.supportUsers||[];if((0==$_listInfo$$.require_id_app||
30
+ "false"==$_listInfo$$.require_id_app)&&0>($_listInfo$$.input_users||"").toLowerCase().indexOf($user$$.email.toLowerCase())&&!$listInfo_supportUsers$$.includes($user$$.email.toLowerCase())&&!isSupperAdmin($user$$.email.toLowerCase()))return $next$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");if($_listInfo$$.handle_oncreating_server&&""!==$_listInfo$$.handle_oncreating_server.trim()){if(0>$_listInfo$$.handle_oncreating_server.indexOf("next"))return $next$jscomp$0$$("Script x\u1eed l\u00fd d\u1eef li\u1ec7u tr\u01b0\u1edbc khi t\u1ea1o y\u00eau c\u1ea7u g\u1ecdi function next");
31
+ try{await new Promise(($resolve$$,$reject$$)=>{async.parallel([$next$$=>{const $func_body$$=`(async ()=>{
31
32
  ${$_listInfo$$.handle_oncreating_server}
32
33
  })();`;try{evalute($func_body$$,{obj:$obj$$,user:$user$$,getLib:global.getLib,getModel:global.getModel,utils,async,controller,controllers:global.controllers,joinModel2,next:$next$$})}catch($e$$){$next$$($e$$)}}],($e$$,$rs$$)=>{if($e$$)return console.error($e$$),$reject$$($e$$);$resolve$$($rs$$)})})}catch($e$$){return console.error($e$$),$next$jscomp$0$$($e$$)}}$next$jscomp$0$$(null,$obj$$)},dynamicCreated=async($_listInfo$$,$user$$,$obj$$,$next$jscomp$0$$)=>{if($_listInfo$$.handle_oncreated_server&&
33
34
  ""!==$_listInfo$$.handle_oncreated_server.trim()){if(0>$_listInfo$$.handle_oncreated_server.indexOf("next"))return $next$jscomp$0$$("Script x\u1eed l\u00fd d\u1eef li\u1ec7u sau khi t\u1ea1o y\u00eau c\u1ea7u g\u1ecdi function next");try{await new Promise(($resolve$$,$reject$$)=>{async.parallel([$next$$=>{const $func_body$$=`(async ()=>{
34
35
  ${$_listInfo$$.handle_oncreated_server}
35
- })();`;try{evalute($func_body$$,{obj:$obj$$,user:$user$$,getLib:global.getLib,getModel:global.getModel,controller,controllers:global.controllers,utils,async,joinModel2,next:$next$$})}catch($e$$){$next$$($e$$)}}],($e$$,$rs$$)=>{if($e$$)return console.error($e$$),$reject$$($e$$);$resolve$$($rs$$)})})}catch($e$$){return console.error($e$$),$next$jscomp$0$$($e$$)}}$next$jscomp$0$$(null,$obj$$)},dynamicUpdating=async($_listInfo$$,$user$$,$data$$,$obj$$,$next$jscomp$0$$)=>{if($_listInfo$$.handle_onupdating_server&&
36
- ""!==$_listInfo$$.handle_onupdating_server.trim()){if(0>$_listInfo$$.handle_onupdating_server.indexOf("next"))return $next$jscomp$0$$("Script x\u1eed l\u00fd d\u1eef li\u1ec7u tr\u01b0\u1edbc khi update y\u00eau c\u1ea7u g\u1ecdi function next");try{await new Promise(($resolve$$,$reject$$)=>{async.parallel([$next$$=>{const $func_body$$=`(async ()=>{
36
+ })();`;try{evalute($func_body$$,{obj:$obj$$,user:$user$$,getLib:global.getLib,getModel:global.getModel,controller,controllers:global.controllers,utils,async,joinModel2,next:$next$$})}catch($e$$){$next$$($e$$)}}],($e$$,$rs$$)=>{if($e$$)return console.error($e$$),$reject$$($e$$);$resolve$$($rs$$)})})}catch($e$$){return console.error($e$$),$next$jscomp$0$$($e$$)}}$next$jscomp$0$$(null,$obj$$)},dynamicUpdating=async($listInfo$jscomp$1_supportUsers$$,$user$$,$data$$,$obj$$,$next$jscomp$0$$)=>{let $_listInfo$$=
37
+ await model.findOne({_id:$listInfo$jscomp$1_supportUsers$$._id}).lean();if(!$_listInfo$$)return $next$jscomp$0$$("Kh\u00f4ng t\u00ecm th\u1ea5y danh m\u1ee5c n\u00e0y");for(let $key$$ in $_listInfo$$)$listInfo$jscomp$1_supportUsers$$[$key$$]=$_listInfo$$[$key$$];$listInfo$jscomp$1_supportUsers$$=configs.supportUsers||[];if((0==$_listInfo$$.require_id_app||"false"==$_listInfo$$.require_id_app)&&0>($_listInfo$$.input_users||"").toLowerCase().indexOf($user$$.email.toLowerCase())&&!$listInfo$jscomp$1_supportUsers$$.includes($user$$.email.toLowerCase())&&
38
+ !isSupperAdmin($user$$.email.toLowerCase()))return $next$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");if($_listInfo$$.handle_onupdating_server&&""!==$_listInfo$$.handle_onupdating_server.trim()){if(0>$_listInfo$$.handle_onupdating_server.indexOf("next"))return $next$jscomp$0$$("Script x\u1eed l\u00fd d\u1eef li\u1ec7u tr\u01b0\u1edbc khi update y\u00eau c\u1ea7u g\u1ecdi function next");try{await new Promise(($resolve$$,$reject$$)=>{async.parallel([$next$$=>
39
+ {const $func_body$$=`(async ()=>{
37
40
  ${$_listInfo$$.handle_onupdating_server}
38
41
  })();`;try{evalute($func_body$$,{data:$data$$,obj:$obj$$,user:$user$$,getLib:global.getLib,getModel:global.getModel,controller,controllers:global.controllers,utils,async,joinModel2,next:$next$$})}catch($e$$){$next$$($e$$)}}],($e$$,$rs$$)=>{if($e$$)return console.error($e$$),$reject$$($e$$);$resolve$$($rs$$)})})}catch($e$$){return console.error($e$$),$next$jscomp$0$$($e$$)}}$next$jscomp$0$$(null,$data$$,$obj$$)},dynamicUpdated=async($_listInfo$$,$user$$,$obj$$,$next$jscomp$0$$)=>{if($_listInfo$$.handle_onupdated_server&&
39
42
  ""!==$_listInfo$$.handle_onupdated_server.trim()){if(0>$_listInfo$$.handle_onupdated_server.indexOf("next"))return $next$jscomp$0$$("Script x\u1eed l\u00fd d\u1eef li\u1ec7u sau khi update y\u00eau c\u1ea7u g\u1ecdi function next");try{await new Promise(($resolve$$,$reject$$)=>{async.parallel([$next$$=>{const $func_body$$=`(async ()=>{
40
43
  ${$_listInfo$$.handle_onupdated_server}
44
+ })();`;try{evalute($func_body$$,{obj:$obj$$,user:$user$$,getLib:global.getLib,getModel:global.getModel,controller,controllers:global.controllers,utils,async,joinModel2,next:$next$$})}catch($e$$){$next$$($e$$)}}],($e$$,$rs$$)=>{if($e$$)return console.error($e$$),$reject$$($e$$);$resolve$$($rs$$)})})}catch($e$$){return console.error($e$$),$next$jscomp$0$$($e$$)}}$next$jscomp$0$$(null,$obj$$)},dynamicDeleting=async($listInfo$jscomp$2_supportUsers$$,$user$$,$obj$$,$next$jscomp$0$$)=>{let $_listInfo$$=
45
+ await model.findOne({_id:$listInfo$jscomp$2_supportUsers$$._id}).lean();if(!$_listInfo$$)return $next$jscomp$0$$("Kh\u00f4ng t\u00ecm th\u1ea5y danh m\u1ee5c n\u00e0y");for(let $key$$ in $_listInfo$$)$listInfo$jscomp$2_supportUsers$$[$key$$]=$_listInfo$$[$key$$];$listInfo$jscomp$2_supportUsers$$=configs.supportUsers||[];if((0==$_listInfo$$.require_id_app||"false"==$_listInfo$$.require_id_app)&&0>($_listInfo$$.input_users||"").toLowerCase().indexOf($user$$.email.toLowerCase())&&!$listInfo$jscomp$2_supportUsers$$.includes($user$$.email)&&
46
+ !isSupperAdmin($user$$.email.toLowerCase()))return $next$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");if($_listInfo$$.handle_ondeleting_server&&""!==$_listInfo$$.handle_ondeleting_server.trim()){if(0>$_listInfo$$.handle_ondeleting_server.indexOf("next"))return $next$jscomp$0$$("Script x\u1eed l\u00fd d\u1eef li\u1ec7u tr\u01b0\u1edbc khi update y\u00eau c\u1ea7u g\u1ecdi function next");try{await new Promise(($resolve$$,$reject$$)=>{async.parallel([$next$$=>
47
+ {const $func_body$$=`(async ()=>{
48
+ ${$_listInfo$$.handle_ondeleting_server}
41
49
  })();`;try{evalute($func_body$$,{obj:$obj$$,user:$user$$,getLib:global.getLib,getModel:global.getModel,controller,controllers:global.controllers,utils,async,joinModel2,next:$next$$})}catch($e$$){$next$$($e$$)}}],($e$$,$rs$$)=>{if($e$$)return console.error($e$$),$reject$$($e$$);$resolve$$($rs$$)})})}catch($e$$){return console.error($e$$),$next$jscomp$0$$($e$$)}}$next$jscomp$0$$(null,$obj$$)},onView=async($obj$$,$user$$,$items$$,$next$jscomp$0$$)=>{$obj$$.private_data&&($items$$=$items$$.filter($item$$=>
42
50
  $item$$.user_created===$user$$.email));if($obj$$.handle_view_server&&""!==$obj$$.handle_view_server.trim()){if(0>$obj$$.handle_view_server.indexOf("next"))return $next$jscomp$0$$("Script x\u1eed l\u00fd view y\u00eau c\u1ea7u g\u1ecdi function next");await new Promise($resolve$$=>{async.parallel([$next$$=>{evalute(`(async ()=>{
43
51
  ${$obj$$.handle_view_server}
@@ -49,11 +57,10 @@ underscore.has($ref_model$$.schema.paths,"id_app")&&($id_app$$=$user$$.current_i
49
57
  model.createController=($router$$,$_listInfo$$)=>{let $api_code$$=$_listInfo$$.api_code||$_listInfo$$.code;if(!$_listInfo$$.create_model)return null;let $sort$$={},$unique$$=[];let $_newList$$;$_listInfo$$.fields.filter($f$$=>$f$$.sort).forEach($f$$=>{$sort$$[$f$$.name]=$f$$.sort});if($_listInfo$$.sort_by)if(0<=$_listInfo$$.sort_by.indexOf("return ")||0===$_listInfo$$.sort_by.indexOf("{"))try{var $_newModel$jscomp$1_func_string$$=$_listInfo$$.sort_by;0>$_newModel$jscomp$1_func_string$$.indexOf("return ")&&
50
58
  ($_newModel$jscomp$1_func_string$$="return "+$_newModel$jscomp$1_func_string$$);$sort$$=evalute($_newModel$jscomp$1_func_string$$)}catch($e$$){console.error($e$$)}else $sort$$=$_listInfo$$.sort_by.split(",").reduce(($sort$$,$b$$)=>$sort$$[$b$$]=1,{});$_listInfo$$.fields.filter($f$$=>$f$$.unique).forEach($f$$=>{$unique$$.push($f$$.name)});if($_newList$$=global.controllers[$api_code$$.toUpperCase()])0<Object.keys($sort$$).length&&($_newList$$.sort=$_newList$$.options.sort=$sort$$),$_newModel$jscomp$1_func_string$$=
51
59
  $_newList$$.model,model.updateModel($_listInfo$$,$_newModel$jscomp$1_func_string$$),$_newList$$.is_dynamic_list&&($_newList$$.unique=$_newList$$.options.unique=$unique$$),$_newList$$.dynamicView=($user$$,$items$$,$next$$)=>{onView($_listInfo$$,$user$$,$items$$,$next$$)},$_newList$$.dynamicFinding=($user$$,$condition$$,$next$$)=>{dynamicFinding($_listInfo$$,$user$$,$condition$$,$next$$)},$_newList$$.dynamicCreating=($user$$,$obj$$,$next$$)=>{dynamicCreating($_listInfo$$,$user$$,$obj$$,$next$$)},$_newList$$.dynamicCreated=
52
- ($user$$,$obj$$,$next$$)=>{dynamicCreated($_listInfo$$,$user$$,$obj$$,$next$$)},$_newList$$.dynamicUpdating=($user$$,$data$$,$obj$$,$next$$)=>{dynamicUpdating($_listInfo$$,$user$$,$data$$,$obj$$,$next$$)},$_newList$$.dynamicUpdated=($user$$,$obj$$,$next$$)=>{dynamicUpdated($_listInfo$$,$user$$,$obj$$,$next$$)},$_listInfo$$.fields.find($f$$=>"ma_ct"===$f$$.name)&&$_listInfo$$.postinfos&&0<$_listInfo$$.postinfos.length?($_newList$$.dynamicDeletePost=async $obj$$=>deletePost($_listInfo$$,$obj$$),$_newList$$.dynamicPost=
53
- async($obj$$,$fn$$)=>{if($_newList$$.post)$_newList$$.post($obj$$,async function($e$jscomp$0$$){if($e$jscomp$0$$)return $fn$$($e$jscomp$0$$);try{let $rs$$=await post($_listInfo$$,$obj$$);$fn$$(null,$rs$$)}catch($e$$){$fn$$($e$$.message||$e$$.error||$e$$)}});else try{let $rs$$=await post($_listInfo$$,$obj$$);$fn$$(null,$rs$$)}catch($e$$){$fn$$($e$$.message||$e$$.error||$e$$)}}):($_newList$$.dynamicPost=void 0,$_newList$$.dynamicDeletePost=void 0);else{0===Object.keys($sort$$).length&&($sort$$.date_created=
54
- -1);const $require_id_app$$=0!=$_listInfo$$.require_id_app&&"false"!=$_listInfo$$.require_id_app;$_newModel$jscomp$1_func_string$$=model.createModel($_listInfo$$);$_newList$$=new controller($router$$,$_newModel$jscomp$1_func_string$$,$api_code$$.toLowerCase(),{sort:$sort$$,unique:$unique$$,notNeedRight:$_listInfo$$.not_need_right,require_id_app:$require_id_app$$,onView:($user$$,$items$$,$next$$)=>{onView($_listInfo$$,$user$$,$items$$,$next$$)},onCreating:async($user$$,$data$$,$next$$)=>{const $supportUsers$$=
55
- configs.supportUsers||[];if(!$require_id_app$$&&0>($_listInfo$$.allow_users||"").toLowerCase().indexOf($user$$.email.toLowerCase())&&!$supportUsers$$.includes($user$$.email.toLowerCase())&&!isSupperAdmin($user$$.email.toLowerCase()))return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");$next$$(null,$data$$)},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{const $supportUsers$$=configs.supportUsers||[];if(!$require_id_app$$&&0>($_listInfo$$.allow_users||
56
- "").toLowerCase().indexOf($user$$.email.toLowerCase())&&!$supportUsers$$.includes($user$$.email.toLowerCase())&&!isSupperAdmin($user$$.email.toLowerCase()))return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");$next$$(null,$data$$,$obj$$)},onDeleting:async($user$$,$obj$$,$next$$)=>{const $supportUsers$$=configs.supportUsers||[];if(!$require_id_app$$&&0>($_listInfo$$.allow_users||"").toLowerCase().indexOf($user$$.email.toLowerCase())&&!$supportUsers$$.includes($user$$.email)&&
57
- !isSupperAdmin($user$$.email.toLowerCase()))return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");$next$$(null,$obj$$)}});$_newList$$.is_dynamic_list=!0;$_newList$$.dynamicFinding=($user$$,$condition$$,$next$$)=>{dynamicFinding($_listInfo$$,$user$$,$condition$$,$next$$)};$_newList$$.dynamicCreating=($user$$,$obj$$,$next$$)=>{dynamicCreating($_listInfo$$,$user$$,$obj$$,$next$$)};$_newList$$.dynamicCreated=($user$$,$obj$$,$next$$)=>{dynamicCreated($_listInfo$$,
58
- $user$$,$obj$$,$next$$)};$_newList$$.dynamicUpdating=($user$$,$data$$,$obj$$,$next$$)=>{dynamicUpdating($_listInfo$$,$user$$,$data$$,$obj$$,$next$$)};$_newList$$.dynamicUpdated=($user$$,$obj$$,$next$$)=>{dynamicUpdated($_listInfo$$,$user$$,$obj$$,$next$$)};$_listInfo$$.fields.find($f$$=>"ma_ct"===$f$$.name)&&$_listInfo$$.postinfos&&0<$_listInfo$$.postinfos.length&&($_newList$$.dynamicDeletePost=async $obj$$=>deletePost($_listInfo$$,$obj$$),$_newList$$.dynamicPost=async($obj$$,$fn$$)=>{if($_newList$$.post)$_newList$$.post($obj$$,
59
- async function($e$jscomp$0$$){if($e$jscomp$0$$)return $fn$$($e$jscomp$0$$);try{let $rs$$=await post($_listInfo$$,$obj$$);$fn$$(null,$rs$$)}catch($e$$){$fn$$($e$$.message||$e$$.error||$e$$)}});else try{let $rs$$=await post($_listInfo$$,$obj$$);$fn$$(null,$rs$$)}catch($e$$){$fn$$($e$$.message||$e$$.error||$e$$)}});$_newList$$.route()}return $_newList$$};module.exports=model;
60
+ ($user$$,$obj$$,$next$$)=>{dynamicCreated($_listInfo$$,$user$$,$obj$$,$next$$)},$_newList$$.dynamicUpdating=($user$$,$data$$,$obj$$,$next$$)=>{dynamicUpdating($_listInfo$$,$user$$,$data$$,$obj$$,$next$$)},$_newList$$.dynamicUpdated=($user$$,$obj$$,$next$$)=>{dynamicUpdated($_listInfo$$,$user$$,$obj$$,$next$$)},$_newList$$.dynamicDeleting=($user$$,$obj$$,$next$$)=>{dynamicDeleting($_listInfo$$,$user$$,$obj$$,$next$$)},$_listInfo$$.fields.find($f$$=>"ma_ct"===$f$$.name)&&$_listInfo$$.postinfos&&0<$_listInfo$$.postinfos.length?
61
+ ($_newList$$.dynamicDeletePost=async $obj$$=>deletePost($_listInfo$$,$obj$$),$_newList$$.dynamicPost=async($obj$$,$fn$$)=>{if($_newList$$.post)$_newList$$.post($obj$$,async function($e$jscomp$0$$){if($e$jscomp$0$$)return $fn$$($e$jscomp$0$$);try{let $rs$$=await post($_listInfo$$,$obj$$);$fn$$(null,$rs$$)}catch($e$$){$fn$$($e$$.message||$e$$.error||$e$$)}});else try{let $rs$$=await post($_listInfo$$,$obj$$);$fn$$(null,$rs$$)}catch($e$$){$fn$$($e$$.message||$e$$.error||$e$$)}}):($_newList$$.dynamicPost=
62
+ void 0,$_newList$$.dynamicDeletePost=void 0);else{0===Object.keys($sort$$).length&&($sort$$.date_created=-1);const $require_id_app$$=0!=$_listInfo$$.require_id_app&&"false"!=$_listInfo$$.require_id_app;$_newModel$jscomp$1_func_string$$=model.createModel($_listInfo$$);$_newList$$=new controller($router$$,$_newModel$jscomp$1_func_string$$,$api_code$$.toLowerCase(),{sort:$sort$$,unique:$unique$$,notNeedRight:$_listInfo$$.not_need_right,require_id_app:$require_id_app$$,onView:($user$$,$items$$,$next$$)=>
63
+ {onView($_listInfo$$,$user$$,$items$$,$next$$)},onCreating:async($user$$,$data$$,$next$$)=>{$next$$(null,$data$$)},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{$next$$(null,$data$$,$obj$$)},onDeleting:async($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)}});$_newList$$.is_dynamic_list=!0;$_newList$$.dynamicFinding=($user$$,$condition$$,$next$$)=>{dynamicFinding($_listInfo$$,$user$$,$condition$$,$next$$)};$_newList$$.dynamicCreating=($user$$,$obj$$,$next$$)=>{dynamicCreating($_listInfo$$,$user$$,
64
+ $obj$$,$next$$)};$_newList$$.dynamicCreated=($user$$,$obj$$,$next$$)=>{dynamicCreated($_listInfo$$,$user$$,$obj$$,$next$$)};$_newList$$.dynamicUpdating=($user$$,$data$$,$obj$$,$next$$)=>{dynamicUpdating($_listInfo$$,$user$$,$data$$,$obj$$,$next$$)};$_newList$$.dynamicUpdated=($user$$,$obj$$,$next$$)=>{dynamicUpdated($_listInfo$$,$user$$,$obj$$,$next$$)};$_newList$$.dynamicDeleting=($user$$,$obj$$,$next$$)=>{dynamicDeleting($_listInfo$$,$user$$,$obj$$,$next$$)};$_listInfo$$.fields.find($f$$=>"ma_ct"===
65
+ $f$$.name)&&$_listInfo$$.postinfos&&0<$_listInfo$$.postinfos.length&&($_newList$$.dynamicDeletePost=async $obj$$=>deletePost($_listInfo$$,$obj$$),$_newList$$.dynamicPost=async($obj$$,$fn$$)=>{if($_newList$$.post)$_newList$$.post($obj$$,async function($e$jscomp$0$$){if($e$jscomp$0$$)return $fn$$($e$jscomp$0$$);try{let $rs$$=await post($_listInfo$$,$obj$$);$fn$$(null,$rs$$)}catch($e$$){$fn$$($e$$.message||$e$$.error||$e$$)}});else try{let $rs$$=await post($_listInfo$$,$obj$$);$fn$$(null,$rs$$)}catch($e$$){$fn$$($e$$.message||
66
+ $e$$.error||$e$$)}});$_newList$$.route()}return $_newList$$};module.exports=model;
@@ -4,4 +4,6 @@ participantScheam.index({ext:1});participantScheam.index({status:1});participant
4
4
  model.ofApp=async($id_app$$,$email$$)=>{let $condition$$={id_app:$id_app$$};$email$$&&($condition$$.email=$email$$);return new Promise(($resolve$$,$reject$$)=>{model.find($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));$resolve$$($rs$$)})})};model.appsOfUser=async $email$$=>{let $condition$$={email:$email$$};return new Promise(($resolve$$,$reject$$)=>{model.find($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));$resolve$$($rs$$)})})};
5
5
  model.createParticipant=($data$$,$callback$$)=>{model.findOne({id_app:$data$$.id_app,email:$data$$.email},($e$jscomp$0$$,$rs$jscomp$0$$)=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);if($rs$jscomp$0$$)return $callback$$(null,$rs$jscomp$0$$);model.create($data$$,($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})};
6
6
  model.referredUsers=async($id_app$$,$be_introduced_by_level1$$,$level$$=1)=>{$be_introduced_by_level1$$=await global.getModel("introducer").find({id_app:$id_app$$,be_introduced_by:$be_introduced_by_level1$$}).lean().exec();$be_introduced_by_level1$$=$be_introduced_by_level1$$.map($l$$=>({user:$l$$.be_introduced,by:$l$$.be_introduced_by,introduce_code:$l$$.introduce_code,date:$l$$.date_created,level:$level$$}));if(0==$be_introduced_by_level1$$.lenth)return $be_introduced_by_level1$$;let $level2$$=
7
- await Promise.all($be_introduced_by_level1$$.map($intro$$=>model.referredUsers($id_app$$,$intro$$.user,$intro$$.level+1)));return $be_introduced_by_level1$$.concat($level2$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]))};module.exports=model;
7
+ await Promise.all($be_introduced_by_level1$$.map($intro$$=>model.referredUsers($id_app$$,$intro$$.user,$intro$$.level+1)));return $be_introduced_by_level1$$.concat($level2$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]))};
8
+ const referByUsers=async($id_app$$,$be_introduced_level1$$,$level$$=1)=>{$be_introduced_level1$$=await global.getModel("introducer").find({id_app:$id_app$$,be_introduced:$be_introduced_level1$$}).lean().exec();$be_introduced_level1$$=$be_introduced_level1$$.map($l$$=>({user:$l$$.be_introduced,by:$l$$.be_introduced_by,introduce_code:$l$$.introduce_code,date:$l$$.date_created,level:$level$$}));if(0==$be_introduced_level1$$.lenth)return $be_introduced_level1$$;let $level2$$=await Promise.all($be_introduced_level1$$.map($intro$$=>
9
+ referByUsers($id_app$$,$intro$$.by,$intro$$.level+1)));return $be_introduced_level1$$.concat($level2$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]))};model.referByUsers=async($id_app$jscomp$3_rs$$,$be_introduced$$)=>{$id_app$jscomp$3_rs$$=(await referByUsers($id_app$jscomp$3_rs$$,$be_introduced$$)).sort(($a$$,$b$$)=>$b$$.level-$a$$.level);$id_app$jscomp$3_rs$$.forEach(($r$$,$index$$)=>{$r$$.level=$index$$+1});return $id_app$jscomp$3_rs$$};module.exports=model;
@@ -1,7 +1,7 @@
1
1
  'use strict';const model=global.getModel("comment"),Follow=global.getModel("follow"),User=global.getModel("user"),controller=require("../../controllers/controller"),underscore=require("underscore");
2
- module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"comment",{notNeedRight:!0,sort:{date_created:-1}});$contr_router$$.creating=($user$$,$obj$$,$fn$$)=>{$fn$$(null,$obj$$)};$contr_router$$.deleting=($user$$,$obj$$,$fn$$)=>{const $adminUsers$$=configs.admins;$user$$.email==$obj$$.user_created||underscore.contains($adminUsers$$,$user$$.email)?$fn$$(null,$obj$$):$fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 x\u00f3a n\u1ed9i dung n\u00e0y")};$contr_router$$.updating=
3
- ($user$$,$data$$,$obj$$,$fn$$)=>{const $adminUsers$$=configs.admins;$user$$.email==$obj$$.user_created||underscore.contains($adminUsers$$,$user$$.email)?$fn$$(null,$data$$,$obj$$):$fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt n\u1ed9i dung n\u00e0y")};$contr_router$$.created=async($query_r_user$$,$obj_created$$,$fn$$)=>{if($obj_created$$.is_reply){var $obj$$={};underscore.extend($obj$$,$obj_created$$);/<[a-z][\s\S]*>/i.test($obj$$.content)||($obj$$.content=$obj$$.content.replace(/\n/g,"<br/>"));
4
- $query_r_user$$={$or:[{_id:$obj$$.id_topic}],_id:{$ne:$obj$$._id}};$obj$$.id_topic&&($query_r_user$$.$or.push({id_topic:$obj$$.id_topic}),$obj$$.url_topic="#!/comment/view/"+$obj$$.id_topic);$obj$$.url_topic||($obj$$.url_topic="");model.find($query_r_user$$,{user_created:1}).lean().exec(async($err_es$$,$emails$$)=>{if($err_es$$)return console.log($err_es$$);$emails$$=underscore.pluck($emails$$,"user_created");($err_es$$=$obj$$.content.match(/(@[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi))&&
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"comment",{notNeedRight:!0,sort:{date_created:-1},onFinding:($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)}});$contr_router$$.creating=($user$$,$obj$$,$fn$$)=>{$fn$$(null,$obj$$)};$contr_router$$.deleting=($user$$,$obj$$,$fn$$)=>{const $adminUsers$$=configs.admins;$user$$.email==$obj$$.user_created||underscore.contains($adminUsers$$,$user$$.email)?$fn$$(null,$obj$$):$fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 x\u00f3a n\u1ed9i dung n\u00e0y")};
3
+ $contr_router$$.updating=($user$$,$data$$,$obj$$,$fn$$)=>{const $adminUsers$$=configs.admins;$user$$.email==$obj$$.user_created||underscore.contains($adminUsers$$,$user$$.email)?$fn$$(null,$data$$,$obj$$):$fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt n\u1ed9i dung n\u00e0y")};$contr_router$$.created=async($query_r_user$$,$obj_created$$,$fn$$)=>{if($obj_created$$.is_reply){var $obj$$={};underscore.extend($obj$$,$obj_created$$);/<[a-z][\s\S]*>/i.test($obj$$.content)||($obj$$.content=$obj$$.content.replace(/\n/g,
4
+ "<br/>"));$query_r_user$$={$or:[{_id:$obj$$.id_topic}],_id:{$ne:$obj$$._id}};$obj$$.id_topic&&($query_r_user$$.$or.push({id_topic:$obj$$.id_topic}),$obj$$.url_topic="#!/comment/view/"+$obj$$.id_topic);$obj$$.url_topic||($obj$$.url_topic="");model.find($query_r_user$$,{user_created:1}).lean().exec(async($err_es$$,$emails$$)=>{if($err_es$$)return console.log($err_es$$);$emails$$=underscore.pluck($emails$$,"user_created");($err_es$$=$obj$$.content.match(/(@[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi))&&
5
5
  $err_es$$.forEach($e$$=>{$emails$$.push($e$$.substring(1))});$obj$$.attends&&$obj$$.attends.forEach($ind$$=>{$emails$$.push($ind$$)});if($obj_created$$.id_reply)try{(await model.getRelativeComments($obj_created$$.id_reply)).forEach($_comment$$=>{$emails$$.push($_comment$$.user_created)})}catch($e$$){console.log("error alert replay comment",$e$$.message)}$obj_created$$.user_created_obj&&$emails$$.push($obj$$.user_created_obj);if($obj_created$$.id_product)try{let $_follows$$=await Follow.asyncFind({id_object:$obj_created$$.id_product});
6
6
  $emails$$=$emails$$.concat(underscore.pluck($_follows$$,"user_created"))}catch($e$$){console.log($e$$)}$emails$$=underscore.uniq($emails$$);let $msg$$={_id:$obj_created$$._id,code:"comment",action:"NEW"};$msg$$.title=`Comment '${$obj$$.title||$obj$$.ten_vt}'`;$msg$$.body=$obj$$.content;$msg$$.id_product=$obj_created$$.id_product;$msg$$.colection_name_product=$obj_created$$.colection_name_product;$emails$$.forEach($email$$=>{User.emitEvent($email$$,"comment:new",$msg$$,!0,null);$email$$!==$obj$$.user_created&&
7
7
  global.createNotification($obj$$.user_updated||"SYSTEM",$email$$,$msg$$.title,$msg$$.body,$e$$=>{$e$$&&console.log($e$$)},$msg$$,!1,null)})})}$fn$$(null,$obj_created$$)};$contr_router$$.on("deleted",$obj$$=>{model.deleteMany({id_topic:$obj$$._id},$er$$=>{$er$$&&console.log($er$$)})});$contr_router$$.route()};
package/server/route.js CHANGED
@@ -1,30 +1,30 @@
1
1
  'use strict';const fs=require("fs"),appModel=global.getModel("app"),listinfo=global.getModel("listinfo"),Token=global.getModel("token"),express=require("express"),underscore=require("underscore"),passport=require("passport"),path=require("path"),async=require("async"),gm=require("gm").subClass({imageMagick:!0});
2
- module.exports=function($app$$,$cb$$=()=>{},$only_created_controller_for_import_data$$=!1){var $createRateLimiterMiddleware_limiter_others$$=global.createRateLimiterMiddleware;const $router$$=global.routerAPI=express.Router();if(!0!==$only_created_controller_for_import_data$$){configs.trust_proxy&&$app$$.enable("trust proxy",!0);require("./auths/google")($app$$,passport);require("./auths/facebook")($app$$,passport);require("./auths/local")($app$$,passport);require("./auths/bearer")(passport);$router$$.use(function($req$$,
3
- $res$$,$next$$){for(let $key$$ in $req$$.query)"true"==$req$$.query[$key$$]&&($req$$.query[$key$$]=!0),"false"==$req$$.query[$key$$]&&($req$$.query[$key$$]=!1);let $access_token$$=$req$$.query.access_token;$access_token$$||($access_token$$=$req$$.get("X-Access-Token"));if($access_token$$){$req$$.query.access_token=$access_token$$;const $send$$=$res$$.send;$res$$.send=function($body$$){Token.updateOne({token:$access_token$$},{used:!0}).then(()=>{});$send$$.call(this,$body$$)}}$next$$()});$router$$.use(passport.authenticate("bearer",
4
- {session:!1}));$router$$.param("id_app",function($req$$,$res$$,$next$$,$id_app$$){if($id_app$$)if(mongoose.Types.ObjectId.isValid($id_app$$))appModel.findOne({_id:$id_app$$}).lean().exec(async($_clientIp_error$$,$appInfo$$)=>{if($_clientIp_error$$)return $next$$($_clientIp_error$$);if($appInfo$$)$req$$.user.current_id_app=$id_app$$,$appInfo$$.options||($appInfo$$.options={}),$req$$.user.current_app_info=$appInfo$$,$req$$.query.id_app=$id_app$$,$_clientIp_error$$=(($req$$.headers["x-forwarded-for"]||
5
- "").split(",").pop()||$req$$.connection.remoteAddress||$req$$.socket.remoteAddress||$req$$.connection.socket.remoteAddress).split(":"),$req$$.user.clientIp=$_clientIp_error$$[$_clientIp_error$$.length-1],$next$$();else return $res$$.status(400).send("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i")});else return $res$$.status(400).send("id_app:'"+$id_app$$+"' is invalid");else $next$$()});if(configs.limitRequest.api){var $limiter_limiter$jscomp$1_limiter$jscomp$2_limiter$$=$createRateLimiterMiddleware_limiter_others$$(configs.limitRequest.api,
6
- "api");$router$$.use($limiter_limiter$jscomp$1_limiter$jscomp$2_limiter$$)}$app$$.use("/api",$router$$)}const $funcs_inited$$={};configs.paths.modules&&fs.existsSync(configs.paths.modules+"/vouchers")&&fs.readdirSync(configs.paths.modules+"/vouchers").forEach(function($file$$){".js"==$file$$.substr(-3)&&(require(configs.paths.modules+"/vouchers/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});fs.existsSync(__dirname+"/modules/vouchers")&&fs.readdirSync(__dirname+"/modules/vouchers").filter($file$$=>
7
- !$funcs_inited$$[$file$$]).forEach(function($file$$){".js"==$file$$.substr(-3)&&(require("./modules/vouchers/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});configs.paths.modules&&fs.existsSync(configs.paths.modules+"/reports")&&fs.readdirSync(configs.paths.modules+"/reports").forEach(function($file$$){".js"==$file$$.substr(-3)&&(require(configs.paths.modules+"/reports/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});fs.existsSync(__dirname+"/modules/reports")&&fs.readdirSync(__dirname+
8
- "/modules/reports").filter($file$$=>!$funcs_inited$$[$file$$]).forEach(function($file$$){".js"==$file$$.substr(-3)&&(require("./modules/reports/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});configs.paths.modules&&fs.existsSync(configs.paths.modules+"/lists")&&fs.readdirSync(configs.paths.modules+"/lists").forEach(function($file$$){".js"==$file$$.substr(-3)&&(require(configs.paths.modules+"/lists/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});fs.existsSync(__dirname+"/modules/lists")&&
9
- fs.readdirSync(__dirname+"/modules/lists").filter($file$$=>!$funcs_inited$$[$file$$]).forEach(function($file$$){".js"==$file$$.substr(-3)&&(require("./modules/lists/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});listinfo.find({status:!0,create_model:!0}).lean().exec(($e$$,$rs$$)=>{console.log("Creating dynamic APIs...",$rs$$.length);$rs$$.forEach($r$$=>{listinfo.createController(global.routerAPI,$r$$)});$only_created_controller_for_import_data$$&&$cb$$()});const $sys_router$$=express.Router();
10
- $sys_router$$.use(passport.authenticate("bearer",{session:!1}));configs.limitRequest.sys&&($limiter_limiter$jscomp$1_limiter$jscomp$2_limiter$$=$createRateLimiterMiddleware_limiter_others$$(configs.limitRequest.sys,"sys"),$router$$.use($limiter_limiter$jscomp$1_limiter$jscomp$2_limiter$$));$app$$.use("/api",$sys_router$$);$sys_router$$.route("/system/restart/:service").get(($req$$,$res$$)=>{let $system_code$$=$req$$.params.service;const $adminUsers$$=configs.admins.concat(configs.subAdmins||[]);underscore.contains($adminUsers$$,
11
- $req$$.user.email)?(setImmediate(()=>{process.exit()}),$res$$.send({message:"Restarting service "+$system_code$$})):$res$$.status(400).send({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n t\u00e1c v\u1ee5 n\u00e0y"})});let $funcs_sys_inited$$={};configs.paths.modules&&fs.existsSync(configs.paths.modules+"/systems")&&fs.readdirSync(configs.paths.modules+"/systems").forEach(function($file$$){".js"==$file$$.substr(-3)&&(require(configs.paths.modules+"/systems/"+$file$$)($sys_router$$),
12
- $funcs_sys_inited$$[$file$$]=$file$$)});fs.readdirSync(__dirname+"/modules/systems").filter($file$$=>!$funcs_sys_inited$$[$file$$]).forEach(function($file$$){".js"===$file$$.substr(-3)&&(require("./modules/systems/"+$file$$)($sys_router$$),$funcs_sys_inited$$[$file$$]=$file$$)});if(!0!==$only_created_controller_for_import_data$$){const {isSupperAdmin:$isSupperAdmin$$}=require("./libs/utils"),$usersAdmin$$=configs.admins;$router$$.route("/:id_app/query/:model/:action").get(function($req$$,$res$$,$id_app$jscomp$1_next$$){var $modelName_user$$=
13
- $req$$.user;if(!underscore.contains($usersAdmin$$,$modelName_user$$.email)&&!$isSupperAdmin$$($modelName_user$$.email.toLowerCase()))return $id_app$jscomp$1_next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");$id_app$jscomp$1_next$$=$req$$.params.id_app;$modelName_user$$=$req$$.params.model;let $action$$=$req$$.params.action,$query$$={};if($req$$.query.q)try{$query$$=eval("("+$req$$.query.q+")")}catch($e$$){return $res$$.status(400).send($e$$.message)}try{let $model$$=
14
- global.mongoose.models[$modelName_user$$];underscore.has($model$$.schema.paths,"id_app")&&($query$$.id_app=$id_app$jscomp$1_next$$);switch($action$$){case "find":let $limit$$=$req$$.query.limit||1E3,$fields$$;$req$$.query.fields&&($fields$$={},$req$$.query.fields.split(",").forEach($field$$=>{$fields$$[$field$$]=1}));try{$limit$$=Number($limit$$)}catch($e$$){return $res$$.status(400).send($e$$.message)}$limit$$||($limit$$=1E3);$model$$.find($query$$,$fields$$).limit($limit$$).lean().exec(($e$$,$rs$$)=>
15
- {if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)});break;case "update":let $data$$=$req$$.query.fields;if(!$data$$)return $res$$.status(400).send("Data to update is empty");try{$data$$=JSON.parse($data$$),$model$$.updateMany($query$$,$data$$,($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)})}catch($e$$){$res$$.status(400).send($e$$.message)}break;case "remove":$model$$.deleteMany($query$$,($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)});
16
- break;default:$res$$.status(400).send(`Action ${$action$$} is not support`)}}catch($e$$){$res$$.status(400).send($e$$.message)}});const $Menu$$=require(configs.paths.menu||"./menu");$router$$.route("/modules").get(function($req$$,$res$$){$Menu$$.getMenu($menu_modules_o_rs$$=>{$menu_modules_o_rs$$=JSON.parse(JSON.stringify($menu_modules_o_rs$$));$menu_modules_o_rs$$=$Menu$$.getModules($menu_modules_o_rs$$);let $modules_a$$=[];for(let $key$$ in $menu_modules_o_rs$$)$modules_a$$.push($menu_modules_o_rs$$[$key$$].command);
17
- $res$$.send($modules_a$$)})});const $permission$$=require("./libs/permission");$router$$.route("/:id_app/menu").get(function($req$$,$res$$){$Menu$$.getMenu($Menu_menu$$=>{const $id_app$$=$req$$.params.id_app,$user$$=$req$$.user;appModel.findOne({_id:$id_app$$}).lean().exec(function($e$jscomp$1$$,$app$$){if($e$jscomp$1$$||!$app$$)return $res$$.status(400).send("Kh\u00f4ng th\u1ec3 l\u1ea5y th\u00f4ng tin c\u1ee7a c\u00f4ng ty n\u00e0y.\n");$permission$$.isAdmin($id_app$$,$user$$.email,function($e$jscomp$0$$,
18
- $admin$$){const $menu$$={menu:JSON.parse(JSON.stringify($Menu_menu$$))};let $_menu$$=$menu$$.menu=$menu$$.menu.filter($m$$=>!$m$$.appAllow||0===$m$$.appAllow.length||0<=$m$$.appAllow.indexOf($id_app$$));$menu$$.modules=$Menu$$.getModules($_menu$$);$admin$$?$res$$.send($menu$$):async.map(underscore.values($menu$$.modules),function($module$$,$callback$$){var $m$$=$module$$.command;$permission$$.hasRight($id_app$$,$user$$.email,$m$$.module?$m$$.module:$m$$.path,"view",function($e$$,$right$$){$m$$.visible=
19
- $right$$;$callback$$()})},function($e$$){if($e$$)return $res$$.status(400).send($e$$);$_menu$$.forEach(function($child_menu$$){$child_menu$$.visible=!1;if("1"==$child_menu$$.type)for(let $i$$ of $child_menu$$.input)if($i$$.items)for(let $_i$$ of $i$$.items){if($_i$$.visible){$i$$.visible=!0;$child_menu$$.visible=!0;break}}else if($i$$.visible){$child_menu$$.visible=!0;break}"2"==$child_menu$$.type&&$child_menu$$.input.forEach(function($module$$){$module$$.visible=!1;$module$$.items.forEach(function($item$$){$item$$.visible&&
20
- ($module$$.visible=!0,$child_menu$$.visible=!0)})});"3"==$child_menu$$.type&&$child_menu$$.input.forEach(function($module$$){$module$$.visible=!1;$module$$.items.forEach(function($group$$){$group$$.visible=!1;$group$$.items.forEach(function($item$$){$item$$.visible&&($group$$.visible=!0,$module$$.visible=!0,$child_menu$$.visible=!0)})})})});$res$$.send($menu$$)})})})})});const $bot_router$$=express.Router();configs.limitRequest.bot&&($limiter_limiter$jscomp$1_limiter$jscomp$2_limiter$$=$createRateLimiterMiddleware_limiter_others$$(configs.limitRequest.bot,
21
- "bot"),$router$$.use($limiter_limiter$jscomp$1_limiter$jscomp$2_limiter$$));$app$$.use("/bot",$bot_router$$);fs.existsSync(__dirname+"/modules/bot")&&(console.log("init bot..."),fs.readdirSync(__dirname+"/modules/bot").forEach(function($file$$){".js"===$file$$.substr(-3)&&require("./modules/bot/"+$file$$)($bot_router$$)}));const $public_router$$=express.Router();configs.limitRequest.public&&($limiter_limiter$jscomp$1_limiter$jscomp$2_limiter$$=$createRateLimiterMiddleware_limiter_others$$(configs.limitRequest.public,
22
- "public"),$router$$.use($limiter_limiter$jscomp$1_limiter$jscomp$2_limiter$$));$public_router$$.use(function($req$$,$res$$,$next$$){for(let $key$$ in $req$$.query)"true"==$req$$.query[$key$$]&&($req$$.query[$key$$]=!0),"false"==$req$$.query[$key$$]&&($req$$.query[$key$$]=!1);if($req$$.query.id_app){let $id_app$$=$req$$.query.id_app;appModel.findOne({_id:$id_app$$},function($error$$,$app$$){if($error$$)return $next$$($error$$);if($app$$)$req$$.user={current_id_app:$id_app$$,email:"public"},$req$$.query.id_app=
23
- $id_app$$,$next$$();else return $res$$.status(400).send("Kh\u00f4ng t\u1ed3n t\u1ea1i c\u00f4ng ty n\u00e0y")})}else $next$$()});$app$$.use("/public",$public_router$$);const $funcs_public_inited$$={};configs.paths.modules&&fs.existsSync(configs.paths.modules+"/public")&&(console.log("init custom public..."),fs.readdirSync(configs.paths.modules+"/public").forEach(function($file$$){".js"==$file$$.substr(-3)&&(require(configs.paths.modules+"/public/"+$file$$)($public_router$$),$funcs_public_inited$$[$file$$]=
24
- $file$$)}));fs.existsSync(__dirname+"/modules/public")&&(console.log("init default public..."),fs.readdirSync(__dirname+"/modules/public").filter($file$$=>!$funcs_public_inited$$[$file$$]).forEach(function($file$$){".js"==$file$$.substr(-3)&&(require("./modules/public/"+$file$$)($public_router$$),$funcs_public_inited$$[$file$$]=$file$$)}));$createRateLimiterMiddleware_limiter_others$$=$createRateLimiterMiddleware_limiter_others$$(configs.limitRequest.other||{},"other");$app$$.get("/getfile/:folder/:filename",
25
- $createRateLimiterMiddleware_limiter_others$$,function($req$$,$res$$){let $root_dir$$=configs.paths.images||path.join(__dirname,"images"),$imgPath$$=path.join($root_dir$$,$req$$.params.folder,$req$$.params.filename);if(fs.existsSync($imgPath$$)){let $size$$,$cache$$;if($req$$.query.size||$req$$.query.resize)switch(String($req$$.query.size||$req$$.query.resize).toUpperCase()){case "64":case "X":$size$$=64;$cache$$=!0;break;case "128":$size$$=128;$cache$$=!0;break;case "320":case "S":$size$$=320;$cache$$=
26
- !0;break;case "512":case "M":$size$$=512;$cache$$=!0;break;case "1024":case "L":$size$$=1024;$cache$$=!0;break;default:try{$size$$=Number($req$$.query.size||$req$$.query.resize)}catch($e$$){console.log("size param must be X or S or M or L or a number")}}if($size$$){let $file_name_resize$$=path.join($root_dir$$,$req$$.params.folder,String($size$$)+"."+$req$$.params.filename);if(fs.existsSync($file_name_resize$$))return gm($file_name_resize$$).stream(function($err$$,$stdout$$){$stdout$$.pipe($res$$)});
27
- $cache$$?gm($imgPath$$).resize($size$$,null).write($file_name_resize$$,function($error$$){if($error$$)console.log("Can't resize image \n"+$error$$),$res$$.sendFile($imgPath$$);else return gm($file_name_resize$$).stream(function($err$$,$stdout$$){$stdout$$.pipe($res$$)})}):gm($imgPath$$).resize($size$$,null).stream(function($err$$,$stdout$$){$stdout$$.pipe($res$$)})}else $res$$.sendFile($imgPath$$)}else $res$$.sendFile(path.join(__dirname,"images","others","noimage.png"))});const $Labelinfo$$=global.getModel("labelinfo");
28
- $app$$.get("/labels/:labelid",$createRateLimiterMiddleware_limiter_others$$,function($labelid_req$$,$res$$){$labelid_req$$=$labelid_req$$.params.labelid.toUpperCase();$Labelinfo$$.find({labelid:$labelid_req$$}).lean().exec(($e$$,$labels$$)=>{if($e$$)return $res$$.status(400).send($e$$);let $_labels$$={};$labels$$.forEach($l$$=>{$_labels$$[$l$$.textid]=$l$$});$res$$.send($_labels$$)})});const $qr$$=require("qr-image");$app$$.get("/qrcode",$createRateLimiterMiddleware_limiter_others$$,function($req$$,
29
- $res$$){let $report$$=$req$$.query.report;$report$$||($report$$=$req$$.query.data)&&($report$$=Buffer.from($report$$,"base64").toString("utf8"));if(!$report$$)return $res$$.status(400).send("miss parameter 'report'");setImmediate(()=>{const $code$$=$qr$$.image($report$$,{type:"svg"});$res$$.type("svg");$code$$.pipe($res$$)})});const $nodemailer$$=require("nodemailer");$app$$.post("/sendmail",function($req$$,$res$$){setImmediate(()=>{let $msg$$=$req$$.body;if("KHGFIUWPPC"!==$msg$$.secretKey)return $res$$.status(400).send("Not allow");
30
- if(!$msg$$.to||!$msg$$.subject||!$msg$$.message)return $res$$.status(400).send("Msg is not valid");$nodemailer$$.createTransport({host:"mail.flexbiz.app",port:25,secure:!1,auth:{user:"info",pass:""},tls:{rejectUnauthorized:!1},name:$msg$$.name}).sendMail({from:"info@flexbiz.app",to:$msg$$.to,subject:$msg$$.subject,text:$msg$$.message,html:$msg$$.message},$e$$=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send("OK")})})});$cb$$()}};
2
+ module.exports=async function($app$$,$cb$$=()=>{},$limiter$jscomp$2_limiter$$=!1){var $createRateLimiterMiddleware_limiter_others$$=global.createRateLimiterMiddleware;const $router$$=global.routerAPI=express.Router();!0!==$limiter$jscomp$2_limiter$$&&(configs.trust_proxy&&$app$$.enable("trust proxy",!0),require("./auths/google")($app$$,passport),require("./auths/facebook")($app$$,passport),require("./auths/local")($app$$,passport),require("./auths/bearer")(passport),$router$$.use(function($req$$,
3
+ $res$$,$next$$){for(let $key$$ in $req$$.query)"true"==$req$$.query[$key$$]&&($req$$.query[$key$$]=!0),"false"==$req$$.query[$key$$]&&($req$$.query[$key$$]=!1);let $access_token$$=$req$$.query.access_token;$access_token$$||($access_token$$=$req$$.get("X-Access-Token"));if($access_token$$){$req$$.query.access_token=$access_token$$;const $send$$=$res$$.send;$res$$.send=function($body$$){Token.updateOne({token:$access_token$$},{used:!0}).then(()=>{});$send$$.call(this,$body$$)}}$next$$()}),$router$$.use(passport.authenticate("bearer",
4
+ {session:!1})),$router$$.param("id_app",function($req$$,$res$$,$next$$,$id_app$$){if($id_app$$)if(mongoose.Types.ObjectId.isValid($id_app$$))appModel.findOne({_id:$id_app$$}).lean().exec(async($_clientIp_error$$,$appInfo$$)=>{if($_clientIp_error$$)return $next$$($_clientIp_error$$);if($appInfo$$)$req$$.user.current_id_app=$id_app$$,$appInfo$$.options||($appInfo$$.options={}),$req$$.user.current_app_info=$appInfo$$,$req$$.query.id_app=$id_app$$,$_clientIp_error$$=(($req$$.headers["x-forwarded-for"]||
5
+ "").split(",").pop()||$req$$.connection.remoteAddress||$req$$.socket.remoteAddress||$req$$.connection.socket.remoteAddress).split(":"),$req$$.user.clientIp=$_clientIp_error$$[$_clientIp_error$$.length-1],$next$$();else return $res$$.status(400).send("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i")});else return $res$$.status(400).send("id_app:'"+$id_app$$+"' is invalid");else $next$$()}),configs.limitRequest.api&&($dynamic_list_limiter_limiter$$=$createRateLimiterMiddleware_limiter_others$$(configs.limitRequest.api,
6
+ "api"),$router$$.use($dynamic_list_limiter_limiter$$)),$app$$.use("/api",$router$$));const $funcs_inited$$={};configs.paths.modules&&fs.existsSync(configs.paths.modules+"/lists")&&fs.readdirSync(configs.paths.modules+"/lists").forEach(function($file$$){".js"==$file$$.substr(-3)&&(require(configs.paths.modules+"/lists/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});fs.existsSync(__dirname+"/modules/lists")&&fs.readdirSync(__dirname+"/modules/lists").filter($file$$=>!$funcs_inited$$[$file$$]).forEach(function($file$$){".js"==
7
+ $file$$.substr(-3)&&(require("./modules/lists/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});configs.paths.modules&&fs.existsSync(configs.paths.modules+"/vouchers")&&fs.readdirSync(configs.paths.modules+"/vouchers").forEach(function($file$$){".js"==$file$$.substr(-3)&&(require(configs.paths.modules+"/vouchers/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});fs.existsSync(__dirname+"/modules/vouchers")&&fs.readdirSync(__dirname+"/modules/vouchers").filter($file$$=>!$funcs_inited$$[$file$$]).forEach(function($file$$){".js"==
8
+ $file$$.substr(-3)&&(require("./modules/vouchers/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});var $dynamic_list_limiter_limiter$$=await listinfo.find({status:!0,create_model:!0}).lean().exec();console.log("Creating dynamic APIs...",$dynamic_list_limiter_limiter$$.length);$dynamic_list_limiter_limiter$$.forEach($r$$=>{listinfo.createController(global.routerAPI,$r$$)});configs.paths.modules&&fs.existsSync(configs.paths.modules+"/reports")&&fs.readdirSync(configs.paths.modules+"/reports").forEach(function($file$$){".js"==
9
+ $file$$.substr(-3)&&(require(configs.paths.modules+"/reports/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});fs.existsSync(__dirname+"/modules/reports")&&fs.readdirSync(__dirname+"/modules/reports").filter($file$$=>!$funcs_inited$$[$file$$]).forEach(function($file$$){".js"==$file$$.substr(-3)&&(require("./modules/reports/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});const $sys_router$$=express.Router();$sys_router$$.use(passport.authenticate("bearer",{session:!1}));configs.limitRequest.sys&&
10
+ ($dynamic_list_limiter_limiter$$=$createRateLimiterMiddleware_limiter_others$$(configs.limitRequest.sys,"sys"),$router$$.use($dynamic_list_limiter_limiter$$));$app$$.use("/api",$sys_router$$);$sys_router$$.route("/system/restart/:service").get(($req$$,$res$$)=>{let $system_code$$=$req$$.params.service;const $adminUsers$$=configs.admins.concat(configs.subAdmins||[]);underscore.contains($adminUsers$$,$req$$.user.email)?(setImmediate(()=>{process.exit()}),$res$$.send({message:"Restarting service "+$system_code$$})):
11
+ $res$$.status(400).send({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n t\u00e1c v\u1ee5 n\u00e0y"})});let $funcs_sys_inited$$={};configs.paths.modules&&fs.existsSync(configs.paths.modules+"/systems")&&fs.readdirSync(configs.paths.modules+"/systems").forEach(function($file$$){".js"==$file$$.substr(-3)&&(require(configs.paths.modules+"/systems/"+$file$$)($sys_router$$),$funcs_sys_inited$$[$file$$]=$file$$)});fs.readdirSync(__dirname+"/modules/systems").filter($file$$=>!$funcs_sys_inited$$[$file$$]).forEach(function($file$$){".js"===
12
+ $file$$.substr(-3)&&(require("./modules/systems/"+$file$$)($sys_router$$),$funcs_sys_inited$$[$file$$]=$file$$)});if(!0!==$limiter$jscomp$2_limiter$$){const {isSupperAdmin:$isSupperAdmin$$}=require("./libs/utils"),$usersAdmin$$=configs.admins;$router$$.route("/:id_app/query/:model/:action").get(function($req$$,$res$$,$id_app$jscomp$1_next$$){var $modelName_user$$=$req$$.user;if(!underscore.contains($usersAdmin$$,$modelName_user$$.email)&&!$isSupperAdmin$$($modelName_user$$.email.toLowerCase()))return $id_app$jscomp$1_next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");
13
+ $id_app$jscomp$1_next$$=$req$$.params.id_app;$modelName_user$$=$req$$.params.model;let $action$$=$req$$.params.action,$query$$={};if($req$$.query.q)try{$query$$=eval("("+$req$$.query.q+")")}catch($e$$){return $res$$.status(400).send($e$$.message)}try{let $model$$=global.mongoose.models[$modelName_user$$];underscore.has($model$$.schema.paths,"id_app")&&($query$$.id_app=$id_app$jscomp$1_next$$);switch($action$$){case "find":let $limit$$=$req$$.query.limit||1E3,$fields$$;$req$$.query.fields&&($fields$$=
14
+ {},$req$$.query.fields.split(",").forEach($field$$=>{$fields$$[$field$$]=1}));try{$limit$$=Number($limit$$)}catch($e$$){return $res$$.status(400).send($e$$.message)}$limit$$||($limit$$=1E3);$model$$.find($query$$,$fields$$).limit($limit$$).lean().exec(($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)});break;case "update":let $data$$=$req$$.query.fields;if(!$data$$)return $res$$.status(400).send("Data to update is empty");try{$data$$=JSON.parse($data$$),$model$$.updateMany($query$$,
15
+ $data$$,($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)})}catch($e$$){$res$$.status(400).send($e$$.message)}break;case "remove":$model$$.deleteMany($query$$,($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)});break;default:$res$$.status(400).send(`Action ${$action$$} is not support`)}}catch($e$$){$res$$.status(400).send($e$$.message)}});const $Menu$$=require(configs.paths.menu||"./menu");$router$$.route("/modules").get(function($req$$,$res$$){$Menu$$.getMenu($menu_modules_o_rs$$=>
16
+ {$menu_modules_o_rs$$=JSON.parse(JSON.stringify($menu_modules_o_rs$$));$menu_modules_o_rs$$=$Menu$$.getModules($menu_modules_o_rs$$);let $modules_a$$=[];for(let $key$$ in $menu_modules_o_rs$$)$modules_a$$.push($menu_modules_o_rs$$[$key$$].command);$res$$.send($modules_a$$)})});const $permission$$=require("./libs/permission");$router$$.route("/:id_app/menu").get(function($req$$,$res$$){$Menu$$.getMenu($Menu_menu$$=>{const $id_app$$=$req$$.params.id_app,$user$$=$req$$.user;appModel.findOne({_id:$id_app$$}).lean().exec(function($e$jscomp$1$$,
17
+ $app$$){if($e$jscomp$1$$||!$app$$)return $res$$.status(400).send("Kh\u00f4ng th\u1ec3 l\u1ea5y th\u00f4ng tin c\u1ee7a c\u00f4ng ty n\u00e0y.\n");$permission$$.isAdmin($id_app$$,$user$$.email,function($e$jscomp$0$$,$admin$$){const $menu$$={menu:JSON.parse(JSON.stringify($Menu_menu$$))};let $_menu$$=$menu$$.menu=$menu$$.menu.filter($m$$=>!$m$$.appAllow||0===$m$$.appAllow.length||0<=$m$$.appAllow.indexOf($id_app$$));$menu$$.modules=$Menu$$.getModules($_menu$$);$admin$$?$res$$.send($menu$$):async.map(underscore.values($menu$$.modules),
18
+ function($module$$,$callback$$){var $m$$=$module$$.command;$permission$$.hasRight($id_app$$,$user$$.email,$m$$.module?$m$$.module:$m$$.path,"view",function($e$$,$right$$){$m$$.visible=$right$$;$callback$$()})},function($e$$){if($e$$)return $res$$.status(400).send($e$$);$_menu$$.forEach(function($child_menu$$){$child_menu$$.visible=!1;if("1"==$child_menu$$.type)for(let $i$$ of $child_menu$$.input)if($i$$.items)for(let $_i$$ of $i$$.items){if($_i$$.visible){$i$$.visible=!0;$child_menu$$.visible=!0;
19
+ break}}else if($i$$.visible){$child_menu$$.visible=!0;break}"2"==$child_menu$$.type&&$child_menu$$.input.forEach(function($module$$){$module$$.visible=!1;$module$$.items.forEach(function($item$$){$item$$.visible&&($module$$.visible=!0,$child_menu$$.visible=!0)})});"3"==$child_menu$$.type&&$child_menu$$.input.forEach(function($module$$){$module$$.visible=!1;$module$$.items.forEach(function($group$$){$group$$.visible=!1;$group$$.items.forEach(function($item$$){$item$$.visible&&($group$$.visible=!0,
20
+ $module$$.visible=!0,$child_menu$$.visible=!0)})})})});$res$$.send($menu$$)})})})})});const $bot_router$$=express.Router();configs.limitRequest.bot&&($limiter$jscomp$2_limiter$$=$createRateLimiterMiddleware_limiter_others$$(configs.limitRequest.bot,"bot"),$router$$.use($limiter$jscomp$2_limiter$$));$app$$.use("/bot",$bot_router$$);fs.existsSync(__dirname+"/modules/bot")&&(console.log("init bot..."),fs.readdirSync(__dirname+"/modules/bot").forEach(function($file$$){".js"===$file$$.substr(-3)&&require("./modules/bot/"+
21
+ $file$$)($bot_router$$)}));const $public_router$$=express.Router();configs.limitRequest.public&&($limiter$jscomp$2_limiter$$=$createRateLimiterMiddleware_limiter_others$$(configs.limitRequest.public,"public"),$router$$.use($limiter$jscomp$2_limiter$$));$public_router$$.use(function($req$$,$res$$,$next$$){for(let $key$$ in $req$$.query)"true"==$req$$.query[$key$$]&&($req$$.query[$key$$]=!0),"false"==$req$$.query[$key$$]&&($req$$.query[$key$$]=!1);if($req$$.query.id_app){let $id_app$$=$req$$.query.id_app;
22
+ appModel.findOne({_id:$id_app$$},function($error$$,$app$$){if($error$$)return $next$$($error$$);if($app$$)$req$$.user={current_id_app:$id_app$$,email:"public"},$req$$.query.id_app=$id_app$$,$next$$();else return $res$$.status(400).send("Kh\u00f4ng t\u1ed3n t\u1ea1i c\u00f4ng ty n\u00e0y")})}else $next$$()});$app$$.use("/public",$public_router$$);const $funcs_public_inited$$={};configs.paths.modules&&fs.existsSync(configs.paths.modules+"/public")&&(console.log("init custom public..."),fs.readdirSync(configs.paths.modules+
23
+ "/public").forEach(function($file$$){".js"==$file$$.substr(-3)&&(require(configs.paths.modules+"/public/"+$file$$)($public_router$$),$funcs_public_inited$$[$file$$]=$file$$)}));fs.existsSync(__dirname+"/modules/public")&&(console.log("init default public..."),fs.readdirSync(__dirname+"/modules/public").filter($file$$=>!$funcs_public_inited$$[$file$$]).forEach(function($file$$){".js"==$file$$.substr(-3)&&(require("./modules/public/"+$file$$)($public_router$$),$funcs_public_inited$$[$file$$]=$file$$)}));
24
+ $createRateLimiterMiddleware_limiter_others$$=$createRateLimiterMiddleware_limiter_others$$(configs.limitRequest.other||{},"other");$app$$.get("/getfile/:folder/:filename",$createRateLimiterMiddleware_limiter_others$$,function($req$$,$res$$){let $root_dir$$=configs.paths.images||path.join(__dirname,"images"),$imgPath$$=path.join($root_dir$$,$req$$.params.folder,$req$$.params.filename);if(fs.existsSync($imgPath$$)){let $size$$,$cache$$;if($req$$.query.size||$req$$.query.resize)switch(String($req$$.query.size||
25
+ $req$$.query.resize).toUpperCase()){case "64":case "X":$size$$=64;$cache$$=!0;break;case "128":$size$$=128;$cache$$=!0;break;case "320":case "S":$size$$=320;$cache$$=!0;break;case "512":case "M":$size$$=512;$cache$$=!0;break;case "1024":case "L":$size$$=1024;$cache$$=!0;break;default:try{$size$$=Number($req$$.query.size||$req$$.query.resize)}catch($e$$){console.log("size param must be X or S or M or L or a number")}}if($size$$){let $file_name_resize$$=path.join($root_dir$$,$req$$.params.folder,String($size$$)+
26
+ "."+$req$$.params.filename);if(fs.existsSync($file_name_resize$$))return gm($file_name_resize$$).stream(function($err$$,$stdout$$){$stdout$$.pipe($res$$)});$cache$$?gm($imgPath$$).resize($size$$,null).write($file_name_resize$$,function($error$$){if($error$$)console.log("Can't resize image \n"+$error$$),$res$$.sendFile($imgPath$$);else return gm($file_name_resize$$).stream(function($err$$,$stdout$$){$stdout$$.pipe($res$$)})}):gm($imgPath$$).resize($size$$,null).stream(function($err$$,$stdout$$){$stdout$$.pipe($res$$)})}else $res$$.sendFile($imgPath$$)}else $res$$.sendFile(path.join(__dirname,
27
+ "images","others","noimage.png"))});const $Labelinfo$$=global.getModel("labelinfo");$app$$.get("/labels/:labelid",$createRateLimiterMiddleware_limiter_others$$,function($labelid_req$$,$res$$){$labelid_req$$=$labelid_req$$.params.labelid.toUpperCase();$Labelinfo$$.find({labelid:$labelid_req$$}).lean().exec(($e$$,$labels$$)=>{if($e$$)return $res$$.status(400).send($e$$);let $_labels$$={};$labels$$.forEach($l$$=>{$_labels$$[$l$$.textid]=$l$$});$res$$.send($_labels$$)})});const $qr$$=require("qr-image");
28
+ $app$$.get("/qrcode",$createRateLimiterMiddleware_limiter_others$$,function($req$$,$res$$){let $report$$=$req$$.query.report;$report$$||($report$$=$req$$.query.data)&&($report$$=Buffer.from($report$$,"base64").toString("utf8"));if(!$report$$)return $res$$.status(400).send("miss parameter 'report'");setImmediate(()=>{const $code$$=$qr$$.image($report$$,{type:"svg"});$res$$.type("svg");$code$$.pipe($res$$)})});const $nodemailer$$=require("nodemailer");$app$$.post("/sendmail",function($req$$,$res$$){setImmediate(()=>
29
+ {let $msg$$=$req$$.body;if("KHGFIUWPPC"!==$msg$$.secretKey)return $res$$.status(400).send("Not allow");if(!$msg$$.to||!$msg$$.subject||!$msg$$.message)return $res$$.status(400).send("Msg is not valid");$nodemailer$$.createTransport({host:"mail.flexbiz.app",port:25,secure:!1,auth:{user:"info",pass:""},tls:{rejectUnauthorized:!1},name:$msg$$.name}).sendMail({from:"info@flexbiz.app",to:$msg$$.to,subject:$msg$$.subject,text:$msg$$.message,html:$msg$$.message},$e$$=>{if($e$$)return $res$$.status(400).send($e$$);
30
+ $res$$.send("OK")})})});$cb$$()}};