flexbiz-server 12.6.7 → 12.6.8

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.
Files changed (44) hide show
  1. package/package.json +2 -1
  2. package/server/app.js +1 -1
  3. package/server/cluster.js +1 -1
  4. package/server/controllers/controller.js +6 -6
  5. package/server/controllers/controllerRPT.js +23 -22
  6. package/server/controllers/findHandler.js +39 -37
  7. package/server/controllers/rptExcelHandler.js +16 -15
  8. package/server/controllers/rptHandler.js +3 -3
  9. package/server/libs/WorkerStaticPool.js +16 -16
  10. package/server/libs/WorkerStaticPool_v3.js +19 -0
  11. package/server/libs/cdpskh.js +10 -10
  12. package/server/libs/excelHelper.js +8 -0
  13. package/server/libs/invoiceEasy.js +1 -1
  14. package/server/libs/mongoosePatch.js +9 -8
  15. package/server/libs/permission.js +2 -2
  16. package/server/libs/queryBuilding.js +2 -2
  17. package/server/libs/redis-cache.js +7 -6
  18. package/server/libs/sessionContext.js +5 -4
  19. package/server/libs/utils.js +4 -2
  20. package/server/models/cacheSessionReport.js +1 -1
  21. package/server/models/hd2.js +2 -2
  22. package/server/models/rptform.js +3 -5
  23. package/server/models/user.js +3 -3
  24. package/server/modules/lists/ls-customer.js +21 -21
  25. package/server/modules/lists/ls-dmvt.js +43 -43
  26. package/server/modules/lists/ls-rptform.js +3 -4
  27. package/server/modules/reports/calc-tinhluong.js +17 -15
  28. package/server/modules/reports/rp-bcqt.js +23 -23
  29. package/server/modules/reports/rp-cdpskh.js +7 -7
  30. package/server/modules/reports/rp-ckcn.js +3 -3
  31. package/server/modules/reports/rp-kgchamcong.js +2 -1
  32. package/server/modules/reports/rp-khoaso.js +4 -3
  33. package/server/modules/reports/rp-ptcttct.js +19 -17
  34. package/server/modules/reports/rp-pttct.js +48 -45
  35. package/server/modules/reports/rp-pttctkho.js +15 -14
  36. package/server/modules/reports/rp-pttctkho2.js +12 -12
  37. package/server/modules/reports/rp-scttk.js +5 -4
  38. package/server/modules/reports/rp-thnxtnpp.js +2 -2
  39. package/server/modules/systems/sys-app.js +20 -20
  40. package/server/modules/systems/sys-listinfo.js +8 -8
  41. package/server/modules/systems/sys-reportinfo.js +4 -3
  42. package/server/modules/systems/sys-users.js +2 -2
  43. package/server/modules/vouchers/vo-hd2.js +22 -18
  44. package/server/route.js +17 -16
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.6.7",
5
+ "version": "12.6.8",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -32,6 +32,7 @@
32
32
  "ejs": "^4.0.1",
33
33
  "elliptic-nodejs": "^6.5.4",
34
34
  "excel-report": "^1.0.3",
35
+ "exceljs": "^4.4.0",
35
36
  "expo-server-sdk": "^3.6.0",
36
37
  "express": "^4.17.1",
37
38
  "express-session": "^1.17.2",
package/server/app.js CHANGED
@@ -15,7 +15,7 @@ global.getModel("assabcihandler").start();const {recoverBackgroundTasks:$recover
15
15
  $app$$)}else $cpus_report_cpus_server_sslConfig$$=http.createServer($app$$);$cpus_report_cpus_server_sslConfig$$.timeout=6E5;$options$$.useSocket!==!1&&$User$$.initSocket($cpus_report_cpus_server_sslConfig$$);if($options$$.cluster!==!1){if(!$StaticPool$$.listen($cpus_report_cpus_server_sslConfig$$,global.port))$cpus_report_cpus_server_sslConfig$$.once("listening",function(){Logger.info("[app] server started on",global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,
16
16
  $code$$,$signal$$){Logger.error("[app] worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$$.on("online",function($worker$$){console.info("[app] worker "+$worker$$.process.pid+" is online")})}else $cpus_report_cpus_server_sslConfig$$.listen(global.port,()=>{Logger.info("[app] server start at "+global.port+" port")})}$cpus_report_cpus_server_sslConfig$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?
17
17
  1:Math.round($cpus_report_cpus_server_sslConfig$$/2):0);var $StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_report_cpus_server_sslConfig$$/2),2):0);$cpus_report_cpus_server_sslConfig$$=$options$$.report_cpus||($options$$.start_import_data_pool?Math.max(Math.min($cpus_report_cpus_server_sslConfig$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_report_cpus_server_sslConfig$$/2))-1,2):0);if($StaticPool$jscomp$0$$){const $StaticPool$$=
18
- require("./libs/WorkerStaticPool");global.inputMainPool=new $StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,3E5,$StaticPool$jscomp$0$$,"input pool");global.inputMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("\ud83d\udd25 [app] Crud pool ready")})}$StaticPool$$&&($StaticPool$jscomp$0$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$0$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||
18
+ require("./libs/WorkerStaticPool");global.inputMainPool=new $StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,5E3,$StaticPool$jscomp$0$$,"input pool");global.inputMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("\ud83d\udd25 [app] Crud pool ready")})}$StaticPool$$&&($StaticPool$jscomp$0$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$0$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||
19
19
  0,$StaticPool$$,36E5,1,"import pool"),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("[app] Import pool ready")}));$cpus_report_cpus_server_sslConfig$$&&($StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,$cpus_report_cpus_server_sslConfig$$,3E5,2,"report pool"),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("[app] Report pool ready")}));
20
20
  $callbackServer$$&&$callbackServer$$()})}else require("./route")($app$$,()=>{$callbackServer$$&&$callbackServer$$()},!0)})}).catch($err$$=>{Logger.info("[app] Not Connected to Database ERROR! ",$err$$);process.exit(1)});return $app$$};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});
21
21
  process.on("uncaughtException",function($err$jscomp$3_error$$){Logger.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);Logger.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
package/server/cluster.js CHANGED
@@ -18,7 +18,7 @@ email:$StaticPool_adminUser$$.email,active:!0},$u$$=new $StaticPool$$($StaticPoo
18
18
  $configs$$.use_ssl&&$sslDir$$?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$cpus_init_system_data_report_cpus_server$$.timeout=6E5;$StaticPool$$.initSocket($cpus_init_system_data_report_cpus_server$$);$StaticPool$$.initClientSockets();if($options$$.cluster){if(!require("sticky-session").listen($cpus_init_system_data_report_cpus_server$$,global.port))$cpus_init_system_data_report_cpus_server$$.once("listening",function(){Logger.info("[cluster] server cluster started on",
19
19
  global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){Logger.error("[cluster] worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$$.on("online",function($worker$$){console.info("[cluster] worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $cpus_init_system_data_report_cpus_server$$.listen(global.port,()=>{Logger.info("[cluster] server start at "+
20
20
  global.port+" port")});$cpus_init_system_data_report_cpus_server$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?1:Math.round($cpus_init_system_data_report_cpus_server$$/2):0);$StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_init_system_data_report_cpus_server$$/2),2):0);$cpus_init_system_data_report_cpus_server$$=$options$$.report_cpus||
21
- ($options$$.start_import_data_pool?Math.max(Math.min($cpus_init_system_data_report_cpus_server$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_init_system_data_report_cpus_server$$/2))-1,2):0);$StaticPool$jscomp$0$$&&($StaticPool_adminUser$$=require("./libs/WorkerStaticPool"),global.inputMainPool=new $StaticPool_adminUser$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,3E5,$StaticPool$jscomp$0$$,"input pool"),global.inputMainPool.exec({load:!0,
21
+ ($options$$.start_import_data_pool?Math.max(Math.min($cpus_init_system_data_report_cpus_server$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_init_system_data_report_cpus_server$$/2))-1,2):0);$StaticPool$jscomp$0$$&&($StaticPool_adminUser$$=require("./libs/WorkerStaticPool"),global.inputMainPool=new $StaticPool_adminUser$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,5E3,$StaticPool$jscomp$0$$,"input pool"),global.inputMainPool.exec({load:!0,
22
22
  configs:JSON.stringify($configs$$)},()=>{Logger.info("\ud83d\udd25 [cluster] Crud pool ready")}));$StaticPool$$&&($StaticPool$jscomp$0$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$0$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$$,36E5,1,"import pool"),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("[cluster] Import pool ready")}));$cpus_init_system_data_report_cpus_server$$&&
23
23
  ($StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,$cpus_init_system_data_report_cpus_server$$,3E5,2,"report pool"),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("[cluster] Report pool ready")}))})}).catch($err$$=>{Logger.error("[cluster] Not Connected to Database ERROR!",$err$$);process.exit(1)})};
24
24
  process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});process.on("uncaughtException",function($err$jscomp$3_error$$){Logger.error("[cluster]",(new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);Logger.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
@@ -34,9 +34,9 @@ $ds_nguoi_duyet$$);if($ds_nguoi_duyet$$&&$ds_nguoi_duyet$$.length!==0&&($ds_nguo
34
34
  !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$$)});
35
35
  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{(await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)).indexOf($fieldName$$)>=0?$res$$.send({allow:!1}):$res$$.send({allow:!0})}catch($e$$){$res$$.state(400).send($e$$.message)}})};
36
36
  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$$;$dataType$$=="xlsx"?($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$$,
37
- body:$body$$,user:$user$$,params:$params$$,headers:$headers$$}=$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$$.ip||$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$$,headers:$headers$$,user_agent:$_req$jscomp$1_user_agent$$,ip:$ip$jscomp$1_req$$,shareRoute:$shareRoute$$},
38
- global.inputMainPool){const $id_task$$=`task-find-${crypto.randomBytes(20).toString("hex")}`;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.error||$response$$.error.message||$response$$.error,message:$response$$.message||$response$$.error.error||$response$$.error.message||$response$$.error,code:$response$$.code});
39
- $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$$)}};$_route_name_route_name$$=$_route_name_route_name$$||this.route_name;$method$$==="GET"?(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$$),
37
+ body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,protocol:$protocol$$}=$ip$jscomp$1_req$$;var $_req$$=$ip$jscomp$1_req$$.get("host");const $user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.ip||$ip$jscomp$1_req$$.headers["x-forwarded-for"]||$ip$jscomp$1_req$$.connection.remoteAddress;try{if($_req$$={handler:"findHandler",protocol:$protocol$$,host:$_req$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,user_agent:$user_agent$$,
38
+ ip:$ip$jscomp$1_req$$,shareRoute:$shareRoute$$},global.inputMainPool){const $id_task$$=`task-find-${crypto.randomBytes(20).toString("hex")}`;global.inputMainPool.exec({id_task:$id_task$$,req:$_req$$,module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if($response$$.error)return $res$$.status(400).send({error:$response$$.error.error||$response$$.error.message||$response$$.error,message:$response$$.message||$response$$.error.error||$response$$.error.message||$response$$.error,
39
+ code:$response$$.code});$handlerResult$$($res$$,$response$$.result)})}else handlers.findHandler($ctrl$$,$_req$$,($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);$handlerResult$$($res$$,$returnvalue$$)})}catch($e$$){$res$$.status(400).send($e$$)}};$_route_name_route_name$$=$_route_name_route_name$$||this.route_name;$method$$==="GET"?(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$$),
40
40
  this.router.route($_route_name_route_name$$+"/excel").post($findRoute$$))};
