flexbiz-server 12.3.23 → 12.3.24

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.3.23",
5
+ "version": "12.3.24",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -14,8 +14,6 @@
14
14
  ],
15
15
  "license": "MIT",
16
16
  "dependencies": {
17
- "@bull-board/api": "^6.7.10",
18
- "@bull-board/express": "^6.7.10",
19
17
  "@ffmpeg-installer/ffmpeg": "^1.0.20",
20
18
  "agenda": "^4.1.3",
21
19
  "agendash": "^2.1.1",
@@ -23,7 +21,6 @@
23
21
  "axios": "^0.20.0",
24
22
  "body-parser": "^1.19.0",
25
23
  "brorand": "^1.1.0",
26
- "bullmq": "^5.42.0",
27
24
  "bwip-js": "^3.1.0",
28
25
  "cheerio": "^1.0.0-rc.10",
29
26
  "compression": "^1.7.4",
@@ -38,7 +35,6 @@
38
35
  "excel-report": "latest",
39
36
  "expo-server-sdk": "^3.6.0",
40
37
  "express": "^4.17.1",
41
- "express-basic-auth": "^1.2.1",
42
38
  "express-session": "^1.17.2",
43
39
  "fluent-ffmpeg": "^2.1.2",
44
40
  "gm": "^1.23.1",
package/server/app.js CHANGED
@@ -8,11 +8,11 @@ $next$$()});$compress_cookieParser_morgan_multer_root_dir_uploads_session$$=requ
8
8
  __dirname+"/public")),$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin")),$app$$.use("/templates",express.static($configs$$.paths.templates||__dirname+"/templates")),$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images")));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||"1mb"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",extended:!0}));$app$$.use(passport.initialize());$compress_cookieParser_morgan_multer_root_dir_uploads_session$$=
9
9
  require("morgan");var $accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$accessLogStream_rfs$$=$accessLogStream_rfs$$("access.log",{interval:"1d",path:$logDirectory$$});$app$$.use($compress_cookieParser_morgan_multer_root_dir_uploads_session$$("combined",{stream:$accessLogStream_rfs$$,skip:function($req$$,$res$$){return 400>$res$$.statusCode}}));$app$$.use(function($err$$,
10
10
  $req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server Error!")});global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async()=>{console.log("Connected to Database");const $redis$$=require("redis");global.clientRedis=$redis$$.createClient();global.clientRedis.on("error",$err$$=>console.error("Redis Client Error",$err$$));global.clientRedis.on("end",()=>{console.error("Redis connection closed.")});global.clientRedis.on("connect",function(){console.log("redis connected");
11
- 0!=$options$$.createRedisCache&&require("./libs/redis-cache").set();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();!0!==$options$$.lite?(require("./controllers/QueueManager"),require("./route")($app$$,()=>{if(!1!==$options$$.createServer){var $StaticPool_StaticPool$$=require("sticky-session");if($configs$$.use_ssl){var $server_sslConfig$$=require("./sslConfig");$server_sslConfig$$=https.createServer($server_sslConfig$$($options$$.sslDir),$app$$)}else $server_sslConfig$$=
12
- http.createServer($app$$);$server_sslConfig$$.timeout=6E5;!1!==$options$$.useSocket?User.initSocket($server_sslConfig$$):User.initClientSockets();if(!1!==$options$$.cluster){if(!$StaticPool_StaticPool$$.listen($server_sslConfig$$,global.port))$server_sslConfig$$.once("listening",function(){console.log("server started on",global.port)});$StaticPool_StaticPool$$=require("cluster");$StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+
13
- " died",$code$$,$signal$$)});$StaticPool_StaticPool$$.on("online",function($worker$$){console.info("worker "+$worker$$.process.pid+" is online")})}else $server_sslConfig$$.listen(global.port,()=>{console.log("server start at "+global.port+" port")})}$options$$.start_import_data_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0),global.importDataMainPool.exec({load:!0,
14
- configs:JSON.stringify($configs$$)},()=>{console.log("load import data pool")}));$options$$.start_report_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("load report pool")}));$callbackServer$$&&$callbackServer$$()})):require("./route")($app$$,()=>{$callbackServer$$&&$callbackServer$$()},
15
- !0)})}).catch($err$$=>{console.log("Not Connected to Database ERROR! ",$err$$)});return $app$$};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});process.on("uncaughtException",function($err$jscomp$3_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);console.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
11
+ 0!=$options$$.createRedisCache&&require("./libs/redis-cache").set();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();!0!==$options$$.lite?require("./route")($app$$,()=>{if(!1!==$options$$.createServer){var $StaticPool_StaticPool$$=require("sticky-session");if($configs$$.use_ssl){var $server_sslConfig$$=require("./sslConfig");$server_sslConfig$$=https.createServer($server_sslConfig$$($options$$.sslDir),$app$$)}else $server_sslConfig$$=http.createServer($app$$);$server_sslConfig$$.timeout=
12
+ 6E5;!1!==$options$$.useSocket?User.initSocket($server_sslConfig$$):User.initClientSockets();if(!1!==$options$$.cluster){if(!$StaticPool_StaticPool$$.listen($server_sslConfig$$,global.port))$server_sslConfig$$.once("listening",function(){console.log("server started on",global.port)});$StaticPool_StaticPool$$=require("cluster");$StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool_StaticPool$$.on("online",
13
+ function($worker$$){console.info("worker "+$worker$$.process.pid+" is online")})}else $server_sslConfig$$.listen(global.port,()=>{console.log("server start at "+global.port+" port")})}$options$$.start_import_data_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("load import data pool")}));
14
+ $options$$.start_report_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("load report pool")}));$callbackServer$$&&$callbackServer$$()}):require("./route")($app$$,()=>{$callbackServer$$&&$callbackServer$$()},!0)})}).catch($err$$=>{console.log("Not Connected to Database ERROR! ",
15
+ $err$$)});return $app$$};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});process.on("uncaughtException",function($err$jscomp$3_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);console.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
16
16
  Error: ${$err$jscomp$3_error$$.message}
17
17
  Stack: ${$err$jscomp$3_error$$.stack}
18
18
  `;try{const $logDirectory$$=__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);fs.writeFile(`${$logDirectory$$}/error-${(new Date).getTime()}.txt`,$err$jscomp$3_error$$,()=>{console.log("wrote log error")})}catch($e$$){console.log($e$$)}process.exit(1)});module.exports=mainServer;
package/server/cluster.js CHANGED
@@ -12,10 +12,10 @@ global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async
12
12
  const $files$$=fs.readdirSync(__dirname+"/data/sys");$async$$.mapSeries($files$$,function($file$$,$callback$jscomp$0$$){setImmediate(()=>{if(".js"==$file$$.substr(-3)){const $data$$=JSON.parse(JSON.stringify(require("./data/sys/"+$file$$).data)),$model$$=global.getModel(""+$file$$);console.log("creating system data...",$file$$);$model$$.deleteMany({},$e$$=>{console.error($e$$);$async$$.mapSeries($data$$,function($r$$,$callback$$){delete $r$$._id;delete $r$$.__v;delete $r$$.collection_name;delete $r$$.pkey;
13
13
  $model$$.create($r$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})},function($error$$,$rs$$){$callback$jscomp$0$$($error$$,$rs$$)})})}else $callback$jscomp$0$$()})},function($error$$){if($error$$)return console.log($error$$);console.log("created system data")})}console.log("redis connected");0!=$options$$.createRedisCache&&require("./libs/redis-cache").set();global.getModel("schedule").start();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();var $StaticPool_StaticPool$$=
14
14
  global.getModel("user"),$init_system_data_server$$=$configs$$.initSysData;$init_system_data_server$$||await $StaticPool_StaticPool$$.findOne({})||($init_system_data_server$$=!0);for(let $i$$=0;$i$$<$configs$$.adminUsers.length;$i$$++){let $adminUser$$=$configs$$.adminUsers[$i$$],$u$$=await $StaticPool_StaticPool$$.findOne({email:$adminUser$$.email});$u$$||($adminUser$$.local={name:$adminUser$$.name,email:$adminUser$$.email,active:!0},$u$$=new $StaticPool_StaticPool$$($adminUser$$),$u$$.local.password=
15
- $u$$.generateHash($adminUser$$.email+$adminUser$$.defaultPassword),$u$$.save(function($error$$,$user$$){if($error$$)return console.error($error$$);$user$$&&console.log("da tao thanh cong user "+$user$$.email)}))}const $async$$=require("async");$init_system_data_server$$&&$initSysData$$();require("./controllers/QueueManager");require("./route")($app$$);$init_system_data_server$$=$configs$$.use_ssl?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$init_system_data_server$$.timeout=
16
- 6E5;$StaticPool_StaticPool$$.initSocket($init_system_data_server$$);if(!1!==$options$$.cluster){if(!require("sticky-session").listen($init_system_data_server$$,global.port))$init_system_data_server$$.once("listening",function(){console.log("server cluster started on",global.port)});$StaticPool_StaticPool$$=require("cluster");$StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool_StaticPool$$.on("online",
17
- function($worker$$){console.info("worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $init_system_data_server$$.listen(global.port,()=>{console.log("server start at "+global.port+" port")});$options$$.start_import_data_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0),global.importDataMainPool.exec({load:!0,
18
- configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load import data pool")}));$options$$.start_report_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0),global.reportMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load report pool")}))})}).catch($err$$=>{console.error("Not Connected to Database ERROR!",$err$$)})};
15
+ $u$$.generateHash($adminUser$$.email+$adminUser$$.defaultPassword),$u$$.save(function($error$$,$user$$){if($error$$)return console.error($error$$);$user$$&&console.log("da tao thanh cong user "+$user$$.email)}))}const $async$$=require("async");$init_system_data_server$$&&$initSysData$$();require("./route")($app$$);$init_system_data_server$$=$configs$$.use_ssl?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$init_system_data_server$$.timeout=6E5;$StaticPool_StaticPool$$.initSocket($init_system_data_server$$);
16
+ if(!1!==$options$$.cluster){if(!require("sticky-session").listen($init_system_data_server$$,global.port))$init_system_data_server$$.once("listening",function(){console.log("server cluster started on",global.port)});$StaticPool_StaticPool$$=require("cluster");$StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool_StaticPool$$.on("online",function($worker$$){console.info("worker "+$worker$$.process.pid+
17
+ " is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $init_system_data_server$$.listen(global.port,()=>{console.log("server start at "+global.port+" port")});$options$$.start_import_data_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0),global.importDataMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},
18
+ ()=>{console.log("load import data pool")}));$options$$.start_report_pool&&($StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0),global.reportMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load report pool")}))})}).catch($err$$=>{console.error("Not Connected to Database ERROR!",$err$$)})};
19
19
  process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});process.on("uncaughtException",function($err$jscomp$3_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);console.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
20
20
  Error: ${$err$jscomp$3_error$$.message}
21
21
  Stack: ${$err$jscomp$3_error$$.stack}
@@ -1,5 +1,6 @@
1
1
  'use strict';const EventEmitter=require("events").EventEmitter,underscore=require("underscore"),_=require("lodash"),ckvt=require("../libs/ckvt"),OptionsModel=global.getModel("options"),Approve=global.getModel("approve"),trangthai=global.getModel("trangthai"),Participant=global.getModel("participant"),async=require("async"),permission=require("../libs/permission"),utils=require("../libs/utils"),templatevoucher=global.getModel("templatevoucher"),{evalute}=require("../libs/utils"),redisCache=require("../libs/redis-cache"),
2
- dmqddvt=global.getModel("dmqddvt"),{jobFinished,queueManager}=require("./QueueManager"),{bodyToJson,ERRORS,getNextSequence,postData,pushNotification,runWebhooks}=require("./controllerUtils"),createHandler=require("./createHandler"),importHandler=require("./importHandler"),viewHandler=require("./viewHandler");
2
+ dmqddvt=global.getModel("dmqddvt"),importHandler=require("./importHandler"),viewHandler=require("./viewHandler"),createHandler=require("./createHandler"),updateHandler=require("./updateHandler"),deleteHandler=require("./deleteHandler"),deleteManyHandler=require("./deleteManyHandler"),importFromJsonHandler=require("./importFromJsonHandler"),importFromExcelHandler=require("./importFromExcelHandler"),importFromGsHandler=require("./importFromGsHandler"),updateBookHandler=require("./updateBookHandler"),
3
+ updateKeyHandler=require("./updateKeyHandler"),updateFieldHandler=require("./updateFieldHandler"),findHandler=require("./findHandler"),exportHandler=require("./exportHandler"),logHandler=require("./logHandler"),historyHandler=require("./historyHandler"),createRouteHandler=require("./createRouteHandler"),{bodyToJson,ERRORS,getNextSequence,postData,pushNotification,runWebhooks}=require("./controllerUtils");
3
4
  class controller{constructor($router$$,$model$$,$name$$,$options$$={isVoucher:void 0,sort:void 0,check_stock:void 0,unique:void 0,require_id_app:void 0,notNeedRight:void 0}){this.name=$name$$;this.model=$model$$;this.model_name=$model$$.collection.name.substring(0,$model$$.collection.name.length-1).toLowerCase();underscore.has($model$$.schema.paths,"listinfo_code")||$model$$.schema.add({listinfo_code:{type:String}});this.router=$router$$;this.module=this.name;global.controllers[$name$$.trim().toUpperCase()]=
4
5
  this;$options$$.findExact||($options$$.findExact={});this.keyValues=$options$$.keyValues;this.keyValues||(this.keyValues={});void 0===$options$$.require_id_app||!0===$options$$.require_id_app?(this.require_id_app=!0,this.route_name=`/:id_app/${this.module}`):(this.require_id_app=!1,this.route_name=`/${this.module}`);this.collection_name=$options$$.collection_name?$options$$.collection_name:$name$$;this.sort=$options$$.sort;this.unique=$options$$.unique;this.getting=$options$$.onGetting;this.finding=
5
6
  $options$$.onFinding;this.found=$options$$.onFound;this.validating=$options$$.onValidating;this.saving=$options$$.onSaving;this.creating=$options$$.onCreating;this.created=$options$$.onCreated;this.updating=$options$$.onUpdating;this.updated=$options$$.onUpdated;this.deleting=$options$$.onDeleting;this.deleted=$options$$.onDeleted;this.approveData=$options$$.approveData;this.view=$options$$.onView;this.viewRequired=$options$$.onViewRequired;this.cache=$options$$.cache;this.excelParse=$options$$.onExcelParse;
@@ -12,68 +13,62 @@ $d$$.sl_xuat});$details$$=await $details$$.asyncGroupBy(["ma_vt","ma_kho","ten_v
12
13
  $d$$.ma_tt3));ckvt($query$$,function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$rs$$?($e$$=$rs$$.csum("ton"),$rs$$=$data_sokho$$.filter($s$$=>$s$$.ma_vt===$d$$.ma_vt&&$s$$.ma_kho===$ma_kho$$).reduce(($a$$,$b$$)=>($a$$.sl_xuat_qd||0)+($b$$.sl_xuat_qd||0),0),$d$$.sl_xuat_qd>utils.round($e$$+$rs$$,2)?$callback$$(`S\u1ea3n ph\u1ea9m ${$d$$.ma_vt} - ${$d$$.ten_vt} c\u00f3 s\u1ed1 l\u01b0\u1ee3ng xu\u1ea5t quy \u0111\u1ed5i (${$d$$.sl_xuat_qd}) l\u1edbn h\u01a1n s\u1ed1 l\u01b0\u1ee3ng t\u1ed3n quy \u0111\u1ed5i (${$e$$+
13
14
  $rs$$})`):$callback$$()):$callback$$()})},$e$$=>{$callback$jscomp$0$$($e$$)})})():$callback$jscomp$0$$()}},$e$$=>{$fn$$($e$$)})}async cacheData($obj$$,$callback$$){$obj$$&&$obj$$.toObject&&($obj$$=$obj$$.toObject());await redisCache.set(this.model_name,$obj$$,$callback$$)}async deleteData($obj$$,$callback$$){$obj$$&&$obj$$.toObject&&($obj$$=$obj$$.toObject());await redisCache.remove(this.model_name,$obj$$,$callback$$)}createRoute($routeName$$,$handler_routeAction$$,$_options$$={method:"GET"}){const $self$$=
14
15
  this;$_options$$.method=$_options$$.method?$_options$$.method.toUpperCase():"GET";const $route_action_key$$=`route_action_${$self$$.name}_${$routeName$$}_${$_options$$.method}`;$self$$[$route_action_key$$]=$handler_routeAction$$;$handler_routeAction$$=async function($ip_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip_req$$,$user_agent$$=$ip_req$$.header("user-agent");$ip_req$$=$ip_req$$.headers["x-forwarded-for"]||$ip_req$$.connection.remoteAddress;
15
- try{const $job$$=await queueManager.getQueue("commonQueue").add(`${$self$$.module}-extra-action`,{req:{type_job:"createRoute",routeName:$routeName$$,_options:$_options$$,route_action_key:$route_action_key$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip_req$$,files:$files$$},ctrl_name:$self$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}};let $url$$=`${this.route_name}/${$routeName$$}`,
16
- $router$$=this.router;"DELETE"==$_options$$.method?$router$$.route($url$$).delete($handler_routeAction$$):"POST"==$_options$$.method?$router$$.route($url$$).post($handler_routeAction$$):"PUT"==$_options$$.method?$router$$.route($url$$).put($handler_routeAction$$):$router$$.route($url$$).get($handler_routeAction$$)}async requestApprove($app_info$$,$user_request$$,$obj_request$$,$next$$,$voucher_options$$,$preRequest$$){let $ctrl$$=this;if(!$app_info$$)return $next$$(null,$obj_request$$);let $obj$$;
17
- $obj$$=$obj_request$$.toObject?$obj_request$$.toObject():_.cloneDeep($obj_request$$);$obj$$.ma_ct=$obj$$.ma_ct||$ctrl$$.name;let $approveDatas$$=[];$voucher_options$$||($voucher_options$$=(await OptionsModel.findOne({id_app:$obj$$.id_app,id_func:$ctrl$$.name},{option:1}).lean()||{}).option);$voucher_options$$&&$voucher_options$$.custom_approve_user&&$voucher_options$$.custom_approve_user.forEach($trang_thai_approve$$=>{let $update_after_approve$$,$update_after_deny$$;if($trang_thai_approve$$.update_after_approve)try{let $str_func$$=
18
- $trang_thai_approve$$.update_after_approve;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$update_after_approve$$=evalute($str_func$$)}catch($e$$){console.error("request approve",$e$$,$trang_thai_approve$$.update_after_approve),$update_after_approve$$={}}else $update_after_approve$$={};$trang_thai_approve$$.update_after_approve={module:$ctrl$$.name,data:{trang_thai:$trang_thai_approve$$.trang_thai2,...($update_after_approve$$.data||{})}};if($trang_thai_approve$$.update_after_deny)try{let $str_func$$=
19
- $trang_thai_approve$$.update_after_deny;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$update_after_deny$$=evalute($str_func$$)}catch($e$$){console.error("request approve",$e$$)}if($update_after_deny$$||$trang_thai_approve$$.trang_thai3)$trang_thai_approve$$.update_after_deny={module:$ctrl$$.name,data:{trang_thai:$trang_thai_approve$$.trang_thai3,...(($update_after_deny$$||{}).data||{})}};$approveDatas$$.push($trang_thai_approve$$)});$approveDatas$$=$approveDatas$$.filter($approveData_condition$$=>
20
- {$approveData_condition$$=$approveData_condition$$.condition;if(!$approveData_condition$$)return!0;0>$approveData_condition$$.indexOf("return ")&&($approveData_condition$$=`return ${$approveData_condition$$}`);try{return evalute($approveData_condition$$,{master:$obj$$,data:$obj$$})}catch($e$$){return console.error("check condition approve",$e$$,$approveData_condition$$),!1}});$approveDatas$$.filter($a$$=>$a$$.approve_users).forEach($approveData$$=>{setImmediate(()=>{let $title$$=$approveData$$.title||
21
- "Y\u00eau c\u1ea7u duy\u1ec7t";if(0<=$title$$.indexOf("return ")){var $ds_nguoi_duyet_str_func$$=$title$$;try{$title$$=evalute($ds_nguoi_duyet_str_func$$,{master:$obj$$,data:$obj$$})}catch($e$$){console.error("request approve",$e$$,$ds_nguoi_duyet_str_func$$)}}$ds_nguoi_duyet_str_func$$=$approveData$$.approve_users;let $update_after_approve$$=$approveData$$.update_after_approve,$update_after_deny$$=$approveData$$.update_after_deny;if(_.isString($ds_nguoi_duyet_str_func$$))try{let $str_func$$=$ds_nguoi_duyet_str_func$$;
22
- 0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$ds_nguoi_duyet_str_func$$=evalute($str_func$$,{master:$obj$$,data:$obj$$,preRequest:$preRequest$$});if(!_.isArray($ds_nguoi_duyet_str_func$$)){console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng, hi\u1ec7n t\u1ea1i \u0111ang l\u00e0",$ds_nguoi_duyet_str_func$$);return}}catch($e$$){console.error("request approve",$e$$,$ds_nguoi_duyet_str_func$$);return}if($approveData$$.approve_users_custom)try{let $str_func$$=
23
- $approveData$$.approve_users_custom;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);let $ds_nguoi_duyet_custom$$=evalute($str_func$$,{master:$obj$$,data:$obj$$,preRequest:$preRequest$$});$ds_nguoi_duyet_custom$$&&(_.isArray($ds_nguoi_duyet_custom$$)?$ds_nguoi_duyet_str_func$$=[...$ds_nguoi_duyet_str_func$$,...$ds_nguoi_duyet_custom$$]:console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng, hi\u1ec7n t\u1ea1i \u0111ang l\u00e0",$ds_nguoi_duyet_custom$$))}catch($e$$){console.error("request approve",
24
- $e$$,$approveData$$.approve_users_custom)}if($ds_nguoi_duyet_str_func$$&&0!==$ds_nguoi_duyet_str_func$$.length&&($ds_nguoi_duyet_str_func$$=[...(new Set($ds_nguoi_duyet_str_func$$))],$obj$$.trang_thai==$approveData$$.trang_thai)){let $user_approves$$=$ds_nguoi_duyet_str_func$$.map($nguoi_duyet$$=>({email:$nguoi_duyet$$,name:$nguoi_duyet$$}));$user_approves$$.joinModel2($obj$$.id_app,Participant,{where:"email",fields:"name"},()=>{[$user_request$$].joinModel2($obj$$.id_app,Participant,{where:"email",
25
- fields:"name"},()=>{Approve.request($user_request$$,$user_approves$$,$title$$,$obj$$,$e$$=>{$e$$&&console.error("error create request approve:",$e$$.message||$e$$)},$update_after_approve$$,$approveData$$.template_content,$update_after_deny$$)})})}})});$next$$(null,$obj$$)}async import($user$$,$id_app$$,$data$$,$callback_main$$,$options$$={replace:!0,req:null}){importHandler($user$$,this,$id_app$$,$data$$,$callback_main$$,$options$$)}postData($obj$$,$callback$$,$options$$={}){return controller.postData($obj$$,
26
- this,$callback$$,$options$$)}pushNotification($_obj$$,$eventName$$="new",$old_obj$$=null,$justFireEvents$$=!1,$options$$={title:"",data:{}}){return pushNotification(this,$_obj$$,$eventName$$,$old_obj$$,$justFireEvents$$,$options$$)}}controller.prototype.__proto__=EventEmitter.prototype;
27
- controller.prototype.asyncGetNextSequence=async($id_app$$,$ma_ct$$,$field$$="so_ct",$options$$)=>new Promise($resolve$$=>{getNextSequence($id_app$$,$ma_ct$$,$field$$,($error$$,$rs$$)=>{if($error$$)return Error($error$$);$resolve$$($rs$$)},$options$$)});
16
+ try{createRouteHandler($self$$,{type_job:"createRoute",routeName:$routeName$$,_options:$_options$$,route_action_key:$route_action_key$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip_req$$,files:$files$$},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)})}catch($e$$){$res$$.status(400).send($e$$)}};let $url$$=`${this.route_name}/${$routeName$$}`,$router$$=this.router;"DELETE"==$_options$$.method?$router$$.route($url$$).delete($handler_routeAction$$):
17
+ "POST"==$_options$$.method?$router$$.route($url$$).post($handler_routeAction$$):"PUT"==$_options$$.method?$router$$.route($url$$).put($handler_routeAction$$):$router$$.route($url$$).get($handler_routeAction$$)}async requestApprove($app_info$$,$user_request$$,$obj_request$$,$next$$,$voucher_options$$,$preRequest$$){let $ctrl$$=this;if(!$app_info$$)return $next$$(null,$obj_request$$);let $obj$$;$obj$$=$obj_request$$.toObject?$obj_request$$.toObject():_.cloneDeep($obj_request$$);$obj$$.ma_ct=$obj$$.ma_ct||
18
+ $ctrl$$.name;let $approveDatas$$=[];$voucher_options$$||($voucher_options$$=(await OptionsModel.findOne({id_app:$obj$$.id_app,id_func:$ctrl$$.name},{option:1}).lean()||{}).option);$voucher_options$$&&$voucher_options$$.custom_approve_user&&$voucher_options$$.custom_approve_user.forEach($trang_thai_approve$$=>{let $update_after_approve$$,$update_after_deny$$;if($trang_thai_approve$$.update_after_approve)try{let $str_func$$=$trang_thai_approve$$.update_after_approve;0>$str_func$$.indexOf("return ")&&
19
+ ($str_func$$=`return ${$str_func$$}`);$update_after_approve$$=evalute($str_func$$)}catch($e$$){console.error("request approve",$e$$,$trang_thai_approve$$.update_after_approve),$update_after_approve$$={}}else $update_after_approve$$={};$trang_thai_approve$$.update_after_approve={module:$ctrl$$.name,data:{trang_thai:$trang_thai_approve$$.trang_thai2,...($update_after_approve$$.data||{})}};if($trang_thai_approve$$.update_after_deny)try{let $str_func$$=$trang_thai_approve$$.update_after_deny;0>$str_func$$.indexOf("return ")&&
20
+ ($str_func$$=`return ${$str_func$$}`);$update_after_deny$$=evalute($str_func$$)}catch($e$$){console.error("request approve",$e$$)}if($update_after_deny$$||$trang_thai_approve$$.trang_thai3)$trang_thai_approve$$.update_after_deny={module:$ctrl$$.name,data:{trang_thai:$trang_thai_approve$$.trang_thai3,...(($update_after_deny$$||{}).data||{})}};$approveDatas$$.push($trang_thai_approve$$)});$approveDatas$$=$approveDatas$$.filter($approveData_condition$$=>{$approveData_condition$$=$approveData_condition$$.condition;
21
+ if(!$approveData_condition$$)return!0;0>$approveData_condition$$.indexOf("return ")&&($approveData_condition$$=`return ${$approveData_condition$$}`);try{return evalute($approveData_condition$$,{master:$obj$$,data:$obj$$})}catch($e$$){return console.error("check condition approve",$e$$,$approveData_condition$$),!1}});$approveDatas$$.filter($a$$=>$a$$.approve_users).forEach($approveData$$=>{setImmediate(()=>{let $title$$=$approveData$$.title||"Y\u00eau c\u1ea7u duy\u1ec7t";if(0<=$title$$.indexOf("return ")){var $ds_nguoi_duyet_str_func$$=
22
+ $title$$;try{$title$$=evalute($ds_nguoi_duyet_str_func$$,{master:$obj$$,data:$obj$$})}catch($e$$){console.error("request approve",$e$$,$ds_nguoi_duyet_str_func$$)}}$ds_nguoi_duyet_str_func$$=$approveData$$.approve_users;let $update_after_approve$$=$approveData$$.update_after_approve,$update_after_deny$$=$approveData$$.update_after_deny;if(_.isString($ds_nguoi_duyet_str_func$$))try{let $str_func$$=$ds_nguoi_duyet_str_func$$;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$ds_nguoi_duyet_str_func$$=
23
+ evalute($str_func$$,{master:$obj$$,data:$obj$$,preRequest:$preRequest$$});if(!_.isArray($ds_nguoi_duyet_str_func$$)){console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng, hi\u1ec7n t\u1ea1i \u0111ang l\u00e0",$ds_nguoi_duyet_str_func$$);return}}catch($e$$){console.error("request approve",$e$$,$ds_nguoi_duyet_str_func$$);return}if($approveData$$.approve_users_custom)try{let $str_func$$=$approveData$$.approve_users_custom;0>$str_func$$.indexOf("return ")&&($str_func$$=
24
+ `return ${$str_func$$}`);let $ds_nguoi_duyet_custom$$=evalute($str_func$$,{master:$obj$$,data:$obj$$,preRequest:$preRequest$$});$ds_nguoi_duyet_custom$$&&(_.isArray($ds_nguoi_duyet_custom$$)?$ds_nguoi_duyet_str_func$$=[...$ds_nguoi_duyet_str_func$$,...$ds_nguoi_duyet_custom$$]:console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng, hi\u1ec7n t\u1ea1i \u0111ang l\u00e0",$ds_nguoi_duyet_custom$$))}catch($e$$){console.error("request approve",$e$$,$approveData$$.approve_users_custom)}if($ds_nguoi_duyet_str_func$$&&
25
+ 0!==$ds_nguoi_duyet_str_func$$.length&&($ds_nguoi_duyet_str_func$$=[...(new Set($ds_nguoi_duyet_str_func$$))],$obj$$.trang_thai==$approveData$$.trang_thai)){let $user_approves$$=$ds_nguoi_duyet_str_func$$.map($nguoi_duyet$$=>({email:$nguoi_duyet$$,name:$nguoi_duyet$$}));$user_approves$$.joinModel2($obj$$.id_app,Participant,{where:"email",fields:"name"},()=>{[$user_request$$].joinModel2($obj$$.id_app,Participant,{where:"email",fields:"name"},()=>{Approve.request($user_request$$,$user_approves$$,$title$$,
26
+ $obj$$,$e$$=>{$e$$&&console.error("error create request approve:",$e$$.message||$e$$)},$update_after_approve$$,$approveData$$.template_content,$update_after_deny$$)})})}})});$next$$(null,$obj$$)}async import($user$$,$id_app$$,$data$$,$callback_main$$,$options$$={replace:!0,req:null}){importHandler($user$$,this,$id_app$$,$data$$,$callback_main$$,$options$$)}postData($obj$$,$callback$$,$options$$={}){return controller.postData($obj$$,this,$callback$$,$options$$)}pushNotification($_obj$$,$eventName$$=
27
+ "new",$old_obj$$=null,$justFireEvents$$=!1,$options$$={title:"",data:{}}){return pushNotification(this,$_obj$$,$eventName$$,$old_obj$$,$justFireEvents$$,$options$$)}}controller.prototype.__proto__=EventEmitter.prototype;controller.prototype.asyncGetNextSequence=async($id_app$$,$ma_ct$$,$field$$="so_ct",$options$$)=>new Promise($resolve$$=>{getNextSequence($id_app$$,$ma_ct$$,$field$$,($error$$,$rs$$)=>{if($error$$)return Error($error$$);$resolve$$($rs$$)},$options$$)});
28
28
  controller.prototype.getFieldNoRight=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/field-not-right/:fieldName`).get(async($req$$,$res$$)=>{let $fieldName$$=$req$$.params.fieldName;try{0<=(await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)).indexOf($fieldName$$)?$res$$.send({allow:!1}):$res$$.send({allow:!0})}catch($e$$){$res$$.state(400).send($e$$.message)}})};
