flexbiz-server 12.3.24 → 12.3.25
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 +1 -1
- package/server/app.js +14 -13
- package/server/cluster.js +17 -16
- package/server/configs.js +2 -0
- package/server/controllers/controller.js +72 -57
- package/server/controllers/controllerRPT.js +26 -28
- package/server/controllers/controllerUtils.js +23 -23
- package/server/controllers/createHandler.js +15 -15
- package/server/controllers/exportHandler.js +7 -7
- package/server/controllers/findHandler.js +31 -31
- package/server/controllers/handlers.js +3 -0
- package/server/controllers/importFromExcelHandler.js +13 -15
- package/server/controllers/importFromGsHandler.js +4 -6
- package/server/controllers/importFromJsonHandler.js +4 -6
- package/server/controllers/importHandler.js +7 -7
- package/server/controllers/rptExcelHandler.js +9 -10
- package/server/controllers/rptHandler.js +10 -10
- package/server/controllers/updateBookHandler.js +9 -12
- package/server/controllers/updateFieldHandler.js +4 -4
- package/server/controllers/updateHandler.js +33 -34
- package/server/controllers/updateKeyHandler.js +5 -5
- package/server/controllers/viewHandler.js +12 -12
- package/server/libs/BlockchainTransactionPool.js +3 -3
- package/server/libs/WorkerStaticPool.js +12 -5
- package/server/libs/WorkerStaticPool_v1.js +5 -0
- package/server/libs/ckcn.js +1 -1
- package/server/libs/cktk.js +1 -1
- package/server/libs/cktt.js +1 -1
- package/server/libs/ckvt.js +5 -5
- package/server/libs/databanle.js +4 -4
- package/server/libs/databanlenpp.js +1 -1
- package/server/libs/dkcn.js +1 -1
- package/server/libs/dktk.js +1 -1
- package/server/libs/dktt.js +1 -1
- package/server/libs/dkvt.js +4 -4
- package/server/libs/post-book.js +2 -2
- package/server/libs/post-socai.js +3 -3
- package/server/libs/post-sokho.js +3 -3
- package/server/libs/prototypes.js +1 -1
- package/server/libs/redis-cache.js +2 -0
- package/server/libs/restore.js +1 -1
- package/server/libs/thnxt.js +4 -4
- package/server/libs/tinhGtCapnhatPNK.js +1 -1
- package/server/libs/tinhGtPhanboHeSo.js +2 -2
- package/server/libs/tinhGtPhanboSltp.js +2 -2
- package/server/libs/tinhGtPhanboYtcp.js +1 -1
- package/server/libs/tinhGtSltk.js +9 -9
- package/server/libs/tinhGtThcppstk.js +9 -9
- package/server/libs/tinhGtTrucTiep.js +1 -1
- package/server/libs/tinhGtXoa.js +1 -1
- package/server/libs/tinhgiatb.js +25 -26
- package/server/libs/tinhkhauhao1ts.js +1 -1
- package/server/libs/tinhkhauhaots.js +2 -2
- package/server/libs/utils.js +2 -2
- package/server/libs/vsocai.js +1 -1
- package/server/models/log.js +4 -4
- package/server/models/schedule.js +1 -1
- package/server/models/user.js +1 -1
- package/server/modules/lists/ls-comment.js +2 -2
- package/server/modules/lists/ls-dmdoi.js +2 -2
- package/server/modules/lists/ls-dmnhnv.js +3 -3
- package/server/modules/lists/ls-dmnv.js +8 -8
- package/server/modules/lists/ls-dmto.js +2 -2
- package/server/modules/lists/ls-lienhe.js +4 -4
- package/server/modules/lists/ls-parameter.js +2 -3
- package/server/modules/lists/ls-phieudanhgia.js +7 -8
- package/server/modules/lists/ls-task.js +3 -3
- package/server/modules/public/dmvt.js +2 -2
- package/server/modules/reports/calc-tinhgiatb.js +2 -2
- package/server/modules/reports/calc-tinhgiathanh.js +3 -3
- package/server/modules/reports/calc-tinhkhauhaots.js +1 -1
- package/server/modules/reports/calc-tinhluong.js +1 -1
- package/server/modules/reports/rp-baocaokhachhang.js +3 -3
- package/server/modules/reports/rp-ptbitralai.js +1 -1
- package/server/modules/reports/rp-ptdonhang.js +4 -4
- package/server/modules/systems/sys-app.js +1 -1
- package/server/route.js +6 -6
- package/server/workers/backupApp.js +8 -8
- package/server/workers/calcGrid.js +3 -3
- package/server/workers/customerOnImport.js +4 -4
- package/server/workers/dmvtOnImport.js +6 -6
- package/server/workers/excelParser.js +2 -2
- package/server/workers/inputWorker.js +4 -6
- package/server/workers/pushNotify.js +2 -3
- package/server/workers/reportWorker.js +5 -6
- package/server/workers/restoreApp.js +2 -2
- package/server/workers/runScript.js +1 -1
- package/server/workers/sendEmail.js +4 -4
- package/server/workers/webhook.js +2 -2
- package/server/controllers/QueueManager.js +0 -15
- package/server/controllers/QueueManager_bk.js +0 -29
- package/server/controllers/controllerRPT_v1.js +0 -71
- package/server/controllers/controller_v1.js +0 -370
- package/server/controllers/taskQueue.js +0 -25
package/package.json
CHANGED
package/server/app.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
'use strict';require("events").EventEmitter.defaultMaxListeners=1E7;
|
|
2
2
|
const express=require("express"),bodyParser=require("body-parser"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),cors=require("cors"),_global=require("./global"),User=global.getModel("user"),defaultConfigs=require("./defaultConfigs"),crypto=require("crypto"),mainServer=function($app$$,$options$$={cluster:!0,port:443,useSocket:!0},$callbackServer$$=null){const $configs$$=global.configs={...defaultConfigs,...$options$$.configs};$configs$$.admins||($configs$$.admins=
|
|
3
|
-
$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||($configs$$.public_token="flex.public.token");global.port=$options$$.port||$configs$$.PORT||443;require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$
|
|
4
|
-
$
|
|
5
|
-
|
|
6
|
-
$
|
|
7
|
-
|
|
8
|
-
__dirname+"/
|
|
9
|
-
require("
|
|
10
|
-
$
|
|
11
|
-
|
|
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+
|
|
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$$.
|
|
14
|
-
$options$$.
|
|
15
|
-
$
|
|
3
|
+
$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||($configs$$.public_token="flex.public.token");global.port=$options$$.port||$configs$$.PORT||443;require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$app$$.use(function($req$$,$res$$,
|
|
4
|
+
$next$$){$toobusy$$()?(console.error("Server is busy right now. This request has been cancel:",$req$$.originalUrl),$res$$.status(503).send({error:"Server is busy right now, sorry."})):$next$$()});var $compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("express-session");$app$$.use($compress_cookieParser_morgan_multer_root_dir_uploads_session$$({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0,cookie:{secure:!1}}));$compress_cookieParser_morgan_multer_root_dir_uploads_session$$=
|
|
5
|
+
require("cookie-parser");$app$$.use($compress_cookieParser_morgan_multer_root_dir_uploads_session$$());$app$$.use(function($req$$,$res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||($uid$$=$req$$.headers.uid);$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}));$res$$.set("uid",$uid$$);$req$$.cookies.uid=$uid$$;$next$$()});$compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("compression");
|
|
6
|
+
$app$$.use($compress_cookieParser_morgan_multer_root_dir_uploads_session$$());$compress_cookieParser_morgan_multer_root_dir_uploads_session$$=$configs$$.paths.uploads||__dirname+"/uploads";const $limitFileSize$$=$configs$$.limitFileSize||1048576;$app$$.use(function($req$jscomp$2_size$$,$res$$,$next$$){if(($req$jscomp$2_size$$=$req$jscomp$2_size$$.headers["content-lenght"])&&$req$jscomp$2_size$$>$limitFileSize$$)return $res$$.status(400).send({error:"File too large"});$next$$()});$compress_cookieParser_morgan_multer_root_dir_uploads_session$$=
|
|
7
|
+
require("multer")({dest:$compress_cookieParser_morgan_multer_root_dir_uploads_session$$,limits:{files:1,fileSize:$limitFileSize$$}});$app$$.use($compress_cookieParser_morgan_multer_root_dir_uploads_session$$);$app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie","uid"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});!0!==$options$$.lite&&($app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public")),$app$$.use("/admin",express.static($configs$$.paths.admin||
|
|
8
|
+
__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$$=require("morgan");var $accessLogStream_rfs$$=
|
|
9
|
+
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$$,$req$$,$res$$,$next$$){console.error($err$$.stack);
|
|
10
|
+
$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");0!=$options$$.createRedisCache&&
|
|
11
|
+
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$jscomp$1_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$jscomp$1_StaticPool$$.listen($server_sslConfig$$,global.port))$server_sslConfig$$.once("listening",function(){console.log("server started on",global.port)});$StaticPool_StaticPool$jscomp$1_StaticPool$$=require("cluster");$StaticPool_StaticPool$jscomp$1_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+
|
|
13
|
+
" died",$code$$,$signal$$)});$StaticPool_StaticPool$jscomp$1_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_input_data_pool&&($StaticPool_StaticPool$jscomp$1_StaticPool$$=require("./libs/WorkerStaticPool"),global.inputMainPool=new $StaticPool_StaticPool$jscomp$1_StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||
|
|
14
|
+
0,5,3E5),global.inputMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.error("load input data pool")}));$options$$.start_import_data_pool&&($StaticPool_StaticPool$jscomp$1_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool_StaticPool$jscomp$1_StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,5,36E5),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.error("load import data pool")}));
|
|
15
|
+
$options$$.start_report_pool&&($StaticPool_StaticPool$jscomp$1_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool_StaticPool$jscomp$1_StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,5,3E5),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.error("load report pool")}));$callbackServer$$&&$callbackServer$$()}):require("./route")($app$$,()=>{$callbackServer$$&&$callbackServer$$()},!0)})}).catch($err$$=>
|
|
16
|
+
{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$$=`
|
|
16
17
|
Error: ${$err$jscomp$3_error$$.message}
|
|
17
18
|
Stack: ${$err$jscomp$3_error$$.stack}
|
|
18
19
|
`;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
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
'use strict';require("events").EventEmitter.defaultMaxListeners=1E7;
|
|
2
2
|
const express=require("express"),bodyParser=require("body-parser"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),cors=require("cors"),crypto=require("crypto"),_global=require("./global"),defaultConfigs=require("./defaultConfigs"),sslConfig=require("./sslConfig"),clusterServer=function($app$$,$sslDir$$,$_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$={},$_port_accessLogStream_rfs$$=9999,$options$$={start_import_data_pool:!1,start_report_pool:!0,
|
|
3
3
|
useAgenda:!0,createRedisCache:!0}){const $configs$$=global.configs={...defaultConfigs,...$_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$,cluster:0!=$options$$.cluster};$configs$$.admins||($configs$$.admins=$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||($configs$$.public_token="flex.public.token");global.port=$_port_accessLogStream_rfs$$;require("moment-timezone").tz.setDefault($configs$$.timezone||
|
|
4
|
-
"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$
|
|
5
|
-
|
|
6
|
-
$
|
|
7
|
-
$
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
$
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
4
|
+
"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$app$$.use(function($req$$,$res$$,$next$$){$toobusy$$()?(console.error("Server is busy right now. This request has been cancel:",$req$$.originalUrl),$res$$.status(503).send({error:"Server is busy right now, sorry."})):$next$$()});$_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("express-session");$app$$.use($_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$({secret:"QV098PVT123456HLBN",
|
|
5
|
+
resave:!1,saveUninitialized:!0,cookie:{secure:!1}}));$_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("cookie-parser");$app$$.use($_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$());$app$$.use(function($req$$,$res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||($uid$$=$req$$.headers.uid);$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}));
|
|
6
|
+
$res$$.set("uid",$uid$$);$req$$.cookies.uid=$uid$$;$next$$()});$_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("compression");$app$$.use($_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$());$_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=$configs$$.paths.uploads||__dirname+"/uploads";const $limitFileSize$$=$configs$$.limitFileSize||1048576;$app$$.use(function($req$jscomp$2_size$$,$res$$,$next$$){if(($req$jscomp$2_size$$=
|
|
7
|
+
$req$jscomp$2_size$$.headers["content-lenght"])&&$req$jscomp$2_size$$>$limitFileSize$$)return $res$$.status(400).send({error:"File too large"});$next$$()});$_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("multer")({dest:$_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$,limits:{files:1,fileSize:$limitFileSize$$}});$app$$.use($_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$);$app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie",
|
|
8
|
+
"uid"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||__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"}));
|
|
9
|
+
$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",extended:!0}));$app$$.use(passport.initialize());$_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("morgan");$_port_accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$_port_accessLogStream_rfs$$=$_port_accessLogStream_rfs$$("access-cluster.log",{interval:"1d",path:$logDirectory$$});
|
|
10
|
+
$app$$.use($_configs_compress_cookieParser_morgan_multer_root_dir_uploads_session$$("combined",{stream:$_port_accessLogStream_rfs$$,skip:function($req$$,$res$$){return 400>$res$$.statusCode}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server error!")});global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async $clientMongo_redis$$=>{console.log("Connected to Database");global.clientMongo=$clientMongo_redis$$;$clientMongo_redis$$=
|
|
11
|
+
require("redis");global.clientRedis=$clientMongo_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",async function(){function $initSysData$$(){console.log("creating system data...");const $files$$=fs.readdirSync(__dirname+"/data/sys");$async$$.mapSeries($files$$,function($file$$,$callback$jscomp$0$$){setImmediate(()=>{if(".js"==$file$$.substr(-3)){const $data$$=
|
|
12
|
+
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;$model$$.create($r$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})},function($error$$,$rs$$){$callback$jscomp$0$$($error$$,$rs$$)})})}else $callback$jscomp$0$$()})},
|
|
13
|
+
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$jscomp$1_StaticPool$$=global.getModel("user"),$init_system_data_server$$=$configs$$.initSysData;$init_system_data_server$$||await $StaticPool_StaticPool$jscomp$1_StaticPool$$.findOne({})||
|
|
14
|
+
($init_system_data_server$$=!0);for(let $i$$=0;$i$$<$configs$$.adminUsers.length;$i$$++){let $adminUser$$=$configs$$.adminUsers[$i$$],$u$$=await $StaticPool_StaticPool$jscomp$1_StaticPool$$.findOne({email:$adminUser$$.email});$u$$||($adminUser$$.local={name:$adminUser$$.name,email:$adminUser$$.email,active:!0},$u$$=new $StaticPool_StaticPool$jscomp$1_StaticPool$$($adminUser$$),$u$$.local.password=$u$$.generateHash($adminUser$$.email+$adminUser$$.defaultPassword),$u$$.save(function($error$$,$user$$){if($error$$)return console.error($error$$);
|
|
15
|
+
$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$jscomp$1_StaticPool$$.initSocket($init_system_data_server$$);if(!1!==$options$$.cluster){if(!require("sticky-session").listen($init_system_data_server$$,
|
|
16
|
+
global.port))$init_system_data_server$$.once("listening",function(){console.log("server cluster started on",global.port)});$StaticPool_StaticPool$jscomp$1_StaticPool$$=require("cluster");$StaticPool_StaticPool$jscomp$1_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool_StaticPool$jscomp$1_StaticPool$$.on("online",function($worker$$){console.info("worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",
|
|
17
|
+
JSON.stringify({pid:$worker$$.process.pid}))})}else $init_system_data_server$$.listen(global.port,()=>{console.log("server start at "+global.port+" port")});$options$$.start_input_data_pool&&($StaticPool_StaticPool$jscomp$1_StaticPool$$=require("./libs/WorkerStaticPool"),global.inputMainPool=new $StaticPool_StaticPool$jscomp$1_StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,5,3E5),global.inputMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.error("load input data pool")}));
|
|
18
|
+
$options$$.start_import_data_pool&&($StaticPool_StaticPool$jscomp$1_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool_StaticPool$jscomp$1_StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,5,36E5),global.importDataMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.error("load import data pool")}));$options$$.start_report_pool&&($StaticPool_StaticPool$jscomp$1_StaticPool$$=require("./libs/WorkerStaticPool"),
|
|
19
|
+
global.reportMainPool=new $StaticPool_StaticPool$jscomp$1_StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,5,3E5),global.reportMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.error("load report pool")}))})}).catch($err$$=>{console.error("Not Connected to Database ERROR!",$err$$)})};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});
|
|
20
|
+
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
21
|
Error: ${$err$jscomp$3_error$$.message}
|
|
21
22
|
Stack: ${$err$jscomp$3_error$$.stack}
|
|
22
23
|
`;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=clusterServer;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
'use strict';const EventEmitter=require("events").EventEmitter,
|
|
2
|
-
dmqddvt=global.getModel("dmqddvt"),importHandler=require("./importHandler"),viewHandler=require("./viewHandler"),
|
|
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()]=
|
|
1
|
+
'use strict';const EventEmitter=require("events").EventEmitter,_=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"),crypto=require("crypto"),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"),importHandler=require("./importHandler"),viewHandler=require("./viewHandler"),{bodyToJson,ERRORS,getNextSequence,postData,pushNotification,runWebhooks}=require("./controllerUtils"),handlers=require("./handlers");
|
|
3
|
+
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();_.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()]=
|
|
5
4
|
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=
|
|
6
5
|
$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;
|
|
7
6
|
this.options=$options$$;this.replaceIfExists=$options$$.replaceIfExists}async asyncView($user$$,$items$$,$options$$){const $self$$=this;return new Promise($resolve$$=>{$self$$.onView($user$$,$items$$,($error$$,$rs$$)=>{if($error$$)return console.error($error$$),$resolve$$($items$$);$resolve$$($rs$$)},$options$$)})}async onView($user$$,$rows$$,$next$$,$options$$){viewHandler($user$$,this,$rows$$,$next$$,$options$$)}async notNeedRight($user$$,$_options$$={}){let $nnr$$=this.options.notNeedRight;_.isFunction($nnr$$)&&
|
|
@@ -12,63 +11,79 @@ $res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})})}async
|
|
|
12
11
|
$d$$.sl_xuat});$details$$=await $details$$.asyncGroupBy(["ma_vt","ma_kho","ten_vt"],["sl_xuat_qd"]);async.map($details$$,($d$$,$callback$$)=>{let $ma_kho$$=$d$$.ma_kho||$data$$.ma_kho||$data$$.ma_kho_x,$query$$={ma_vt:$d$$.ma_vt,ma_kho:$ma_kho$$,ngay:new Date,id_app:$appInfo$$._id};$d$$.kg_kiem_tra_ton_kho_tt||($d$$.ma_lo&&($query$$.ma_lo=$d$$.ma_lo),$d$$.han_sd&&($query$$.han_sd=$d$$.han_sd),$d$$.ma_tt1&&($query$$.ma_tt1=$d$$.ma_tt1),$d$$.ma_tt2&&($query$$.ma_tt2=$d$$.ma_tt2),$d$$.ma_tt3&&($query$$.ma_tt3=
|
|
13
12
|
$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$$+
|
|
14
13
|
$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$$=
|
|
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($
|
|
16
|
-
|
|
17
|
-
"
|
|
18
|
-
$ctrl$$.name;let $approveDatas$$=[];$voucher_options$$||($voucher_options$$=(await OptionsModel.findOne({id_app:$obj$$.id_app,id_func:$ctrl$$.name},{option:1}).lean()||
|
|
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)
|
|
20
|
-
($str_func$$=`return ${$str_func$$}`);$update_after_deny$$=evalute($str_func$$)}catch($e$$){console.error("request approve",$e$$)}if($update_after_deny
|
|
21
|
-
|
|
22
|
-
|
|
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"
|
|
24
|
-
|
|
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$$=>
|
|
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
|
|
27
|
-
"new",$old_obj$$=null,$justFireEvents$$=!1,$options$$={title:"",data:{}}){return pushNotification(this,$_obj$$,$eventName$$,$old_obj$$,$justFireEvents$$,$options$$)}}controller.prototype.__proto__=EventEmitter.prototype;
|
|
14
|
+
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($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 $_req$$=
|
|
15
|
+
{handler:"createRouteHandler",routeName:$routeName$$,_options:$_options$$,route_action_key:$route_action_key$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,originalUrl:$req$$.originalUrl};global.inputMainPool?global.inputMainPool.exec({req:$_req$$,module:$self$$.name.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if($response$$.error)return $res$$.status(400).send({error:$response$$.error,message:$response$$.message||$response$$.error});
|
|
16
|
+
$res$$.send($response$$.result)}):handlers.createRouteHandler($self$$,$_req$$,($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$$):"POST"==$_options$$.method?$router$$.route($url$$).post($handler_routeAction$$):"PUT"==$_options$$.method?$router$$.route($url$$).put($handler_routeAction$$):
|
|
17
|
+
$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||$ctrl$$.name;let $approveDatas$$=[];$voucher_options$$||($voucher_options$$=(await OptionsModel.findOne({id_app:$obj$$.id_app,id_func:$ctrl$$.name},{option:1}).lean()||
|
|
18
|
+
{}).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 ")&&($str_func$$=`return ${$str_func$$}`);$update_after_approve$$=evalute($str_func$$)}catch($e$$){console.error("request approve",$e$$,$trang_thai_approve$$.update_after_approve),
|
|
19
|
+
$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 ")&&($str_func$$=`return ${$str_func$$}`);$update_after_deny$$=evalute($str_func$$)}catch($e$$){console.error("request approve",$e$$)}if($update_after_deny$$||
|
|
20
|
+
$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;if(!$approveData_condition$$)return!0;0>$approveData_condition$$.indexOf("return ")&&($approveData_condition$$=`return ${$approveData_condition$$}`);
|
|
21
|
+
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$$=$title$$;try{$title$$=evalute($ds_nguoi_duyet_str_func$$,{master:$obj$$,data:$obj$$})}catch($e$$){console.error("request approve",
|
|
22
|
+
$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$$=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",
|
|
23
|
+
$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$$=`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$$,
|
|
24
|
+
...$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$$&&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$$=>
|
|
25
|
+
({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$$,$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$$,
|
|
26
|
+
$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$$="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$$)});
|
|
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 $
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
controller.prototype.find=function($_route_name_route_name$$,$shareRoute$$=!1,$method$$="GET"){let $ctrl$$=this;const $handlerResult$$=($res$$,$data$$)=>{const {result:$result$$,dataType:$dataType$$}=$data$$;"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$$)},$findRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,
|
|
30
|
+
body:$body$$,user:$user$$,params:$params$$}=$ip$jscomp$1_req$$;var $_req$jscomp$1_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{if($_req$jscomp$1_user_agent$$={handler:"findHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$_req$jscomp$1_user_agent$$,ip:$ip$jscomp$1_req$$,shareRoute:$shareRoute$$},global.inputMainPool){const $id_task$$=`task-find-${crypto.randomBytes(20).toString("hex")}`;
|
|
31
|
+
global.inputMainPool.exec({id_task:$id_task$$,req:$_req$jscomp$1_user_agent$$,module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if($response$$.error)return $res$$.status(400).send({error:$response$$.error,message:$response$$.message||$response$$.error});$handlerResult$$($res$$,$response$$.result)})}else handlers.findHandler($ctrl$$,$_req$jscomp$1_user_agent$$,($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);$handlerResult$$($res$$,$returnvalue$$)})}catch($e$$){$res$$.status(400).send($e$$)}};
|
|
32
|
+
$_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
33
|
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
|
|
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
|
|
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
|
|
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..."),
|
|
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
|
|
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($
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
controller.prototype.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip
|
|
53
|
-
|
|
54
|
-
user:$user$$,params:$params
|
|
55
|
-
|
|
56
|
-
$
|
|
34
|
+
user:$user$$,params:$params$$}=$req$$;try{handlers.findHandler($ctrl$$,{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,shareRoute:$shareRoute$$,originalUrl:$req$$.originalUrl},($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});
|
|
35
|
+
$res$$.send($e$jscomp$16_result$$[0])})}catch($e$$){console.error($e$$),$res$$.status(400).send($e$$)}})};
|
|
36
|
+
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$$,
|
|
37
|
+
$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$$,
|
|
38
|
+
$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..."),
|
|
39
|
+
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||
|
|
40
|
+
$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"})})})})};
|
|
41
|
+
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 $_req$$={handler:"updateBookHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,
|
|
42
|
+
originalUrl:$req$$.originalUrl};if(global.importDataMainPool){const $id_task$$=`task-update-book-${crypto.randomBytes(20).toString("hex")}`;$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_task:`${configs.api_url||configs.domain}/task-status/${$id_task$$}`});global.importDataMainPool.exec({id_task:$id_task$$,req:$_req$$,module:$ctrl$$.name.toUpperCase(),
|
|
43
|
+
configs:JSON.stringify(configs)},$e$jscomp$23_response$$=>{if($e$jscomp$23_response$$=$e$jscomp$23_response$$.error)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$jscomp$23_response$$.message||$e$jscomp$23_response$$.error||$e$jscomp$23_response$$,null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0);global.getModel("notification").createNotification($req$$.user.email,
|
|
44
|
+
$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)})}else $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"}),handlers.updateBookHandler($ctrl$$,
|
|
45
|
+
$_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);global.getModel("notification").createNotification($req$$.user.email,$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",
|
|
46
|
+
null,{id_app:$req$$.user.current_id_app},!0,$req$$.access_token,!0)})}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
47
|
+
controller.prototype.updateKey=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/updatekey/:_id/:field/:new_value`).get(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{handlers.updateKeyHandler($ctrl$$,{type_job:"updateKey",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,
|
|
48
|
+
ip:$ip$$,files:$files$$,originalUrl:$req$$.originalUrl},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)})}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
49
|
+
controller.prototype.updateField=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/update/:field`).get(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{handlers.updateFieldHandler($ctrl$$,{type_job:"updateField",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,
|
|
50
|
+
files:$files$$,originalUrl:$req$$.originalUrl},($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)})}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
51
|
+
controller.prototype.exportToExcel=function(){let $ctrl$$=this;const $handlerResult$$=($res$$,$returnvalue$$)=>{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",
|
|
52
|
+
"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)}};this.router.route(`${this.route_name}/excel/:rpt_id`).get(async function($req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),
|
|
53
|
+
$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $_req$$={handler:"exportHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,originalUrl:$req$$.originalUrl};global.inputMainPool?global.inputMainPool.exec({req:$_req$$,module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if($response$$.error)return $res$$.status(400).send({error:$response$$.error,message:$response$$.message||$response$$.error});
|
|
54
|
+
$handlerResult$$($res$$,$response$$.result)}):handlers.exportHandler($ctrl$$,$_req$$,($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);$handlerResult$$($res$$,$returnvalue$$)})}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
55
|
+
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 $_req$$={handler:"importFromGsHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,originalUrl:$req$$.originalUrl};
|
|
56
|
+
if(global.importDataMainPool){const $id_task$$=`task-import-google-sheet-${crypto.randomBytes(20).toString("hex")}`;$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_task:`${configs.api_url||configs.domain}/task-status/${$id_task$$}`});global.importDataMainPool.exec({id_task:$id_task$$,req:$_req$$,module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},
|
|
57
|
+
$e$jscomp$32_response$$=>{if($e$jscomp$32_response$$=$e$jscomp$32_response$$.error)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$jscomp$32_response$$.message||$e$jscomp$32_response$$.error||$e$jscomp$32_response$$,null,{id_app:$req$$.user.current_id_app},!0,null,!0);global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",
|
|
58
|
+
"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",null,{id_app:$req$$.user.current_id_app},!0,null,!0)})}else $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"}),handlers.importFromGsHandler($ctrl$$,$_req$$,$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",
|
|
59
|
+
$e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},!0,null,!0);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,null,!0)})}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
60
|
+
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 $_req$$={handler:"importFromJsonHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,
|
|
61
|
+
originalUrl:$req$$.originalUrl};if(global.importDataMainPool){const $id_task$$=`task-import-json-${crypto.randomBytes(20).toString("hex")}`;$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_task:`${configs.api_url||configs.domain}/task-status/${$id_task$$}`});global.importDataMainPool.exec({id_task:$id_task$$,req:$_req$$,module:$ctrl$$.name.toUpperCase(),
|
|
62
|
+
configs:JSON.stringify(configs)},$e$jscomp$35_response$$=>{if($e$jscomp$35_response$$=$e$jscomp$35_response$$.error)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$jscomp$35_response$$.message||$e$jscomp$35_response$$.error||$e$jscomp$35_response$$,null,{id_app:$req$$.user.current_id_app},!0,null,!0);global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",
|
|
63
|
+
"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",null,{id_app:$req$$.user.current_id_app},!0,null,!0)})}else $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"}),handlers.importFromJsonHandler($ctrl$$,$_req$$,$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",
|
|
64
|
+
$e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},!0,null,!0);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,null,!0)})}catch($e$$){console.error("Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$$),$res$$.status(400).send($e$$)}})};
|
|
65
|
+
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 $_req$$={handler:"importFromExcelHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,
|
|
66
|
+
originalUrl:$req$$.originalUrl};if(global.importDataMainPool){const $id_task$$=`task-import-excel-${crypto.randomBytes(20).toString("hex")}`;$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_task:`${configs.api_url||configs.domain}/task-status/${$id_task$$}`});global.importDataMainPool.exec({id_task:$id_task$$,req:$_req$$,module:$ctrl$$.name.toUpperCase(),
|
|
67
|
+
configs:JSON.stringify(configs)},$e$jscomp$38_response$$=>{if($e$jscomp$38_response$$=$e$jscomp$38_response$$.error)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$jscomp$38_response$$.message||$e$jscomp$38_response$$.error||$e$jscomp$38_response$$,null,{id_app:$req$$.user.current_id_app},!0,null,!0);global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",
|
|
68
|
+
"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 import d\u1eef li\u1ec7u xong",null,{id_app:$req$$.user.current_id_app},!0,null,!0)})}else $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"}),handlers.importFromExcelHandler($ctrl$$,$_req$$,$e$$=>{if($e$$)return global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",
|
|
69
|
+
$e$$.message||$e$$.error||$e$$,null,{id_app:$req$$.user.current_id_app},!0,null,!0);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,null,!0)})}catch($e$$){$res$$.status(400).send($e$$)}})};
|
|
70
|
+
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<_.keys($req$$.files).length&&("JSON"!=$body$$.return&&($req$$.uploadFile=!0),_.extend($body$$,$req$$.files));const {query:$query$$,user:$user$$,params:$params$$,files:$files$$,uploadFile:$uploadFile$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),
|
|
71
|
+
$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{handlers.createHandler($ctrl$$,{query:$query$$,data:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,uploadFile:$uploadFile$$,originalUrl:$req$$.originalUrl},($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$$)}})};
|
|
57
72
|
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$$=
|
|
58
73
|
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;
|
|
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$$&&(
|
|
60
|
-
|
|
74
|
+
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$$&&(_.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$$,params:$params$$,
|
|
75
|
+
files:$files$$,uploadFile:$uploadFile$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{handlers.createHandler($ctrl$$,{query:$query$$,body:$body$jscomp$11_query$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,uploadFile:$uploadFile$$,originalUrl:$req$$.originalUrl},($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);!1===$req$$.query.return_data?$res$$.send({_id:$returnvalue$$._id.toString()}):
|
|
61
76
|
$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$$)})};
|
|
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&&
|
|
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
|
|
77
|
+
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&&_.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"]||
|
|
78
|
+
$req$$.connection.remoteAddress,$id$$=$req$$.params.id;try{handlers.updateHandler($ctrl$$,{query:$query$$,id:$id$$,data:$data$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,uploadFile:$uploadFile$$,originalUrl:$req$$.originalUrl},($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",
|
|
64
79
|
$e$$),$res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}})};
|
|
65
|
-
controller.prototype.delete=function(){let $ctrl$$=this;this.router.route(this.route_name+"/:id").delete(async($
|
|
66
|
-
|
|
67
|
-
controller.prototype.deleteMany=function($route_name$$){let $ctrl$$=this;this.router.route(`${$route_name$$||this.route_name}/action/delete`).delete(async($
|
|
68
|
-
|
|
69
|
-
controller.prototype.history=function(){let $ctrl$$=this;this.router.route(this.route_name+"/g/history/:id").get(async function($
|
|
70
|
-
|
|
71
|
-
controller.prototype.logs=function(){let $ctrl$$=this;this.router.route(this.route_name+"/g/log/:action").get(async function($
|
|
72
|
-
|
|
80
|
+
controller.prototype.delete=function(){let $ctrl$$=this;this.router.route(this.route_name+"/:id").delete(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{handlers.deleteHandler($ctrl$$,{query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,originalUrl:$req$$.originalUrl},
|
|
81
|
+
($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$$)}})};
|
|
82
|
+
controller.prototype.deleteMany=function($route_name$$){let $ctrl$$=this;this.router.route(`${$route_name$$||this.route_name}/action/delete`).delete(async($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{handlers.deleteManyHandler($ctrl$$,{type_job:"deleteMany",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,
|
|
83
|
+
ip:$ip$$,originalUrl:$req$$.originalUrl},($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$$)}})};
|
|
84
|
+
controller.prototype.history=function(){let $ctrl$$=this;this.router.route(this.route_name+"/g/history/:id").get(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{handlers.historyHandler($ctrl$$,{type_job:"history",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,
|
|
85
|
+
originalUrl:$req$$.originalUrl},($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$$)}})};
|
|
86
|
+
controller.prototype.logs=function(){let $ctrl$$=this;this.router.route(this.route_name+"/g/log/:action").get(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{handlers.logHandler($ctrl$$,{type_job:"log",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,originalUrl:$req$$.originalUrl},
|
|
87
|
+
($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
88
|
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;
|
|
89
|
+
$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 handlers.createHandler($ctrl$$,$req$$,$callback$$)};module.exports=controller;
|
|
@@ -1,28 +1,26 @@
|
|
|
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
|
|
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.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
$
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
$
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
$
|
|
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;
|
|
1
|
+
'use strict';const _=require("lodash"),crypto=require("crypto"),numeral=require("numeral"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),reportinfo=global.getModel("reportinfo"),{evalute,getParameterData}=require("../libs/utils"),utils=require("../libs/utils"),handlers=require("./handlers");
|
|
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.handleResult=async($req$$,$data_response$$,$callback$$)=>{if($data_response$$.error)return $callback$$($data_response$$.error);$data_response$$=$data_response$$.result;
|
|
3
|
+
var $func_string_rptInfo$$=await reportinfo.findOne({code:($req$$.query.report_info_code||$rptId$$).toLowerCase()}).lean();if($func_string_rptInfo$$&&$func_string_rptInfo$$.handle_data_expression_server){if(0<=$func_string_rptInfo$$.handle_data_expression_server.indexOf("async "))return $callback$$("async function is not allow");$func_string_rptInfo$$=`return (async ()=>{
|
|
4
|
+
try{
|
|
5
|
+
${$func_string_rptInfo$$.handle_data_expression_server}
|
|
6
|
+
}catch(e){
|
|
7
|
+
return {error:e}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
})`;try{let $rs$$=await evalute($func_string_rptInfo$$,{data:$data_response$$,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_response$$=$rs$$}}catch($e$$){return console.error("handle_data_expression_server",$e$$,$func_string_rptInfo$$,$rptId$$),$callback$$($e$$.message||
|
|
11
|
+
$e$$)}}$callback$$(null,$data_response$$)};this.getDataFunc=()=>{console.log("get data from server",$rptId$$,"...");return $options$$.stream?$fecthData$$:($req$$,$callback$$)=>{$fecthData$$($req$$,($e$jscomp$0$$,$data$$)=>{this.handleResult($req$$,{error:$e$jscomp$0$$,result:$data$$},($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}};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)handlers.rptHandler(this,
|
|
12
|
+
$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$$;var $_req_user_agent$$=$ip_req$$.header("user-agent");$ip_req$$=$ip_req$$.headers["x-forwarded-for"]||$ip_req$$.connection.remoteAddress;try{if($_req_user_agent$$={handler:"rptHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$_req_user_agent$$,
|
|
13
|
+
ip:$ip_req$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&0!=$options$$.queue){const $id_task$$=`report-${crypto.randomBytes(20).toString("hex")}`;$options$$.waiting_message&&$res$$.send([{message:$options$$.waiting_message,status_task:`${configs.api_url||configs.domain}/task-status/${$id_task$$}`}]);global.reportMainPool.exec({id_task:$id_task$$,req:$_req_user_agent$$,module:$rptId$$.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{setImmediate(()=>{if(!$options$$.waiting_message){if($response$$.error)return $res$$.status(400).send($response$$.error);
|
|
14
|
+
$res$$.send($response$$.result)}})})}else $options$$.waiting_message&&$res$$.send([{message:$options$$.waiting_message}]),handlers.rptHandler(this,$_req_user_agent$$,($e$$,$returnvalue$$)=>{if(!$options$$.waiting_message){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$$,body:$body$$,
|
|
15
|
+
user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$1_req$$;var $_req$jscomp$1_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{if($_req$jscomp$1_user_agent$$={handler:"rptExcelHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$_req$jscomp$1_user_agent$$,ip:$ip$jscomp$1_req$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&
|
|
16
|
+
0!=$options$$.queue){const $id_task$$=`report-export-${crypto.randomBytes(20).toString("hex")}`;global.reportMainPool.exec({id_task:$id_task$$,req:$_req$jscomp$1_user_agent$$,module:$rptId$$.toUpperCase(),configs:JSON.stringify(configs)},$response$jscomp$3_returnvalue$$=>{if($response$jscomp$3_returnvalue$$.error)return $res$$.status(400).send($response$jscomp$3_returnvalue$$.error);$response$jscomp$3_returnvalue$$=$response$jscomp$3_returnvalue$$.result;const $result$$=$response$jscomp$3_returnvalue$$.data;
|
|
17
|
+
switch($response$jscomp$3_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","attachment; filename="+$rptId$$+".docx");$res$$.write($result$$,"binary");$res$$.end(null,"binary");
|
|
18
|
+
break;default:$res$$.send($result$$)}})}else handlers.rptExcelHandler(this,$_req$jscomp$1_user_agent$$,($e$jscomp$6_result$$,$returnvalue$$)=>{if($e$jscomp$6_result$$)return $res$$.status(400).send($e$jscomp$6_result$$);$e$jscomp$6_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($e$jscomp$6_result$$,"binary");break;case "docx":$res$$.setHeader("Content-Type",
|
|
19
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".docx");$res$$.write($e$jscomp$6_result$$,"binary");$res$$.end(null,"binary");break;default:$res$$.send($e$jscomp$6_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$$);
|
|
20
|
+
$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=$_options$$.method?$_options$$.method.toUpperCase():"GET";const $route_action_key$$=`rpt_route_action_${$self$$.module}_${$routeName$$}_${$_options$$.method}`;$self$$[$route_action_key$$]=
|
|
21
|
+
$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$$;var $_req$jscomp$2_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{if($_req$jscomp$2_user_agent$$={handler:"rptCreateRouteHandler",routeName:$routeName$$,_options:$_options$$,route_action_key:$route_action_key$$,
|
|
22
|
+
query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$_req$jscomp$2_user_agent$$,ip:$ip$jscomp$2_req$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()){const $id_task$$=`report-create-route-${crypto.randomBytes(20).toString("hex")}`;global.reportMainPool.exec({id_task:$id_task$$,req:$_req$jscomp$2_user_agent$$,module:$self$$.module.toUpperCase(),configs:JSON.stringify(configs)},$response$jscomp$4_returnvalue$$=>{if($response$jscomp$4_returnvalue$$.error)return $res$$.status(400).send($response$jscomp$4_returnvalue$$.error);
|
|
23
|
+
$response$jscomp$4_returnvalue$$=$response$jscomp$4_returnvalue$$.result;const $result$$=$response$jscomp$4_returnvalue$$.data;switch($response$jscomp$4_returnvalue$$.type){case "xlsx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$self$$.module+".xlsx");$res$$.end($result$$,"binary");break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition",
|
|
24
|
+
"attachment; filename="+$self$$.module+".docx");$res$$.write($result$$,"binary");$res$$.end(null,"binary");break;default:$res$$.send($result$$)}})}else handlers.rptCreateRouteHandler(this,$_req$jscomp$2_user_agent$$,($e$jscomp$9_result$$,$returnvalue$$)=>{if($e$jscomp$9_result$$)return $res$$.status(400).send($e$jscomp$9_result$$);$e$jscomp$9_result$$=$returnvalue$$.data;switch($returnvalue$$.type){case "xlsx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition",
|
|
25
|
+
"attachment; filename="+$self$$.module+".xlsx");$res$$.end($e$jscomp$9_result$$,"binary");break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition","attachment; filename="+$self$$.module+".docx");$res$$.write($e$jscomp$9_result$$,"binary");$res$$.end(null,"binary");break;default:$res$$.send($e$jscomp$9_result$$)}})}catch($e$$){$res$$.status(400).send($e$$)}};"DELETE"==$_options$$.method?this.router.route(`${this.base_path+
|
|
26
|
+
this.module}/${$routeName$$}`).delete($callbackRoute_handler$$):"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;
|