41
41
  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$$){let $id$$=$req$$.params.id;if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(404).send({error:ERRORS.ERR_ID_INVALID,code:ERRORS.ERR_ID_INVALID_CODE});let $body$$={_id:$id$$};const $user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,
42
42
  {query:$query$$,user:$user$$,params:$params$$,headers:$headers$$}=$req$$;if($ctrl$$.getting)try{await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.getting($user$$,$id$$,$e$$=>{if($e$$)return $reject$$($e$$);$resolve$$()})})}catch($e$$){return $res$$.status(400).send($e$$)}try{handlers.findHandler($ctrl$$,{query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,user_agent:$user_agent$$,ip:$ip$$,shareRoute:$shareRoute$$,originalUrl:$req$$.originalUrl},($e$jscomp$19_result$$,$returnvalue$$)=>
@@ -59,9 +59,9 @@ headers:$headers$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,originalUrl:
59
59
  controller.prototype.exportToExcel=function(){let $ctrl$$=this;const $handlerResult$$=($res$$,$data$jscomp$3_data$jscomp$4_returnvalue$$)=>{switch($data$jscomp$3_data$jscomp$4_returnvalue$$.ext){case "xlsx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$ctrl$$.name+'".xlsx');$data$jscomp$3_data$jscomp$4_returnvalue$$=$data$jscomp$3_data$jscomp$4_returnvalue$$.data;$data$jscomp$3_data$jscomp$4_returnvalue$$?.type==
60
60
  "Buffer"&&$data$jscomp$3_data$jscomp$4_returnvalue$$?.data&&($data$jscomp$3_data$jscomp$4_returnvalue$$=Buffer.from($data$jscomp$3_data$jscomp$4_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$3_data$jscomp$4_returnvalue$$.length);$res$$.end($data$jscomp$3_data$jscomp$4_returnvalue$$);break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$ctrl$$.name+
61
61
  '".docx');$data$jscomp$3_data$jscomp$4_returnvalue$$=$data$jscomp$3_data$jscomp$4_returnvalue$$.data;$data$jscomp$3_data$jscomp$4_returnvalue$$?.type=="Buffer"&&$data$jscomp$3_data$jscomp$4_returnvalue$$?.data&&($data$jscomp$3_data$jscomp$4_returnvalue$$=Buffer.from($data$jscomp$3_data$jscomp$4_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$3_data$jscomp$4_returnvalue$$.length);$res$$.end($data$jscomp$3_data$jscomp$4_returnvalue$$);break;case "print":$res$$.send($data$jscomp$3_data$jscomp$4_returnvalue$$.data.join('<p style="page-break-before: always"></p>'));
62
- break;case "json":$res$$.json($data$jscomp$3_data$jscomp$4_returnvalue$$.data);break;default:$res$$.send($data$jscomp$3_data$jscomp$4_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$$,headers:$headers$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $_req$$={handler:"exportHandler",
63
- query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,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.error||$response$$.error.message||$response$$.error,message:$response$$.message||$response$$.error.error||$response$$.error.message||$response$$.error});
64
- Logger.info("[controller][export] X\u1eed l\u00fd k\u1ebft qu\u1ea3...",$response$$?.result?.ext);$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$$)}})};
62
+ break;case "json":$res$$.json($data$jscomp$3_data$jscomp$4_returnvalue$$.data);break;default:$res$$.send($data$jscomp$3_data$jscomp$4_returnvalue$$.data)}},$handleRoute$$=async function($req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $_req$$={handler:"exportHandler",query:$query$$,body:$body$$,user:$user$$,
63
+ params:$params$$,headers:$headers$$,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.error||$response$$.error.message||$response$$.error,message:$response$$.message||$response$$.error.error||$response$$.error.message||$response$$.error});Logger.info("[controller][export] X\u1eed l\u00fd k\u1ebft qu\u1ea3...",
64
+ $response$$?.result?.ext);$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$$)}};this.router.route(`${this.route_name}/excel/:rpt_id`).get($handleRoute$$);this.router.route(`${this.route_name}/export/:rpt_id`).get($handleRoute$$)};
65
65
  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$$,headers:$headers$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $_req$$={handler:"importFromGsHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,
66
66
  user_agent:$user_agent$$,ip:$ip$$,originalUrl:$req$$.originalUrl};if(global.importDataMainPool){const $id_task$$=`task-import-google-sheet-${crypto.randomBytes(20).toString("hex")}`,$status_task$$=`${configs.api_url||configs.domain}/task-status/${$id_task$$}`;$_req$$.status_task=$status_task$$;$res$$.status(202).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",
67
67
  status_task:$status_task$$});global.importDataMainPool.exec({id_task:$id_task$$,req:$_req$$,module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$e$jscomp$34_response$$=>{if($e$jscomp$34_response$$=$e$jscomp$34_response$$.error)return Logger.error("\u274c [importFromGoogleSheet] l\u1ed7i",$e$jscomp$34_response$$),global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$jscomp$34_response$$.message||$e$jscomp$34_response$$.error||
@@ -11,25 +11,26 @@ $func_string_rptInfo$$=`return (async ()=>{
11
11
  })`;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 Logger.error("handle_data_expression_server",$rs$$.error,$func_string_rptInfo$$,$rptId$$),$callback$$($rs$$.error.message||$rs$$.error);$data_response$$=$rs$$}}catch($e$$){return Logger.error("handle_data_expression_server",$e$$,$func_string_rptInfo$$,$rptId$$),$callback$$($e$$.message||$e$$)}}$callback$$(null,
12
12
  $data_response$$)};this.getDataFunc=()=>{const $currentStore$$=getCurrentStore();Logger.info(`\u2705 [rptHanlder] [getDataFunc], storeId=${$currentStore$$?.storeId||"none"},sessionID=${getCurrentSession()?._debugId}`);return $options$$.stream?$fecthData$$:async($req$$,$callback$$)=>{Logger.info(`\u2705 [rptHanlder] Ch\u1ea1y b\u00e1o c\u00e1o ${$rptId$$}, sessionID=${getCurrentSession()?._debugId}`);try{await $fecthData$$($req$$,($e$$,$data$$)=>{this.handleResult($req$$,{error:$e$$,result:$data$$},
13
13
  ($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}catch($e$$){$callback$$($e$$)}}};const $mainRoute$$=async($req$$,$res$$)=>{if($options$$.stream)handlers.rptHandler(this,$req$$,($e$$,$rs$$)=>{if($options$$.resHandler)return $options$$.resHandler($req$$,{error:$e$$,data:$rs$$},$res$$);if($e$$)return $e$$.error?$res$$.status(500).send($e$$):$res$$.status(500).send({error:$e$$.message||$e$$});$rs$$=="__end_stream__"?Logger.info("[controllerRPT] end stream...",$rptId$$):$res$$.send($rs$$)},$res$$);else{const {query:$query$$,
14
- body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$req$$;var $_req_user_agent$$=$req$$.header("user-agent");const $ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{if($_req_user_agent$$={handler:"rptHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$_req_user_agent$$,ip:$ip$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&$options$$.queue!=0){const $id_task$$=`report-${crypto.randomBytes(20).toString("hex")}`;
15
- if($options$$.waiting_message){const $status_task$$=`${configs.api_url||configs.domain}/task-status/${$id_task$$}`;$res$$.status(202).send([{message:$options$$.waiting_message,status_task:$status_task$$}])}global.reportMainPool.exec({id_task:$id_task$$,req:$_req_user_agent$$,module:$rptId$$.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if(!$options$$.waiting_message){if($options$$.resHandler)return $options$$.resHandler($req$$,{error:$response$$.error,data:$response$$.result},$res$$);
16
- if($response$$.error)return $res$$.status(400).send($response$$.error);$res$$.send($response$$.result)}})}else $options$$.waiting_message&&$res$$.status(202).send([{message:$options$$.waiting_message}]),handlers.rptHandler(this,$_req_user_agent$$,($e$$,$returnvalue$$)=>{if(!$options$$.waiting_message){if($options$$.resHandler)return $options$$.resHandler($req$$,{error:$e$$,data:$returnvalue$$},$res$$);if($e$$)return $res$$.status(400).send($e$$);$res$$.send($returnvalue$$)}})}catch($e$$){Logger.error("L\u1ed7i t\u1ea1o job cho b\u00e1o c\u00e1o",
17
- $rptId$$,$e$$),$res$$.status(400).send($e$$)}}},$excelRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,body:$body$$,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$$.ip||$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$$,
18
- params:$params$$,user_agent:$_req$jscomp$1_user_agent$$,ip:$ip$jscomp$1_req$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&$options$$.queue!=0){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)},$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=>{if($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.error)return $res$$.status(400).send($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.error);
19
- var $result_returnvalue$$=$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.result;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$.type;$result_returnvalue$$=$result_returnvalue$$.data;switch($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$){case "xlsx":Logger.info("[controllerRPT] send file from worker...",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$,typeof $result_returnvalue$$);if(typeof $result_returnvalue$$=="string")return $res$$.send($result_returnvalue$$);
20
- $res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xlsx');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type==="Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));
21
- $res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".docx');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type===
22
- "Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;case "xml":$res$$.setHeader("Content-Type","application/xml");$res$$.setHeader("Content-Disposition",
23
- 'attachment; filename="'+$rptId$$+'".xml');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type==="Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);
24
- $res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;default:$res$$.send($result_returnvalue$$)}})}else handlers.rptExcelHandler(this,$_req$jscomp$1_user_agent$$,($e$jscomp$7_result$$,$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$)=>{if($e$jscomp$7_result$$)return $res$$.status(400).send($e$jscomp$7_result$$);$e$jscomp$7_result$$=$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data;switch($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.type){case "xlsx":Logger.info("[controllerRPT] send xls file...");
25
- if(typeof $e$jscomp$7_result$$=="string")return $res$$.send($e$jscomp$7_result$$);$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xlsx');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=
26
- Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".docx');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=
27
- $e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;case "xml":$res$$.setHeader("Content-Type",
28
- "application/xml");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xml');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);
29
- $res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;default:$res$$.send($e$jscomp$7_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$$);$router$$.route(`${this.base_path+this.module}/export`).get($excelRoute$$);
30
- $router$$.route(`${this.base_path+this.module}/export`).post($excelRoute$$)}getData($req$$,$callback$$){const $ctrl$$=this;let $callback_run$$=!1;setImmediate(()=>{try{$ctrl$$.fecthDataFunc($req$$,($err$$,$data$$,$event$$)=>{if($ctrl$$.options?.stream){if($err$$)return $callback$$($err$$);$event$$!="data"||$callback_run$$||($callback_run$$=!0,this.handleResult($req$$,{error:$err$$,result:$data$$},($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)}))}else $callback_run$$=!0,this.handleResult($req$$,{error:$err$$,
31
- result:$data$$},($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}catch($e$$){Logger.error("[report controller] [getData]",$e$$),$callback$$($e$$.message)}})}createRoute($routeName$$,$callbackRoute_handler$$,$_options$$={method:"GET",not_use_worker:!1,action_code:"view"}){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$$]=$callbackRoute_handler$$;
32
- $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$$.ip||$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$$,
33
- 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()||$_options$$.not_use_worker)handlers.rptCreateRouteHandler($self$$,$_req$jscomp$2_user_agent$$,($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($returnvalue$$)});else{const $id_task$$=`report-create-route-${crypto.randomBytes(20).toString("hex")}`;global.reportMainPool.exec({id_task:$id_task$$,
34
- req:$_req$jscomp$2_user_agent$$,module:$self$$.module.toUpperCase(),configs:JSON.stringify(configs)},$response$jscomp$6_result$$=>{if($response$jscomp$6_result$$.error)return $res$$.status(400).send($response$jscomp$6_result$$.error);({result:$response$jscomp$6_result$$}=$response$jscomp$6_result$$);$res$$.send($response$jscomp$6_result$$)})}}catch($e$$){$res$$.status(400).send($e$$)}};$_options$$.method=="DELETE"?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).delete($callbackRoute_handler$$):
35
- $_options$$.method=="POST"?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).post($callbackRoute_handler$$):$_options$$.method=="PUT"?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;
14
+ body:$body$$,user:$user$$,params:$params$$,files:$files$$,protocol:$protocol$$}=$req$$;var $_req_host$$=$req$$.get("host");const $user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{if($_req_host$$={handler:"rptHandler",protocol:$protocol$$,host:$_req_host$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&
15
+ $options$$.queue!=0){const $id_task$$=`report-${crypto.randomBytes(20).toString("hex")}`;if($options$$.waiting_message){const $status_task$$=`${configs.api_url||configs.domain}/task-status/${$id_task$$}`;$res$$.status(202).send([{message:$options$$.waiting_message,status_task:$status_task$$}])}global.reportMainPool.exec({id_task:$id_task$$,req:$_req_host$$,module:$rptId$$.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if(!$options$$.waiting_message){if($options$$.resHandler)return $options$$.resHandler($req$$,
16
+ {error:$response$$.error,data:$response$$.result},$res$$);if($response$$.error)return $res$$.status(400).send($response$$.error);$res$$.send($response$$.result)}})}else $options$$.waiting_message&&$res$$.status(202).send([{message:$options$$.waiting_message}]),handlers.rptHandler(this,$_req_host$$,($e$$,$returnvalue$$)=>{if(!$options$$.waiting_message){if($options$$.resHandler)return $options$$.resHandler($req$$,{error:$e$$,data:$returnvalue$$},$res$$);if($e$$)return $res$$.status(400).send($e$$);
17
+ $res$$.send($returnvalue$$)}})}catch($e$$){Logger.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$$,user:$user$$,params:$params$$,files:$files$$,protocol:$protocol$$}=$ip$jscomp$1_req$$;var $_req$jscomp$1_host$$=$ip$jscomp$1_req$$.get("host");const $user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.ip||$ip$jscomp$1_req$$.headers["x-forwarded-for"]||
18
+ $ip$jscomp$1_req$$.connection.remoteAddress;try{if($_req$jscomp$1_host$$={handler:"rptExcelHandler",protocol:$protocol$$,host:$_req$jscomp$1_host$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$1_req$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&$options$$.queue!=0){const $id_task$$=`report-export-${crypto.randomBytes(20).toString("hex")}`;global.reportMainPool.exec({id_task:$id_task$$,req:$_req$jscomp$1_host$$,module:$rptId$$.toUpperCase(),
19
+ configs:JSON.stringify(configs)},$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=>{if($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.error)return $res$$.status(400).send($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.error);var $result_returnvalue$$=$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.result;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$.type;$result_returnvalue$$=$result_returnvalue$$.data;switch($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$){case "xlsx":Logger.info("[controllerRPT] send file from worker...",
20
+ $data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$,typeof $result_returnvalue$$);if(typeof $result_returnvalue$$=="string")return $res$$.send($result_returnvalue$$);$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xlsx');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type===
21
+ "Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");
22
+ $res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".docx');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type==="Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);
23
+ $res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;case "xml":$res$$.setHeader("Content-Type","application/xml");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xml');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type==="Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=
24
+ Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;default:$res$$.send($result_returnvalue$$)}})}else handlers.rptExcelHandler(this,$_req$jscomp$1_host$$,($e$jscomp$7_result$$,$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$)=>{if($e$jscomp$7_result$$)return $res$$.status(400).send($e$jscomp$7_result$$);
25
+ $e$jscomp$7_result$$=$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data;switch($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.type){case "xlsx":Logger.info("[controllerRPT] send xls file...");if(typeof $e$jscomp$7_result$$=="string")return $res$$.send($e$jscomp$7_result$$);$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xlsx');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=
26
+ $e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;case "docx":$res$$.setHeader("Content-Type",
27
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".docx');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));
28
+ $res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;case "xml":$res$$.setHeader("Content-Type","application/xml");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xml');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&
29
+ ($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;default:$res$$.send($e$jscomp$7_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$$);
30
+ $router$$.route(`${this.base_path+this.module}/excel`).get($excelRoute$$);$router$$.route(`${this.base_path+this.module}/excel`).post($excelRoute$$);$router$$.route(`${this.base_path+this.module}/export`).get($excelRoute$$);$router$$.route(`${this.base_path+this.module}/export`).post($excelRoute$$)}getData($req$$,$callback$$){const $ctrl$$=this;let $callback_run$$=!1;setImmediate(()=>{try{$ctrl$$.fecthDataFunc($req$$,($err$$,$data$$,$event$$)=>{if($ctrl$$.options?.stream){if($err$$)return $callback$$($err$$);
31
+ $event$$!="data"||$callback_run$$||($callback_run$$=!0,this.handleResult($req$$,{error:$err$$,result:$data$$},($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)}))}else $callback_run$$=!0,this.handleResult($req$$,{error:$err$$,result:$data$$},($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}catch($e$$){Logger.error("[report controller] [getData]",$e$$),$callback$$($e$$.message)}})}createRoute($routeName$$,$callbackRoute_handler$$,$_options$$={method:"GET",not_use_worker:!1,action_code:"view"}){const $self$$=this;$_options$$.method=
32
+ $_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$$;var $_req$jscomp$2_user_agent$$=$ip$jscomp$2_req$$.header("user-agent");$ip$jscomp$2_req$$=$ip$jscomp$2_req$$.ip||$ip$jscomp$2_req$$.headers["x-forwarded-for"]||
33
+ $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$$,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()||$_options$$.not_use_worker)handlers.rptCreateRouteHandler($self$$,$_req$jscomp$2_user_agent$$,($e$$,$returnvalue$$)=>
34
+ {if($e$$)return $res$$.status(400).send($e$$);$res$$.send($returnvalue$$)});else{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$6_result$$=>{if($response$jscomp$6_result$$.error)return $res$$.status(400).send($response$jscomp$6_result$$.error);({result:$response$jscomp$6_result$$}=$response$jscomp$6_result$$);
35
+ $res$$.send($response$jscomp$6_result$$)})}}catch($e$$){$res$$.status(400).send($e$$)}};$_options$$.method=="DELETE"?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).delete($callbackRoute_handler$$):$_options$$.method=="POST"?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).post($callbackRoute_handler$$):$_options$$.method=="PUT"?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).put($callbackRoute_handler$$):this.router.route(`${this.base_path+
36
+ this.module}/${$routeName$$}`).get($callbackRoute_handler$$)}}module.exports=controllerRPT;
@@ -1,32 +1,33 @@
1
- const fs=require("fs"),path=require("path"),async=require("async"),_=require("lodash"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),numeral=require("numeral"),excelReport=require("excel-report"),{evalute,JSONParser}=require("../libs/utils"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),utils=require("../libs/utils"),queryBuilding=require("../libs/queryBuilding"),{ERRORS}=require("./controllerUtils"),findHanlder=
2
- async($ctrl$$,$req$$,$callback$$)=>{let $model$$=$ctrl$$.model,$shareRoute$$=$req$$.shareRoute,$listinfo_code$$=$req$$?.body?.["listinfo-code"]||$req$$?.query["listinfo-code"]||$req$$?.headers?.["listinfo-code"]||$req$$?.headers?.["Listinfo-Code"];if(($listinfo_code$$=$listinfo_code$$||$ctrl$$.name)&&$listinfo_code$$!=$ctrl$$.name){const $listinfo$$=await global.getModel("listinfo").findOne({code:$listinfo_code$$},{api_code:1,code:1}).lean();$listinfo$$?($listinfo$$.api_code||$listinfo$$.code)!=$ctrl$$.name&&
3
- ($listinfo_code$$=$ctrl$$.name):$listinfo_code$$=$ctrl$$.name}async.series([function($callback$$){setImmediate(async()=>{var $body_query$$={};_.isObject($req$$.body)&&($body_query$$=$req$$.body);$body_query$$={...$req$$.query,...$body_query$$};$req$$.query=$body_query$$;if($body_query$$.sort)if(typeof $body_query$$.sort=="object")var $condition_sort$$=$body_query$$.sort;else try{$condition_sort$$=JSONParser($body_query$$.sort)}catch($e$$){return Logger.error("error parse json",$e$$,$body_query$$.sort),
4
- $callback$$({error:`Sort ${$body_query$$.sort} is not valid`})}!$condition_sort$$&&$ctrl$$.sort&&($condition_sort$$=Object.assign({},$ctrl$$.sort));$req$$.sort=$condition_sort$$;$req$$.fetch_by_groups=$body_query$$.fetch_by_groups;delete $body_query$$.fetch_by_groups;$condition_sort$$={};let $or$$=[];for(var $k_newFilters$$ in $body_query$$)if($k_newFilters$$!=="id_app"&&$k_newFilters$$!=="access_token")if($k_newFilters$$==="_id"&&global.mongoose.Types.ObjectId.isValid($body_query$$._id))try{let $id$$=
5
- global.mongoose.Types.ObjectId($body_query$$._id);$or$$.push({_id:$id$$})}catch($error$$){Logger.error("find condition",$error$$)}else{if($k_newFilters$$==="q"&&$body_query$$[$k_newFilters$$])try{let $q$$=_.isObject($body_query$$[$k_newFilters$$])?$body_query$$[$k_newFilters$$]:JSONParser($body_query$$[$k_newFilters$$]);$req$$.fetch_by_groups=$req$$.fetch_by_groups||$q$$.fetch_by_groups;delete $q$$.fetch_by_groups;if(Object.keys($q$$).includes("_id"))if(!$q$$._id)delete $q$$._id;else if(typeof $q$$._id!==
6
- "object"&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return Logger.error("Condition is not valid",$q$$),$callback$$({error:"Condition is not valid"});($condition_sort$$=$q$$)||($condition_sort$$={});continue}catch($e$$){return Logger.error("find condition",$e$$,$body_query$$[$k_newFilters$$]),$callback$$({error:"Condition is not valid"})}if($k_newFilters$$!=="fields"&&_.has($model$$.schema.paths,$k_newFilters$$))if($ctrl$$.options.findExact[$k_newFilters$$])$condition_sort$$[$k_newFilters$$]=
7
- $body_query$$[$k_newFilters$$];else{let $item$$={};$ctrl$$.model.schema.paths[$k_newFilters$$].instance.toLowerCase()=="number"?$item$$[$k_newFilters$$]=Number($body_query$$[$k_newFilters$$]):$ctrl$$.model.schema.paths[$k_newFilters$$].instance.toLowerCase()=="date"?$item$$[$k_newFilters$$]=new Date($body_query$$[$k_newFilters$$]):$ctrl$$.model.schema.paths[$k_newFilters$$].instance.toLowerCase()=="string"?$item$$[$k_newFilters$$]={$regex:($body_query$$[$k_newFilters$$]||"").trim().replace(/[.*+\-?^${}()|[\]\\]/g,
8
- "\\$&"),$options:"i"}:$item$$[$k_newFilters$$]=$body_query$$[$k_newFilters$$];$or$$.push($item$$)}else $k_newFilters$$==="$text"&&$or$$.push({$text:{$search:$body_query$$[$k_newFilters$$]}})}$or$$.length!==0&&($body_query$$.cType==="$and"?$condition_sort$$.$and=$or$$:$condition_sort$$.$or=$or$$);$k_newFilters$$=queryBuilding.convertLegacyQuery(_.cloneDeep($condition_sort$$));$condition_sort$$=queryBuilding.buildSearchQuery($k_newFilters$$);$shareRoute$$||$ctrl$$.require_id_app==0||($condition_sort$$.id_app=
9
- $req$$.user.current_id_app);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition_sort$$,function($error$$,$condition$$){setImmediate(()=>{if($error$$)return $callback$$({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$$,function($e$$,$condition$$){if($e$$)return Logger.error("dynamicFinding",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$callback$$()},{listinfo_code:$listinfo_code$$,
10
- req:$req$$}):($req$$.condition=$condition$$,$callback$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition_sort$$,function($e$$,$condition$$){if($e$$)return Logger.error("dynamicFinding",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$callback$$()},{listinfo_code:$listinfo_code$$,req:$req$$}):($req$$.condition=$condition_sort$$,$callback$$())})},function($callback$$){if($shareRoute$$)return $callback$$();
11
- setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.getRightByItem($req$$.user.current_id_app,$model$$,$req$$.user.email,function($e$$,$_condition$$,$admin$$){if($e$$)return Logger.error("[findHandler] [getRightByItem] L\u1ed7i Kh\u00f4ng c\u00f3 quy\u1ec1n:",$e$$),$callback$$({error:$e$$.error||$e$$.message||$e$$,code:$e$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $callback$$();setImmediate(()=>{$req$$.admin=$admin$$;let $condition$$=
12
- $req$$.condition;$condition$$||={};$condition$$.$and||($condition$$.$and=[]);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,$_condition$$,($e$$,$_condition$$)=>{setImmediate(()=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});_.isObject($_condition$$)&&Object.keys($_condition$$).length>0&&$condition$$.$and.push($_condition$$);$req$$.condition_assign=$_condition$$;$req$$.condition=$condition$$;$callback$$()})});else _.isObject($_condition$$)&&Object.keys($_condition$$).length>
13
- 0&&$condition$$.$and.push($_condition$$),$req$$.condition_assign=$_condition$$,$req$$.condition=$condition$$,$callback$$()})},$ctrl$$.name,{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$})})},function($callback$$){if($shareRoute$$||$req$$.admin||!$req$$.condition_assign||Object.keys($req$$.condition_assign).length===0)return $callback$$();setImmediate(()=>{if($ctrl$$.options.assignWiths){let $condition_assignwiths$$={};async.map($ctrl$$.options.assignWiths,($col$$,$callback$$)=>{setImmediate(()=>
14
- {let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($req$$.user.current_id_app,$m$$,$req$$.user.email,function($e$$,$_condition$$,$admin$$){if($e$$)return $callback$$({e:$e$$.error||$e$$.message||$e$$,code:$e$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $callback$$();$_condition$$.id_app=$req$$.user.current_id_app;$req$$.condition[$col$$.ref_field]&&($_condition$$[$col$$.ref_field]=$req$$.condition[$col$$.ref_field]);$m$$.find($_condition$$,{[$col$$.ref_field]:1}).lean().then($rs$$=>
15
- {setImmediate(()=>{let $dsdt$$=$rs$$.map($r$$=>$r$$[$col$$.ref_field]);$dsdt$$.push("");$dsdt$$.push(null);$condition_assignwiths$$[$col$$.field]={$in:$dsdt$$};$callback$$()})}).catch($e$$=>{$callback$$($e$$)})},$col$$.ref_module)})},$e$$=>{setImmediate(()=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});if(Object.keys($condition_assignwiths$$).length>0){let $condition$$=$req$$.condition_assign||$req$$.condition;$condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push($condition_assignwiths$$)}$callback$$()})})}else $callback$$()})},
16
- function($callback$$){setImmediate(async()=>{if($shareRoute$$)return $callback$$();let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.hasRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.module,"view",function($e$$,$permission$$){$e$$&&Logger.error("[findHandler] [hasRight] L\u1ed7i Kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp:",$e$$);if($ctrl$$.options.onQuery)$req$$.permission=$permission$$,$ctrl$$.options.onQuery($req$$,$e$$=>{if($e$$)return $callback$$({error:$e$$.error||
17
- $e$$.message||$e$$});if(!$req$$.permission)return $req$$.result=[],$callback$$("0");$callback$$()});else{if(!$permission$$)return $req$$.result=[],$callback$$("0");$callback$$()}},{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$})})},function($callback$$){setImmediate(async()=>{let $condition$$=$req$$.condition;$condition$$||={};for(var $data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$ in $condition$$)if($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$===
1
+ const fs=require("fs"),path=require("path"),async=require("async"),_=require("lodash"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),numeral=require("numeral"),excelReport=require("excel-report"),{evalute,JSONParser,getDateRangeByType}=require("../libs/utils"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),utils=require("../libs/utils"),queryBuilding=require("../libs/queryBuilding"),{generateDefaultExcel}=
2
+ require("../libs/excelHelper"),{ERRORS}=require("./controllerUtils"),findHanlder=async($ctrl$$,$req$$,$callback$$,$current_id_app$$)=>{let $model$$=$ctrl$$.model,$shareRoute$$=$req$$.shareRoute,$listinfo_code$$=$req$$?.body?.["listinfo-code"]||$req$$?.query["listinfo-code"]||$req$$?.headers?.["listinfo-code"]||$req$$?.headers?.["Listinfo-Code"];$listinfo_code$$=$listinfo_code$$||$ctrl$$.name;$current_id_app$$=$current_id_app$$||$req$$.user.current_id_app;if($listinfo_code$$&&$listinfo_code$$!=$ctrl$$.name){const $listinfo$$=
3
+ await global.getModel("listinfo").findOne({code:$listinfo_code$$},{api_code:1,code:1}).lean();$listinfo$$?($listinfo$$.api_code||$listinfo$$.code)!=$ctrl$$.name&&($listinfo_code$$=$ctrl$$.name):$listinfo_code$$=$ctrl$$.name}async.series([function($callback$$){setImmediate(async()=>{var $body_query$$={};_.isObject($req$$.body)&&($body_query$$=$req$$.body);$body_query$$={...$req$$.query,...$body_query$$};$req$$.query=$body_query$$;if($body_query$$.sort)if(typeof $body_query$$.sort=="object")var $condition_sort$$=
4
+ $body_query$$.sort;else try{$condition_sort$$=JSONParser($body_query$$.sort)}catch($e$$){return Logger.error("error parse json",$e$$,$body_query$$.sort),$callback$$({error:`Sort ${$body_query$$.sort} is not valid`})}!$condition_sort$$&&$ctrl$$.sort&&($condition_sort$$=Object.assign({},$ctrl$$.sort));$req$$.sort=$condition_sort$$;$req$$.fetch_by_groups=$body_query$$.fetch_by_groups;delete $body_query$$.fetch_by_groups;$condition_sort$$={};let $or$$=[];for(var $k_newFilters$$ in $body_query$$)if($k_newFilters$$!==
5
+ "id_app"&&$k_newFilters$$!=="access_token")if($k_newFilters$$==="_id"&&global.mongoose.Types.ObjectId.isValid($body_query$$._id))try{let $id$$=global.mongoose.Types.ObjectId($body_query$$._id);$or$$.push({_id:$id$$})}catch($error$$){Logger.error("find condition",$error$$)}else{if($k_newFilters$$==="q"&&$body_query$$[$k_newFilters$$])try{let $q$$=_.isObject($body_query$$[$k_newFilters$$])?$body_query$$[$k_newFilters$$]:JSONParser($body_query$$[$k_newFilters$$]);$req$$.fetch_by_groups=$req$$.fetch_by_groups||
6
+ $q$$.fetch_by_groups;delete $q$$.fetch_by_groups;if(Object.keys($q$$).includes("_id"))if(!$q$$._id)delete $q$$._id;else if(typeof $q$$._id!=="object"&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return Logger.error("Condition is not valid",$q$$),$callback$$({error:"Condition is not valid"});for(let $k$$ in $q$$)if(typeof $q$$[$k$$]=="string"&&$ctrl$$.model.schema.paths[$k$$]?.instance?.toLowerCase()=="date"){let {fromDate:$fromDate$$,toDate:$toDate$$}=getDateRangeByType($q$$[$k$$]);$fromDate$$&&
7
+ $toDate$$&&($q$$[$k$$]={$gte:$fromDate$$,$lte:$toDate$$})}($condition_sort$$=$q$$)||($condition_sort$$={});continue}catch($e$$){return Logger.error("find condition",$e$$,$body_query$$[$k_newFilters$$]),$callback$$({error:"Condition is not valid"})}if($k_newFilters$$!=="fields"&&_.has($model$$.schema.paths,$k_newFilters$$))if($ctrl$$.options.findExact[$k_newFilters$$])$condition_sort$$[$k_newFilters$$]=$body_query$$[$k_newFilters$$];else{let $item$$={};if($ctrl$$.model.schema.paths[$k_newFilters$$].instance.toLowerCase()==
8
+ "number")$item$$[$k_newFilters$$]=Number($body_query$$[$k_newFilters$$]);else if($ctrl$$.model.schema.paths[$k_newFilters$$].instance.toLowerCase()=="date"){let {fromDate:$fromDate$$,toDate:$toDate$$}=getDateRangeByType($body_query$$[$k_newFilters$$]);$item$$[$k_newFilters$$]=$fromDate$$&&$toDate$$?{$gte:$fromDate$$,$lte:$toDate$$}:new Date($body_query$$[$k_newFilters$$])}else $ctrl$$.model.schema.paths[$k_newFilters$$].instance.toLowerCase()=="string"?$item$$[$k_newFilters$$]={$regex:($body_query$$[$k_newFilters$$]||
9
+ "").trim().replace(/[.*+\-?^${}()|[\]\\]/g,"\\$&"),$options:"i"}:$item$$[$k_newFilters$$]=$body_query$$[$k_newFilters$$];$or$$.push($item$$)}else $k_newFilters$$==="$text"&&$or$$.push({$text:{$search:$body_query$$[$k_newFilters$$]}})}$or$$.length!==0&&($body_query$$.cType==="$and"?$condition_sort$$.$and=$or$$:$condition_sort$$.$or=$or$$);$k_newFilters$$=queryBuilding.convertLegacyQuery(_.cloneDeep($condition_sort$$));$condition_sort$$=queryBuilding.buildSearchQuery($k_newFilters$$);$shareRoute$$||
10
+ $ctrl$$.require_id_app==0||($condition_sort$$.id_app=$current_id_app$$);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition_sort$$,function($error$$,$condition$$){setImmediate(()=>{if($error$$)return $callback$$({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$$,function($e$$,$condition$$){if($e$$)return Logger.error("dynamicFinding",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=
11
+ $condition$$;$callback$$()},{listinfo_code:$listinfo_code$$,req:$req$$}):($req$$.condition=$condition$$,$callback$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition_sort$$,function($e$$,$condition$$){if($e$$)return Logger.error("dynamicFinding",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$callback$$()},{listinfo_code:$listinfo_code$$,req:$req$$}):($req$$.condition=$condition_sort$$,$callback$$())})},
12
+ function($callback$$){if($shareRoute$$)return $callback$$();setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.getRightByItem($current_id_app$$,$model$$,$req$$.user.email,function($e$$,$_condition$$,$admin$$){if($e$$)return Logger.error("[findHandler] [getRightByItem] L\u1ed7i Kh\u00f4ng c\u00f3 quy\u1ec1n:",$e$$),$callback$$({error:$e$$.error||$e$$.message||$e$$,code:$e$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $callback$$();
13
+ setImmediate(()=>{$req$$.admin=$admin$$;let $condition$$=$req$$.condition;$condition$$||={};$condition$$.$and||($condition$$.$and=[]);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,$_condition$$,($e$$,$_condition$$)=>{setImmediate(()=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});_.isObject($_condition$$)&&Object.keys($_condition$$).length>0&&$condition$$.$and.push($_condition$$);$req$$.condition_assign=$_condition$$;$req$$.condition=$condition$$;
14
+ $callback$$()})});else _.isObject($_condition$$)&&Object.keys($_condition$$).length>0&&$condition$$.$and.push($_condition$$),$req$$.condition_assign=$_condition$$,$req$$.condition=$condition$$,$callback$$()})},$ctrl$$.name,{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$})})},function($callback$$){if($shareRoute$$||$req$$.admin||!$req$$.condition_assign||Object.keys($req$$.condition_assign).length===0)return $callback$$();setImmediate(()=>{if($ctrl$$.options.assignWiths){let $condition_assignwiths$$=
15
+ {};async.map($ctrl$$.options.assignWiths,($col$$,$callback$$)=>{setImmediate(()=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($current_id_app$$,$m$$,$req$$.user.email,function($e$$,$_condition$$,$admin$$){if($e$$)return $callback$$({e:$e$$.error||$e$$.message||$e$$,code:$e$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $callback$$();$_condition$$.id_app=$current_id_app$$;$req$$.condition[$col$$.ref_field]&&($_condition$$[$col$$.ref_field]=$req$$.condition[$col$$.ref_field]);
16
+ $m$$.find($_condition$$,{[$col$$.ref_field]:1}).lean().then($rs$$=>{setImmediate(()=>{let $dsdt$$=$rs$$.map($r$$=>$r$$[$col$$.ref_field]);$dsdt$$.push("");$dsdt$$.push(null);$condition_assignwiths$$[$col$$.field]={$in:$dsdt$$};$callback$$()})}).catch($e$$=>{$callback$$($e$$)})},$col$$.ref_module)})},$e$$=>{setImmediate(()=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});if(Object.keys($condition_assignwiths$$).length>0){let $condition$$=$req$$.condition_assign||$req$$.condition;
17
+ $condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push($condition_assignwiths$$)}$callback$$()})})}else $callback$$()})},function($callback$$){setImmediate(async()=>{if($shareRoute$$)return $callback$$();let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.hasRight($current_id_app$$,$req$$.user.email,$ctrl$$.module,"view",function($e$$,$permission$$){$e$$&&Logger.error("[findHandler] [hasRight] L\u1ed7i Kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp:",$e$$);
18
+ if($ctrl$$.options.onQuery)$req$$.permission=$permission$$,$ctrl$$.options.onQuery($req$$,$e$$=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});if(!$req$$.permission)return $req$$.result=[],$callback$$("0");$callback$$()});else{if(!$permission$$)return $req$$.result=[],$callback$$("0");$callback$$()}},{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$})})},function($callback$$){setImmediate(async()=>{let $condition$$=$req$$.condition;$condition$$||={};for(var $data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$ in $condition$$)if($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$===
18
19
  "_id"||$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.startsWith("$")||$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.includes(".")||_.has($model$$.schema.paths,$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)||delete $condition$$[$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$],$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$==
19
20
  "$and"){for(var $dk_limit_group$$ of $condition$$.$and)for(var $key_q$jscomp$1_page$$ in $dk_limit_group$$)$key_q$jscomp$1_page$$==="_id"||$key_q$jscomp$1_page$$.startsWith("$")||$key_q$jscomp$1_page$$.includes(".")||_.has($model$$.schema.paths,$key_q$jscomp$1_page$$)||delete $dk_limit_group$$[$key_q$jscomp$1_page$$];$condition$$.$and=$condition$$.$and.filter($a$$=>Object.keys($a$$).length>0)}$shareRoute$$?($condition$$.shared=!0,$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=
20
- (await global.getModel("app").find({sale_online:!0},{_id:1}).lean()).map($a$$=>$a$$._id),$condition$$.$and||($condition$$.$and=[]),$condition$$.$and.push({id_app:{$in:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$}}),$condition$$.id_app&&$condition$$.$and.push({id_app:$condition$$.id_app})):_.has($model$$.schema.paths,"id_app")&&$ctrl$$.require_id_app!==!1&&($condition$$.id_app=$req$$.user.current_id_app);$req$$.user.email==="public"&&_.has($model$$.schema.paths,
21
- "session_created")&&($condition$$.session_created=($req$$.cookies||{}).uid);_.extend($condition$$,$ctrl$$.keyValues);utils.deleteEmptyObject($condition$$);_.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$$.ma_ct=$ctrl$$.name.toUpperCase());if($condition$$.$where)return $callback$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eed d\u1ee5ng $where");if($req$$.fetch_by_groups&&$req$$.fetch_by_groups.model_group&&$req$$.fetch_by_groups.field){var $condition_group_rows_number$$=
22
- $req$$.fetch_by_groups.condition||{};$condition_group_rows_number$$.status=!0;$condition_group_rows_number$$.id_app=$req$$.user.current_id_app;$condition$$[$req$$.fetch_by_groups.field]&&($condition_group_rows_number$$[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]=$condition$$[$req$$.fetch_by_groups.field])}if($req$$.query.count)return $data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=0,$condition_group_rows_number$$&&($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=
21
+ (await global.getModel("app").find({sale_online:!0},{_id:1}).lean()).map($a$$=>$a$$._id),$condition$$.$and||($condition$$.$and=[]),$condition$$.$and.push({id_app:{$in:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$}}),$condition$$.id_app&&$condition$$.$and.push({id_app:$condition$$.id_app})):_.has($model$$.schema.paths,"id_app")&&$ctrl$$.require_id_app!==!1&&($condition$$.id_app=$current_id_app$$);$req$$.user.email==="public"&&_.has($model$$.schema.paths,"session_created")&&
22
+ ($condition$$.session_created=($req$$.cookies||{}).uid);_.extend($condition$$,$ctrl$$.keyValues);utils.deleteEmptyObject($condition$$);_.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$$.ma_ct=$ctrl$$.name.toUpperCase());if($condition$$.$where)return $callback$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eed d\u1ee5ng $where");if($req$$.fetch_by_groups&&$req$$.fetch_by_groups.model_group&&$req$$.fetch_by_groups.field){var $condition_group_rows_number$$=$req$$.fetch_by_groups.condition||
23
+ {};$condition_group_rows_number$$.status=!0;$condition_group_rows_number$$.id_app=$current_id_app$$;$condition$$[$req$$.fetch_by_groups.field]&&($condition_group_rows_number$$[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]=$condition$$[$req$$.fetch_by_groups.field])}if($req$$.query.count)return $data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=0,$condition_group_rows_number$$&&($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=
23
24
  await global.getModel($req$$.fetch_by_groups.model_group).countDocuments($condition_group_rows_number$$)),$condition_group_rows_number$$=await $model$$.countDocuments($condition$$),$req$$.result={groups_number:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$,rows_number:$condition_group_rows_number$$},$callback$$("0");$req$$.query.pagination&&($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=await $model$$.countDocuments($condition$$),
24
- $req$$.pagination={total:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$});let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=$req$$.query.fields;let $gfields$$={};$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$&&
25
- (_.isArray($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)?$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.forEach($f$$=>{$f$$!=="_id"&&($gfields$$[$f$$]=1)}):_.isObject($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)?$gfields$$={...$gfields$$,...$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$}:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.split(",").filter($f$$=>
26
- $f$$&&$field_not_right$$.indexOf($f$$)<0).forEach($f$$=>{$f$$!=="_id"&&($gfields$$[$f$$]=1)}));$field_not_right$$.forEach($f$$=>{Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0});!$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$&&(($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=$req$$.query.notfields)&&(_.isArray($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)?
27
- $data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.forEach($f$$=>{$f$$&&$f$$!=="_id"&&(Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)}):_.isObject($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)?$gfields$$={...$gfields$$,...$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$}:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.split(",").forEach($f$$=>
28
- {$f$$&&$f$$!=="_id"&&(Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)})),$shareRoute$$||$req$$.user.email==="public")&&(Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?(delete $gfields$$.dataview_to,delete $gfields$$.dataview_to_users):($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0));$condition$$.$text&&($gfields$$||={},$gfields$$.textScore={$meta:"textScore"});delete $req$$.query_cache;$ctrl$$.cache&&($req$$.query_cache={..._.cloneDeep($req$$.query),
29
- ..._.cloneDeep($condition$$)},delete $req$$.query_cache.q,delete $req$$.query_cache.refresh_required,$req$$.query_cache.gfields=_.cloneDeep($gfields$$));const $fetchData$$=($condition$$,$limit$$,$page$$,$callback$$)=>{setImmediate(async()=>{let $query$$;if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate||$req$$.query.$aggregate)try{if($req$$.query.aggregate){var $aggregate_piples_sort$$=JSONParser($req$$.query.$aggregate||$req$$.query.aggregate);if(!Array.isArray($aggregate_piples_sort$$))return $callback$$({error:"Aggregate ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"});
25
+ $req$$.pagination={total:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$});let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($current_id_app$$,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=$req$$.query.fields;let $gfields$$={};$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$&&(_.isArray($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)?
26
+ $data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.forEach($f$$=>{$f$$!=="_id"&&($gfields$$[$f$$]=1)}):_.isObject($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)?$gfields$$={...$gfields$$,...$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$}:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.split(",").filter($f$$=>$f$$&&$field_not_right$$.indexOf($f$$)<
27
+ 0).forEach($f$$=>{$f$$!=="_id"&&($gfields$$[$f$$]=1)}));$field_not_right$$.forEach($f$$=>{Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0});!$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$&&(($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=$req$$.query.notfields)&&(_.isArray($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)?$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.forEach($f$$=>
28
+ {$f$$&&$f$$!=="_id"&&(Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)}):_.isObject($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)?$gfields$$={...$gfields$$,...$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$}:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.split(",").forEach($f$$=>{$f$$&&$f$$!=="_id"&&(Object.keys($gfields$$).find($k$$=>
29
+ $gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)})),$shareRoute$$||$req$$.user.email==="public")&&(Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?(delete $gfields$$.dataview_to,delete $gfields$$.dataview_to_users):($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0));$condition$$.$text&&($gfields$$||={},$gfields$$.textScore={$meta:"textScore"});delete $req$$.query_cache;$ctrl$$.cache&&($req$$.query_cache={..._.cloneDeep($req$$.query),..._.cloneDeep($condition$$)},delete $req$$.query_cache.q,
30
+ delete $req$$.query_cache.refresh_required,$req$$.query_cache.gfields=_.cloneDeep($gfields$$));const $fetchData$$=($condition$$,$limit$$,$page$$,$callback$$)=>{setImmediate(async()=>{let $query$$;if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate||$req$$.query.$aggregate)try{if($req$$.query.aggregate){var $aggregate_piples_sort$$=JSONParser($req$$.query.$aggregate||$req$$.query.aggregate);if(!Array.isArray($aggregate_piples_sort$$))return $callback$$({error:"Aggregate ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"});
30
31
  if($aggregate_piples_sort$$.find($f$$=>$f$$.$lookup))return $callback$$({error:"Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eed d\u1ee5ng $lookup trong aggregate"});$aggregate_piples_sort$$=[{$match:$condition$$},...$aggregate_piples_sort$$];$query$$=$model$$.aggregate($aggregate_piples_sort$$)}else{$query$$=$model$$.aggregate([{$match:$condition$$}]);let $group$$;$req$$.query.group&&($group$$=JSONParser($req$$.query.group),$query$$.group($group$$));if($req$$.query.match){let $match$$=JSONParser($req$$.query.match);
31
32
  $query$$.match($match$$)}let $project$$;if($req$$.query.project)$project$$=JSONParser($req$$.query.project),$query$$.project($project$$);else if($gfields$$&&Object.keys($gfields$$).length>0)$project$$=$gfields$$;else if($project$$={_id:1},$group$$)for(let $key$$ in $group$$)$project$$[$key$$]=1;$query$$.project($project$$)}}catch($e$$){return Logger.error("[findHanlder]",$e$$,$req$$.query),$callback$$({error:$e$$.message||$e$$.error||$e$$})}else _.has($model$$.schema.paths,"id_app")&&Object.keys($gfields$$).length>
32
33
  0&&Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)&&($gfields$$.id_app=1),$query$$=$model$$.find($condition$$,$gfields$$);$aggregate_piples_sort$$=$req$$.sort;if(!$aggregate_piples_sort$$)$gfields$$.textScore&&($aggregate_piples_sort$$={textScore:{$meta:"textScore"}});else for(var $key$$ in $aggregate_piples_sort$$)if($key$$!=="textScore"&&$aggregate_piples_sort$$[$key$$]!=1&&$aggregate_piples_sort$$[$key$$]!=-1)return Logger.error("sort is valid",$aggregate_piples_sort$$,$key$$,$aggregate_piples_sort$$[$key$$]),
@@ -34,25 +35,26 @@ $callback$$({error:`Sort ${JSON.stringify($aggregate_piples_sort$$)} is not vali
34
35
  $query$$.lean&&($query$$=$query$$.lean());if($req$$.query.explainQuery){$req$$.query.explainQuery!="explainQuery"&&$req$$.query.explainQuery!="executionStats"&&($req$$.query.explainQuery="queryPlanner");try{const $filter$$=$query$$.getFilter(),$projection$$=$query$$.getOptions().projection||{},$skip$$=$query$$.getOptions().skip||0,$limit$$=$query$$.getOptions().limit||0,$sort$$=$query$$.getOptions().sort||{},$explainResult$$=await $query$$.mongooseCollection.find($filter$$,{projection:$projection$$}).skip($skip$$).limit($limit$$).sort($sort$$).explain($req$$.query.explainQuery),
35
36
  {parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$}=$explainResult$$.queryPlanner||{},{executionSuccess:$executionSuccess$$,nReturned:$nReturned$$,executionTimeMillis:$executionTimeMillis$$,totalKeysExamined:$totalKeysExamined$$,totalDocsExamined:$totalDocsExamined$$}=$explainResult$$.executionStats||{};$callback$$(null,[{queryPlanner:{parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$},executionStats:{executionSuccess:$executionSuccess$$,nReturned:$nReturned$$,executionTimeMillis:$executionTimeMillis$$,
36
37
  totalKeysExamined:$totalKeysExamined$$,totalDocsExamined:$totalDocsExamined$$},_id:""}])}catch($e$$){$callback$$($e$$)}}else $query$$.lean().then($rs$$=>{$callback$$(null,$rs$$)}).catch($e$$=>{$callback$$($e$$)})})};$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=$req$$.query;delete $data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.access_token;$req$$.user&&!$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.count&&
37
- $ctrl$$.name!=="log"&&$ctrl$$.name!=="labelinfo"&&$ctrl$$.name!=="listinfo"&&$ctrl$$.name!=="reportinfo"&&$ctrl$$.name!=="moduleinfo"&&$ctrl$$.name!=="options"&&global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"QUERY",data:{condition:JSON.stringify($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)}},$req$$.user.email,$req$$.user_agent,$req$$);let $page_fetch$$=Number($req$$.query.page||0);isNaN($page_fetch$$)&&($page_fetch$$=
38
- 0);let $limit$$=$req$$.query.limit;$req$$.query.type_data!=="xlsx"&&$req$$.query.type_data!=="json_export"&&$req$$.query.rpt!="1"&&($limit$$&&=Number($limit$$),isNaN($limit$$)&&($limit$$=0),$limit$$||=$ctrl$$.require_id_app!==!1&&$ctrl$$.name!=="right"&&$ctrl$$.name!=="labelinfo"?20:500,$limit$$&&$limit$$>500&&!$req$$.query.print&&$ctrl$$.require_id_app!==!1&&$ctrl$$.name!=="right"&&$ctrl$$.name!=="labelinfo"&&($limit$$=500));$req$$.pagination&&($limit$$||=20,$req$$.pagination.page=$page_fetch$$?
38
+ $ctrl$$.name!=="log"&&$ctrl$$.name!=="labelinfo"&&$ctrl$$.name!=="listinfo"&&$ctrl$$.name!=="reportinfo"&&$ctrl$$.name!=="moduleinfo"&&$ctrl$$.name!=="options"&&global.getModel("log").create({id_app:$current_id_app$$,id_func:$ctrl$$.name,action:"QUERY",data:{condition:JSON.stringify($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)}},$req$$.user.email,$req$$.user_agent,$req$$);let $page_fetch$$=Number($req$$.query.page||0);isNaN($page_fetch$$)&&($page_fetch$$=
39
+ 0);let $limit$$=$req$$.query.limit;$limit$$&&=Number($limit$$);isNaN($limit$$)&&($limit$$=0);$req$$.query.type_data!=="xlsx"&&$req$$.query.type_data!=="json_export"&&$req$$.query.rpt!="1"&&($limit$$||=$ctrl$$.require_id_app!==!1&&$ctrl$$.name!=="right"&&$ctrl$$.name!=="labelinfo"?20:500,$limit$$&&$limit$$>500&&!$req$$.query.print&&$ctrl$$.require_id_app!==!1&&$ctrl$$.name!=="right"&&$ctrl$$.name!=="labelinfo"&&($limit$$=500));$req$$.pagination&&($limit$$||=20,$req$$.pagination.page=$page_fetch$$?
39
40
  $page_fetch$$:1,$req$$.pagination.limit=$limit$$,$req$$.pagination.totalPages=Math.ceil($req$$.pagination.total/$limit$$));let $condition_groups$$=[];if($condition_group_rows_number$$){let $field_ref$$=$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field;$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$={[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1};$dk_limit_group$$=$req$$.fetch_by_groups.limit_group||10;$key_q$jscomp$1_page$$=
40
41
  Number($req$$.query.page||0);isNaN($key_q$jscomp$1_page$$)&&($key_q$jscomp$1_page$$=0);let $skip$$=0;$key_q$jscomp$1_page$$>1&&($skip$$=($key_q$jscomp$1_page$$-1)*$dk_limit_group$$);$skip$$<0&&($skip$$=0);(await global.getModel($req$$.fetch_by_groups.model_group).find($condition_group_rows_number$$,$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$).sort({stt:1,[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1}).skip($skip$$).limit($dk_limit_group$$).lean()).forEach($g$$=>
41
42
  {let $c$$={...$condition$$};$c$$[$req$$.fetch_by_groups.field]=$g$$[$field_ref$$];$condition_groups$$.push($c$$)});$condition_groups$$.length==0?$condition_groups$$=[$condition$$]:($page_fetch$$=0,$req$$.fetch_by_groups.limit&&($limit$$=Math.max(Number($req$$.fetch_by_groups.limit),Math.round($limit$$/$condition_groups$$.length))))}else $condition_groups$$=[$condition$$];async.map($condition_groups$$,($condition$$,$cb$$)=>{$fetchData$$($condition$$,$limit$$,$page_fetch$$,$cb$$)},($e$$,$obj4views$$)=>
42
43
  {if($e$$)return Logger.error("exec query find",$e$$,JSON.stringify($condition$$)),$callback$$({error:$e$$.error||$e$$.message||$e$$});let $obj4view$$=$obj4views$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$obj4view$$||=[];async.parallel({found:function($callback$$){$ctrl$$.found?$ctrl$$.found($req$$.user,$condition$$,$obj4view$$,function($error$$,$items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,$obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>
43
44
  {$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});$callback$$(null)}},function($error$$,$rs$$){setImmediate(()=>{if($error$$)return $callback$$({error:$error$$.error||$error$$.message||$error$$});$obj4view$$=$rs$$.found;async.parallel({e_view:function($callback$$){$ctrl$$.onView($req$$.user,$obj4view$$,($error$$,$viewValue$$)=>{setImmediate(()=>{if($error$$)return Logger.error("Erron on view:",$error$$),$callback$$($error$$);$callback$$(null,$viewValue$$)})},{req:$req$$,
44
- shareRoute:$shareRoute$$})}},async function($app_dir_root_template_e$$,$_groupBy_func_string_rs$$){if($error$$)return $callback$$({error:$error$$.error||$error$$.message||$error$$});if($req$$.query.type_data&&$req$$.query.type_data=="xlsx"){$app_dir_root_template_e$$=(configs.paths||{}).templates;let $template_id$$,$excelTemplate$$;if($template_id$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($template_id$$))return $callback$$({error:"ID m\u1eabu file xu\u1ea5t kh\u00f4ng h\u1ee3p l\u1ec7"});
45
- $excelTemplate$$=await global.getModel("exportexceltemplate").findById($template_id$$);if(!$excelTemplate$$||!$excelTemplate$$.file)return $callback$$({error:"M\u1eabu file xu\u1ea5t kh\u00f4ng t\u1ed3n t\u1ea1i"});var $_rs_templatePath$$=$app_dir_root_template_e$$?`${path.dirname($app_dir_root_template_e$$)}${$excelTemplate$$.file}`:`${path.dirname(__dirname)}${$excelTemplate$$.file}`}else $app_dir_root_template_e$$&&($_rs_templatePath$$=`${$app_dir_root_template_e$$}/excels/lists/${$ctrl$$.name}.xlsx`),
46
- $_rs_templatePath$$&&fs.existsSync($_rs_templatePath$$)||($_rs_templatePath$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($_rs_templatePath$$))return $callback$$({error:"File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$_rs_templatePath$$+"'"});$app_dir_root_template_e$$={};$_groupBy_func_string_rs$$.e_view.forEach($item$$=>{for(let $_key$$ in $item$$){let $_v$$=$item$$[$_key$$];if(_.isObject($_v$$))for(let $__key$$ in $_v$$){let $__v$$=
47
- $_v$$[$__key$$];if(!_.isFunction($__v$$))if($_key$$.indexOf("user")<0&&($__key$$.indexOf("ngay")>=0||$__key$$.indexOf("date")>=0))try{$item$$[`${$_key$$}_${$__key$$}`]=new Date($__v$$)}catch($e$$){$item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else $item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else if($_v$$&&$_key$$.indexOf("user")<0&&($_key$$.indexOf("ngay")>=0||$_key$$.indexOf("date")>=0))try{Logger.info("convert date",$_key$$,$_v$$);let $d$$=moment($_v$$,"YYYY-MM-DD");$d$$.isValid()&&($item$$[`${$_key$$}`]=
48
- $d$$.toDate(),$item$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){Logger.error("Error convert to date",$_v$$,$e$$)}}});$app_dir_root_template_e$$.detail=$_groupBy_func_string_rs$$.e_view;if($excelTemplate$$&&$excelTemplate$$.handle_data){$_groupBy_func_string_rs$$=`return (async ()=>{
45
+ shareRoute:$shareRoute$$})}},async function($e$$,$_rs_func_string_rs$$){if($error$$)return $callback$$({error:$error$$.error||$error$$.message||$error$$});if($req$$.query.type_data==="xlsx"){if($req$$.body.template){var {template:$_groupBy_template$$}=$req$$.body;try{var $app_dir_root_template_fileName$$=await generateDefaultExcel({title:$_groupBy_template$$.title,data:$_rs_func_string_rs$$.e_view,columns:$_groupBy_template$$.columns,filterFields:$_groupBy_template$$.filterFields,condition:$_groupBy_template$$.condition||
46
+ $req$$.body.q||$req$$.query||{}});$req$$.result={url:`https://${$req$$.host}/downloads/temp/${$app_dir_root_template_fileName$$}`};$req$$.dataType="json";return $callback$$("0")}catch($e$$){return $callback$$($e$$)}}$app_dir_root_template_fileName$$=(configs.paths||{}).templates;let $excelTemplate$$;if($e$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($e$$))return $callback$$({error:"ID m\u1eabu file xu\u1ea5t kh\u00f4ng h\u1ee3p l\u1ec7"});$excelTemplate$$=await global.getModel("exportexceltemplate").findById($e$$);
47
+ if(!$excelTemplate$$||!$excelTemplate$$.file)return $callback$$({error:"M\u1eabu file xu\u1ea5t kh\u00f4ng t\u1ed3n t\u1ea1i"});$_groupBy_template$$=$app_dir_root_template_fileName$$?`${path.dirname($app_dir_root_template_fileName$$)}${$excelTemplate$$.file}`:`${path.dirname(__dirname)}${$excelTemplate$$.file}`}else $app_dir_root_template_fileName$$&&($_groupBy_template$$=`${$app_dir_root_template_fileName$$}/excels/lists/${$ctrl$$.name}.xlsx`),$_groupBy_template$$&&fs.existsSync($_groupBy_template$$)||
48
+ ($_groupBy_template$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($_groupBy_template$$))return $callback$$({error:"File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$_groupBy_template$$+"'"});$app_dir_root_template_fileName$$={};$_rs_func_string_rs$$.e_view.forEach($item$$=>{for(let $_key$$ in $item$$){let $_v$$=$item$$[$_key$$];if(_.isObject($_v$$))for(let $__key$$ in $_v$$){let $__v$$=$_v$$[$__key$$];if(!_.isFunction($__v$$))if($_key$$.indexOf("user")<
49
+ 0&&($__key$$.indexOf("ngay")>=0||$__key$$.indexOf("date")>=0))try{$item$$[`${$_key$$}_${$__key$$}`]=new Date($__v$$)}catch($e$$){$item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else $item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else if($_v$$&&$_key$$.indexOf("user")<0&&($_key$$.indexOf("ngay")>=0||$_key$$.indexOf("date")>=0))try{Logger.info("convert date",$_key$$,$_v$$);let $d$$=moment($_v$$,"YYYY-MM-DD");$d$$.isValid()&&($item$$[`${$_key$$}`]=$d$$.toDate(),$item$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){Logger.error("Error convert to date",
50
+ $_v$$,$e$$)}}});$app_dir_root_template_fileName$$.detail=$_rs_func_string_rs$$.e_view;if($excelTemplate$$&&$excelTemplate$$.handle_data){$_rs_func_string_rs$$=`return (async ()=>{
49
51
  try{
50
52
  ${$excelTemplate$$.handle_data}
51
53
  }catch(e){
52
54
  return {error:e}
53
55
  }
54
56
 
55
- })`;try{if(($app_dir_root_template_e$$=await evalute($_groupBy_func_string_rs$$,{data:$app_dir_root_template_e$$,moment,numeral,_,utils})())&&$app_dir_root_template_e$$.error)return Logger.error($app_dir_root_template_e$$.error,$_groupBy_func_string_rs$$),$callback$$({error:$app_dir_root_template_e$$.error.message||$app_dir_root_template_e$$.error.error||$app_dir_root_template_e$$.error})}catch($e$$){return Logger.error($e$$,$_groupBy_func_string_rs$$),$callback$$({error:$e$$.message||
56
- $e$$.error||$e$$})}}excelReport($_rs_templatePath$$,$app_dir_root_template_e$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return Logger.error("excelReport",$e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$result$$;$req$$.dataType="xlsx";$callback$$("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)?htmlReport($req$$.query.id_rpt,{...$req$$.user.current_app_info,
57
- ...$req$$.query,company:{...$req$$.user.current_app_info},detail:$_groupBy_func_string_rs$$.e_view,details:$_groupBy_func_string_rs$$.e_view}).then($rs$$=>{$req$$.result=$rs$$;$callback$$("0")},$e$$=>{Logger.error("htmlReport",$e$$);$callback$$($e$$)}):($_rs_templatePath$$=$_groupBy_func_string_rs$$.e_view,$req$$.query.groupBy?($_groupBy_func_string_rs$$=$req$$.query.groupBy.split(","),$_rs_templatePath$$.groupBy($_groupBy_func_string_rs$$,[],($e$$,$_items$$)=>{if($e$$)return Logger.error("jsonReport",
58
- $e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$_items$$;$callback$$("0")})):($req$$.result=$_rs_templatePath$$,$callback$$("0")))})})})})})}],$e$$=>{if($e$$&&$e$$!="0")return $callback$$($e$$);$callback$$(null,{result:$req$$.pagination?{data:$req$$.result,pagination:$req$$.pagination}:$req$$.result,dataType:$req$$.dataType||"json"})})};module.exports=findHanlder;
57
+ })`;try{if(($app_dir_root_template_fileName$$=await evalute($_rs_func_string_rs$$,{data:$app_dir_root_template_fileName$$,moment,numeral,_,utils})())&&$app_dir_root_template_fileName$$.error)return Logger.error($app_dir_root_template_fileName$$.error,$_rs_func_string_rs$$),$callback$$({error:$app_dir_root_template_fileName$$.error.message||$app_dir_root_template_fileName$$.error.error||$app_dir_root_template_fileName$$.error})}catch($e$$){return Logger.error($e$$,$_rs_func_string_rs$$),
58
+ $callback$$({error:$e$$.message||$e$$.error||$e$$})}}excelReport($_groupBy_template$$,$app_dir_root_template_fileName$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return Logger.error("excelReport",$e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$result$$;$req$$.dataType="xlsx";$callback$$("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)?htmlReport($req$$.query.id_rpt,
59
+ {...$req$$.user.current_app_info,...$req$$.query,company:{...$req$$.user.current_app_info},detail:$_rs_func_string_rs$$.e_view,details:$_rs_func_string_rs$$.e_view}).then($rs$$=>{$req$$.result=$rs$$;$callback$$("0")},$e$$=>{Logger.error("htmlReport",$e$$);$callback$$($e$$)}):($_rs_func_string_rs$$=$_rs_func_string_rs$$.e_view,$req$$.query.groupBy?($_groupBy_template$$=$req$$.query.groupBy.split(","),$_rs_func_string_rs$$.groupBy($_groupBy_template$$,[],($e$$,$_items$$)=>{if($e$$)return Logger.error("jsonReport",
60
+ $e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$_items$$;$callback$$("0")})):($req$$.result=$_rs_func_string_rs$$,$callback$$("0")))})})})})})}],$e$$=>{if($e$$&&$e$$!="0")return $callback$$($e$$);$callback$$(null,{result:$req$$.pagination?{data:$req$$.result,pagination:$req$$.pagination}:$req$$.result,dataType:$req$$.dataType||"json"})})};module.exports=findHanlder;
@@ -1,12 +1,12 @@
1
- const fs=require("fs"),moment=require("moment"),numeral=require("numeral"),_=require("lodash"),path=require("path"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),textReport=require("../libs/textReport"),excelReport=require("excel-report"),{JSONParser,evalute,prepareParameters,getParameterData}=require("../libs/utils"),{getCacheReport}=require("../libs/redis-cache"),utils=require("../libs/utils"),rptExcelHandler=async($ctrl$$,$req$$,$callback$$)=>{const $rptId$$=
2
- $ctrl$$.module,$module$$=$ctrl$$.module,$options$$=$ctrl$$.options;let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user);delete $req$$.query.rpt;let $body$$={};_.isObject($req$$.body)&&($body$$=$req$$.body);$req$$.query={...$req$$.query,...$body$$};try{for(let $q$$ in $req$$.query)if(!$req$$.query[$q$$])delete $req$$.query[$q$$];else if(_.isString($req$$.query[$q$$])&&($req$$.query[$q$$].indexOf("[")>=0||$req$$.query[$q$$].indexOf("{")>=0))try{$req$$.query[$q$$]=JSONParser($req$$.query[$q$$])}catch($e$$){Logger.error("can't parse json",
3
- $req$$.query[$q$$],$rptId$$,"...")}delete $req$$.query.t;$req$$.query.tu_ngay&&($req$$.query.tu_ngay=moment(new Date($req$$.query.tu_ngay)).startOf("date").toDate());$req$$.query.den_ngay&&($req$$.query.den_ngay=moment(new Date($req$$.query.den_ngay)).endOf("date").toDate());$req$$.query.tu_ngay_kt&&($req$$.query.tu_ngay_kt=moment(new Date($req$$.query.tu_ngay_kt)).startOf("date").toDate());$req$$.query.den_ngay_kt&&($req$$.query.den_ngay_kt=moment(new Date($req$$.query.den_ngay_kt)).endOf("date").toDate());
4
- $options$$.onExport||($options$$.onExport=function($app$$,$next$$){$next$$()});let $getData$$,$_new_query$$={...$req$$.query};delete $_new_query$$.id_rpt;delete $_new_query$$.jsonstream;delete $_new_query$$.cType;delete $_new_query$$.refresh_required;delete $_new_query$$.isDrilldown;let $cacheData$$=await getCacheReport($req$$.user.email,$req$$.user.current_id_app,$rptId$$,$req$$.query.id_session,null,null,JSON.stringify($_new_query$$));$getData$$=$cacheData$$?$cacheData$$.data?function($req$$,$callback$$){$callback$$(null,
5
- $cacheData$$.data)}:$ctrl$$.getData:$ctrl$$.getData;let $streamData$$=async function($app$$){await $getData$$($req$$,async function($data_e$$,$data_report_v$$){if($data_e$$)return Logger.error("report getData",$data_e$$),$data_e$$.error?$callback$$($data_e$$):$callback$$({error:$data_e$$.message||$data_e$$});global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$rptId$$,action:"EXCELRPT",data:{condition:JSON.stringify($req$$.query)}},$req$$.user.email,$req$$.user_agent,$req$$);
6
- $data_e$$=$data_report_v$$;_.isArray($data_report_v$$)||($data_e$$=$data_report_v$$.data||$data_report_v$$.rows||[$data_report_v$$]);delete $app$$.participants;delete $app$$.expire_date;delete $app$$.sale_online;delete $app$$.viettel_user;delete $app$$.viettel_password;delete $app$$.viettel_url_service;delete $app$$.vnpt_user;delete $app$$.vnpt_password;delete $app$$.vnpt_url_service;delete $app$$.easy_user;delete $app$$.easy_password;delete $app$$.easy_url_service;delete $app$$.zalo_app_id;delete $app$$.zalo_secret_key;
7
- delete $app$$.zalo_code;delete $app$$.zalo_oa_id;delete $app$$.zalo_code_verifier;delete $app$$.zalo_code_challenge;delete $app$$.zalo_access_token;delete $app$$.zalo_refresh_token;delete $app$$.google_credentials;delete $app$$.sip_uri;delete $app$$.sip_password;delete $app$$.sip_websocket;delete $app$$.voiip_access_token;delete $app$$.voiip_webhook;delete $app$$.wallet_address;delete $app$$.wallet_token;delete $app$$.owner;delete $app$$.default_password;delete $app$$.email_host;delete $app$$.email_port;
8
- delete $app$$.email_secure;delete $app$$.email_authMethod;delete $app$$.email_user;delete $app$$.email_pass;delete $app$$.email_name;delete $app$$.ssl_key;delete $app$$.ssl_cert;delete $app$$.ssl_ca;$app$$.company=$app$$.appInfo={...$app$$};_.extend($app$$,$req$$.query);delete $app$$.access_token;for(var $func_string_key$$ in $app$$)$data_report_v$$=$app$$[$func_string_key$$],_.isDate($data_report_v$$)&&($app$$[$func_string_key$$+"_string"]=moment($data_report_v$$).format("DD/MM/YYYY"));$app$$.detail=
9
- $app$$.details=$data_e$$;$app$$.datasource={...$app$$};if($rptConfig$$&&$rptConfig$$.handle_data_expression){if($rptConfig$$.handle_data_expression.indexOf("async ")>=0)return $callback$$({error:"async function is not allow"});$func_string_key$$=`return (async ()=>{
1
+ const fs=require("fs"),moment=require("moment"),numeral=require("numeral"),_=require("lodash"),path=require("path"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),textReport=require("../libs/textReport"),excelReport=require("excel-report"),{JSONParser,evalute,prepareParameters,getParameterData}=require("../libs/utils"),{getCacheReport}=require("../libs/redis-cache"),utils=require("../libs/utils"),{generateDefaultExcel}=require("../libs/excelHelper"),rptExcelHandler=
2
+ async($ctrl$$,$req$$,$callback$$)=>{const $rptId$$=$ctrl$$.module,$module$$=$ctrl$$.module,$options$$=$ctrl$$.options;let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user);delete $req$$.query.rpt;let $body$$={};_.isObject($req$$.body)&&($body$$=$req$$.body);$req$$.query={...$req$$.query,...$body$$};try{for(let $q$$ in $req$$.query)if(!$req$$.query[$q$$])delete $req$$.query[$q$$];else if(_.isString($req$$.query[$q$$])&&($req$$.query[$q$$].indexOf("[")>=0||$req$$.query[$q$$].indexOf("{")>=0))try{$req$$.query[$q$$]=
3
+ JSONParser($req$$.query[$q$$])}catch($e$$){Logger.error("can't parse json",$req$$.query[$q$$],$rptId$$,"...")}delete $req$$.query.t;$req$$.query.tu_ngay&&($req$$.query.tu_ngay=moment(new Date($req$$.query.tu_ngay)).startOf("date").toDate());$req$$.query.den_ngay&&($req$$.query.den_ngay=moment(new Date($req$$.query.den_ngay)).endOf("date").toDate());$req$$.query.tu_ngay_kt&&($req$$.query.tu_ngay_kt=moment(new Date($req$$.query.tu_ngay_kt)).startOf("date").toDate());$req$$.query.den_ngay_kt&&($req$$.query.den_ngay_kt=
4
+ moment(new Date($req$$.query.den_ngay_kt)).endOf("date").toDate());$options$$.onExport||($options$$.onExport=function($app$$,$next$$){$next$$()});let $getData$$,$_new_query$$={...$req$$.query};delete $_new_query$$.id_rpt;delete $_new_query$$.jsonstream;delete $_new_query$$.cType;delete $_new_query$$.refresh_required;delete $_new_query$$.isDrilldown;let $cacheData$$=await getCacheReport($req$$.user.email,$req$$.user.current_id_app,$rptId$$,$req$$.query.id_session,null,null,JSON.stringify($_new_query$$));
5
+ $getData$$=$cacheData$$?$cacheData$$.data?function($req$$,$callback$$){$callback$$(null,$cacheData$$.data)}:$ctrl$$.getData:$ctrl$$.getData;let $streamData$$=async function($app$$){await $getData$$($req$$,async function($e$$,$data_report$$){if($e$$)return Logger.error("report getData",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$rptId$$,action:"EXCELRPT",data:{condition:JSON.stringify($req$$.query)}},
6
+ $req$$.user.email,$req$$.user_agent,$req$$);let $data$$=$data_report$$;_.isArray($data_report$$)||($data$$=$data_report$$.data||$data_report$$.rows||[$data_report$$]);delete $app$$.participants;delete $app$$.expire_date;delete $app$$.sale_online;delete $app$$.viettel_user;delete $app$$.viettel_password;delete $app$$.viettel_url_service;delete $app$$.vnpt_user;delete $app$$.vnpt_password;delete $app$$.vnpt_url_service;delete $app$$.easy_user;delete $app$$.easy_password;delete $app$$.easy_url_service;
7
+ delete $app$$.zalo_app_id;delete $app$$.zalo_secret_key;delete $app$$.zalo_code;delete $app$$.zalo_oa_id;delete $app$$.zalo_code_verifier;delete $app$$.zalo_code_challenge;delete $app$$.zalo_access_token;delete $app$$.zalo_refresh_token;delete $app$$.google_credentials;delete $app$$.sip_uri;delete $app$$.sip_password;delete $app$$.sip_websocket;delete $app$$.voiip_access_token;delete $app$$.voiip_webhook;delete $app$$.wallet_address;delete $app$$.wallet_token;delete $app$$.owner;delete $app$$.default_password;
8
+ delete $app$$.email_host;delete $app$$.email_port;delete $app$$.email_secure;delete $app$$.email_authMethod;delete $app$$.email_user;delete $app$$.email_pass;delete $app$$.email_name;delete $app$$.ssl_key;delete $app$$.ssl_cert;delete $app$$.ssl_ca;$app$$.company=$app$$.appInfo={...$app$$};_.extend($app$$,$req$$.query);delete $app$$.access_token;for(var $func_string_key$$ in $app$$)$e$$=$app$$[$func_string_key$$],_.isDate($e$$)&&($app$$[$func_string_key$$+"_string"]=moment($e$$).format("DD/MM/YYYY"));
9
+ $app$$.detail=$app$$.details=$data$$;$app$$.datasource={...$app$$};if($rptConfig$$&&$rptConfig$$.handle_data_expression){if($rptConfig$$.handle_data_expression.indexOf("async ")>=0)return $callback$$({error:"async function is not allow"});$func_string_key$$=`return (async ()=>{
10
10
  try{
11
11
  ${$rptConfig$$.handle_data_expression}
12
12
  }catch(e){
@@ -20,13 +20,14 @@ $rptId$$).toLowerCase()}).lean())&&$func_string$$.handle_data_expression){if($fu
20
20
  }catch(e){
21
21
  return {error:e}
22
22
  }
23
- })`;try{const $rs$$=await evalute($func_string$$,{data:$data_e$$,moment,user:$req$$.user,utils,numeral,getData:getParameterData})();if($rs$$){if($rs$$.error)return Logger.error("global: handle data before export",$rs$$.error,$func_string$$),$callback$$({error:$rs$$.error.message||$rs$$.error});$app$$.detail=$app$$.details=$rs$$}}catch($e$$){return Logger.error("global: handle data before export",$e$$,$func_string$$),$callback$$({error:$e$$.message||$e$$})}}else $app$$.detail.forEach($r$$=>
23
+ })`;try{const $rs$$=await evalute($func_string$$,{data:$data$$,moment,user:$req$$.user,utils,numeral,getData:getParameterData})();if($rs$$){if($rs$$.error)return Logger.error("global: handle data before export",$rs$$.error,$func_string$$),$callback$$({error:$rs$$.error.message||$rs$$.error});$app$$.detail=$app$$.details=$rs$$}}catch($e$$){return Logger.error("global: handle data before export",$e$$,$func_string$$),$callback$$({error:$e$$.message||$e$$})}}else $app$$.detail.forEach($r$$=>
24
24
  {for(let $_key$$ in $r$$){let $_v$$=$r$$[$_key$$];if($_v$$&&($_key$$.indexOf("ngay")>=0||$_key$$.indexOf("date")>=0))try{let $d$$=moment($_v$$);$d$$.isValid()&&($r$$[`${$_key$$}`]=$d$$.toDate(),$r$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){Logger.error("Error convert to date",$_v$$,$e$$)}}});$rptConfig$$&&$rptConfig$$.parameters&&await prepareParameters($rptConfig$$.parameters,$app$$,$app$$);if($req$$.query.json)$callback$$(null,{type:"json",data:$app$$});else $options$$.onExport($app$$,
25
- function(){setImmediate(()=>{if($req$$.query.print||$send_to$$)htmlReport($html_template$$,$app$$).then($rs$$=>{$send_to$$&&global.getModel("app").emitEvent($req$$.user.current_id_app,"report",{id_app:$req$$.user.current_id_app,title:$title_template$$,body:$title_template$$,email_content:$rs$$,allow_unsubcribe:!1},null,$send_to$$.split(","),!0,!0);return $callback$$(null,{type:"html",data:$rs$$})},$error$$=>{$callback$$({error:$error$$.message||$error$$.error||$error$$})});else{let $ext$$=$templatePath$$.split(".").pop();
26
- $ext$$==="xlsx"?excelReport($templatePath$$,$app$$,function($error$$,$result$$){if($error$$)return Logger.error("[rptExcelHandler] Error export to excel",$error$$),$callback$$({error:$error$$.message||$error$$.error||$error$$});$callback$$(null,{type:"xlsx",data:$result$$})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"}):textReport($templatePath$$,$app$$,function($error$$,$result$$){if($error$$)return Logger.error("[rptExcelHandler] Error export to text",$error$$),$callback$$({error:$error$$.message||
27
- $error$$.error||$error$$});if($ext$$==="docx")$callback$$(null,{type:"docx",data:$result$$});else return $callback$$(null,{type:$ext$$,data:$result$$})})}})})})},$id_rpt$$=$req$$.query.id_rpt,$dir_root_templates$$=configs.paths.templates||__dirname,$templatePath$$,$rptConfig$$,$html_template$$,$title_template$$,$send_to$$;(new Promise(($resolve$$,$reject$$)=>{$rptConfig$$=$templatePath$$=void 0;if($id_rpt$$&&global.mongoose.Types.ObjectId.isValid($id_rpt$$))global.getModel("rpt").findOne({_id:$id_rpt$$}).lean().then(async function($r$$){if(!$r$$)return Logger.error("Not found excel template",
25
+ function(){setImmediate(async()=>{if($req$$.query.print||$send_to$$)htmlReport($html_template$$,$app$$).then($rs$$=>{$send_to$$&&global.getModel("app").emitEvent($req$$.user.current_id_app,"report",{id_app:$req$$.user.current_id_app,title:$title_template$$,body:$title_template$$,email_content:$rs$$,allow_unsubcribe:!1},null,$send_to$$.split(","),!0,!0);return $callback$$(null,{type:"html",data:$rs$$})},$error$$=>{$callback$$({error:$error$$.message||$error$$.error||$error$$})});else{if($templatePath$$==
26
+ "auto"){const {template:$template$$}=$req$$.body;try{const $fileName$$=await generateDefaultExcel({title:$template$$.title,data:$data$$,columns:$template$$.columns,filterFields:$template$$.filterFields,condition:$template$$.condition||$req$$.query||{}});return $callback$$(null,{type:"json",data:{url:`https://${$req$$.host}/downloads/temp/${$fileName$$}`}})}catch($e$$){return $callback$$($e$$)}}let $ext$$=$templatePath$$.split(".").pop();$ext$$==="xlsx"?excelReport($templatePath$$,$app$$,function($error$$,
27
+ $result$$){if($error$$)return Logger.error("[rptExcelHandler] Error export to excel",$error$$),$callback$$({error:$error$$.message||$error$$.error||$error$$});$callback$$(null,{type:"xlsx",data:$result$$})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"}):textReport($templatePath$$,$app$$,function($error$$,$result$$){if($error$$)return Logger.error("[rptExcelHandler] Error export to text",$error$$),$callback$$({error:$error$$.message||$error$$.error||$error$$});if($ext$$==="docx")$callback$$(null,
28
+ {type:"docx",data:$result$$});else return $callback$$(null,{type:$ext$$,data:$result$$})})}})})})},$id_rpt$$=$req$$.query.id_rpt,$dir_root_templates$$=configs.paths.templates||__dirname,$templatePath$$,$rptConfig$$,$html_template$$,$title_template$$,$send_to$$;(new Promise(($resolve$$,$reject$$)=>{$rptConfig$$=$templatePath$$=void 0;if($id_rpt$$=="default"&&$req$$.body?.template&&$req$$.body?.template.columns)return $templatePath$$="auto",$resolve$$($templatePath$$);if($id_rpt$$&&global.mongoose.Types.ObjectId.isValid($id_rpt$$))global.getModel("rpt").findOne({_id:$id_rpt$$}).lean().then(async function($r$$){if(!$r$$)return Logger.error("Not found excel template",
28
29
  $id_rpt$$),$reject$$("Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu");$send_to$$=$req$$.query.send_to||$r$$.send_to;if($req$$.query.print||$send_to$$)$html_template$$=$r$$.html_template,$title_template$$=$r$$.ten_mau_in;else{if($r$$.file_mau_in.indexOf("/file/download")>0){let $id_file$$=$r$$.file_mau_in.split("/").pop();const $file$$=global.getModel("file");try{const $_fileMauIn$$=await $file$$.findOne({_id:$id_file$$}).lean();if(!$_fileMauIn$$)return $reject$$("Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu");
29
30
  let $file_name$$=$_fileMauIn$$.file.name,$root$$=configs.paths.uploads;$root$$||($root$$=__dirname,$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$templatePath$$=path.join($root$$,$file_name$$)}catch($e$$){return $reject$$($e$$.message||"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu")}}else $templatePath$$=path.dirname($dir_root_templates$$)+$r$$.file_mau_in;fs.existsSync($templatePath$$)||(Logger.error("[rptExcelHandler] file template not found",$templatePath$$),$templatePath$$=`${path.dirname($dir_root_templates$$)}/templates/excels/reports/${$module$$}.xlsx`,
30
31
  Logger.info("[rptExcelHandler] using default template",$templatePath$$));fs.existsSync($templatePath$$)||($templatePath$$=`${path.dirname(__dirname)}/templates/excels/reports/${$module$$}.xlsx`,Logger.info("[rptExcelHandler] using default template",$templatePath$$));if(!fs.existsSync($templatePath$$))return $reject$$("M\u1eabu kh\u00f4ng t\u1ed3n t\u1ea1i")}$rptConfig$$=$r$$;return $resolve$$($templatePath$$,$html_template$$)}).catch($error$$=>{Logger.error("Not found excel template",$error$$);return $reject$$($error$$)});
31
- else if($templatePath$$=`${path.dirname($dir_root_templates$$)}/templates/excels/reports/${$module$$}.xlsx`,fs.existsSync($templatePath$$)||($templatePath$$=`${path.dirname(__dirname)}/templates/excels/reports/${$module$$}.xlsx`),!fs.existsSync($templatePath$$))return $reject$$("M\u1eabu file xu\u1ea5t kh\u00f4ng h\u1ee3p l\u1ec7 ho\u1eb7c kh\u00f4ng t\u1ed3n t\u1ea1i")})).then(async()=>{$options$$.require_id_app===!1?$streamData$$({}):permission.hasRight($req$$.params.id_app,$req$$.user.email,$module$$,
32
- "view",function($error$$,$hr$$,$app$$){$hr$$?$streamData$$({...$app$$}):$callback$$({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n xu\u1ea5t excel b\u00e1o c\u00e1o n\u00e0y"})},{notNeedRight:$notNeedRight$$})}).catch($e$$=>{Logger.error($e$$);return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})})}catch($e$$){return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})}};module.exports=rptExcelHandler;
32
+ else return $templatePath$$=`${path.dirname($dir_root_templates$$)}/templates/excels/reports/${$module$$}.xlsx`,fs.existsSync($templatePath$$)||($templatePath$$=`${path.dirname(__dirname)}/templates/excels/reports/${$module$$}.xlsx`),fs.existsSync($templatePath$$)?$resolve$$($templatePath$$):$reject$$("M\u1eabu file xu\u1ea5t kh\u00f4ng h\u1ee3p l\u1ec7 ho\u1eb7c kh\u00f4ng t\u1ed3n t\u1ea1i")})).then(async()=>{$options$$.require_id_app===!1?$streamData$$({}):permission.hasRight($req$$.params.id_app,
33
+ $req$$.user.email,$module$$,"view",function($error$$,$hr$$,$app$$){$hr$$?$streamData$$({...$app$$}):$callback$$({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n xu\u1ea5t excel b\u00e1o c\u00e1o n\u00e0y"})},{notNeedRight:$notNeedRight$$})}).catch($e$$=>{Logger.error($e$$);return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})})}catch($e$$){return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})}};module.exports=rptExcelHandler;
@@ -8,6 +8,6 @@ delete $_query$$.isDrilldown;let $getData$$;const $getDataFromServer$$=$ctrl$$.g
8
8
  case "data":Logger.info("data stream",$rptId$$,"...");_.isArray($data$$)?$rows$$=$rows$$.concat($data$$):$rows$$.push($data$$);$query$$.jsonstream?$res$$.write(JSON.stringify($data$$)+"$$end%"):$prechunk$$?$res$$.write(","+JSON.stringify($data$$)):$res$$.write(JSON.stringify($data$$));$prechunk$$=$data$$;break;case "end":$_interval$$&&clearInterval($_interval$$);setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$rptId$$,action:"VIEWRPT",data:{condition:JSON.stringify($query$$)}},
9
9
  $req$$.user.email,$req$$.user_agent,$req$$)});setTimeout(function(){Logger.info("end stream",$rptId$$,"...");$res$$.end();$callback$$(null,"__end_stream__")},1E3);break;default:Logger.info($stream$$,$rptId$$,"..."),$res$$.write("")}else setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$rptId$$,action:"VIEWRPT",data:{condition:JSON.stringify($query$$)}},$req$$.user.email,$req$$.user_agent,$req$$)}),setImmediate(async()=>{let $report$$=$data$$;if(_.isArray($report$$)){if($query$$.fields){let $fields$$=
10
10
  $query$$.fields.split(",");$report$$=$report$$.map($item$$=>{let $_item$$={};$fields$$.forEach($field$$=>{$_item$$[$field$$]=$item$$[$field$$]});return $_item$$})}if($query$$.group_by&&$query$$.group_by_summary)try{$report$$=await $report$$.asyncGroupBy($query$$.group_by.split(","),$query$$.group_by_summary.split(","))}catch($e$$){return Logger.error("report groupBy data",$e$$,$rptId$$,"..."),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})}}if($req$$.query.pagination&&!$from_cache$$)try{let $session$$=
11
- await setCacheReport($req$$.user.email,$req$$.user.current_id_app,$rptId$$,$report$$,JSON.stringify($_query$$)),$summary$$=$report$$.summary,$data_cache$$=Array.isArray($report$$)?$report$$:$report$$.list||$report$$.rows||[$report$$],$total$$=$data_cache$$.length;$callback$$(null,{id_session:$session$$._id.toString(),summary:$summary$$,data:$data_cache$$.slice($skip$$,$skip$$+$limit$$),pagination:{limit:$limit$$,page:$page$$,total:$total$$,totalPages:Math.ceil($total$$/$limit$$)}})}catch($e$$){Logger.error("[rptHandler] L\u1ed7i cache report",
12
- $e$$),$callback$$(null,$report$$)}else $callback$$(null,$report$$)})})};$options$$.require_id_app===!1?$streamData$$():permission.hasRight($req$$.params.id_app,$req$$.user.email,$module$$,"view",($error$$,$hr$$)=>{$hr$$?$streamData$$():$callback$$({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n xem b\u00e1o c\u00e1o n\u00e0y"})},{notNeedRight:$notNeedRight$$})}catch($e$$){return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})}},rptHandlerAsync=($ctrl$$,$req$$,$res$$)=>new Promise(($resolve$$,
13
- $reject$$)=>{rptHandler($ctrl$$,$req$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)},$res$$)}),withSesssion=async($ctrl$$,$req$$,$callback$$,$res$$)=>{if($ctrl$$.options?.useSession)try{const $rs$$=await executeInTransaction(()=>rptHandlerAsync($ctrl$$,$req$$,$res$$));$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}else rptHandler($ctrl$$,$req$$,$callback$$,$res$$)};module.exports=withSesssion;
11
+ await setCacheReport($req$$.user.email,$req$$.user.current_id_app,$rptId$$,$report$$,JSON.stringify($_query$$)),$data_cache$$=$session$$.data_cache||[],$total$$=$data_cache$$.length;$callback$$(null,{...($session$$.info||{}),id_session:$session$$._id.toString(),data:$data_cache$$.slice($skip$$,$skip$$+$limit$$),pagination:{limit:$limit$$,page:$page$$,total:$total$$,totalPages:Math.ceil($total$$/$limit$$)}})}catch($e$$){Logger.error("[rptHandler] L\u1ed7i cache report",$e$$),$callback$$(null,$report$$)}else $callback$$(null,
12
+ $report$$)})})};$options$$.require_id_app===!1?$streamData$$():permission.hasRight($req$$.params.id_app,$req$$.user.email,$module$$,"view",($error$$,$hr$$)=>{$hr$$?$streamData$$():$callback$$({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n xem b\u00e1o c\u00e1o n\u00e0y"})},{notNeedRight:$notNeedRight$$})}catch($e$$){return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})}},rptHandlerAsync=($ctrl$$,$req$$,$res$$)=>new Promise(($resolve$$,$reject$$)=>{rptHandler($ctrl$$,$req$$,($e$$,
13
+ $rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)},$res$$)}),withSesssion=async($ctrl$$,$req$$,$callback$$,$res$$)=>{if($ctrl$$.options?.useSession)try{const $rs$$=await executeInTransaction(()=>rptHandlerAsync($ctrl$$,$req$$,$res$$));$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}else rptHandler($ctrl$$,$req$$,$callback$$,$res$$)};module.exports=withSesssion;