29
- controller.prototype.find=function($_route_name_route_name$$,$shareRoute$$=!1,$method$$="GET"){let $ctrl$$=this;const $findRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$1_req$$,$user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.headers["x-forwarded-for"]||$ip$jscomp$1_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("findQueue").add(`${$ctrl$$.name}-find`,{req:{query:$query$$,
30
- body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$1_req$$,shareRoute:$shareRoute$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$),{result:$result$$,dataType:$dataType$$}=$returnvalue$$;"xlsx"==$dataType$$?($res$$.setHeader("Content-Type","application/vnd.openxmlformats"),$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx"),$res$$.end($result$$,"binary")):$res$$.send($result$$)}catch($e$$){$res$$.status(400).send($e$$)}};
31
- $_route_name_route_name$$=$_route_name_route_name$$||this.route_name;"GET"===$method$$?(this.router.route($_route_name_route_name$$).get($findRoute$$),this.router.route($_route_name_route_name$$+"/excel").get($findRoute$$)):(this.router.route($_route_name_route_name$$).post($findRoute$$),this.router.route($_route_name_route_name$$+"/excel").post($findRoute$$))};
32
- controller.prototype.get=function($route_name$$,$shareRoute$$=!1){const $ctrl$$=this;this.router.route(`${$route_name$$||this.route_name}/:id`).get(async function($req$jscomp$4_result$$,$res$$){var $body$$=$req$jscomp$4_result$$.params.id;if(!global.mongoose.Types.ObjectId.isValid($body$$))return $res$$.status(404).send({error:ERRORS.ERR_ID_INVALID,code:ERRORS.ERR_ID_INVALID_CODE});$body$$={_id:$body$$};const $user_agent$$=$req$jscomp$4_result$$.header("user-agent"),$ip$$=$req$jscomp$4_result$$.headers["x-forwarded-for"]||
33
- $req$jscomp$4_result$$.connection.remoteAddress,{query:$query$$,user:$user$$,params:$params$$}=$req$jscomp$4_result$$;try{const $job$$=await queueManager.getQueue("findQueue").add(`${$ctrl$$.name}-get`,{req:{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,shareRoute:$shareRoute$$},ctrl_name:$ctrl$$.name},{timeout:1E4}),$returnvalue$$=await jobFinished($job$$);({result:$req$jscomp$4_result$$}=$returnvalue$$);if(0==$req$jscomp$4_result$$.length)return $res$$.status(404).send({error:ERRORS.ERR_NOT_FOUND,
34
- code:ERRORS.ERR_NOT_FOUND_CODE});$res$$.send($req$jscomp$4_result$$[0])}catch($e$$){console.error($e$$),$res$$.status(400).send($e$$)}})};
35
- controller.prototype.postAgainHandler=function($user$$,$condition$$,$callback$jscomp$0$$,$options$$={req:null}){let $model$$=this.model,$ctrl$$=this;if(!$ctrl$$.post)return $callback$jscomp$0$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n xong"});const $update_tk_vt$$=$condition$$.update_tk_vt;delete $condition$$.update_tk_vt;const $user_update$$={date_updated:new Date,user_updated:$user$$.email};$model$$.find($condition$$).sort({ngay_ct:1}).lean().exec(function($e$jscomp$0$$,
36
- $objsrepost$$){console.log("start repost",$condition$$,$objsrepost$$.length," vouchers","by",$user$$.email);setImmediate(()=>{if($e$jscomp$0$$)return console.error("postAgain: find",$e$jscomp$0$$),$callback$jscomp$0$$({error:$e$jscomp$0$$.message||$e$jscomp$0$$.error||$e$jscomp$0$$});async.mapSeries($objsrepost$$,function($obj$$,$callback$$){setImmediate(async()=>{console.log("postAgain: handle data before post",$obj$$.ma_ct,$obj$$.so_ct,$obj$$.ngay_ct,"by",$user$$.email);if($ctrl$$.reposting)try{await $ctrl$$.reposting($user$$,
37
- $obj$$)}catch($e$$){return $callback$$({error:"Kh\u00f4ng th\u1ec3 x\u1eed l\u00fd \u0111\u01b0\u1ee3c d\u1eef li\u1ec7u tr\u01b0\u1edbc khi repost ch\u1ee9ng t\u1eeb:"+$obj$$.so_ct+", L\u1ed7i: "+($e$$.message||$e$$.error||"")})}$update_tk_vt$$&&$obj$$.details&&(console.log("postAgain: update tk_vt..."),await $obj$$.details.filter($d$$=>$d$$.ma_vt).asyncJoinModel2($obj$$.id_app,global.getModel("dmvt"),{where:"ma_vt",fields:"tk_vt"}),$user_update$$.details=$obj$$.details);try{console.log("postAgain: update voucher..."),
38
- await $model$$.updateOne({_id:$obj$$._id},{...$user_update$$})}catch($e$$){return console.error("postAgain: error update data before repost",$e$$),$callback$$({error:"Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u01b0\u1ee3c d\u1eef li\u1ec7u ch\u1ee9ng t\u1eeb "+$obj$$.so_ct+",Error:"+$e$$.message||$e$$.error||""})}console.log("postAgain: posting...");postData($obj$$,$ctrl$$,function($e$$,$rs$$){console.log("postAgain: reported",$obj$$.ma_ct,$obj$$.so_ct,$obj$$.ngay_ct,"by",$user$$.email);if($e$$)return $callback$$({error:$e$$.message||
39
- $e$$.error||"Kh\u00f4ng th\u1ec3 post s\u1ed5 s\u00e1ch ch\u1ee9ng t\u1eeb:"+$obj$$.so_ct});$callback$$(null,$rs$$)},{req:$options$$.req})})},function($e$$){if($e$$)return console.error("postAgain: Error",$e$$),$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$});console.log("postAgain: finished",$condition$$,$objsrepost$$.length," vouchers","by",$user$$.email);$callback$jscomp$0$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n xong"})})})})};
40
- controller.prototype.updateBook=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/action/postagain`).get(async($req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("updateBookQueue").add(`${$ctrl$$.name}-update-book`,{req:{query:$query$$,body:$body$$,user:$user$$,params:$params$$,
41
- user_agent:$user_agent$$,ip:$ip$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:36E5});let $status_url$$=`${configs.api_url||configs.domain}/api${$ctrl$$.route_name}/job/${global.updateBookQueue.name}/${$job$$.id}`;$status_url$$=$status_url$$.replace(":id_app",$req$$.user.current_id_app);$res$$.send({message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Khi ho\u00e0n th\u00e0nh, ch\u01b0\u01a1ng tr\u00ecnh s\u1ebd g\u1eedi cho b\u1ea1n m\u1ed9t th\u00f4ng b\u00e1o",status_url:$status_url$$})}catch($e$$){$res$$.status(400).send($e$$)}})};
42
- controller.prototype.updateKey=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/updatekey/:_id/:field/:new_value`).get(async function($ip$jscomp$4_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$4_req$$,$user_agent$$=$ip$jscomp$4_req$$.header("user-agent");$ip$jscomp$4_req$$=$ip$jscomp$4_req$$.headers["x-forwarded-for"]||$ip$jscomp$4_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("commonQueue").add(`${$ctrl$$.name}-history`,
43
- {req:{type_job:"updateKey",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$4_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:3E5}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};
44
- controller.prototype.updateField=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/update/:field`).get(async function($ip$jscomp$5_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$5_req$$,$user_agent$$=$ip$jscomp$5_req$$.header("user-agent");$ip$jscomp$5_req$$=$ip$jscomp$5_req$$.headers["x-forwarded-for"]||$ip$jscomp$5_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("commonQueue").add(`${$ctrl$$.name}-history`,
45
- {req:{type_job:"updateField",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$5_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:3E5}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};
46
- controller.prototype.exportToExcel=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/excel/:rpt_id`).get(async function($ip$jscomp$6_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$6_req$$,$user_agent$$=$ip$jscomp$6_req$$.header("user-agent");$ip$jscomp$6_req$$=$ip$jscomp$6_req$$.headers["x-forwarded-for"]||$ip$jscomp$6_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("heavyQueue").add(`${$ctrl$$.name}-export`,{req:{type_job:"export",
47
- query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$6_req$$},ctrl_name:$ctrl$$.name},{timeout:3E5}),$returnvalue$$=await jobFinished($job$$);switch($returnvalue$$.ext){case "xlsx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx");$res$$.end($returnvalue$$.data,"binary");break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");
48
- $res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".docx");$res$$.write($returnvalue$$.data,"binary");$res$$.end(null,"binary");break;case "print":$res$$.send($returnvalue$$.data.join('<p style="page-break-before: always"></p>'));break;case "json":$res$$.json($returnvalue$$.data);break;default:$res$$.send($returnvalue$$.data)}}catch($e$$){$res$$.status(400).send($e$$)}})};
49
- controller.prototype.importFromGoogleSheet=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/import/googlesheet`).get(async function($req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("heavyQueue").add(`${$ctrl$$.name}-import-gs`,{req:{type_job:"googlesheet",query:$query$$,body:$body$$,user:$user$$,
50
- params:$params$$,user_agent:$user_agent$$,ip:$ip$$},ctrl_name:$ctrl$$.name},{timeout:36E5});let $status_url$$=`${configs.api_url||configs.domain}/api${$ctrl$$.route_name}/job/${global.importFromGsQueue.name}/${$job$$.id}`;$status_url$$=$status_url$$.replace(":id_app",$req$$.user.current_id_app);$res$$.send({rows_imported:0,rows_error:[],message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Khi ho\u00e0n th\u00e0nh, ch\u01b0\u01a1ng tr\u00ecnh s\u1ebd g\u1eedi cho b\u1ea1n m\u1ed9t th\u00f4ng b\u00e1o",
51
- status_url:$status_url$$})}catch($e$$){$res$$.status(400).send($e$$)}})};
52
- controller.prototype.importFromJson=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/import/json`).post(async function($req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("heavyQueue").add(`${$ctrl$$.name}-import-json`,{req:{type_job:"json",query:$query$$,body:$body$$,user:$user$$,
53
- params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:36E5});let $status_url$$=`${configs.api_url||configs.domain}/api${$ctrl$$.route_name}/job/${global.importFromJsonQueue.name}/${$job$$.id}`;$status_url$$=$status_url$$.replace(":id_app",$req$$.user.current_id_app);$res$$.send({rows_imported:0,rows_error:[],message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Khi ho\u00e0n th\u00e0nh, ch\u01b0\u01a1ng tr\u00ecnh s\u1ebd g\u1eedi cho b\u1ea1n m\u1ed9t th\u00f4ng b\u00e1o",
54
- status_url:$status_url$$})}catch($e$$){$res$$.status(400).send($e$$)}})};
55
- controller.prototype.importFromExcel=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/import/excel`).post(async function($req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("heavyQueue").add(`${$ctrl$$.name}-import-excel`,{req:{type_job:"excel",query:$query$$,body:$body$$,
56
- user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:36E5});let $status_url$$=`${configs.api_url||configs.domain}/api${$ctrl$$.route_name}/job/${global.importFromExcelQueue.name}/${$job$$.id}`;$status_url$$=$status_url$$.replace(":id_app",$req$$.user.current_id_app);$res$$.send({rows_imported:0,rows_error:[],message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Khi ho\u00e0n th\u00e0nh, ch\u01b0\u01a1ng tr\u00ecnh s\u1ebd g\u1eedi cho b\u1ea1n m\u1ed9t th\u00f4ng b\u00e1o",
57
- status_url:$status_url$$})}catch($e$$){$res$$.status(400).send($e$$)}})};
29
+ controller.prototype.find=function($_route_name_route_name$$,$shareRoute$$=!1,$method$$="GET"){let $ctrl$$=this;const $findRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$1_req$$,$user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.headers["x-forwarded-for"]||$ip$jscomp$1_req$$.connection.remoteAddress;try{findHandler($ctrl$$,{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,
30
+ ip:$ip$jscomp$1_req$$,shareRoute:$shareRoute$$},($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);const {result:$result$$,dataType:$dataType$$}=$returnvalue$$;"xlsx"==$dataType$$?($res$$.setHeader("Content-Type","application/vnd.openxmlformats"),$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx"),$res$$.end($result$$,"binary")):$res$$.send($result$$)})}catch($e$$){$res$$.status(400).send($e$$)}};$_route_name_route_name$$=$_route_name_route_name$$||
31
+ this.route_name;"GET"===$method$$?(this.router.route($_route_name_route_name$$).get($findRoute$$),this.router.route($_route_name_route_name$$+"/excel").get($findRoute$$)):(this.router.route($_route_name_route_name$$).post($findRoute$$),this.router.route($_route_name_route_name$$+"/excel").post($findRoute$$))};
32
+ controller.prototype.get=function($route_name$$,$shareRoute$$=!1){const $ctrl$$=this;this.router.route(`${$route_name$$||this.route_name}/:id`).get(async function($req$$,$res$$){var $body$$=$req$$.params.id;if(!global.mongoose.Types.ObjectId.isValid($body$$))return $res$$.status(404).send({error:ERRORS.ERR_ID_INVALID,code:ERRORS.ERR_ID_INVALID_CODE});$body$$={_id:$body$$};const $user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,{query:$query$$,
33
+ user:$user$$,params:$params$$}=$req$$;try{findHandler($ctrl$$,{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,shareRoute:$shareRoute$$},($e$jscomp$16_result$$,$returnvalue$$)=>{if($e$jscomp$16_result$$)return $res$$.status(400).send($e$jscomp$16_result$$);({result:$e$jscomp$16_result$$}=$returnvalue$$);if(0==$e$jscomp$16_result$$.length)return $res$$.status(404).send({error:ERRORS.ERR_NOT_FOUND,code:ERRORS.ERR_NOT_FOUND_CODE});$res$$.send($e$jscomp$16_result$$[0])})}catch($e$$){console.error($e$$),
34
+ $res$$.status(400).send($e$$)}})};
35
+ controller.prototype.postAgainHandler=function($user$$,$condition$$,$callback$jscomp$0$$,$options$$={req:null}){let $model$$=this.model,$ctrl$$=this;if(!$ctrl$$.post)return $callback$jscomp$0$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n xong"});const $update_tk_vt$$=$condition$$.update_tk_vt;delete $condition$$.update_tk_vt;const $user_update$$={date_updated:new Date,user_updated:$user$$.email};$model$$.find($condition$$).sort({ngay_ct:1}).lean().exec(function($e$jscomp$0$$,$objsrepost$$){console.log("start repost",
36
+ $condition$$,$objsrepost$$.length," vouchers","by",$user$$.email);setImmediate(()=>{if($e$jscomp$0$$)return console.error("postAgain: find",$e$jscomp$0$$),$callback$jscomp$0$$({error:$e$jscomp$0$$.message||$e$jscomp$0$$.error||$e$jscomp$0$$});async.mapSeries($objsrepost$$,function($obj$$,$callback$$){setImmediate(async()=>{console.log("postAgain: handle data before post",$obj$$.ma_ct,$obj$$.so_ct,$obj$$.ngay_ct,"by",$user$$.email);if($ctrl$$.reposting)try{await $ctrl$$.reposting($user$$,$obj$$)}catch($e$$){return $callback$$({error:"Kh\u00f4ng th\u1ec3 x\u1eed l\u00fd \u0111\u01b0\u1ee3c d\u1eef li\u1ec7u tr\u01b0\u1edbc khi repost ch\u1ee9ng t\u1eeb:"+
37
+ $obj$$.so_ct+", L\u1ed7i: "+($e$$.message||$e$$.error||"")})}$update_tk_vt$$&&$obj$$.details&&(console.log("postAgain: update tk_vt..."),await $obj$$.details.filter($d$$=>$d$$.ma_vt).asyncJoinModel2($obj$$.id_app,global.getModel("dmvt"),{where:"ma_vt",fields:"tk_vt"}),$user_update$$.details=$obj$$.details);try{console.log("postAgain: update voucher..."),await $model$$.updateOne({_id:$obj$$._id},{...$user_update$$})}catch($e$$){return console.error("postAgain: error update data before repost",$e$$),
38
+ $callback$$({error:"Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u01b0\u1ee3c d\u1eef li\u1ec7u ch\u1ee9ng t\u1eeb "+$obj$$.so_ct+",Error:"+$e$$.message||$e$$.error||""})}console.log("postAgain: posting...");postData($obj$$,$ctrl$$,function($e$$,$rs$$){console.log("postAgain: reported",$obj$$.ma_ct,$obj$$.so_ct,$obj$$.ngay_ct,"by",$user$$.email);if($e$$)return $callback$$({error:$e$$.message||$e$$.error||"Kh\u00f4ng th\u1ec3 post s\u1ed5 s\u00e1ch ch\u1ee9ng t\u1eeb:"+$obj$$.so_ct});$callback$$(null,
39
+ $rs$$)},{req:$options$$.req})})},function($e$$){if($e$$)return console.error("postAgain: Error",$e$$),$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$});console.log("postAgain: finished",$condition$$,$objsrepost$$.length," vouchers","by",$user$$.email);$callback$jscomp$0$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n xong"})})})})};
40
+ controller.prototype.updateBook=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/action/postagain`).get(async($ip$jscomp$3_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$3_req$$,$user_agent$$=$ip$jscomp$3_req$$.header("user-agent");$ip$jscomp$3_req$$=$ip$jscomp$3_req$$.headers["x-forwarded-for"]||$ip$jscomp$3_req$$.connection.remoteAddress;try{updateBookHandler($ctrl$$,{query:$query$$,body:$body$$,user:$user$$,params:$params$$,
41
+ user_agent:$user_agent$$,ip:$ip$jscomp$3_req$$,files:$files$$},()=>{}),$res$$.send({message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Khi ho\u00e0n th\u00e0nh, ch\u01b0\u01a1ng tr\u00ecnh s\u1ebd g\u1eedi cho b\u1ea1n m\u1ed9t th\u00f4ng b\u00e1o"})}catch($e$$){$res$$.status(400).send($e$$)}})};
42
+ controller.prototype.updateKey=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/updatekey/:_id/:field/:new_value`).get(async function($ip$jscomp$4_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$4_req$$,$user_agent$$=$ip$jscomp$4_req$$.header("user-agent");$ip$jscomp$4_req$$=$ip$jscomp$4_req$$.headers["x-forwarded-for"]||$ip$jscomp$4_req$$.connection.remoteAddress;try{updateKeyHandler($ctrl$$,{type_job:"updateKey",query:$query$$,
43
+ body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$4_req$$,files:$files$$},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)})}catch($e$$){$res$$.status(400).send($e$$)}})};
44
+ controller.prototype.updateField=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/update/:field`).get(async function($ip$jscomp$5_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$5_req$$,$user_agent$$=$ip$jscomp$5_req$$.header("user-agent");$ip$jscomp$5_req$$=$ip$jscomp$5_req$$.headers["x-forwarded-for"]||$ip$jscomp$5_req$$.connection.remoteAddress;try{updateFieldHandler($ctrl$$,{type_job:"updateField",query:$query$$,body:$body$$,
45
+ user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$5_req$$,files:$files$$},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)})}catch($e$$){$res$$.status(400).send($e$$)}})};
46
+ controller.prototype.exportToExcel=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/excel/:rpt_id`).get(async function($ip$jscomp$6_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$6_req$$,$user_agent$$=$ip$jscomp$6_req$$.header("user-agent");$ip$jscomp$6_req$$=$ip$jscomp$6_req$$.headers["x-forwarded-for"]||$ip$jscomp$6_req$$.connection.remoteAddress;try{exportHandler($ctrl$$,{type_job:"export",query:$query$$,body:$body$$,user:$user$$,params:$params$$,
47
+ user_agent:$user_agent$$,ip:$ip$jscomp$6_req$$},($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);switch($returnvalue$$.ext){case "xlsx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx");$res$$.end($returnvalue$$.data,"binary");break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition",
48
+ "attachment; filename="+$ctrl$$.name+".docx");$res$$.write($returnvalue$$.data,"binary");$res$$.end(null,"binary");break;case "print":$res$$.send($returnvalue$$.data.join('<p style="page-break-before: always"></p>'));break;case "json":$res$$.json($returnvalue$$.data);break;default:$res$$.send($returnvalue$$.data)}})}catch($e$$){$res$$.status(400).send($e$$)}})};
49
+ controller.prototype.importFromGoogleSheet=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/import/googlesheet`).get(async function($ip$jscomp$7_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$7_req$$,$user_agent$$=$ip$jscomp$7_req$$.header("user-agent");$ip$jscomp$7_req$$=$ip$jscomp$7_req$$.headers["x-forwarded-for"]||$ip$jscomp$7_req$$.connection.remoteAddress;try{importFromGsHandler($ctrl$$,{type_job:"googlesheet",query:$query$$,body:$body$$,
50
+ user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$7_req$$},()=>{}),$res$$.send({rows_imported:0,rows_error:[],message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Khi ho\u00e0n th\u00e0nh, ch\u01b0\u01a1ng tr\u00ecnh s\u1ebd g\u1eedi cho b\u1ea1n m\u1ed9t th\u00f4ng b\u00e1o"})}catch($e$$){$res$$.status(400).send($e$$)}})};
51
+ controller.prototype.importFromJson=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/import/json`).post(async function($ip$jscomp$8_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$8_req$$,$user_agent$$=$ip$jscomp$8_req$$.header("user-agent");$ip$jscomp$8_req$$=$ip$jscomp$8_req$$.headers["x-forwarded-for"]||$ip$jscomp$8_req$$.connection.remoteAddress;try{importFromJsonHandler($ctrl$$,{type_job:"json",query:$query$$,body:$body$$,
52
+ user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$8_req$$,files:$files$$},()=>{}),$res$$.send({rows_imported:0,rows_error:[],message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Khi ho\u00e0n th\u00e0nh, ch\u01b0\u01a1ng tr\u00ecnh s\u1ebd g\u1eedi cho b\u1ea1n m\u1ed9t th\u00f4ng b\u00e1o"})}catch($e$$){$res$$.status(400).send($e$$)}})};
53
+ controller.prototype.importFromExcel=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/import/excel`).post(async function($ip$jscomp$9_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$9_req$$,$user_agent$$=$ip$jscomp$9_req$$.header("user-agent");$ip$jscomp$9_req$$=$ip$jscomp$9_req$$.headers["x-forwarded-for"]||$ip$jscomp$9_req$$.connection.remoteAddress;try{importFromExcelHandler($ctrl$$,{type_job:"excel",query:$query$$,body:$body$$,
54
+ user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$9_req$$,files:$files$$},()=>{}),$res$$.send({rows_imported:0,rows_error:[],message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Khi ho\u00e0n th\u00e0nh, ch\u01b0\u01a1ng tr\u00ecnh s\u1ebd g\u1eedi cho b\u1ea1n m\u1ed9t th\u00f4ng b\u00e1o"})}catch($e$$){$res$$.status(400).send($e$$)}})};
58
55
  controller.prototype.create=function(){let $ctrl$$=this;this.router.route(this.route_name).post(async function($req$$,$res$$){let $body$$=$req$$.body;if(!$body$$)return $res$$.status(411).send({error:"Kh\u00f4ng c\u00f3 n\u1ed9i dung c\u1ea7n l\u01b0u"});$req$$.files&&0<underscore.keys($req$$.files).length&&("JSON"!=$body$$.return&&($req$$.uploadFile=!0),underscore.extend($body$$,$req$$.files));const {query:$query$$,user:$user$$,params:$params$$,files:$files$$,uploadFile:$uploadFile$$}=$req$$,$user_agent$$=
59
- $req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("createQueue").add(`${$ctrl$$.name}-create`,{req:{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,uploadFile:$uploadFile$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);!1===$req$$.query.return_data?$res$$.send({_id:$returnvalue$$._id.toString()}):$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};
56
+ $req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{createHandler($ctrl$$,{query:$query$$,data:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,uploadFile:$uploadFile$$},($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);!1===$req$$.query.return_data?$res$$.send({_id:$returnvalue$$._id.toString()}):$res$$.send($returnvalue$$)})}catch($e$$){$res$$.status(400).send($e$$)}})};
60
57
  controller.prototype.quickCreate=function(){let $model$$=this.model,$name$$=this.name,$ctrl$$=this,$createFromTemplate$$=async($req$$,$res$$,$body$jscomp$11_query$$)=>{if(!$body$jscomp$11_query$$){$body$jscomp$11_query$$=$req$$.params.template_code;if(!$body$jscomp$11_query$$)return $res$$.status(400).send({error:"M\u1eabu d\u1eef li\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i"});$body$jscomp$11_query$$={id_app:$req$$.user.current_id_app,voucher_code:$name$$.toUpperCase(),code:$body$jscomp$11_query$$};$body$jscomp$11_query$$=
61
58
  await templatevoucher.findOne($body$jscomp$11_query$$).lean();if(!$body$jscomp$11_query$$)return $res$$.status(400).send({error:"M\u1eabu d\u1eef li\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i"})}$body$jscomp$11_query$$=$body$jscomp$11_query$$.data||{};delete $body$jscomp$11_query$$.so_ct;delete $body$jscomp$11_query$$.ngay_ct;delete $body$jscomp$11_query$$.user_created;delete $body$jscomp$11_query$$.date_created;delete $body$jscomp$11_query$$.user_updated;delete $body$jscomp$11_query$$.date_updated;delete $body$jscomp$11_query$$._id;
62
59
  delete $body$jscomp$11_query$$.pkey;delete $body$jscomp$11_query$$.__v;let $_data$$=$req$$.query;$req$$.body&&($_data$$=Object.assign($_data$$,$req$$.body));for(let $key$$ in $_data$$)$_data$$[$key$$]&&"access_token"!==$key$$&&"token"!==$key$$&&"_id"!==$key$$&&(underscore.has($model$$.schema.paths,$key$$)&&($body$jscomp$11_query$$[$key$$]=$_data$$[$key$$]),$body$jscomp$11_query$$.details&&$body$jscomp$11_query$$.details.forEach($d$$=>{$d$$[$key$$]=$_data$$[$key$$]}));const {query:$query$$,user:$user$$,
63
- params:$params$$,files:$files$$,uploadFile:$uploadFile$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("createQueue").add(`${$ctrl$$.name}-create`,{req:{query:$query$$,body:$body$jscomp$11_query$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,uploadFile:$uploadFile$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);
64
- !1===$req$$.query.return_data?$res$$.send({_id:$returnvalue$$._id.toString()}):$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}};this.router.route(`${this.route_name}/quickcreate/:template_code`).get(function($req$$,$res$$){$createFromTemplate$$($req$$,$res$$)});this.router.route(`${this.route_name}/quickcreate/:template_code`).post(function($req$$,$res$$){$createFromTemplate$$($req$$,$res$$)})};
60
+ params:$params$$,files:$files$$,uploadFile:$uploadFile$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{createHandler($ctrl$$,{query:$query$$,body:$body$jscomp$11_query$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,uploadFile:$uploadFile$$},($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);!1===$req$$.query.return_data?$res$$.send({_id:$returnvalue$$._id.toString()}):
61
+ $res$$.send($returnvalue$$)})}catch($e$$){$res$$.status(400).send($e$$)}};this.router.route(`${this.route_name}/quickcreate/:template_code`).get(function($req$$,$res$$){$createFromTemplate$$($req$$,$res$$)});this.router.route(`${this.route_name}/quickcreate/:template_code`).post(function($req$$,$res$$){$createFromTemplate$$($req$$,$res$$)})};
65
62
  controller.prototype.update=function(){let $ctrl$$=this;this.router.route(this.route_name+"/:id").put(async function($req$$,$res$$){let $body$$=$req$$.body;$req$$.files&&underscore.extend($body$$,$req$$.files);let $data$$;try{$data$$=bodyToJson($body$$)}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}const {query:$query$$,user:$user$$,params:$params$$,files:$files$$,uploadFile:$uploadFile$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||
66
- $req$$.connection.remoteAddress,$id$$=$req$$.params.id;try{const $job$$=await queueManager.getQueue("updateQueue").add(`${$ctrl$$.name}-update`,{req:{query:$query$$,id:$id$$,data:$data$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,uploadFile:$uploadFile$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);!1===$req$$.query.return_data?$res$$.send({_id:$returnvalue$$._id.toString()}):$res$$.send($returnvalue$$)}catch($e$$){console.error("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt d\u1eef li\u1ec7u",
63
+ $req$$.connection.remoteAddress,$id$$=$req$$.params.id;try{updateHandler($ctrl$$,{query:$query$$,id:$id$$,data:$data$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,uploadFile:$uploadFile$$},($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});!1===$req$$.query.return_data?$res$$.send({_id:$returnvalue$$._id.toString()}):$res$$.send($returnvalue$$)})}catch($e$$){console.error("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt d\u1eef li\u1ec7u",
67
64
  $e$$),$res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}})};
68
- controller.prototype.delete=function(){let $ctrl$$=this;this.router.route(this.route_name+"/:id").delete(async($ip$jscomp$13_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$13_req$$,$user_agent$$=$ip$jscomp$13_req$$.header("user-agent");$ip$jscomp$13_req$$=$ip$jscomp$13_req$$.headers["x-forwarded-for"]||$ip$jscomp$13_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("deleteQueue").add(`${$ctrl$$.name}-delete`,{req:{query:$query$$,
69
- body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$13_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};
70
- controller.prototype.deleteMany=function($route_name$$,$shareRoute$$=!1){let $ctrl$$=this;this.router.route(`${$route_name$$||this.route_name}/action/delete`).delete(async($ip$jscomp$14_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$14_req$$,$user_agent$$=$ip$jscomp$14_req$$.header("user-agent");$ip$jscomp$14_req$$=$ip$jscomp$14_req$$.headers["x-forwarded-for"]||$ip$jscomp$14_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("commonQueue").add(`${$ctrl$$.name}-delete-many`,
71
- {req:{type_job:"deleteMany",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$14_req$$},shareRoute:$shareRoute$$,ctrl_name:$ctrl$$.name},{timeout:18E5}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};
72
- controller.prototype.history=function(){let $ctrl$$=this;this.router.route(this.route_name+"/g/history/:id").get(async function($ip$jscomp$15_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$15_req$$,$user_agent$$=$ip$jscomp$15_req$$.header("user-agent");$ip$jscomp$15_req$$=$ip$jscomp$15_req$$.headers["x-forwarded-for"]||$ip$jscomp$15_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("commonQueue").add(`${$ctrl$$.name}-history`,
73
- {req:{type_job:"history",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$15_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};
74
- controller.prototype.logs=function(){let $ctrl$$=this;this.router.route(this.route_name+"/g/log/:action").get(async function($ip$jscomp$16_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$16_req$$,$user_agent$$=$ip$jscomp$16_req$$.header("user-agent");$ip$jscomp$16_req$$=$ip$jscomp$16_req$$.headers["x-forwarded-for"]||$ip$jscomp$16_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("commonQueue").add(`${$ctrl$$.name}-log`,
75
- {req:{type_job:"log",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$16_req$$,files:$files$$},ctrl_name:$ctrl$$.name},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}})};const {Queue}=require("bullmq");
76
- controller.prototype.jobStatus=function(){this.router.route(this.route_name+"/job/:queue_name/:id").get(async function($req$$,$res$$){try{const $job$$=await (new Queue($req$$.params.queue_name)).getJob($req$$.params.id);if(!$job$$)return $res$$.status(400).send({error:"Job kh\u00f4ng t\u1ed3n t\u1ea1i"});let $jsonJob$$=$job$$.toJSON();delete $jsonJob$$.data;$res$$.send($jsonJob$$)}catch($e$$){$res$$.status(400).send({error:"Kh\u00f4ng th\u1ec3 l\u1ea5y th\u00f4ng tin c\u1ee7a job n\u00e0y"})}})};
77
- controller.prototype.postData=($obj$$,$cb$$,$options$$={})=>postData($obj$$,this,$cb$$,$options$$);
78
- controller.prototype.route=function($setRoute$$){this.history();this.logs();this.find("/search"+this.route_name,!1,"POST");this.find();this.get();this.find(`/${this.module}/shared`,!0);this.get(`/${this.module}/shared`,!0);this.getFieldNoRight();this.create();this.quickCreate();this.update();this.delete();this.deleteMany();this.getNextId();this.exportToExcel();this.importFromExcel();this.importFromJson();this.importFromGoogleSheet();this.updateField();this.updateKey();this.updateBook();this.jobStatus();
79
- $setRoute$$&&$setRoute$$(this.router)};controller.runWebhooks=runWebhooks;controller.postData=postData;controller.pushNotification=pushNotification;controller.create=async($user$$,$ctrl$$,$data$$,$callback$$,$id_be_supply_by_user$$,$req$$,$action$$="add")=>{$req$$=$req$$||{};$req$$.user=$user$$;$req$$.data=$data$$;$req$$.id_be_supply_by_user=$id_be_supply_by_user$$;$req$$.action=$action$$;return createHandler($ctrl$$,$req$$,$callback$$)};module.exports=controller;
65
+ controller.prototype.delete=function(){let $ctrl$$=this;this.router.route(this.route_name+"/:id").delete(async($ip$jscomp$13_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$13_req$$,$user_agent$$=$ip$jscomp$13_req$$.header("user-agent");$ip$jscomp$13_req$$=$ip$jscomp$13_req$$.headers["x-forwarded-for"]||$ip$jscomp$13_req$$.connection.remoteAddress;try{deleteHandler($ctrl$$,{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,
66
+ ip:$ip$jscomp$13_req$$,files:$files$$},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});$res$$.send($rs$$)})}catch($e$$){$res$$.status(400).send($e$$)}})};
67
+ controller.prototype.deleteMany=function($route_name$$){let $ctrl$$=this;this.router.route(`${$route_name$$||this.route_name}/action/delete`).delete(async($ip$jscomp$14_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$14_req$$,$user_agent$$=$ip$jscomp$14_req$$.header("user-agent");$ip$jscomp$14_req$$=$ip$jscomp$14_req$$.headers["x-forwarded-for"]||$ip$jscomp$14_req$$.connection.remoteAddress;try{deleteManyHandler($ctrl$$,{type_job:"deleteMany",query:$query$$,
68
+ body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$14_req$$},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});$res$$.send($rs$$)})}catch($e$$){$res$$.status(400).send($e$$)}})};
69
+ controller.prototype.history=function(){let $ctrl$$=this;this.router.route(this.route_name+"/g/history/:id").get(async function($ip$jscomp$15_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$15_req$$,$user_agent$$=$ip$jscomp$15_req$$.header("user-agent");$ip$jscomp$15_req$$=$ip$jscomp$15_req$$.headers["x-forwarded-for"]||$ip$jscomp$15_req$$.connection.remoteAddress;try{historyHandler($ctrl$$,{type_job:"history",query:$query$$,body:$body$$,user:$user$$,
70
+ params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$15_req$$,files:$files$$},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});$res$$.send($rs$$)})}catch($e$$){$res$$.status(400).send($e$$)}})};
71
+ controller.prototype.logs=function(){let $ctrl$$=this;this.router.route(this.route_name+"/g/log/:action").get(async function($ip$jscomp$16_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$16_req$$,$user_agent$$=$ip$jscomp$16_req$$.header("user-agent");$ip$jscomp$16_req$$=$ip$jscomp$16_req$$.headers["x-forwarded-for"]||$ip$jscomp$16_req$$.connection.remoteAddress;try{logHandler($ctrl$$,{type_job:"log",query:$query$$,body:$body$$,user:$user$$,
72
+ params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$16_req$$,files:$files$$},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});$res$$.send($rs$$)})}catch($e$$){$res$$.status(400).send($e$$)}})};controller.prototype.postData=($obj$$,$cb$$,$options$$={})=>postData($obj$$,this,$cb$$,$options$$);
73
+ controller.prototype.route=function($setRoute$$){this.history();this.logs();this.find("/search"+this.route_name,!1,"POST");this.find();this.get();this.find(`/${this.module}/shared`,!0);this.get(`/${this.module}/shared`,!0);this.getFieldNoRight();this.create();this.quickCreate();this.update();this.delete();this.deleteMany();this.getNextId();this.exportToExcel();this.importFromExcel();this.importFromJson();this.importFromGoogleSheet();this.updateField();this.updateKey();this.updateBook();$setRoute$$&&
74
+ $setRoute$$(this.router)};controller.runWebhooks=runWebhooks;controller.postData=postData;controller.pushNotification=pushNotification;controller.create=async($user$$,$ctrl$$,$data$$,$callback$$,$id_be_supply_by_user$$,$req$$,$action$$="add")=>{$req$$=$req$$||{};$req$$.user=$user$$;$req$$.data=$data$$;$req$$.id_be_supply_by_user=$id_be_supply_by_user$$;$req$$.action=$action$$;return createHandler($ctrl$$,$req$$,$callback$$)};module.exports=controller;
@@ -1,4 +1,4 @@
1
- 'use strict';const _=require("lodash"),numeral=require("numeral"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),reportinfo=global.getModel("reportinfo"),{evalute,getParameterData,JSONParser}=require("../libs/utils"),utils=require("../libs/utils"),rptHandler=require("./rptHandler"),{jobFinished,queueManager}=require("./QueueManager");
1
+ 'use strict';const _=require("lodash"),numeral=require("numeral"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),reportinfo=global.getModel("reportinfo"),{evalute,getParameterData,JSONParser}=require("../libs/utils"),utils=require("../libs/utils"),rptHandler=require("./rptHandler"),rptExcelHandler=require("./rptExcelHandler"),rptCreateRouteHandler=require("./rptCreateRouteHandler");
2
2
  class controllerRPT{constructor($router$$,$rptId$$,$fecthData$$,$options$$={}){this.module=$rptId$$;this.router=$router$$;this.options=$options$$;this.fecthDataFunc=$fecthData$$;this.notNeedRight=async($user$$,$_options$$={})=>{let $nnr$$=$options$$.notNeedRight;_.isFunction($nnr$$)&&($nnr$$=$nnr$$($user$$,$_options$$));return $nnr$$};this.getDataFunc=()=>{console.log("get data from server",$rptId$$,"...");if($options$$.stream)return $fecthData$$;if(!global.reportMainPool||!$options$$.queue&&global.reportMainPool.busy())return console.log("run report on main thread",
3
3
  $rptId$$,"..."),($req$$,$callback$$)=>{$fecthData$$($req$$,($e$jscomp$0$$,$data$$)=>{console.log("report completed",$rptId$$);setImmediate(async()=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);var $func_string$jscomp$1_rptInfo$$=await reportinfo.findOne({code:($req$$.query.report_info_code||$rptId$$).toLowerCase()}).lean();if($func_string$jscomp$1_rptInfo$$&&$func_string$jscomp$1_rptInfo$$.handle_data_expression_server){if(0<=$func_string$jscomp$1_rptInfo$$.handle_data_expression_server.indexOf("async "))return $callback$$("async function is not allow");
4
4
  $func_string$jscomp$1_rptInfo$$=`return (async ()=>{
@@ -19,11 +19,10 @@ await reportinfo.findOne({code:($req$$.query.report_info_code||$rptId$$).toLower
19
19
 
20
20
  })`;try{let $rs$$=await evalute($func_string_rptInfo$$,{data:$data$$,moment,numeral,condition:$req$$.query,user:$req$$.user,_,utils,getData:getParameterData})();if($rs$$){if($rs$$.error)return console.error("handle_data_expression_server",$rs$$.error,$func_string_rptInfo$$,$rptId$$),$callback$$($rs$$.error.message||$rs$$.error);$data$$=$rs$$}}catch($e$$){return console.error("handle_data_expression_server",$e$$,$func_string_rptInfo$$,$rptId$$),$callback$$($e$$.message||$e$$)}}$callback$$(null,
21
21
  $data$$)})})}};global.report_controllers[$rptId$$.toUpperCase()]=this;this.base_path=!1===$options$$.require_id_app?"/":"/:id_app/";const $mainRoute$$=async($ip_req$$,$res$$)=>{if($options$$.stream)rptHandler(this,$ip_req$$,($e$$,$rs$$)=>{if($e$$)return $e$$.error?$res$$.status(500).send($e$$):$res$$.status(500).send({error:$e$$.message||$e$$});$res$$.send($rs$$)},$res$$);else{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip_req$$,$user_agent$$=$ip_req$$.header("user-agent");
22
- $ip_req$$=$ip_req$$.headers["x-forwarded-for"]||$ip_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("rptQueue").add(`${$rptId$$}-rpt`,{req:{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip_req$$,files:$files$$},ctrl_name:$rptId$$},{timeout:6E5}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){console.error("L\u1ed7i t\u1ea1o job cho b\u00e1o c\u00e1o",$rptId$$,$e$$),$res$$.status(400).send($e$$)}}},
23
- $excelRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$1_req$$,$user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.headers["x-forwarded-for"]||$ip$jscomp$1_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("rptCommonQueue").add(`${$rptId$$}-excel`,{req:{type_job:"excel",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,
24
- ip:$ip$jscomp$1_req$$,files:$files$$},ctrl_name:$rptId$$},{timeout:6E5}),$returnvalue$$=await jobFinished($job$$),$result$$=$returnvalue$$.data;switch($returnvalue$$.type){case "xlsx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".xlsx");$res$$.end($result$$,"binary");break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition",
25
- "attachment; filename="+$rptId$$+".docx");$res$$.write($result$$,"binary");$res$$.end(null,"binary");break;default:$res$$.send($result$$)}}catch($e$$){$res$$.status(400).send($e$$)}};$router$$.route(`${this.base_path+this.module}`).get($mainRoute$$);$router$$.route(`${this.base_path+this.module}`).post($mainRoute$$);$router$$.route(`${this.base_path+this.module}/excel`).get($excelRoute$$);$router$$.route(`${this.base_path+this.module}/excel`).post($excelRoute$$)}getData($req$$,$callback$$){setImmediate(()=>
26
- {try{this.fecthDataFunc($req$$,$callback$$)}catch($e$$){console.error($e$$),$callback$$($e$$.message)}})}createRoute($routeName$$,$callbackRoute_handler$$,$_options$$={method:"GET"}){const $self$$=this,$rptId$$=$self$$.module;$_options$$.method=$_options$$.method?$_options$$.method.toUpperCase():"GET";const $route_action_key$$=`rpt_route_action_${$self$$.module}_${$routeName$$}_${$_options$$.method}`;$self$$[$route_action_key$$]=$callbackRoute_handler$$;$callbackRoute_handler$$=async function($ip$jscomp$2_req$$,
27
- $res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$2_req$$,$user_agent$$=$ip$jscomp$2_req$$.header("user-agent");$ip$jscomp$2_req$$=$ip$jscomp$2_req$$.headers["x-forwarded-for"]||$ip$jscomp$2_req$$.connection.remoteAddress;try{const $job$$=await queueManager.getQueue("rptCommonQueue").add(`${$self$$.module}-report-extra-action`,{req:{type_job:"createRoute",routeName:$routeName$$,_options:$_options$$,route_action_key:$route_action_key$$,query:$query$$,
28
- body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$2_req$$,files:$files$$},ctrl_name:$rptId$$},{timeout:6E4}),$returnvalue$$=await jobFinished($job$$);$res$$.send($returnvalue$$)}catch($e$$){$res$$.status(400).send($e$$)}};"DELETE"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).delete($callbackRoute_handler$$):"POST"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).post($callbackRoute_handler$$):
29
- "PUT"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).put($callbackRoute_handler$$):this.router.route(`${this.base_path+this.module}/${$routeName$$}`).get($callbackRoute_handler$$)}}module.exports=controllerRPT;
22
+ $ip_req$$=$ip_req$$.headers["x-forwarded-for"]||$ip_req$$.connection.remoteAddress;try{rptHandler(this,{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip_req$$,files:$files$$},($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($returnvalue$$)})}catch($e$$){console.error("L\u1ed7i t\u1ea1o job cho b\u00e1o c\u00e1o",$rptId$$,$e$$),$res$$.status(400).send($e$$)}}},$excelRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,
23
+ body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$1_req$$,$user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.headers["x-forwarded-for"]||$ip$jscomp$1_req$$.connection.remoteAddress;try{rptExcelHandler(this,{type_job:"excel",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$1_req$$,files:$files$$},($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);$e$$=$returnvalue$$.data;switch($returnvalue$$.type){case "xlsx":$res$$.setHeader("Content-Type",
24
+ "application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".xlsx");$res$$.end($e$$,"binary");break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".docx");$res$$.write($e$$,"binary");$res$$.end(null,"binary");break;default:$res$$.send($e$$)}})}catch($e$$){$res$$.status(400).send($e$$)}};$router$$.route(`${this.base_path+
25
+ this.module}`).get($mainRoute$$);$router$$.route(`${this.base_path+this.module}`).post($mainRoute$$);$router$$.route(`${this.base_path+this.module}/excel`).get($excelRoute$$);$router$$.route(`${this.base_path+this.module}/excel`).post($excelRoute$$)}getData($req$$,$callback$$){setImmediate(()=>{try{this.fecthDataFunc($req$$,$callback$$)}catch($e$$){console.error($e$$),$callback$$($e$$.message)}})}createRoute($routeName$$,$callbackRoute_handler$$,$_options$$={method:"GET"}){const $self$$=this;$_options$$.method=
26
+ $_options$$.method?$_options$$.method.toUpperCase():"GET";const $route_action_key$$=`rpt_route_action_${$self$$.module}_${$routeName$$}_${$_options$$.method}`;$self$$[$route_action_key$$]=$callbackRoute_handler$$;$callbackRoute_handler$$=async function($ip$jscomp$2_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$2_req$$,$user_agent$$=$ip$jscomp$2_req$$.header("user-agent");$ip$jscomp$2_req$$=$ip$jscomp$2_req$$.headers["x-forwarded-for"]||$ip$jscomp$2_req$$.connection.remoteAddress;
27
+ try{rptCreateRouteHandler($self$$,{type_job:"createRoute",routeName:$routeName$$,_options:$_options$$,route_action_key:$route_action_key$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$2_req$$,files:$files$$},($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($returnvalue$$)})}catch($e$$){$res$$.status(400).send($e$$)}};"DELETE"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).delete($callbackRoute_handler$$):
28
+ "POST"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).post($callbackRoute_handler$$):"PUT"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).put($callbackRoute_handler$$):this.router.route(`${this.base_path+this.module}/${$routeName$$}`).get($callbackRoute_handler$$)}}module.exports=controllerRPT;
@@ -5,32 +5,33 @@ ERR_ID_INVALID:"ERR_ID_INVALID: Id kh\u00f4ng h\u1ee3p l\u1ec7",ERR_ID_INVALID_C
5
5
  async function createIdRef($model_pathsHaveRef$$,$data$$){$model_pathsHaveRef$$=Object.values($model_pathsHaveRef$$.schema.paths).filter($path$$=>$path$$.options&&$path$$.options.ref&&$path$$.options.localField&&$path$$.options.foreignField);try{return await Promise.all($model_pathsHaveRef$$.map($path$$=>new Promise($resove$$=>{setImmediate(async()=>{let $namePath$$=$path$$.path;var $modelRef_modelRefName$$=$path$$.options.ref,$localField_obj$$=$path$$.options.localField;let $foreignField$$=$path$$.options.foreignField;
6
6
  $data$$[$localField_obj$$]&&("_id"!==$foreignField$$||global.mongoose.Types.ObjectId.isValid($data$$[$localField_obj$$]))?($modelRef_modelRefName$$=mongoose.models[$modelRef_modelRefName$$.toLowerCase()])?($localField_obj$$=await $modelRef_modelRefName$$.findOne({id_app:$data$$.id_app,[$foreignField$$]:$data$$[$localField_obj$$]}).lean(),$data$$[$namePath$$]=$localField_obj$$?$localField_obj$$._id.toString():null):$data$$[$namePath$$]=null:$data$$[$namePath$$]=null;$resove$$($path$$)})})))}catch($e2$$){return console.error("error create ref data",
7
7
  $e2$$),null}}function deleteEmptyArray($condition$$,$key$$){$condition$$&&$condition$$[$key$$]&&_.isArray($condition$$[$key$$])&&(0===$condition$$[$key$$].length?delete $condition$$[$key$$]:($condition$$[$key$$].forEach($item$$=>{deleteEmptyArray($item$$,"$and");deleteEmptyArray($item$$,"$or");deleteEmptyArray($item$$,"$nor")}),0===$condition$$[$key$$].length&&delete $condition$$[$key$$]))}
8
- function bodyToJson($body$$){$body$$.json&&($body$$=JSONParser($body$$.json));delete $body$$._id;delete $body$$.__v;return $body$$}
8
+ function bodyToJson($body$$){try{return $body$$&&$body$$.json&&($body$$=JSONParser($body$$.json)),$body$$||($body$$={}),delete $body$$._id,delete $body$$.__v,$body$$}catch($e$$){return console.error("parse body data",$e$$,$body$$),{}}}
9
9
  async function asyncBodyToJson($body$$,$ctrl$$,$id_app$$,$voucher_options$$){$voucher_options$$||($voucher_options$$=(await OptionsModel.findOne({id_app:$id_app$$,id_func:$ctrl$$.name},{option:1}).lean()||{}).option);$body$$=bodyToJson($body$$);if($voucher_options$$)for(let $field$$ in $voucher_options$$)!$body$$[$field$$]&&"_id"!==$field$$&&$voucher_options$$[$field$$]&&underscore.has($ctrl$$.model.schema.paths,$field$$)&&($body$$[$field$$]=$voucher_options$$[$field$$]);for(let $key$$ in $body$$)if(Array.isArray($body$$[$key$$])&&
10
10
  $body$$[$key$$].forEach($r$$=>{_.isObject($r$$)&&delete $r$$._id}),$body$$[$key$$]&&$body$$[$key$$]instanceof String&&(0==$body$$[$key$$].trim().indexOf("[")||0==$body$$[$key$$].trim().indexOf("{"))&&("mixed"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()||"array"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()))try{$body$$[$key$$]=JSONParser($body$$[$key$$])}catch($e$$){console.error($e$$)}return $body$$}
11
11
  const getData=($id_app$$,$collection$$,$field$$,$condition$$)=>{if("token"===$collection$$||"asskey"===$collection$$)throw`Collection ${$collection$$} is not allow`;"dmkh"===$collection$$&&($collection$$="customer");"dmtk"===$collection$$&&($collection$$="account");let $col$$=mongoose.models[$collection$$];if($col$$){if($col$$.schema.paths.id_app){if(!$id_app$$)throw`Collection ${$collection$$} required id_app`;$condition$$.id_app=$id_app$$}let $fields$$;$field$$&&($fields$$={[$field$$]:1});if("user"===
12
12
  $collection$$||"participant"===$collection$$)$fields$$={name:1};"app"===$collection$$&&($fields$$||($fields$$={}),$fields$$={...$fields$$,viettel_user:0,viettel_password:0,viettel_url_service:0,sip_uri:0,sip_password:0,sip_websocket:0,voiip_access_token:0,voiip_webhook:0,wallet_address:0,wallet_token:0,owner:0,default_password:0,email_host:0,email_port:0,email_secure:0,email_authMethod:0,email_user:0,email_pass:0,email_name:0,exfields:0,ssl_key:0,ssl_cert:0,ssl_ca:0});return $col$$.findOne($condition$$,
13
13
  $fields$$).lean().exec()}throw`Error get data: Collection ${$collection$$} is not exists`;},isExists=function($model$$,$unique$$,$obj$$,$replaceIfExists$$,$fn$$){if(!$unique$$||0===$unique$$.length)return $fn$$(null,!1);let $condition$$={};$unique$$=$unique$$.filter($key$$=>$model$$.schema.paths[$key$$]);for(let $i$$=0;$i$$<$unique$$.length;$i$$++){let $key$$=$unique$$[$i$$],$v$$=$obj$$[$key$$];void 0!=$v$$&&$model$$.schema.paths[$key$$]&&(null!==$v$$?"number"==$model$$.schema.paths[$key$$].instance.toLowerCase()?
14
- $condition$$[$key$$]=Number($v$$):"date"==$model$$.schema.paths[$key$$].instance.toLowerCase()?$condition$$[$key$$]=new Date($v$$):"string"==$model$$.schema.paths[$key$$].instance.toLowerCase()?$condition$$[$key$$]=$v$$.toString():$condition$$[$key$$]=$v$$:$condition$$[$key$$]=$v$$)}if(1>$condition$$.length)return $fn$$("D\u1eef li\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i \u0111\u1ee7 c\u00e1c gi\u00e1 tr\u1ecb: "+$unique$$.join(","));$obj$$.id_app&&($condition$$.id_app=$obj$$.id_app);$replaceIfExists$$?
15
- $model$$.deleteMany($condition$$,$e$$=>{setImmediate(()=>{if($e$$)return $fn$$($e$$);$fn$$(null,!1)})}):$model$$.findOne($condition$$,{_id:1},($error$$,$result$$)=>{setImmediate(()=>{if($error$$)return $fn$$($error$$);if(!$result$$)return $fn$$(null,!1);console.warn("object exists",$condition$$,"unique fields",$unique$$);$fn$$(null,!0)})})},postData=function($obj$$,$ctrl$$,$callback$jscomp$0$$,$options$$={}){const $post$$=$ctrl$$.dynamicPost||$ctrl$$.post;if(!$post$$)return $callback$jscomp$0$$();
16
- let $obj_created$$=$obj$$.toObject?$obj$$.toObject():{...$obj$$};Object.keys($obj_created$$).forEach($key$$=>{let $p$$=$obj_created$$[$key$$];$p$$&&($p$$.toObject&&($obj_created$$[$key$$]=$p$$.toObject()),underscore.isArray($p$$)&&($obj_created$$[$key$$]=$p$$.map($el$$=>$el$$?$el$$.toObject?$el$$.toObject():$el$$:$el$$)))});$ctrl$$.beforePost||($ctrl$$.beforePost=function($obj_created$$,$callback$$){$callback$$(null,null)});$ctrl$$.beforePost($obj_created$$,function($e$jscomp$3$$){if($e$jscomp$3$$)return $callback$jscomp$0$$($e$jscomp$3$$);
17
- deletePost($obj_created$$.user_updated,$obj_created$$,async function($e$jscomp$2$$){if($e$jscomp$2$$)return $callback$jscomp$0$$($e$jscomp$2$$);if($ctrl$$.dynamicDeletePost)try{await $ctrl$$.dynamicDeletePost($obj_created$$)}catch($e$$){return $callback$jscomp$0$$($e$$.message||$e$$.error||$e$$)}setImmediate(()=>{if($obj_created$$.trang_thai||0==$obj_created$$.trang_thai)$obj_created$$.trang_thai=$obj_created$$.trang_thai.toString();trangthai.findOne({ma_ct:($obj_created$$.ma_ct||"").toUpperCase(),
18
- ma_trang_thai:$obj_created$$.trang_thai},function($e$jscomp$1$$,$trang_thai$$){if($e$jscomp$1$$)return $callback$jscomp$0$$($e$jscomp$1$$);if($trang_thai$$&&!$trang_thai$$.post)return $callback$jscomp$0$$();setImmediate(()=>{$post$$($obj_created$$,function($e$jscomp$0$$,$rs$$){setImmediate(()=>{if($e$jscomp$0$$){let $msg_error$$=$e$jscomp$0$$.message||$e$jscomp$0$$.error||$e$jscomp$0$$.toString();if(0<=$msg_error$$.indexOf("E11000 duplicate")&&(0<=$msg_error$$.indexOf("id_ct_1_nh_dk_1")||0<=$msg_error$$.indexOf("id_ct_1_line_1")))return $callback$jscomp$0$$(null,
19
- $rs$$);console.error("error post data",$obj_created$$._id,$msg_error$$);deletePost($obj_created$$.user_updated,$obj_created$$,async function($e_delete_post$$){if($e_delete_post$$)return console.error("error delete post",$e_delete_post$$),$callback$jscomp$0$$($e_delete_post$$);console.error("deleted books because error post");if($ctrl$$.dynamicDeletePost)try{return await $ctrl$$.dynamicDeletePost($obj_created$$),$callback$jscomp$0$$($e$jscomp$0$$.message||$e$jscomp$0$$.error||$e$jscomp$0$$)}catch($e$$){return console.error("dynamicDeletePost",
20
- $e$$.message||$e$$.error||$e$$),$callback$jscomp$0$$($e$$)}else $callback$jscomp$0$$($e$jscomp$0$$)})}else $callback$jscomp$0$$(null,$rs$$)})},{...$ctrl$$.options,...$options$$})})})})})})},pushNotification=($ctrl$$,$_obj$$,$eventName$$="new",$old_obj$$=null,$justFireEvents$$=!1,$options$$={title:"",data:{}})=>{setImmediate(async()=>{if($_obj$$.status){var $obj$jscomp$0$$=$_obj$$.toObject?$_obj$$.toObject():{...$_obj$$};$obj$jscomp$0$$._id=$obj$jscomp$0$$._id.toString();$options$$||($options$$={});
21
- var $exclude_token$$=$options$$.exclude_token,$trang_thai$$=($obj$jscomp$0$$.trang_thai||(0==$obj$jscomp$0$$.progress?"0":$obj$jscomp$0$$.progress)||"").toString();if($old_obj$$&&!$justFireEvents$$){var $id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=($old_obj$$.trang_thai||(0==$old_obj$$.progress?"0":$old_obj$$.progress)||"").toString();$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$===$trang_thai$$&&($justFireEvents$$=!0)}$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=
22
- $obj$jscomp$0$$.listinfo_code;$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$||($id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=(await global.getModel("listinfo").find({api_code:$ctrl$$.name},{code:1}).lean()).map($a$$=>$a$$.code),$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$.push($ctrl$$.name),$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=[...(new Set($id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$))],
23
- $id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$={$in:$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$});$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=(await OptionsModel.find({id_app:$obj$jscomp$0$$.id_app,id_func:$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$,option:{$exists:!0}},{option:1}).lean()).filter($v$$=>$v$$.option&&$v$$.option.users_receive_notification).map($v$$=>
24
- $v$$.option.users_receive_notification).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);0===$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$.length&&($id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=await Promise.all((($ctrl$$.options||{}).users_receive_notification_default||[]).map($n$$=>new Promise($resolve$$=>{setImmediate(async()=>{underscore.isFunction($n$$)?$resolve$$(await $n$$($obj$jscomp$0$$)):$resolve$$($n$$)})}))));$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$&&
25
- ($id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$.filter($u$$=>!$u$$.trang_thai||$u$$.trang_thai.toString()===$trang_thai$$||"delete"===$u$$.trang_thai.toString()),$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$.filter($func_string_n$$=>{if(!$func_string_n$$.condition||
26
- !$func_string_n$$.condition.trim())return!0;$func_string_n$$=$func_string_n$$.condition;0>$func_string_n$$.indexOf("return ")&&($func_string_n$$=`return ${$func_string_n$$}`);try{return evalute($func_string_n$$,{...$obj$jscomp$0$$,master:$obj$jscomp$0$$,data:$obj$jscomp$0$$})}catch($e$$){return console.error("pushNotification",$e$$,$func_string_n$$),!1}}),$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$.forEach(async $p$jscomp$0$$=>{setImmediate(async()=>{let $_justFireEvents$$=
27
- $justFireEvents$$;$p$jscomp$0$$.just_fire_events&&($_justFireEvents$$=$p$jscomp$0$$.just_fire_events);let $notificationData$$={_id:$obj$jscomp$0$$._id,trang_thai:$trang_thai$$,id_app:$obj$jscomp$0$$.id_app,code:$obj$jscomp$0$$.ma_ct||$ctrl$$.name,id_link:$obj$jscomp$0$$.id_link,code_link:$obj$jscomp$0$$.code_link,event:$eventName$$,action:$eventName$$.toUpperCase(),data:$options$$.data,key:$options$$.key,not_send_email:$p$jscomp$0$$.not_send_email,justFireEvents:$_justFireEvents$$};if($justFireEvents$$||
28
- "delete"===$eventName$$.toLowerCase())$notificationData$$.title="",$notificationData$$.body="";else{try{$notificationData$$.body=$p$jscomp$0$$.body?compileHtml($p$jscomp$0$$.body,$obj$jscomp$0$$):""}catch($e$$){$notificationData$$.body=$p$jscomp$0$$.body,console.error($ctrl$$.name,"compileHtml body",$e$$,$obj$jscomp$0$$)}try{$notificationData$$.title=stripHtmlTags(compileHtml($options$$.title||$p$jscomp$0$$.title||$p$jscomp$0$$.content||"",$obj$jscomp$0$$))}catch($e$$){$notificationData$$.title=$options$$.title||
29
- $p$jscomp$0$$.title||$p$jscomp$0$$.content||"",console.error($ctrl$$.name,"compileHtml title",$e$$,$obj$jscomp$0$$)}}if($p$jscomp$0$$.email_content)try{$notificationData$$.email_content=compileHtml($p$jscomp$0$$.email_content,$obj$jscomp$0$$)}catch($e$$){$notificationData$$.email_content=$p$jscomp$0$$.email_content,console.error($ctrl$$.name,"compileHtml email_content",$e$$,$obj$jscomp$0$$)}$notificationData$$.title||$notificationData$$.body||($exclude_token$$=null);let $users_will_receive$$=$p$jscomp$0$$.users;
30
- $users_will_receive$$||($users_will_receive$$=[]);$options$$.users_will_receive&&0<$options$$.users_will_receive.length&&($users_will_receive$$=$users_will_receive$$.concat($options$$.users_will_receive));$p$jscomp$0$$.send_phu_trach&&$obj$jscomp$0$$.phu_trach&&($users_will_receive$$=$users_will_receive$$.concat([$obj$jscomp$0$$.phu_trach]));if($p$jscomp$0$$.send_admin){var $admins_of_user_sandbox_us$$=(await Participant.find({id_app:$obj$jscomp$0$$.id_app,admin:!0}).lean()).map($p$$=>$p$$.email);
31
- $users_will_receive$$=$users_will_receive$$.concat($admins_of_user_sandbox_us$$)}$p$jscomp$0$$.send_attends&&$obj$jscomp$0$$.attends&&($users_will_receive$$=$users_will_receive$$.concat($obj$jscomp$0$$.attends));$p$jscomp$0$$.group_id&&($admins_of_user_sandbox_us$$=(await Participant.find({id_app:$obj$jscomp$0$$.id_app,group_id:$p$jscomp$0$$.group_id}).lean()).map($u$$=>$u$$.email),$users_will_receive$$=$users_will_receive$$.concat($admins_of_user_sandbox_us$$));$p$jscomp$0$$.send_to_customer&&($obj$jscomp$0$$.ma_kh||
32
- $obj$jscomp$0$$.id_kh)&&($admins_of_user_sandbox_us$$=await mongoose.models.customer.getInfo($obj$jscomp$0$$.id_app,{$or:[{ma_kh:$obj$jscomp$0$$.ma_kh},{_id:$obj$jscomp$0$$.id_kh}]},"of_user"))&&($users_will_receive$$=$users_will_receive$$.concat([$admins_of_user_sandbox_us$$]));$p$jscomp$0$$.send_to_user_created?$users_will_receive$$=$users_will_receive$$.concat([$obj$jscomp$0$$.user_created]):!1===$p$jscomp$0$$.send_to_user_created&&($users_will_receive$$=$users_will_receive$$.filter($u$$=>$u$$!==
33
- $obj$jscomp$0$$.user_created));if($p$jscomp$0$$.handle_receivers){$admins_of_user_sandbox_us$$={obj:$obj$jscomp$0$$,users_will_receive:$users_will_receive$$,utils};try{let $str_func$$=$p$jscomp$0$$.handle_receivers;if(0>$str_func$$.indexOf("async ")){0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);let $cust_users_will_receive$$=await evalute(`return (async ()=>{
14
+ $condition$$[$key$$]=Number($v$$):"date"==$model$$.schema.paths[$key$$].instance.toLowerCase()?$condition$$[$key$$]=new Date($v$$):"string"==$model$$.schema.paths[$key$$].instance.toLowerCase()?$condition$$[$key$$]=$v$$.toString():$condition$$[$key$$]=$v$$:$condition$$[$key$$]=$v$$)}if($condition$$.id_app&&2>Object.values($condition$$).length||1>Object.values($condition$$).length)return $fn$$("D\u1eef li\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i \u0111\u1ee7 c\u00e1c gi\u00e1 tr\u1ecb: "+$unique$$.join(","));
15
+ $obj$$.id_app&&($condition$$.id_app=$obj$$.id_app);$replaceIfExists$$?$model$$.deleteMany($condition$$,$e$$=>{setImmediate(()=>{if($e$$)return $fn$$($e$$);$fn$$(null,!1)})}):$model$$.findOne($condition$$,{_id:1},($error$$,$result$$)=>{setImmediate(()=>{if($error$$)return $fn$$($error$$);if(!$result$$)return $fn$$(null,!1);console.warn("object exists",$condition$$,"unique fields",$unique$$);$fn$$(null,!0)})})},postData=function($obj$$,$ctrl$$,$callback$jscomp$0$$,$options$$={}){const $post$$=$ctrl$$.dynamicPost||
16
+ $ctrl$$.post;if(!$post$$)return $callback$jscomp$0$$();let $obj_created$$=$obj$$.toObject?$obj$$.toObject():{...$obj$$};Object.keys($obj_created$$).forEach($key$$=>{let $p$$=$obj_created$$[$key$$];$p$$&&($p$$.toObject&&($obj_created$$[$key$$]=$p$$.toObject()),underscore.isArray($p$$)&&($obj_created$$[$key$$]=$p$$.map($el$$=>$el$$?$el$$.toObject?$el$$.toObject():$el$$:$el$$)))});$ctrl$$.beforePost||($ctrl$$.beforePost=function($obj_created$$,$callback$$){$callback$$(null,null)});$ctrl$$.beforePost($obj_created$$,
17
+ function($e$jscomp$4$$){if($e$jscomp$4$$)return $callback$jscomp$0$$($e$jscomp$4$$);deletePost($obj_created$$.user_updated,$obj_created$$,async function($e$jscomp$2$$){if($e$jscomp$2$$)return $callback$jscomp$0$$($e$jscomp$2$$);if($ctrl$$.dynamicDeletePost)try{await $ctrl$$.dynamicDeletePost($obj_created$$)}catch($e$$){return $callback$jscomp$0$$($e$$.message||$e$$.error||$e$$)}setImmediate(()=>{if($obj_created$$.trang_thai||0==$obj_created$$.trang_thai)$obj_created$$.trang_thai=$obj_created$$.trang_thai.toString();
18
+ trangthai.findOne({ma_ct:($obj_created$$.ma_ct||"").toUpperCase(),ma_trang_thai:$obj_created$$.trang_thai},function($e$jscomp$1$$,$trang_thai$$){if($e$jscomp$1$$)return $callback$jscomp$0$$($e$jscomp$1$$);if($trang_thai$$&&!$trang_thai$$.post)return $callback$jscomp$0$$();setImmediate(()=>{$post$$($obj_created$$,function($e$jscomp$0$$,$rs$$){setImmediate(()=>{if($e$jscomp$0$$){let $msg_error$$=$e$jscomp$0$$.message||$e$jscomp$0$$.error||$e$jscomp$0$$.toString();if(0<=$msg_error$$.indexOf("E11000 duplicate")&&
19
+ (0<=$msg_error$$.indexOf("id_ct_1_nh_dk_1")||0<=$msg_error$$.indexOf("id_ct_1_line_1")))return $callback$jscomp$0$$(null,$rs$$);console.error("error post data",$obj_created$$._id,$msg_error$$);deletePost($obj_created$$.user_updated,$obj_created$$,async function($e_delete_post$$){if($e_delete_post$$)return console.error("error delete post",$e_delete_post$$),$callback$jscomp$0$$($e_delete_post$$);console.error("deleted books because error post");if($ctrl$$.dynamicDeletePost)try{return await $ctrl$$.dynamicDeletePost($obj_created$$),
20
+ $callback$jscomp$0$$($e$jscomp$0$$.message||$e$jscomp$0$$.error||$e$jscomp$0$$)}catch($e$$){return console.error("dynamicDeletePost",$e$$.message||$e$$.error||$e$$),$callback$jscomp$0$$($e$$)}else $callback$jscomp$0$$($e$jscomp$0$$)})}else $callback$jscomp$0$$(null,$rs$$)})},{...$ctrl$$.options,...$options$$})})})})})})},pushNotification=($ctrl$$,$_obj$$,$eventName$$="new",$old_obj$$=null,$justFireEvents$$=!1,$options$$={title:"",data:{}})=>{setImmediate(async()=>{if($_obj$$.status){var $obj$jscomp$0$$=
21
+ $_obj$$.toObject?$_obj$$.toObject():{...$_obj$$};$obj$jscomp$0$$._id=$obj$jscomp$0$$._id.toString();$options$$||($options$$={});var $exclude_token$$=$options$$.exclude_token,$trang_thai$$=($obj$jscomp$0$$.trang_thai||(0==$obj$jscomp$0$$.progress?"0":$obj$jscomp$0$$.progress)||"").toString();if($old_obj$$&&!$justFireEvents$$){var $id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=($old_obj$$.trang_thai||(0==$old_obj$$.progress?"0":$old_obj$$.progress)||"").toString();
22
+ $id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$===$trang_thai$$&&($justFireEvents$$=!0)}$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=$obj$jscomp$0$$.listinfo_code;$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$||($id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=(await global.getModel("listinfo").find({api_code:$ctrl$$.name},{code:1}).lean()).map($a$$=>
23
+ $a$$.code),$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$.push($ctrl$$.name),$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=[...(new Set($id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$))],$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$={$in:$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$});$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=
24
+ (await OptionsModel.find({id_app:$obj$jscomp$0$$.id_app,id_func:$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$,option:{$exists:!0}},{option:1}).lean()).filter($v$$=>$v$$.option&&$v$$.option.users_receive_notification).map($v$$=>$v$$.option.users_receive_notification).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);0===$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$.length&&($id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=
25
+ await Promise.all((($ctrl$$.options||{}).users_receive_notification_default||[]).map($n$$=>new Promise($resolve$$=>{setImmediate(async()=>{underscore.isFunction($n$$)?$resolve$$(await $n$$($obj$jscomp$0$$)):$resolve$$($n$$)})}))));$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$&&($id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$.filter($u$$=>
26
+ !$u$$.trang_thai||$u$$.trang_thai.toString()===$trang_thai$$||"delete"===$u$$.trang_thai.toString()),$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$=$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$.filter($func_string_n$$=>{if(!$func_string_n$$.condition||!$func_string_n$$.condition.trim())return!0;$func_string_n$$=$func_string_n$$.condition;0>$func_string_n$$.indexOf("return ")&&($func_string_n$$=`return ${$func_string_n$$}`);
27
+ try{return evalute($func_string_n$$,{...$obj$jscomp$0$$,master:$obj$jscomp$0$$,data:$obj$jscomp$0$$})}catch($e$$){return console.error("pushNotification",$e$$,$func_string_n$$),!1}}),$id_func_listinfos_notifications_setting_old_trang_thai_users_receive_notification$$.forEach(async $p$jscomp$0$$=>{setImmediate(async()=>{let $_justFireEvents$$=$justFireEvents$$;$p$jscomp$0$$.just_fire_events&&($_justFireEvents$$=$p$jscomp$0$$.just_fire_events);let $notificationData$$={_id:$obj$jscomp$0$$._id,trang_thai:$trang_thai$$,
28
+ id_app:$obj$jscomp$0$$.id_app,code:$obj$jscomp$0$$.ma_ct||$ctrl$$.name,id_link:$obj$jscomp$0$$.id_link,code_link:$obj$jscomp$0$$.code_link,event:$eventName$$,action:$eventName$$.toUpperCase(),data:$options$$.data,key:$options$$.key,not_send_email:$p$jscomp$0$$.not_send_email,justFireEvents:$_justFireEvents$$};if($justFireEvents$$||"delete"===$eventName$$.toLowerCase())$notificationData$$.title="",$notificationData$$.body="";else{try{$notificationData$$.body=$p$jscomp$0$$.body?compileHtml($p$jscomp$0$$.body,
29
+ $obj$jscomp$0$$):""}catch($e$$){$notificationData$$.body=$p$jscomp$0$$.body,console.error($ctrl$$.name,"compileHtml body",$e$$,$obj$jscomp$0$$)}try{$notificationData$$.title=stripHtmlTags(compileHtml($options$$.title||$p$jscomp$0$$.title||$p$jscomp$0$$.content||"",$obj$jscomp$0$$))}catch($e$$){$notificationData$$.title=$options$$.title||$p$jscomp$0$$.title||$p$jscomp$0$$.content||"",console.error($ctrl$$.name,"compileHtml title",$e$$,$obj$jscomp$0$$)}}if($p$jscomp$0$$.email_content)try{$notificationData$$.email_content=
30
+ compileHtml($p$jscomp$0$$.email_content,$obj$jscomp$0$$)}catch($e$$){$notificationData$$.email_content=$p$jscomp$0$$.email_content,console.error($ctrl$$.name,"compileHtml email_content",$e$$,$obj$jscomp$0$$)}$notificationData$$.title||$notificationData$$.body||($exclude_token$$=null);let $users_will_receive$$=$p$jscomp$0$$.users;$users_will_receive$$||($users_will_receive$$=[]);$options$$.users_will_receive&&0<$options$$.users_will_receive.length&&($users_will_receive$$=$users_will_receive$$.concat($options$$.users_will_receive));
31
+ $p$jscomp$0$$.send_phu_trach&&$obj$jscomp$0$$.phu_trach&&($users_will_receive$$=$users_will_receive$$.concat([$obj$jscomp$0$$.phu_trach]));if($p$jscomp$0$$.send_admin){var $admins_of_user_sandbox_us$$=(await Participant.find({id_app:$obj$jscomp$0$$.id_app,admin:!0}).lean()).map($p$$=>$p$$.email);$users_will_receive$$=$users_will_receive$$.concat($admins_of_user_sandbox_us$$)}$p$jscomp$0$$.send_attends&&$obj$jscomp$0$$.attends&&($users_will_receive$$=$users_will_receive$$.concat($obj$jscomp$0$$.attends));
32
+ $p$jscomp$0$$.group_id&&($admins_of_user_sandbox_us$$=(await Participant.find({id_app:$obj$jscomp$0$$.id_app,group_id:$p$jscomp$0$$.group_id}).lean()).map($u$$=>$u$$.email),$users_will_receive$$=$users_will_receive$$.concat($admins_of_user_sandbox_us$$));$p$jscomp$0$$.send_to_customer&&($obj$jscomp$0$$.ma_kh||$obj$jscomp$0$$.id_kh)&&($admins_of_user_sandbox_us$$=await mongoose.models.customer.getInfo($obj$jscomp$0$$.id_app,{$or:[{ma_kh:$obj$jscomp$0$$.ma_kh},{_id:$obj$jscomp$0$$.id_kh}]},"of_user"))&&
33
+ ($users_will_receive$$=$users_will_receive$$.concat([$admins_of_user_sandbox_us$$]));$p$jscomp$0$$.send_to_user_created?$users_will_receive$$=$users_will_receive$$.concat([$obj$jscomp$0$$.user_created]):!1===$p$jscomp$0$$.send_to_user_created&&($users_will_receive$$=$users_will_receive$$.filter($u$$=>$u$$!==$obj$jscomp$0$$.user_created));if($p$jscomp$0$$.handle_receivers){$admins_of_user_sandbox_us$$={obj:$obj$jscomp$0$$,users_will_receive:$users_will_receive$$,utils};try{let $str_func$$=$p$jscomp$0$$.handle_receivers;
34
+ if(0>$str_func$$.indexOf("async ")){0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);let $cust_users_will_receive$$=await evalute(`return (async ()=>{
34
35
  try{
35
36
  ${$str_func$$}
36
37
  }catch(e){
@@ -64,6 +65,6 @@ prepareParameters=function($ctrl$$,$parameters$$,$app$$,$obj$$,$callback$jscomp$
64
65
  "}",{});if($query$jscomp$1_sandbox$$.collection&&$query$jscomp$1_sandbox$$.field){"dmkh"==$query$jscomp$1_sandbox$$.collection&&($query$jscomp$1_sandbox$$.collection="customer");"dmtk"==$query$jscomp$1_sandbox$$.collection&&($query$jscomp$1_sandbox$$.collection="account");var $condition$$=$query$jscomp$1_sandbox$$.condition;if($condition$$){$condition$$=JSON.stringify($condition$$);for(let $m$$ in $obj$$)$condition$$=$condition$$.replace(new RegExp("m."+$m$$,"g"),$obj$$[$m$$]);$condition$$=JSONParser($condition$$)}else $condition$$=
65
66
  {};$app$$[$p$$.name]=await getData($app$$.id_app,$query$jscomp$1_sandbox$$.collection,$query$jscomp$1_sandbox$$.field,$condition$$)}}catch($e$$){$app$$[$p$$.name]=$e$$}else if("E"===$p$$.type&&$p$$.value){$condition$$=$p$$.value;0>$condition$$.indexOf("return ")&&($condition$$=`return ${$condition$$}`);if(0<=$condition$$.indexOf("async "))return $app$$[$p$$.name]="async function is not allow";$condition$$=`return (async ()=>{
66
67
  ${$condition$$}
67
- })`;$query$jscomp$1_sandbox$$={m:$obj$$,master:$obj$$,data:$obj$$,Moment:moment,Numeral:numeral,numberToWord,getData};try{$app$$[$p$$.name]=await evalute($condition$$,$query$jscomp$1_sandbox$$)()}catch($e$$){$app$$[$p$$.name]=$e$$.message}}else $app$$[$p$$.name]=$p$$.value})().then(()=>{$callback$$()}).catch(()=>{$callback$$()})})},function($e$jscomp$31_v$$){if($e$jscomp$31_v$$)return $callback$jscomp$0$$($e$jscomp$31_v$$);underscore.extend($app$$,$obj$$);if($ctrl$$.getData4Export)$ctrl$$.getData4Export($app$$,
68
- function($error$jscomp$16_v$$){if($error$jscomp$16_v$$)return $callback$jscomp$0$$($error$jscomp$16_v$$);for(let $key$$ in $app$$)$error$jscomp$16_v$$=$app$$[$key$$],underscore.isDate($error$jscomp$16_v$$)&&($app$$[$key$$+"_string"]=moment($error$jscomp$16_v$$).format("DD/MM/YYYY"));$callback$jscomp$0$$()});else{for(let $key$$ in $app$$)$e$jscomp$31_v$$=$app$$[$key$$],underscore.isDate($e$jscomp$31_v$$)&&($app$$[$key$$+"_string"]=moment($e$jscomp$31_v$$).format("DD/MM/YYYY"));$callback$jscomp$0$$()}})};
68
+ })`;$query$jscomp$1_sandbox$$={m:$obj$$,master:$obj$$,data:$obj$$,Moment:moment,Numeral:numeral,numberToWord,getData};try{$app$$[$p$$.name]=await evalute($condition$$,$query$jscomp$1_sandbox$$)()}catch($e$$){$app$$[$p$$.name]=$e$$.message}}else $app$$[$p$$.name]=$p$$.value})().then(()=>{$callback$$()}).catch(()=>{$callback$$()})})},function($e$jscomp$32_v$$){if($e$jscomp$32_v$$)return $callback$jscomp$0$$($e$jscomp$32_v$$);underscore.extend($app$$,$obj$$);if($ctrl$$.getData4Export)$ctrl$$.getData4Export($app$$,
69
+ function($error$jscomp$16_v$$){if($error$jscomp$16_v$$)return $callback$jscomp$0$$($error$jscomp$16_v$$);for(let $key$$ in $app$$)$error$jscomp$16_v$$=$app$$[$key$$],underscore.isDate($error$jscomp$16_v$$)&&($app$$[$key$$+"_string"]=moment($error$jscomp$16_v$$).format("DD/MM/YYYY"));$callback$jscomp$0$$()});else{for(let $key$$ in $app$$)$e$jscomp$32_v$$=$app$$[$key$$],underscore.isDate($e$jscomp$32_v$$)&&($app$$[$key$$+"_string"]=moment($e$jscomp$32_v$$).format("DD/MM/YYYY"));$callback$jscomp$0$$()}})};
69
70
  module.exports={createIdRef,postData,pushNotification,ERRORS,isExists,getData,asyncBodyToJson,bodyToJson,deleteEmptyArray,fields_sync_master_detail,runWebhooks,deletePost,getNextSequence,checkReference,getParameters,prepareParameters};
@@ -46,4 +46,4 @@ $_key$$,$_v$$);let $d$$=moment($_v$$,"YYYY-MM-DD");$d$$.isValid()&&($item$$[`${$
46
46
  })`;try{if(($app_dir_root_template_e$$=await evalute($_groupBy_excelTemplate_func_string$$,{data:$app_dir_root_template_e$$,moment,numeral,_,utils})())&&$app_dir_root_template_e$$.error)return console.error($app_dir_root_template_e$$.error,$_groupBy_excelTemplate_func_string$$),$callback$jscomp$0$$({error:$app_dir_root_template_e$$.error.message||$app_dir_root_template_e$$.error.error||$app_dir_root_template_e$$.error})}catch($e$$){return console.error($e$$,$_groupBy_excelTemplate_func_string$$),
47
47
  $callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$})}}excelReport($_rs_templatePath$$,$app_dir_root_template_e$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error("excelReport",$e$$),$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$result$$;$req$$.dataType="xlsx";$callback$jscomp$0$$("0")})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"})}else $req$$.query.print&&$req$$.query.id_rpt&&global.mongoose.Types.ObjectId.isValid($req$$.query.id_rpt)?
48
48
  htmlReport($req$$.query.id_rpt,{...$req$$.user.current_app_info,...$req$$.query,company:{...$req$$.user.current_app_info},detail:$rs$jscomp$0$$.e_view,details:$rs$jscomp$0$$.e_view}).then($rs$$=>{$req$$.result=$rs$$;$callback$jscomp$0$$("0")},$e$$=>{console.error("htmlReport",$e$$);$callback$jscomp$0$$($e$$)}):($_rs_templatePath$$=$rs$jscomp$0$$.e_view,$req$$.query.groupBy?($_groupBy_excelTemplate_func_string$$=$req$$.query.groupBy.split(","),$_rs_templatePath$$.groupBy($_groupBy_excelTemplate_func_string$$,
49
- [],($e$$,$_items$$)=>{if($e$$)return console.error("jsonReport",$e$$),$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$_items$$;$callback$jscomp$0$$("0")})):($req$$.result=$_rs_templatePath$$,$callback$jscomp$0$$("0")))})})})})}})}],$e$$=>{if($e$$&&"0"!=$e$$)return $callback$jscomp$1$$($e$$);$callback$jscomp$1$$(null,$req$$.result,$req$$.dataType)})};module.exports=find;
49
+ [],($e$$,$_items$$)=>{if($e$$)return console.error("jsonReport",$e$$),$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$_items$$;$callback$jscomp$0$$("0")})):($req$$.result=$_rs_templatePath$$,$callback$jscomp$0$$("0")))})})})})}})}],$e$$=>{if($e$$&&"0"!=$e$$)return $callback$jscomp$1$$($e$$);$callback$jscomp$1$$(null,{result:$req$$.result,dataType:$req$$.dataType})})};module.exports=find;
@@ -8,8 +8,8 @@ path.dirname(__dirname)+"/workers",$onImportProcess$$=$dir_workers_poolName$$+"/
8
8
  {},$details$$[$columns$$].columns=[]),$details$$[$columns$$].columns.push($detail_col$$)):$master_columns$$.push($column_name$$);if(!$detail_yn$$)return $callback$$();let $data_new$$=[],$row_master$$,$row_master_exists$$;async.mapSeries($data$$,($row$$,$cb$$)=>{setImmediate(()=>{$row_master$$={exfields:{}};$row_master_exists$$=null;$master_columns$$.forEach(function($column$$){if(0===$column$$.indexOf("exfields.")){let $_c$$=$column$$.replace("exfields.","");$row_master$$.exfields[$_c$$]=$row$$[$column$$]}else $row_master$$[$column$$]=
9
9
  $row$$[$column$$]});for(let $i$$=0;$i$$<$data_new$$.length;$i$$++){let $m$$=$data_new$$[$i$$],$is_eq$$=!0;$master_columns$$.forEach(function($column$$){underscore.isEqual($m$$[$column$$],$row_master$$[$column$$])||($is_eq$$=!1)});$is_eq$$&&($row_master_exists$$=$m$$)}$row_master_exists$$?$row_master$$=$row_master_exists$$:$data_new$$.push($row_master$$);let $row_detail$$;for(let $detail_name$$ in $details$$)$row_detail$$={},$details$$[$detail_name$$].columns.forEach(function($column$$){$row$$[$detail_name$$+
10
10
  "$"+$column$$]&&($row_detail$$[$column$$]=$row$$[$detail_name$$+"$"+$column$$])}),$row_master$$[$detail_name$$]||($row_master$$[$detail_name$$]=[]),0<underscore.keys($row_detail$$).length&&$row_master$$[$detail_name$$].push($row_detail$$);$cb$$()})},()=>{$req$$.data=$data_new$$;setImmediate(()=>{$callback$$()})})},function($callback$$){let $data$$=$req$$.data||[],$columns$$=$req$$.columns;for(let $row$$ of $data$$){let $_first$$=$row$$._first;$_first$$&&0<$_first$$.length&&underscore.extend($row$$,
11
- $_first$$[0])}setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTEXCEL",data:{data:$data$$,columns:$columns$$}},$req$$.user.email,$req$$.user_agent,$req$$)});let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error("parse value",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}global.importDataMainPool?global.importDataMainPool.exec({user:$req$$.user,
12
- id_app:$req$$.user.current_id_app,module:$name$$.toUpperCase(),data:$data$$,configs:JSON.stringify(configs),replace:!0===$req$$.query.update||"true"==$req$$.query.update},$response$$=>{setImmediate(()=>{if($response$$.error)return $callback$$({error:$response$$.error,message:$response$$.message||$response$$.error});if(0===$response$$.result.rows_error.length)$req$$.result=$response$$.result,$callback$$();else{let $message$$=[...(new Set($response$$.result.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>
13
- $r$$.error||$r$$)))].join(", "))))].join(", ");return $callback$$({error:$response$$.result,message:$message$$})}})}):$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error("import",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.message||$e$$,message:$e$$.message||$e$$});if(0===$rs$$.rows_error.length)$req$$.result=$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$jscomp$0$$=>
14
- [...(new Set($r$jscomp$0$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({message:$message$$,error:$rs$$.error||$rs$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})}],$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0),$mainCallback$$($e$$);
15
- global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0)})};module.exports=importFromExcel;
11
+ $_first$$[0])}setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTEXCEL",data:{data:$data$$,columns:$columns$$}},$req$$.user.email,$req$$.user_agent,$req$$)});let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error("parse value",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}global.importDataMainPool?(console.log("D\u1eef li\u1ec7u import \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ea9y v\u00e0o h\u00e0ng \u0111\u1ee3i ch\u1edd x\u1eed l\u00fd"),
12
+ global.importDataMainPool.exec({user:$req$$.user,id_app:$req$$.user.current_id_app,module:$name$$.toUpperCase(),data:$data$$,configs:JSON.stringify(configs),replace:!0===$req$$.query.update||"true"==$req$$.query.update},$response$$=>{setImmediate(()=>{if($response$$.error)return $callback$$({error:$response$$.error,message:$response$$.message||$response$$.error});if(0===$response$$.result.rows_error.length)$req$$.result=$response$$.result,$callback$$();else{let $message$$=[...(new Set($response$$.result.rows_error.map($r$$=>
13
+ [...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");return $callback$$({error:$response$$.result,message:$message$$})}})})):$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error("import",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.message||$e$$,message:$e$$.message||$e$$});if(0===$rs$$.rows_error.length)$req$$.result=$rs$$,$callback$$();else{let $message$$=
14
+ [...(new Set($rs$$.rows_error.map($r$jscomp$0$$=>[...(new Set($r$jscomp$0$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({message:$message$$,error:$rs$$.error||$rs$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})}],$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},
15
+ !0,$req$$.access_token,!0),$mainCallback$$($e$$);global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0)})};module.exports=importFromExcel;
@@ -5,7 +5,8 @@ configs.google_credentials;if(!$app_google_credentials_id_app$$)return $callback
5
5
  range:$range$$});if(0==$response$$.data.values.length)return $callback$$({error:"Sheet n\u00e0y kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u"});let $columns$$=$response$$.data.values[0].map($c$$=>{let $field$$=$listinfo$$.fields.find($f$$=>$f$$.name.toLowerCase()==($c$$||"").toString().toLowerCase());return $field$$?$field$$.name:($field$$=$listinfo$$.fields.find($f$$=>$f$$.header.toLowerCase()==($c$$||"").toString().toLowerCase()))?$field$$.name:$c$$}),$data$$=$response$$.data.values.slice(1).map($row$$=>
6
6
  {let $n_row$$={};$columns$$.forEach(($c$$,$index$$)=>{$n_row$$[$c$$]=$row$$[$index$$]});return $n_row$$});$req$$.data=$data$$;$callback$$()}catch($e$$){return $error$$=(($e$$.response||{}).data||{}).error||$e$$,$credentials$$&&403==$error$$.code?$callback$$({error:`Kh\u00f4ng th\u1ec3 truy c\u1eadp v\u00e0o google sheet. H\u00e3y ph\u00e2n quy\u1ec1n cho t\u00e0i kho\u1ea3n ${$credentials$$.client_email} c\u00f3 quy\u1ec1n \u0111\u1ecdc google sheet tr\u00ean`}):$callback$$($error$$)}})},function($callback$$){let $data$$=
7
7
  $req$$.data;if($ctrl$$.options.onImport)$ctrl$$.options.onImport($req$$.user,$data$$,[],function($e$$,$new_data$$){setImmediate(()=>{if($e$$)return console.error("onImport from json:",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.data=$new_data$$||$data$$;$callback$$()})});else $req$$.data=$data$$,$callback$$()},function($callback$$){let $data$$=$req$$.data;setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTJSON",
8
- data:{data:$data$$}},$req$$.user.email,$req$$.user_agent,$req$$)});let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error("importFromJson",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error("import from json",$ctrl$$.name,$data$$.length,"rows with error:",$e$$),$e$$.error?
9
- ($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.error||$e$$.message||$e$$,message:$e$$.message||$e$$.error});if(0===$rs$$.rows_error.length)$req$$.result=$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})}],$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,
10
- $req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0),$mainCallback$$($e$$);global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0)})};
11
- module.exports=importFromGs;
8
+ data:{data:$data$$}},$req$$.user.email,$req$$.user_agent,$req$$)});let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error("importFromJson",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}global.importDataMainPool?(console.log("D\u1eef li\u1ec7u import \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ea9y v\u00e0o h\u00e0ng \u0111\u1ee3i ch\u1edd x\u1eed l\u00fd"),global.importDataMainPool.exec({user:$req$$.user,
9
+ id_app:$req$$.user.current_id_app,module:name.toUpperCase(),data:$data$$,configs:JSON.stringify(configs),replace:!0===$req$$.query.update||"true"==$req$$.query.update},$response$$=>{setImmediate(()=>{if($response$$.error)return $callback$$({error:$response$$.error,message:$response$$.message||$response$$.error});if(0===$response$$.result.rows_error.length)$req$$.result=$response$$.result,$callback$$();else{let $message$$=[...(new Set($response$$.result.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>
10
+ $r$$.error||$r$$)))].join(", "))))].join(", ");return $callback$$({error:$response$$.result,message:$message$$})}})})):$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error("import from json",$ctrl$$.name,$data$$.length,"rows with error:",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.error||$e$$.message||$e$$,message:$e$$.message||$e$$.error});if(0===$rs$$.rows_error.length)$req$$.result=
11
+ $rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$jscomp$0$$=>[...(new Set($r$jscomp$0$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})}],$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$$.message||$e$$.error||
12
+ $e$$,null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0),$mainCallback$$($e$$);global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0)})};module.exports=importFromGs;
@@ -1,7 +1,8 @@
1
- 'use strict';const fs=require("fs"),async=require("async"),_=require("lodash"),{JSONParser}=require("../libs/utils"),importFromJSON=($ctrl$$,$req$$,$mainCallback$$)=>{async.series([function($callback$$){if($req$$.files&&$req$$.files.json){let $filePath$$=$req$$.files.json.path;try{console.log("read file json...");$req$$.data=require($filePath$$);fs.unlink($filePath$$,function($error$$){$error$$&&console.error("Can't delete file tmp:"+$filePath$$,$error$$)});if(!$req$$.data.map)return $callback$$({error:"D\u1eef li\u1ec7u \u0111\u1ec3 import ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"});
1
+ 'use strict';const fs=require("fs"),async=require("async"),_=require("lodash"),{JSONParser}=require("../libs/utils"),importFromJSON=($ctrl$$,$req$$,$mainCallback$$)=>{const $name$$=$ctrl$$.name;async.series([function($callback$$){if($req$$.files&&$req$$.files.json){let $filePath$$=$req$$.files.json.path;try{console.log("read file json...");$req$$.data=require($filePath$$);fs.unlink($filePath$$,function($error$$){$error$$&&console.error("Can't delete file tmp:"+$filePath$$,$error$$)});if(!$req$$.data.map)return $callback$$({error:"D\u1eef li\u1ec7u \u0111\u1ec3 import ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"});
2
2
  $callback$$()}catch($e$$){return console.error("importFromJson",$e$$),$callback$$({error:$e$$.message||$e$$})}}else if($req$$.body){if(!$req$$.body.map)return $callback$$({error:"D\u1eef li\u1ec7u \u0111\u1ec3 import ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"});try{$req$$.data=$req$$.body.map($row_rs$$=>{$row_rs$$=_.isString($row_rs$$)?JSONParser($row_rs$$):$row_rs$$;delete $row_rs$$.id_app;delete $row_rs$$._id;return $row_rs$$})}catch($e$$){return console.error("importFromJson",$e$$),$callback$$({error:$e$$.message||
3
3
  $e$$})}$callback$$()}else return $callback$$({error:"Kh\u00f4ng t\u00ecm th\u1ea5y d\u1eef li\u1ec7u c\u1ea7n import"})},function($callback$$){let $data$$=$req$$.data;if($ctrl$$.options.onImport)$ctrl$$.options.onImport($req$$.user,$data$$,[],function($e$$,$new_data$$){setImmediate(()=>{if($e$$)return console.error("onImport from json:",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.data=$new_data$$||$data$$;$callback$$()})});else $req$$.data=$data$$,$callback$$()},
4
- function($callback$$){let $data$$=$req$$.data;setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTJSON",data:{data:$data$$}},$req$$.user.email,$req$$.user_agent,$req$$)});let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error("importFromJson",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}$ctrl$$.import($req$$.user,$req$$.user.current_id_app,
5
- $data$$,($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error("import from json",$ctrl$$.name,$data$$.length,"rows with error:",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.error||$e$$.message||$e$$,message:$e$$.message||$e$$.error});if(0===$rs$$.rows_error.length)$req$$.result=$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");
6
- $callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})}],$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0),$mainCallback$$($e$$);global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,
7
- "Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0);$mainCallback$$(null,$req$$.result)})};module.exports=importFromJSON;
4
+ function($callback$$){let $data$$=$req$$.data;setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTJSON",data:{data:$data$$}},$req$$.user.email,$req$$.user_agent,$req$$)});let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error("importFromJson",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}global.importDataMainPool?(console.log("D\u1eef li\u1ec7u import \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ea9y v\u00e0o h\u00e0ng \u0111\u1ee3i ch\u1edd x\u1eed l\u00fd"),
5
+ global.importDataMainPool.exec({user:$req$$.user,id_app:$req$$.user.current_id_app,module:$name$$.toUpperCase(),data:$data$$,configs:JSON.stringify(configs),replace:!0===$req$$.query.update||"true"==$req$$.query.update},$response$$=>{setImmediate(()=>{if($response$$.error)return $callback$$({error:$response$$.error,message:$response$$.message||$response$$.error});if(0===$response$$.result.rows_error.length)$req$$.result=$response$$.result,$callback$$();else{let $message$$=[...(new Set($response$$.result.rows_error.map($r$$=>
6
+ [...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");return $callback$$({error:$response$$.result,message:$message$$})}})})):$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error("import from json",$ctrl$$.name,$data$$.length,"rows with error:",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.error||$e$$.message||$e$$,message:$e$$.message||$e$$.error});
7
+ if(0===$rs$$.rows_error.length)$req$$.result=$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$jscomp$0$$=>[...(new Set($r$jscomp$0$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})}],$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",
8
+ $e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0),$mainCallback$$($e$$);global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0);$mainCallback$$(null,$req$$.result)})};module.exports=importFromJSON;
@@ -6,7 +6,7 @@ if(!$k_ngay_ks_tu_ngay$$)return $callback$$({error:"\u0110i\u1ec1u ki\u1ec7n ng\
6
6
  function($e$jscomp$0$$,$condition$jscomp$0$$){setImmediate(()=>{if($e$jscomp$0$$)return console.error("postAgain finding",$e$jscomp$0$$),$callback$$({error:$e$jscomp$0$$.message||$e$jscomp$0$$.error||$e$jscomp$0$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$0$$,function($e$$,$condition$$){if($e$$)return console.error("postAgain dynamicFinding",$e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.condition=$condition$$;$callback$$()},{req:$req$$}):($req$$.condition=
7
7
  $condition$jscomp$0$$,$callback$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$$,function($e$$,$condition$$){if($e$$)return console.error("postAgain dynamicFinding",$e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.condition=$condition$$;$callback$$()},{req:$req$$}):($req$$.condition=$condition$$,$callback$$())})},function($callback$$){permission.isAdmin($req$$.user.current_id_app,$req$$.user.email,function($e$$,$admin$$){setImmediate(()=>
8
8
  {if($e$$)return $callback$$({error:$e$$.error||$e$$,code:$e$$.code});if(!$admin$$)return $callback$$({error:"B\u1ea1n ph\u1ea3i c\u00f3 quy\u1ec1n admin \u0111\u1ec3 th\u1ef1c hi\u1ec7n t\u00ednh n\u0103ng n\u00e0y"});$callback$$()})})},function($callback$$){const $condition$$=$req$$.condition;underscore.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$$.ma_ct=$ctrl$$.name.toUpperCase());let $data_log$$={...$req$$.query};delete $data_log$$.access_token;$req$$.user&&"log"!==
9
- $ctrl$$.name&&"labelinfo"!==$ctrl$$.name&&"listinfo"!==$ctrl$$.name&&"reportinfo"!==$ctrl$$.name&&"moduleinfo"!==$ctrl$$.name&&"options"!==$ctrl$$.name&&global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"POSTAGAIN",data:{condition:JSON.stringify($data_log$$)}},$req$$.user.email,$req$$.user_agent,$req$$);global.importDataMainPool?(console.log("Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang c\u1eadp nh\u1eadt l\u1ea1i s\u1ed5 s\u00e1ch tr\u00ean m\u1ed9t process kh\u00e1c"),
9
+ $ctrl$$.name&&"labelinfo"!==$ctrl$$.name&&"listinfo"!==$ctrl$$.name&&"reportinfo"!==$ctrl$$.name&&"moduleinfo"!==$ctrl$$.name&&"options"!==$ctrl$$.name&&global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"POSTAGAIN",data:{condition:JSON.stringify($data_log$$)}},$req$$.user.email,$req$$.user_agent,$req$$);global.importDataMainPool?(console.log("C\u00f4ng vi\u1ec7c c\u1eadp nh\u1eadt l\u1ea1i s\u1ed5 s\u00e1ch \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u01b0a v\u00e0o h\u00e0ng \u0111\u1ee3i ch\u1edd x\u1eed l\u00fd"),
10
10
  global.importDataMainPool.exec({user:$req$$.user,id_app:$req$$.user.current_id_app,module:$ctrl$$.name.toUpperCase(),condition:$condition$$,configs:JSON.stringify(configs),action:"POSTAGAIN"},$response$$=>{setImmediate(()=>{$response$$.error?(console.error("L\u1ed7i khi repost voucher",$response$$.error),$callback$$($response$$.error)):($req$$.result={message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 th\u1ef1c hi\u1ec7n xong"},$callback$$())})})):(console.log("Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang c\u1eadp nh\u1eadt l\u1ea1i s\u1ed5 s\u00e1ch tr\u00ean process ch\u00ednh"),
11
11
  $ctrl$$.postAgainHandler($req$$.user,$condition$$,($e$$,$rs$$)=>{if($e$$)return $callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$rs$$;$callback$$()},{req:$req$$}))}],$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt l\u1ea1i s\u1ed5 s\u00e1ch",$e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0),$mainCallback$$($e$$);global.getModel("notification").createNotification($req$$.user.email,
12
12
  $req$$.user.email,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 c\u1eadp nh\u1eadt l\u1ea1i s\u1ed5 s\u00e1ch xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 c\u1eadp nh\u1eadt l\u1ea1i s\u1ed5 s\u00e1ch xong",null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0);$mainCallback$$(null,$req$$.result)})};module.exports=updateBookHanlder;
package/server/route.js CHANGED
@@ -50,7 +50,7 @@ $data$jscomp$3_req$$={code:$app$jscomp$3_id_app$$.zalo_code,app_id:$app$jscomp$3
50
50
  $message_zalo_token$$.expires_in;$app$jscomp$3_id_app$$.zalo_updated=new Date}catch($e$$){return $message_zalo_token$$=(($e$$.response||{}).data||{}).message,console.error("Can't get access token from zalo",$message_zalo_token$$||$e$$),$res$$.status(400).send({error:$message_zalo_token$$||$e$$.message||$e$$})}}else return $res$$.status(400).send({error:"Ch\u01b0a khai b\u00e1o th\u00f4ng tin zalo app id v\u00e0 secret key cho c\u00f4ng ty n\u00e0y"});await $app$jscomp$3_id_app$$.save();$res$$.send({ok:!0})});
51
51
  $app$$.get("/api-docs-auth",$createRateLimiterMiddleware_limiter_others$$,async function($document_req$$,$res$$){$document_req$$=await docs.apiAuth();return $res$$.send($document_req$$)});$app$$.get("/api-docs-fields/:code",$createRateLimiterMiddleware_limiter_others$$,async function($document$jscomp$1_req$$,$res$$){$document$jscomp$1_req$$=await docs.apiFields($document$jscomp$1_req$$.params.code,$document$jscomp$1_req$$.query.id_app,$document$jscomp$1_req$$.query.import_yn);return $res$$.send($document$jscomp$1_req$$)});
52
52
  $app$$.get("/api-docs-input/:code",$createRateLimiterMiddleware_limiter_others$$,async function($document$jscomp$2_req$$,$res$$){$document$jscomp$2_req$$=await docs.apiDocs($document$jscomp$2_req$$.params.code,$document$jscomp$2_req$$.query.id_app);return $res$$.send($document$jscomp$2_req$$)});$app$$.get("/api-docs-report/:code",$createRateLimiterMiddleware_limiter_others$$,async function($document$jscomp$3_req$$,$res$$){$document$jscomp$3_req$$=await docs.apiReport($document$jscomp$3_req$$.params.code,
53
- $document$jscomp$3_req$$.query.id_app);return $res$$.send($document$jscomp$3_req$$)});({setupBullBoard:$limiter$jscomp$2_limiter$$}=require("./controllers/QueueManager"));$limiter$jscomp$2_limiter$$($app$$);if(configs.has_api_barcode){const $qr$$=require("qr-image");$app$$.get("/qrcode",$createRateLimiterMiddleware_limiter_others$$,function($req$$,$res$$){let $report$$=$req$$.query.report,$type$$=$req$$.query.type||"svg",$size$$=5;if($req$$.query.size)try{$size$$=Number($req$$.query.size),isNaN($size$$)&&
54
- ($size$$=void 0)}catch($e$$){console.error("size qrcode is not valid",$e$$)}else $size$$=5;$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:$type$$,size:$size$$});$res$$.type($type$$);$code$$.pipe($res$$)})});const $bwipjs$$=require("bwip-js"),$stream$$=require("stream");$app$$.get("/barcode",$createRateLimiterMiddleware_limiter_others$$,
55
- function($height_req$$,$res$$){let $code$$=$height_req$$.query.code||"code128",$data$$=$height_req$$.query.data;$height_req$$=Number($height_req$$.query.height||10);if(!$data$$)return $res$$.status(400).send({error:"Thi\u1ebfu c\u00e1c tham s\u1ed1 data"});$bwipjs$$.toBuffer({bcid:$code$$,text:$data$$,scale:3,height:$height_req$$,includetext:!0,textxalign:"center"},function($bufferStream_e$$,$png$$){$bufferStream_e$$?(console.error($bufferStream_e$$,$code$$,$data$$),$res$$.status(400).send({error:$bufferStream_e$$.message||
56
- $bufferStream_e$$.error||$bufferStream_e$$})):($bufferStream_e$$=new $stream$$.PassThrough,$bufferStream_e$$.end($png$$),$bufferStream_e$$.pipe($res$$))})})}}$cb$$()};
53
+ $document$jscomp$3_req$$.query.id_app);return $res$$.send($document$jscomp$3_req$$)});if(configs.has_api_barcode){const $qr$$=require("qr-image");$app$$.get("/qrcode",$createRateLimiterMiddleware_limiter_others$$,function($req$$,$res$$){let $report$$=$req$$.query.report,$type$$=$req$$.query.type||"svg",$size$$=5;if($req$$.query.size)try{$size$$=Number($req$$.query.size),isNaN($size$$)&&($size$$=void 0)}catch($e$$){console.error("size qrcode is not valid",$e$$)}else $size$$=5;$report$$||($report$$=
54
+ $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:$type$$,size:$size$$});$res$$.type($type$$);$code$$.pipe($res$$)})});const $bwipjs$$=require("bwip-js"),$stream$$=require("stream");$app$$.get("/barcode",$createRateLimiterMiddleware_limiter_others$$,function($height_req$$,$res$$){let $code$$=$height_req$$.query.code||"code128",$data$$=$height_req$$.query.data;
55
+ $height_req$$=Number($height_req$$.query.height||10);if(!$data$$)return $res$$.status(400).send({error:"Thi\u1ebfu c\u00e1c tham s\u1ed1 data"});$bwipjs$$.toBuffer({bcid:$code$$,text:$data$$,scale:3,height:$height_req$$,includetext:!0,textxalign:"center"},function($bufferStream_e$$,$png$$){$bufferStream_e$$?(console.error($bufferStream_e$$,$code$$,$data$$),$res$$.status(400).send({error:$bufferStream_e$$.message||$bufferStream_e$$.error||$bufferStream_e$$})):($bufferStream_e$$=new $stream$$.PassThrough,
56
+ $bufferStream_e$$.end($png$$),$bufferStream_e$$.pipe($res$$))})})}}$cb$$()};