flexbiz-server 12.7.5 → 12.7.7

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 (95) hide show
  1. package/package.json +2 -2
  2. package/server/app.js +23 -19
  3. package/server/auths/rateLimiterMiddleware.js +3 -3
  4. package/server/controllers/controller.js +41 -41
  5. package/server/controllers/controllerUtils.js +61 -61
  6. package/server/controllers/controllerUtils_v1.js +72 -0
  7. package/server/controllers/controller_old.js +129 -0
  8. package/server/controllers/createHandler.js +34 -34
  9. package/server/controllers/createHandler_old.js +35 -0
  10. package/server/controllers/deleteHandler.js +11 -12
  11. package/server/controllers/deleteHandler_old.js +12 -0
  12. package/server/controllers/exportHandler.js +19 -17
  13. package/server/controllers/exportHandler_old.js +17 -0
  14. package/server/controllers/findHandler.js +61 -55
  15. package/server/controllers/findHandler_old.js +74 -0
  16. package/server/controllers/importFromGsHandler.js +10 -10
  17. package/server/controllers/importFromJsonHandler.js +6 -6
  18. package/server/controllers/importFromJsonHandler_old.js +6 -0
  19. package/server/controllers/updateBookHandler.js +1 -1
  20. package/server/controllers/updateFieldHandler.js +12 -13
  21. package/server/controllers/updateFieldHandler_old.js +13 -0
  22. package/server/controllers/updateHandler.js +38 -40
  23. package/server/controllers/updateHandler_old.js +40 -0
  24. package/server/controllers/viewHandler.js +13 -14
  25. package/server/controllers/viewHandler_old.js +14 -0
  26. package/server/flow/nodes/aiAnalysis.js +1 -1
  27. package/server/global.js +2 -3
  28. package/server/libs/WorkerStaticPool.js +14 -14
  29. package/server/libs/asyncCompat.js +10 -0
  30. package/server/libs/createSocaitheongay.js +1 -1
  31. package/server/libs/invoiceVnpt.js +1 -1
  32. package/server/libs/post-book.js +2 -2
  33. package/server/libs/post-sokho.js +5 -5
  34. package/server/libs/redis-cache.js +2 -2
  35. package/server/models/assabcihandler.js +1 -1
  36. package/server/models/counter.js +2 -2
  37. package/server/models/listinfo.js +200 -225
  38. package/server/models/listinfo_old.js +124 -0
  39. package/server/models/po1.js +4 -4
  40. package/server/models/purchase_contract.js +3 -3
  41. package/server/models/smsaccount.js +2 -2
  42. package/server/models/tdttco.js +3 -3
  43. package/server/models/tdttno.js +3 -3
  44. package/server/modules/lists/ls-afflink.js +1 -1
  45. package/server/modules/lists/ls-assbooking.js +1 -1
  46. package/server/modules/lists/ls-assinvestment.js +11 -11
  47. package/server/modules/lists/ls-asskey.js +2 -2
  48. package/server/modules/lists/ls-assneedtobuy.js +1 -1
  49. package/server/modules/lists/ls-assperiod.js +1 -1
  50. package/server/modules/lists/ls-asssell.js +1 -1
  51. package/server/modules/lists/ls-cart.js +14 -14
  52. package/server/modules/lists/ls-congdoansx.js +1 -1
  53. package/server/modules/lists/ls-consultant.js +2 -2
  54. package/server/modules/lists/ls-dkhoc.js +2 -2
  55. package/server/modules/lists/ls-dmban.js +1 -1
  56. package/server/modules/lists/ls-dmbp.js +2 -2
  57. package/server/modules/lists/ls-dmdoi.js +1 -1
  58. package/server/modules/lists/ls-dmnhtask.js +2 -2
  59. package/server/modules/lists/ls-dmvt.js +3 -3
  60. package/server/modules/lists/ls-file.js +1 -1
  61. package/server/modules/lists/ls-giaoca.js +1 -1
  62. package/server/modules/lists/ls-introducer.js +2 -2
  63. package/server/modules/lists/ls-kbm-bcqt.js +1 -1
  64. package/server/modules/lists/ls-news.js +1 -1
  65. package/server/modules/lists/ls-participant.js +1 -1
  66. package/server/modules/lists/ls-rpt.js +1 -1
  67. package/server/modules/lists/ls-smsaccount.js +1 -1
  68. package/server/modules/lists/ls-sosanxuat.js +1 -1
  69. package/server/modules/lists/ls-support.js +1 -1
  70. package/server/modules/public/callin.js +1 -1
  71. package/server/modules/reports/calc-tinhgiafifo.js +1 -1
  72. package/server/modules/reports/calc-tinhgiatb.js +1 -1
  73. package/server/modules/reports/calc-tinhgiathanh.js +1 -1
  74. package/server/modules/reports/calc-tinhluong.js +1 -1
  75. package/server/modules/reports/rp-assbonus.js +1 -1
  76. package/server/modules/reports/rp-bkchamcong.js +1 -1
  77. package/server/modules/reports/rp-cdpsdiem.js +1 -1
  78. package/server/modules/reports/rp-cdpskh.js +1 -1
  79. package/server/modules/reports/rp-cdpsnphep.js +1 -1
  80. package/server/modules/reports/rp-kcsns.js +1 -1
  81. package/server/modules/reports/rp-sctbhxh.js +1 -1
  82. package/server/modules/reports/rp-sctluong.js +1 -1
  83. package/server/modules/reports/rp-sctthuetncn.js +1 -1
  84. package/server/modules/reports/rp-sctvt.js +1 -1
  85. package/server/modules/reports/rp-sctvtnpp.js +1 -1
  86. package/server/modules/reports/rp-sctvttt.js +1 -1
  87. package/server/modules/reports/rp-thgt.js +1 -1
  88. package/server/modules/systems/sys-labelinfo.js +2 -3
  89. package/server/modules/systems/sys-listinfo.js +1 -1
  90. package/server/modules/systems/sys-menuinfo.js +1 -4
  91. package/server/modules/systems/sys-moduleinfo.js +2 -4
  92. package/server/modules/systems/sys-notification.js +1 -1
  93. package/server/workers/backupApp.js +1 -1
  94. package/server/workers/calcGrid.js +1 -1
  95. package/server/workers/runScript.js +1 -1
@@ -1,17 +1,19 @@
1
- const async=require("async"),_=require("lodash"),excelReport=require("excel-report"),fs=require("fs"),path=require("path"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),textReport=require("../libs/textReport"),{ERRORS,getParameters,prepareParameters}=require("./controllerUtils"),exportHandler=($ctrl$$,$req$$,$callback$$)=>{const $user$$=$req$$.user,$model$$=$ctrl$$.model,$query$$=$req$$.query;let $listinfo_code$$=$req$$.query["listinfo-code"];async.series([function($callback$$){let $id$$=
2
- $query$$._id;if(!$id$$)return $callback$$({error:"H\u00e0m n\u00e0y y\u00eau c\u1ea7u tham s\u1ed1 _id"});let $ids$$=$id$$.split(",");$model$$.find({_id:{$in:$ids$$}}).lean().then(function($obj$$){setImmediate(()=>{global.getModel("log").create({id_app:$user$$.current_id_app,id_func:$ctrl$$.name,action:"ExportTOExcel",data:{id:$id$$}},$user$$.email,$req$$.user_agent,$req$$)});if($obj$$.length==0)return $callback$$({error:ERRORS.ERR_NOT_HAVE_DATA,code:ERRORS.ERR_NOT_HAVE_DATA_CODE});$ctrl$$.getting?
3
- async.mapLimit($obj$$,20,function($ob$$,$callback$$){setImmediate(()=>{$ctrl$$.getting($user$$,$ob$$._id,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null)},$ob$$)})},function($e$$){if($e$$)return Logger.error("exportToExcel",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.obj=$obj$$;$callback$$()}):($req$$.obj=$obj$$,$callback$$())}).catch($e$$=>{Logger.error("exportToExcel query",$e$$);return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||
4
- $e$$})})},function($callback$$){async.mapLimit($req$$.obj,20,function($obj$$,$callback$$){setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($user$$,{action:"view"});permission.hasRight($obj$$.id_app,$user$$.email,$ctrl$$.module,"view",function($error$$,$permission$$){$permission$$?$callback$$():($error$$=$error$$||"",$callback$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||ERRORS.ERR_NOT_PERMIT_CODE}))},{data:$obj$$,notNeedRight:$notNeedRight$$,listinfo_code:$listinfo_code$$})})},
5
- function($e$$){if($e$$)return Logger.error("exportToExcel permission",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$callback$$()})},function($callback$$){let $objs$$=$req$$.obj;if($objs$$)$ctrl$$.onView($user$$,$objs$$,function($e$$,$viewValue$$){if($e$$)return Logger.error("exportToExcel onview",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.obj=$viewValue$$;$callback$$()},{req:$req$$});else $callback$$()},function($callback$$){let $objs$$=
6
- $req$$.obj;$ctrl$$.options.onExport&&$objs$$?async.mapLimit($objs$$,20,function($obj$$,$callback$$){setImmediate(()=>{$ctrl$$.options.onExport($user$$,$obj$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})})},function($e$$){if($e$$)return Logger.error("exportToExcel onExport",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$callback$$()}):$callback$$()},function($callback$$){let $rpt_id$$=$req$$.params.rpt_id,$id_app$$=$query$$.id_app,$query_rpt$$=
7
- {ma_cn:($query$$["listinfo-code"]||$ctrl$$.module).toUpperCase(),id_app:$id_app$$};global.getModel("rpt").find($query_rpt$$).lean().then(function($rps$$){let $objs$$=$req$$.obj,$rs$$=_.find($rps$$,function($r$$){return $r$$._id.toString()===$rpt_id$$});if(!$rs$$)return $callback$$({error:"Kh\u00f4ng t\u00ecm th\u1ea5y file m\u1eabu"});global.getModel("app").findOne({_id:$id_app$$},{viettel_user:0,viettel_password:0,viettel_url_service:0,vnpt_user:0,vnpt_password:0,vnpt_url_service:0,easy_user:0,easy_password:0,
8
- easy_url_service:0,zalo_app_id:0,zalo_secret_key:0,zalo_code:0,zalo_oa_id:0,zalo_code_verifier:0,zalo_code_challenge:0,zalo_access_token:0,zalo_refresh_token:0,google_credentials:0,sip_uri:0,sip_password:0,sip_websocket:0,voiip_access_token:0,voiip_webhook:0,wallet_address:0,wallet_token:0,owner:0,default_password:0,email_host:0,email_port:0,email_secure:0,email_authMethod:0,email_user:0,email_pass:0,email_name:0,exfields:0,ssl_key:0,ssl_cert:0,ssl_ca:0}).lean().then(function($_app$$){setImmediate(()=>
9
- {delete $_app$$.participants;delete $_app$$.expire_date;delete $_app$$.sale_online;_.extend($_app$$,$query$$);delete $_app$$.access_token;let $data4export$$=[];$objs$$.forEach(function($_data_obj$$){for(let $_obj_c$$ in $_data_obj$$)if(_.isObject($_data_obj$$[$_obj_c$$]))for(let $k$$ in $_data_obj$$[$_obj_c$$])if($k$$.indexOf("ngay")>=0||$k$$.indexOf("date")>=0)try{$_data_obj$$[$_obj_c$$+"_"+$k$$]=new Date($_data_obj$$[$_obj_c$$][$k$$])}catch($e$$){$_data_obj$$[$_obj_c$$+"_"+$k$$]=$_data_obj$$[$_obj_c$$][$k$$]}else $_data_obj$$[$_obj_c$$+
10
- "_"+$k$$]=$_data_obj$$[$_obj_c$$][$k$$];$_data_obj$$={obj:$_data_obj$$};_.extend($_data_obj$$,$_app$$);$data4export$$.push($_data_obj$$)});getParameters($id_app$$,$rps$$,($e$$,$parameters$$)=>{if($e$$)return Logger.error("exportToExcel get params",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});async.mapLimit($data4export$$,20,function($_data$$,$callback$$){setImmediate(()=>{prepareParameters($ctrl$$,$parameters$$,$_data$$,$_data$$.obj,function($e$$,$rs$$){if($e$$)return $callback$$($e$$);
11
- delete $_data$$.obj;$callback$$(null,$rs$$)})})},async function($e$$){setImmediate(async()=>{if($e$$)return Logger.error("exportToExcel",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});if($query$$.print){Logger.info("render print page....");if(!$rs$$.html_template)return $callback$$({error:"Ch\u01b0a khai b\u00e1o m\u1eabu in"});let $cac_lien$$=$rs$$.cac_lien;$cac_lien$$&&$cac_lien$$.length!=0||($cac_lien$$=[{ma_lien:1,ten_lien:"Li\u00ean 1"}]);try{let $pages$$=[];async.mapLimit($data4export$$,
12
- 20,($_data$$,$callback$$)=>{$_data$$.datasource={...$_data$$};$_data$$.company={...$_app$$};async.mapSeries($cac_lien$$,async $lien_page$$=>{$_data$$.lien=$lien_page$$;$lien_page$$=await htmlReport($rs$$._id,$_data$$);$pages$$.push($lien_page$$)},()=>{$callback$$()})},()=>{$req$$.data=$pages$$;$req$$.ext="print";$callback$$(null)})}catch($e$$){return Logger.error("exportToExcel",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})}}else if($query$$.json)$req$$.data=$data4export$$,
13
- $req$$.ext="json",$callback$$(null);else{if(!$rs$$.file_mau_in)return $callback$$({error:"Ch\u01b0a khai b\u00e1o file excel m\u1eabu"});var $dir_root_templates_id_file$$=configs.paths.templates||__dirname;let $templatePath$$;if($rs$$.file_mau_in.indexOf("/file/download")>0){$dir_root_templates_id_file$$=$rs$$.file_mau_in.split("/").pop();const $file$$=global.getModel("file");try{var $_data$$=await $file$$.findOne({_id:$dir_root_templates_id_file$$});$_data$$||$callback$$({error:"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"});
14
- let $file_name$$=$_data$$.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 $callback$$({error:$e$$.message||"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"})}}else $templatePath$$=path.dirname($dir_root_templates_id_file$$)+$rs$$.file_mau_in;if(!$templatePath$$||!fs.existsSync($templatePath$$))return $callback$$({error:"File m\u1eabu kh\u00f4ng t\u1ed3n t\u1ea1i"});
15
- let $ext$$=$templatePath$$.split(".").pop();$ext$$==="xlsx"?excelReport($templatePath$$,$data4export$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return Logger.error($e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.data=$result$$;$req$$.ext="xlsx";$callback$$(null)})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"}):($_data$$=$data4export$$[0],$_data$$.datasource={...$_data$$},$_data$$.company={...$_app$$},textReport($templatePath$$,$_data$$,function($e$$,
16
- $result$$){setImmediate(()=>{if($e$$)return Logger.error("exportToExcel textreport",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$ext$$==="docx"?($req$$.data=$result$$,$req$$.ext="docx"):($req$$.data=$result$$,$req$$.ext="text");$callback$$(null)})}))}})})})})}).catch($error$$=>{Logger.error($error$$);return $callback$$({error:"Kh\u00f4ng t\u1ed3n t\u1ea1i c\u00f4ng ty n\u00e0y"})})}).catch($e$$=>{Logger.error("exportToExcel find rpt",$e$$);return $e$$.error?$callback$$($e$$):
17
- $callback$$({error:$e$$.message||$e$$})})}],$e$$=>{if($e$$)return $callback$$($e$$);Logger.info("[exportHandler] \u0110\u00e3 xu\u1ea5t ra",$req$$.ext);$callback$$(null,{ext:$req$$.ext,data:$req$$.data})})};module.exports=exportHandler;
1
+ const _=require("lodash"),excelReport=require("excel-report"),fs=require("fs"),path=require("path"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),textReport=require("../libs/textReport"),{ERRORS,getParameters,prepareParameters}=require("./controllerUtils");
2
+ async function mapLimit($items$$,$limit_workers$$,$iterator$$){const $results$$=Array($items$$.length);let $index$$=0,$firstError$$=null;$limit_workers$$=Array(Math.min($limit_workers$$,$items$$.length)).fill(null).map(async()=>{for(;$index$$<$items$$.length&&!$firstError$$;){const $current$$=$index$$++;try{$results$$[$current$$]=await $iterator$$($items$$[$current$$],$current$$)}catch($e$$){throw $firstError$$=$e$$,$e$$;}}});await Promise.allSettled($limit_workers$$);if($firstError$$)throw $firstError$$;
3
+ return $results$$}
4
+ const exportHandlerCore=async($ctrl$$,$req$$)=>{const $user$$=$req$$.user;var $id_app_model$$=$ctrl$$.model,$dir_root_templates_id_file_query$$=$req$$.query;const $listinfo_code$$=$req$$.query["listinfo-code"];var $id_query_rpt$$=$dir_root_templates_id_file_query$$._id;if(!$id_query_rpt$$)throw{error:"H\u00e0m n\u00e0y y\u00eau c\u1ea7u tham s\u1ed1 _id"};let $ids$$=$id_query_rpt$$.split(","),$obj$$;try{$obj$$=await $id_app_model$$.find({_id:{$in:$ids$$}}).lean()}catch($e$$){throw Logger.error("exportToExcel query",$e$$),
5
+ $e$$.error?$e$$:{error:$e$$.message||$e$$};}global.getModel("log").create({id_app:$user$$.current_id_app,id_func:$ctrl$$.name,action:"ExportTOExcel",data:{id:$id_query_rpt$$}},$user$$.email,$req$$.user_agent,$req$$);if($obj$$.length==0)throw{error:ERRORS.ERR_NOT_HAVE_DATA,code:ERRORS.ERR_NOT_HAVE_DATA_CODE};if($ctrl$$.getting)try{await mapLimit($obj$$,20,$ob$$=>new Promise(($resolve$$,$reject$$)=>{$ctrl$$.getting($user$$,$ob$$._id,$error$$=>$error$$?$reject$$($error$$):$resolve$$(),$ob$$)}))}catch($e$$){throw Logger.error("exportToExcel",
6
+ $e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$};}try{await mapLimit($obj$$,20,$o$$=>new Promise(($resolve$$,$reject$$)=>{(async()=>{const $notNeedRight$$=await $ctrl$$.notNeedRight($user$$,{action:"view"});permission.hasRight($o$$.id_app,$user$$.email,$ctrl$$.module,"view",($error$$,$hr$$)=>{if(!$hr$$)return $error$$=$error$$||"",$reject$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||ERRORS.ERR_NOT_PERMIT_CODE});$resolve$$()},{data:$o$$,notNeedRight:$notNeedRight$$,
7
+ listinfo_code:$listinfo_code$$})})().catch($reject$$)}))}catch($e$$){throw Logger.error("exportToExcel permission",$e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$};}if($obj$$)try{$obj$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.onView($user$$,$obj$$,($e$$,$viewValue$$)=>$e$$?$reject$$($e$$):$resolve$$($viewValue$$),{req:$req$$})})}catch($e$$){throw Logger.error("exportToExcel onview",$e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$};}if($ctrl$$.options.onExport&&$obj$$)try{await mapLimit($obj$$,
8
+ 20,$o$$=>new Promise(($resolve$$,$reject$$)=>{$ctrl$$.options.onExport($user$$,$o$$,$error$$=>$error$$?$reject$$($error$$):$resolve$$())}))}catch($e$$){throw Logger.error("exportToExcel onExport",$e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$};}let $rpt_id$$=$req$$.params.rpt_id;$id_app_model$$=$dir_root_templates_id_file_query$$.id_app;$id_query_rpt$$={ma_cn:($dir_root_templates_id_file_query$$["listinfo-code"]||$ctrl$$.module).toUpperCase(),id_app:$id_app_model$$};try{var $file_rps$$=await global.getModel("rpt").find($id_query_rpt$$).lean()}catch($e$$){throw Logger.error("exportToExcel find rpt",
9
+ $e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$};}let $rs$$=_.find($file_rps$$,$r$$=>$r$$._id.toString()===$rpt_id$$);if(!$rs$$)throw{error:"Kh\u00f4ng t\u00ecm th\u1ea5y file m\u1eabu"};let $_app$$;try{$_app$$=await global.getModel("app").findOne({_id:$id_app_model$$},{viettel_user:0,viettel_password:0,viettel_url_service:0,vnpt_user:0,vnpt_password:0,vnpt_url_service:0,easy_user:0,easy_password:0,easy_url_service:0,zalo_app_id:0,zalo_secret_key:0,zalo_code:0,zalo_oa_id:0,zalo_code_verifier:0,zalo_code_challenge:0,
10
+ zalo_access_token:0,zalo_refresh_token:0,google_credentials:0,sip_uri:0,sip_password:0,sip_websocket:0,voiip_access_token:0,voiip_webhook:0,wallet_address:0,wallet_token:0,owner:0,default_password:0,email_host:0,email_port:0,email_secure:0,email_authMethod:0,email_user:0,email_pass:0,email_name:0,exfields:0,ssl_key:0,ssl_cert:0,ssl_ca:0}).lean()}catch($error$$){throw Logger.error($error$$),{error:"Kh\u00f4ng t\u1ed3n t\u1ea1i c\u00f4ng ty n\u00e0y"};}delete $_app$$.participants;delete $_app$$.expire_date;
11
+ delete $_app$$.sale_online;_.extend($_app$$,$dir_root_templates_id_file_query$$);delete $_app$$.access_token;let $data4export$$=[];$obj$$.forEach(function($_data_o$$){for(let $_obj_c$$ in $_data_o$$)if(_.isObject($_data_o$$[$_obj_c$$]))for(let $k$$ in $_data_o$$[$_obj_c$$])if($k$$.indexOf("ngay")>=0||$k$$.indexOf("date")>=0)try{$_data_o$$[$_obj_c$$+"_"+$k$$]=new Date($_data_o$$[$_obj_c$$][$k$$])}catch($e$$){$_data_o$$[$_obj_c$$+"_"+$k$$]=$_data_o$$[$_obj_c$$][$k$$]}else $_data_o$$[$_obj_c$$+"_"+$k$$]=
12
+ $_data_o$$[$_obj_c$$][$k$$];$_data_o$$={obj:$_data_o$$};_.extend($_data_o$$,$_app$$);$data4export$$.push($_data_o$$)});let $parameters$$;try{$parameters$$=await getParameters($id_app_model$$,$file_rps$$)}catch($e$$){throw Logger.error("exportToExcel get params",$e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$};}try{await mapLimit($data4export$$,20,async $_data$$=>{await prepareParameters($ctrl$$,$parameters$$,$_data$$,$_data$$.obj);delete $_data$$.obj})}catch($e$$){throw Logger.error("exportToExcel",
13
+ $e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$};}if($dir_root_templates_id_file_query$$.print){Logger.info("render print page....");if(!$rs$$.html_template)throw{error:"Ch\u01b0a khai b\u00e1o m\u1eabu in"};let $cac_lien$$=$rs$$.cac_lien;$cac_lien$$&&$cac_lien$$.length!=0||($cac_lien$$=[{ma_lien:1,ten_lien:"Li\u00ean 1"}]);try{let $pages$$=[];await mapLimit($data4export$$,20,async $_data$$=>{$_data$$.datasource={...$_data$$};$_data$$.company={...$_app$$};for(const $lien$$ of $cac_lien$$){$_data$$.lien=
14
+ $lien$$;const $page$$=await htmlReport($rs$$._id,$_data$$);$pages$$.push($page$$)}});$req$$.data=$pages$$;$req$$.ext="print"}catch($e$$){throw Logger.error("exportToExcel",$e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$};}Logger.info("[exportHandler] \u0110\u00e3 xu\u1ea5t ra",$req$$.ext);return{ext:$req$$.ext,data:$req$$.data}}if($dir_root_templates_id_file_query$$.json)return $req$$.data=$data4export$$,$req$$.ext="json",Logger.info("[exportHandler] \u0110\u00e3 xu\u1ea5t ra",$req$$.ext),{ext:$req$$.ext,
15
+ data:$req$$.data};if(!$rs$$.file_mau_in)throw{error:"Ch\u01b0a khai b\u00e1o file excel m\u1eabu"};$dir_root_templates_id_file_query$$=configs.paths.templates||__dirname;let $templatePath$$;if($rs$$.file_mau_in.indexOf("/file/download")>0){$dir_root_templates_id_file_query$$=$rs$$.file_mau_in.split("/").pop();$file_rps$$=global.getModel("file");try{var $_fileMauIn_ext$$=await $file_rps$$.findOne({_id:$dir_root_templates_id_file_query$$});if(!$_fileMauIn_ext$$)throw{error:"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"};
16
+ let $file_name$$=$_fileMauIn_ext$$.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$$){throw $e$$.error?$e$$:{error:$e$$.message||"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"};}}else $templatePath$$=path.dirname($dir_root_templates_id_file_query$$)+$rs$$.file_mau_in;if(!$templatePath$$||!fs.existsSync($templatePath$$))throw{error:"File m\u1eabu kh\u00f4ng t\u1ed3n t\u1ea1i"};
17
+ $_fileMauIn_ext$$=$templatePath$$.split(".").pop();if($_fileMauIn_ext$$==="xlsx")try{const $result$$=await new Promise(($resolve$$,$reject$$)=>{excelReport($templatePath$$,$data4export$$,($e$$,$result$$)=>$e$$?$reject$$($e$$):$resolve$$($result$$),{timezone:configs.timezone||"Asia/Ho_Chi_Minh"})});$req$$.data=$result$$;$req$$.ext="xlsx"}catch($e$$){throw Logger.error($e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$};}else{const $_data$$=$data4export$$[0];$_data$$.datasource={...$_data$$};$_data$$.company=
18
+ {...$_app$$};try{const $result$$=await new Promise(($resolve$$,$reject$$)=>{textReport($templatePath$$,$_data$$,($e$$,$result$$)=>$e$$?$reject$$($e$$):$resolve$$($result$$))});$req$$.data=$result$$;$req$$.ext=$_fileMauIn_ext$$==="docx"?"docx":"text"}catch($e$$){throw Logger.error("exportToExcel textreport",$e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$};}}Logger.info("[exportHandler] \u0110\u00e3 xu\u1ea5t ra",$req$$.ext);return{ext:$req$$.ext,data:$req$$.data}},exportHandler=function($ctrl$$,$req$$,
19
+ $callback$$){exportHandlerCore($ctrl$$,$req$$).then($rs$$=>$callback$$(null,$rs$$),$e$$=>$callback$$($e$$))};exportHandler.exportHandlerAsync=($ctrl$$,$req$$)=>exportHandlerCore($ctrl$$,$req$$);exportHandler.exportHandlerCore=exportHandlerCore;module.exports=exportHandler;
@@ -0,0 +1,17 @@
1
+ const async=require("async"),_=require("lodash"),excelReport=require("excel-report"),fs=require("fs"),path=require("path"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),textReport=require("../libs/textReport"),{ERRORS,getParameters,prepareParameters}=require("./controllerUtils_v1"),exportHandler=($ctrl$$,$req$$,$callback$$)=>{const $user$$=$req$$.user,$model$$=$ctrl$$.model,$query$$=$req$$.query;let $listinfo_code$$=$req$$.query["listinfo-code"];async.series([function($callback$$){let $id$$=
2
+ $query$$._id;if(!$id$$)return $callback$$({error:"H\u00e0m n\u00e0y y\u00eau c\u1ea7u tham s\u1ed1 _id"});let $ids$$=$id$$.split(",");$model$$.find({_id:{$in:$ids$$}}).lean().then(function($obj$$){setImmediate(()=>{global.getModel("log").create({id_app:$user$$.current_id_app,id_func:$ctrl$$.name,action:"ExportTOExcel",data:{id:$id$$}},$user$$.email,$req$$.user_agent,$req$$)});if($obj$$.length==0)return $callback$$({error:ERRORS.ERR_NOT_HAVE_DATA,code:ERRORS.ERR_NOT_HAVE_DATA_CODE});$ctrl$$.getting?
3
+ async.mapLimit($obj$$,20,function($ob$$,$callback$$){setImmediate(()=>{$ctrl$$.getting($user$$,$ob$$._id,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null)},$ob$$)})},function($e$$){if($e$$)return Logger.error("exportToExcel",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.obj=$obj$$;$callback$$()}):($req$$.obj=$obj$$,$callback$$())}).catch($e$$=>{Logger.error("exportToExcel query",$e$$);return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||
4
+ $e$$})})},function($callback$$){async.mapLimit($req$$.obj,20,function($obj$$,$callback$$){setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($user$$,{action:"view"});permission.hasRight($obj$$.id_app,$user$$.email,$ctrl$$.module,"view",function($error$$,$permission$$){$permission$$?$callback$$():($error$$=$error$$||"",$callback$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||ERRORS.ERR_NOT_PERMIT_CODE}))},{data:$obj$$,notNeedRight:$notNeedRight$$,listinfo_code:$listinfo_code$$})})},
5
+ function($e$$){if($e$$)return Logger.error("exportToExcel permission",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$callback$$()})},function($callback$$){let $objs$$=$req$$.obj;if($objs$$)$ctrl$$.onView($user$$,$objs$$,function($e$$,$viewValue$$){if($e$$)return Logger.error("exportToExcel onview",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.obj=$viewValue$$;$callback$$()},{req:$req$$});else $callback$$()},function($callback$$){let $objs$$=
6
+ $req$$.obj;$ctrl$$.options.onExport&&$objs$$?async.mapLimit($objs$$,20,function($obj$$,$callback$$){setImmediate(()=>{$ctrl$$.options.onExport($user$$,$obj$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})})},function($e$$){if($e$$)return Logger.error("exportToExcel onExport",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$callback$$()}):$callback$$()},function($callback$$){let $rpt_id$$=$req$$.params.rpt_id,$id_app$$=$query$$.id_app,$query_rpt$$=
7
+ {ma_cn:($query$$["listinfo-code"]||$ctrl$$.module).toUpperCase(),id_app:$id_app$$};global.getModel("rpt").find($query_rpt$$).lean().then(function($rps$$){let $objs$$=$req$$.obj,$rs$$=_.find($rps$$,function($r$$){return $r$$._id.toString()===$rpt_id$$});if(!$rs$$)return $callback$$({error:"Kh\u00f4ng t\u00ecm th\u1ea5y file m\u1eabu"});global.getModel("app").findOne({_id:$id_app$$},{viettel_user:0,viettel_password:0,viettel_url_service:0,vnpt_user:0,vnpt_password:0,vnpt_url_service:0,easy_user:0,easy_password:0,
8
+ easy_url_service:0,zalo_app_id:0,zalo_secret_key:0,zalo_code:0,zalo_oa_id:0,zalo_code_verifier:0,zalo_code_challenge:0,zalo_access_token:0,zalo_refresh_token:0,google_credentials:0,sip_uri:0,sip_password:0,sip_websocket:0,voiip_access_token:0,voiip_webhook:0,wallet_address:0,wallet_token:0,owner:0,default_password:0,email_host:0,email_port:0,email_secure:0,email_authMethod:0,email_user:0,email_pass:0,email_name:0,exfields:0,ssl_key:0,ssl_cert:0,ssl_ca:0}).lean().then(function($_app$$){setImmediate(()=>
9
+ {delete $_app$$.participants;delete $_app$$.expire_date;delete $_app$$.sale_online;_.extend($_app$$,$query$$);delete $_app$$.access_token;let $data4export$$=[];$objs$$.forEach(function($_data_obj$$){for(let $_obj_c$$ in $_data_obj$$)if(_.isObject($_data_obj$$[$_obj_c$$]))for(let $k$$ in $_data_obj$$[$_obj_c$$])if($k$$.indexOf("ngay")>=0||$k$$.indexOf("date")>=0)try{$_data_obj$$[$_obj_c$$+"_"+$k$$]=new Date($_data_obj$$[$_obj_c$$][$k$$])}catch($e$$){$_data_obj$$[$_obj_c$$+"_"+$k$$]=$_data_obj$$[$_obj_c$$][$k$$]}else $_data_obj$$[$_obj_c$$+
10
+ "_"+$k$$]=$_data_obj$$[$_obj_c$$][$k$$];$_data_obj$$={obj:$_data_obj$$};_.extend($_data_obj$$,$_app$$);$data4export$$.push($_data_obj$$)});getParameters($id_app$$,$rps$$,($e$$,$parameters$$)=>{if($e$$)return Logger.error("exportToExcel get params",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});async.mapLimit($data4export$$,20,function($_data$$,$callback$$){setImmediate(()=>{prepareParameters($ctrl$$,$parameters$$,$_data$$,$_data$$.obj,function($e$$,$rs$$){if($e$$)return $callback$$($e$$);
11
+ delete $_data$$.obj;$callback$$(null,$rs$$)})})},async function($e$$){setImmediate(async()=>{if($e$$)return Logger.error("exportToExcel",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});if($query$$.print){Logger.info("render print page....");if(!$rs$$.html_template)return $callback$$({error:"Ch\u01b0a khai b\u00e1o m\u1eabu in"});let $cac_lien$$=$rs$$.cac_lien;$cac_lien$$&&$cac_lien$$.length!=0||($cac_lien$$=[{ma_lien:1,ten_lien:"Li\u00ean 1"}]);try{let $pages$$=[];async.mapLimit($data4export$$,
12
+ 20,($_data$$,$callback$$)=>{$_data$$.datasource={...$_data$$};$_data$$.company={...$_app$$};async.mapSeries($cac_lien$$,async $lien_page$$=>{$_data$$.lien=$lien_page$$;$lien_page$$=await htmlReport($rs$$._id,$_data$$);$pages$$.push($lien_page$$)},()=>{$callback$$()})},()=>{$req$$.data=$pages$$;$req$$.ext="print";$callback$$(null)})}catch($e$$){return Logger.error("exportToExcel",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})}}else if($query$$.json)$req$$.data=$data4export$$,
13
+ $req$$.ext="json",$callback$$(null);else{if(!$rs$$.file_mau_in)return $callback$$({error:"Ch\u01b0a khai b\u00e1o file excel m\u1eabu"});var $dir_root_templates_id_file$$=configs.paths.templates||__dirname;let $templatePath$$;if($rs$$.file_mau_in.indexOf("/file/download")>0){$dir_root_templates_id_file$$=$rs$$.file_mau_in.split("/").pop();const $file$$=global.getModel("file");try{var $_data$$=await $file$$.findOne({_id:$dir_root_templates_id_file$$});$_data$$||$callback$$({error:"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"});
14
+ let $file_name$$=$_data$$.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 $callback$$({error:$e$$.message||"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"})}}else $templatePath$$=path.dirname($dir_root_templates_id_file$$)+$rs$$.file_mau_in;if(!$templatePath$$||!fs.existsSync($templatePath$$))return $callback$$({error:"File m\u1eabu kh\u00f4ng t\u1ed3n t\u1ea1i"});
15
+ let $ext$$=$templatePath$$.split(".").pop();$ext$$==="xlsx"?excelReport($templatePath$$,$data4export$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return Logger.error($e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.data=$result$$;$req$$.ext="xlsx";$callback$$(null)})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"}):($_data$$=$data4export$$[0],$_data$$.datasource={...$_data$$},$_data$$.company={...$_app$$},textReport($templatePath$$,$_data$$,function($e$$,
16
+ $result$$){setImmediate(()=>{if($e$$)return Logger.error("exportToExcel textreport",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$ext$$==="docx"?($req$$.data=$result$$,$req$$.ext="docx"):($req$$.data=$result$$,$req$$.ext="text");$callback$$(null)})}))}})})})})}).catch($error$$=>{Logger.error($error$$);return $callback$$({error:"Kh\u00f4ng t\u1ed3n t\u1ea1i c\u00f4ng ty n\u00e0y"})})}).catch($e$$=>{Logger.error("exportToExcel find rpt",$e$$);return $e$$.error?$callback$$($e$$):
17
+ $callback$$({error:$e$$.message||$e$$})})}],$e$$=>{if($e$$)return $callback$$($e$$);Logger.info("[exportHandler] \u0110\u00e3 xu\u1ea5t ra",$req$$.ext);$callback$$(null,{ext:$req$$.ext,data:$req$$.data})})};module.exports=exportHandler;
@@ -1,5 +1,5 @@
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"),{createTmpFile,generateDefaultExcel}=
2
- require("../libs/excelHelper"),{ERRORS}=require("./controllerUtils"),{isValidObjectId}=require("mongoose"),FIELDS_NEED_CONVERT_CODE={ten_kh:{code:"ma_kh",model:"customer"},ten_vt:{code:"ma_vt",model:"dmvt"},ten_kho:{code:"ma_kho",model:"dmkho"},ten_phi:{code:"ma_phi",model:"dmphi"},ten_dt:{code:"ma_dt",model:"dmdt"},ten_bp:{code:"ma_bp",model:"dmbp"},ten_nv:{code:"ma_nv",model:"dmnv"}};
1
+ const fs=require("fs"),path=require("path"),_=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"),{createTmpFile,generateDefaultExcel}=require("../libs/excelHelper"),
2
+ {ERRORS}=require("./controllerUtils"),{isValidObjectId}=require("mongoose"),FIELDS_NEED_CONVERT_CODE={ten_kh:{code:"ma_kh",model:"customer"},ten_vt:{code:"ma_vt",model:"dmvt"},ten_kho:{code:"ma_kho",model:"dmkho"},ten_phi:{code:"ma_phi",model:"dmphi"},ten_dt:{code:"ma_dt",model:"dmdt"},ten_bp:{code:"ma_bp",model:"dmbp"},ten_nv:{code:"ma_nv",model:"dmnv"}};
3
3
  async function convertNamesToCodes($id_app$$,$condition$$,$FIELDS_NEED_CONVERT_CODE$$,$model$$){if(!$condition$$||typeof $condition$$!=="object")return $condition$$;if(Array.isArray($condition$$)){for(var $i_key_q$$=0;$i_key_q$$<$condition$$.length;$i_key_q$$++)$condition$$[$i_key_q$$]=await convertNamesToCodes($id_app$$,$condition$$[$i_key_q$$],$FIELDS_NEED_CONVERT_CODE$$,$model$$);return $condition$$}for($i_key_q$$ in $condition$$)if($i_key_q$$==="$or"||$i_key_q$$==="$and")$condition$$[$i_key_q$$]=
4
4
  await convertNamesToCodes($id_app$$,$condition$$[$i_key_q$$],$FIELDS_NEED_CONVERT_CODE$$,$model$$);else{var $ds_fieldMapping$$=$FIELDS_NEED_CONVERT_CODE$$[$i_key_q$$];if($ds_fieldMapping$$){const $targetCodeField$$=$ds_fieldMapping$$.code;$id_app$$&&_.has($model$$.schema.paths,$targetCodeField$$)&&$model$$.modelName!==$ds_fieldMapping$$.model&&($condition$$[$targetCodeField$$]?_.has($model$$.schema.paths,$i_key_q$$)&&delete $condition$$[$i_key_q$$]:($ds_fieldMapping$$=await global.getModel($ds_fieldMapping$$.model).find({id_app:$id_app$$,
5
5
  [$i_key_q$$]:$condition$$[$i_key_q$$]},{[$targetCodeField$$]:1}),$condition$$[$targetCodeField$$]={$in:$ds_fieldMapping$$.map($d$$=>$d$$[$targetCodeField$$])},delete $condition$$[$i_key_q$$]))}}return $condition$$}
@@ -8,11 +8,11 @@ ma_nvt2:{model:"dmnvt",code:"_id",code_mother:"nh_me"},ma_nvt3:{model:"dmnvt",co
8
8
  async function getChildren($id_app$$,$condition$$,$NEED_GET_CHILDREN$$){if(!$condition$$||typeof $condition$$!=="object")return $condition$$;if(Array.isArray($condition$$))return await Promise.all($condition$$.map(async($item$$,$index$$)=>{$condition$$[$index$$]=await getChildren($id_app$$,$item$$,$NEED_GET_CHILDREN$$)})),$condition$$;const $tasks$$=[];for(let $key_q$$ in $condition$$){if($key_q$$==="$or"||$key_q$$==="$and"){$tasks$$.push((async()=>{$condition$$[$key_q$$]=await getChildren($id_app$$,
9
9
  $condition$$[$key_q$$],$NEED_GET_CHILDREN$$)})());continue}const $fieldMapping$$=$NEED_GET_CHILDREN$$[$key_q$$];if($fieldMapping$$){const $value$$=$condition$$[$key_q$$];if($value$$&&(typeof $value$$==="string"||Array.isArray($value$$))){const $model$$=global.getModel($fieldMapping$$.model);$model$$&&$tasks$$.push((async()=>{const $childCodes$$=await utils.getCodeChildren($model$$,$id_app$$,$value$$,$fieldMapping$$.code,$fieldMapping$$.code_mother);$condition$$[$key_q$$]={$in:$childCodes$$}})())}}}$tasks$$.length>
10
10
  0&&await Promise.all($tasks$$);return $condition$$}
11
- const hasRight=async($ctrl$$,$req$$,$listinfo_code$$,$id_app$$,$shareRoute$$)=>{if(!$shareRoute$$)return new Promise(($resolve$$,$reject$$)=>{setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.hasRight($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:",$req$$.user.email,$e$$);if($ctrl$$.options.onQuery)$ctrl$$.options.onQuery($req$$,
12
- $e$$=>{if($e$$)return $reject$$({error:$e$$.error||$e$$.message||$e$$});if(!$permission$$)return $resolve$$("0");$resolve$$($permission$$)});else{if(!$permission$$)return $resolve$$("0");$resolve$$($permission$$)}},{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$,user:$req$$.user})})})},handleDynamicCondition=async($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$)=>{let {condition:$condition$$,id_app:$id_app$$}=$appCondition$$,$userInfo$$={...$req$$.user,current_id_app:$id_app$$};!$id_app$$||
13
- $userInfo$$.current_app_info&&$userInfo$$.current_app_info?._id?.toString()==$id_app$$||($userInfo$$.current_app_info=await global.getModel("app").findOne({_id:$id_app$$}).lean());$appCondition$$.userInfo=$userInfo$$;let $new_condition$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.finding?$ctrl$$.finding($userInfo$$,$condition$$,function($error$$,$condition$$){if($error$$)return $reject$$({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($userInfo$$,
14
- $condition$$,function($e$$,$condition$$){if($e$$)return Logger.error("dynamicFinding",$e$$),$e$$.error?$reject$$($e$$):$reject$$({error:$e$$.message||$e$$});$resolve$$($condition$$)},{listinfo_code:$listinfo_code$$,req:$req$$}):$resolve$$($condition$$)},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($userInfo$$,$condition$$,function($e$$,$condition$$){if($e$$)return Logger.error("dynamicFinding",$e$$),$e$$.error?$reject$$($e$$):$reject$$({error:$e$$.message||$e$$});$resolve$$($condition$$)},
15
- {listinfo_code:$listinfo_code$$,req:$req$$}):$resolve$$($condition$$)});$new_condition$$=await getChildren($appCondition$$.id_app,$new_condition$$,NEED_GET_CHILDREN);$appCondition$$.condition=$new_condition$$;return $appCondition$$},buildCondition=async($ctrl$$,$req$$,$listinfo_code$$,$appConditions_shareRoute$$)=>{var $body_ds_id_app$$={};_.isObject($req$$.body)&&($body_ds_id_app$$=$req$$.body);let $query$$={...$req$$.query,...$body_ds_id_app$$};$query$$.tu_ngay&&($query$$.tu_ngay=moment($query$$.tu_ngay).startOf("date").toDate());
11
+ const hasRight=async($ctrl$$,$req$$,$listinfo_code$$,$id_app$$,$shareRoute$$)=>{if(!$shareRoute$$){var $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});return new Promise(($resolve$$,$reject$$)=>{permission.hasRight($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:",$req$$.user.email,$e$$);if($ctrl$$.options.onQuery)$ctrl$$.options.onQuery($req$$,$e$$=>
12
+ {if($e$$)return $reject$$({error:$e$$.error||$e$$.message||$e$$});if(!$permission$$)return $resolve$$("0");$resolve$$($permission$$)});else{if(!$permission$$)return $resolve$$("0");$resolve$$($permission$$)}},{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$,user:$req$$.user})})}},handleDynamicCondition=async($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$)=>{let {condition:$condition$$,id_app:$id_app$$}=$appCondition$$,$userInfo$$={...$req$$.user,current_id_app:$id_app$$};!$id_app$$||$userInfo$$.current_app_info&&
13
+ $userInfo$$.current_app_info?._id?.toString()==$id_app$$||($userInfo$$.current_app_info=await global.getModel("app").findOne({_id:$id_app$$}).lean());$appCondition$$.userInfo=$userInfo$$;let $new_condition$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.finding?$ctrl$$.finding($userInfo$$,$condition$$,function($error$$,$condition$$){if($error$$)return $reject$$({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($userInfo$$,$condition$$,function($e$$,
14
+ $condition$$){if($e$$)return Logger.error("dynamicFinding",$e$$),$e$$.error?$reject$$($e$$):$reject$$({error:$e$$.message||$e$$});$resolve$$($condition$$)},{listinfo_code:$listinfo_code$$,req:$req$$}):$resolve$$($condition$$)},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($userInfo$$,$condition$$,function($e$$,$condition$$){if($e$$)return Logger.error("dynamicFinding",$e$$),$e$$.error?$reject$$($e$$):$reject$$({error:$e$$.message||$e$$});$resolve$$($condition$$)},{listinfo_code:$listinfo_code$$,
15
+ req:$req$$}):$resolve$$($condition$$)});$new_condition$$=await getChildren($appCondition$$.id_app,$new_condition$$,NEED_GET_CHILDREN);$appCondition$$.condition=$new_condition$$;return $appCondition$$},buildCondition=async($ctrl$$,$req$$,$listinfo_code$$,$appConditions_shareRoute$$)=>{var $body_ds_id_app$$={};_.isObject($req$$.body)&&($body_ds_id_app$$=$req$$.body);let $query$$={...$req$$.query,...$body_ds_id_app$$};$query$$.tu_ngay&&($query$$.tu_ngay=moment($query$$.tu_ngay).startOf("date").toDate());
16
16
  $query$$.den_ngay&&($query$$.den_ngay=moment($query$$.den_ngay).endOf("date").toDate());($body_ds_id_app$$=$query$$.id_apps)&&typeof $body_ds_id_app$$=="string"&&($body_ds_id_app$$=[$body_ds_id_app$$]);let $all_app$$=$query$$.all_app;$req$$.query=$query$$;if($query$$.sort)if(typeof $query$$.sort=="object")var $or_sort$$=$query$$.sort;else try{$or_sort$$=JSONParser($query$$.sort)}catch($e$$){throw Logger.error("error parse json",$e$$,$query$$.sort),`Sort ${$query$$.sort} is not valid`;}!$or_sort$$&&
17
17
  $ctrl$$.sort&&($or_sort$$=Object.assign({},$ctrl$$.sort));$req$$.sort=$or_sort$$;$req$$.fetch_by_groups=$query$$.fetch_by_groups;delete $query$$.fetch_by_groups;let $condition$$={};$or_sort$$=[];const $hasCodeByName$$=$k$$=>FIELDS_NEED_CONVERT_CODE[$k$$]&&_.has($ctrl$$.model.schema.paths,FIELDS_NEED_CONVERT_CODE[$k$$].code)&&$ctrl$$.model.modelName!==FIELDS_NEED_CONVERT_CODE[$k$$].model?!0:!1;for(var $key$$ in $query$$)if($key$$!=="id_app"&&$key$$!=="access_token"&&$key$$!=="limit")if($key$$==="_id"&&
18
18
  global.mongoose.Types.ObjectId.isValid($query$$._id))try{let $id$$=global.mongoose.Types.ObjectId($query$$._id);$or_sort$$.push({_id:$id$$})}catch($error$$){Logger.error("find condition",$error$$)}else{if($key$$==="q"&&$query$$[$key$$])try{let $q$$=_.isObject($query$$[$key$$])?$query$$[$key$$]:JSONParser($query$$[$key$$]);$req$$.fetch_by_groups=$req$$.fetch_by_groups||$q$$.fetch_by_groups;delete $q$$.fetch_by_groups;$body_ds_id_app$$=$q$$.id_apps||$body_ds_id_app$$;$all_app$$=$q$$.all_app||$all_app$$;
@@ -21,54 +21,60 @@ delete $q$$.all_app;delete $q$$.id_apps;if(Object.keys($q$$).includes("_id"))if(
21
21
  "date"){let {fromDate:$fromDate$$,toDate:$toDate$$}=getDateRangeByType($query$$[$key$$]);$item$$[$key$$]=$fromDate$$&&$toDate$$?{$gte:$fromDate$$,$lte:$toDate$$}:new Date($query$$[$key$$])}else $ctrl$$.model.schema.paths[$key$$]?.instance?.toLowerCase()=="string"?$item$$[$key$$]={$regex:($query$$[$key$$]||"").trim(),$options:"i"}:$item$$[$key$$]=$query$$[$key$$];$or_sort$$.push($item$$)}else $key$$==="$text"&&$or_sort$$.push({$text:{$search:$query$$[$key$$]}})}$or_sort$$.length!==0&&($query$$.cType===
22
22
  "$and"?$condition$$.$and=$or_sort$$:$condition$$.$or=$or_sort$$);$key$$=queryBuilding.convertLegacyQuery(_.cloneDeep($condition$$));$condition$$=queryBuilding.buildSearchQuery($key$$);$appConditions_shareRoute$$||$ctrl$$.require_id_app==0?$appConditions_shareRoute$$=[{id_app:$req$$.user.current_id_app,condition:{id_app:$req$$.user.current_id_app,...$condition$$}}]:($body_ds_id_app$$=($body_ds_id_app$$||[]).filter($id$$=>global.mongoose.Types.ObjectId.isValid($id$$)),$body_ds_id_app$$.length==0&&($all_app$$?
23
23
  (Logger.warn("[findHanlder] t\u00ecm t\u1ea5t c\u1ea3 c\u00e1c c\u00f4ng ty c\u00f3 quy\u1ec1n..."),$body_ds_id_app$$=(await global.getModel("participant").find({email:$req$$.user.email},{id_app:1}).lean()).map($a$$=>$a$$.id_app).filter($id_app$$=>isValidObjectId($id_app$$)),$body_ds_id_app$$=(await global.getModel("app").find({_id:{$in:$body_ds_id_app$$}},{_id:1}).lean()).map($a$$=>$a$$._id.toString())):$body_ds_id_app$$=[$req$$.user.current_id_app]),$appConditions_shareRoute$$=$body_ds_id_app$$.map($id_app$$=>
24
- ({id_app:$id_app$$,condition:{...$condition$$,id_app:$id_app$$}})));return Promise.all($appConditions_shareRoute$$.map($appCondition$$=>handleDynamicCondition($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$)))},getRightByItem=async($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$,$shareRoute$$)=>$shareRoute$$?$appCondition$$:new Promise(($resolve$$,$reject$$)=>{setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.getRightByItem($appCondition$$.id_app,
24
+ ({id_app:$id_app$$,condition:{...$condition$$,id_app:$id_app$$}})));return Promise.all($appConditions_shareRoute$$.map($appCondition$$=>handleDynamicCondition($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$)))},getRightByItem=async($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$,$shareRoute$$)=>{if($shareRoute$$)return $appCondition$$;let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});return new Promise(($resolve$$,$reject$$)=>{permission.getRightByItem($appCondition$$.id_app,
25
25
  $ctrl$$.model,$req$$.user.email,function($e$$,$_condition$$,$admin$$){if($e$$)return Logger.error("[findHandler] [getRightByItem] L\u1ed7i Kh\u00f4ng c\u00f3 quy\u1ec1n:",$e$$),$reject$$({error:$e$$.error||$e$$.message||$e$$,code:$e$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($appCondition$$.addmin=$admin$$)return $resolve$$($appCondition$$);$appCondition$$.condition||($appCondition$$.condition={});$appCondition$$.condition.$and||($appCondition$$.condition.$and=[]);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,
26
- $_condition$$,($e$$,$_condition$$)=>{if($e$$)return $reject$$({error:$e$$.error||$e$$.message||$e$$});_.isObject($_condition$$)&&Object.keys($_condition$$).length>0&&$appCondition$$.condition.$and.push($_condition$$);$appCondition$$.condition_assign=$_condition$$;$resolve$$($appCondition$$)});else _.isObject($_condition$$)&&Object.keys($_condition$$).length>0&&$appCondition$$.condition.$and.push($_condition$$),$resolve$$($appCondition$$)},$ctrl$$.name,{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$})})}),
27
- getRightByCollectionRef=async($ctrl$$,$req$$,$appCondition$$,$shareRoute$$)=>$shareRoute$$||$appCondition$$.admin||!$appCondition$$.condition_assign||Object.keys($appCondition$$.condition_assign).length===0?$appCondition$$:new Promise(($resolve$$,$reject$$)=>{setImmediate(async()=>{if($ctrl$$.options.assignWiths){let $condition_assignwiths$$={};async.map($ctrl$$.options.assignWiths,($col$$,$callback$$)=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($appCondition$$.id_app,
28
- $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$$(null);$_condition$$.id_app=$appCondition$$.id_app;$appCondition$$.condition[$col$$.ref_field]&&($_condition$$[$col$$.ref_field]=$appCondition$$.condition[$col$$.ref_field]);$m$$.find($_condition$$,{[$col$$.ref_field]:1}).lean().then($dsdt_rs$$=>{$dsdt_rs$$=$dsdt_rs$$.map($r$$=>$r$$[$col$$.ref_field]);$dsdt_rs$$.push("");
29
- $dsdt_rs$$.push(null);$condition_assignwiths$$[$col$$.field]={$in:$dsdt_rs$$};$callback$$()}).catch($e$$=>{$callback$$($e$$)})},$col$$.ref_module)},$condition$jscomp$7_e$$=>{if($condition$jscomp$7_e$$)return $reject$$({error:$condition$jscomp$7_e$$.error||$condition$jscomp$7_e$$.message||$condition$jscomp$7_e$$});Object.keys($condition_assignwiths$$).length>0&&($condition$jscomp$7_e$$=$appCondition$$.condition_assign||$appCondition$$.condition,$condition$jscomp$7_e$$.$and||($condition$jscomp$7_e$$.$and=
30
- []),$condition$jscomp$7_e$$.$and.push($condition_assignwiths$$),$appCondition$$.condition=$condition$jscomp$7_e$$);$resolve$$($appCondition$$)})}else $resolve$$($appCondition$$)})}),findHanlder=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$$!=
31
- $ctrl$$.name){var $condition$$=await global.getModel("listinfo").findOne({code:$listinfo_code$$},{api_code:1,code:1}).lean();$condition$$?($condition$$.api_code||$condition$$.code)!=$ctrl$$.name&&($listinfo_code$$=$ctrl$$.name):$listinfo_code$$=$ctrl$$.name}let $appConditions$$;try{$appConditions$$=await buildCondition($ctrl$$,$req$$,$listinfo_code$$,$shareRoute$$);for(let $appCondition$$ of $appConditions$$){await hasRight($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$.id_app,$shareRoute$$)=="0"&&
32
- ($appCondition$$.condition._id={$in:[]});await getRightByItem($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$,$shareRoute$$);await getRightByCollectionRef($ctrl$$,$req$$,$appCondition$$,$shareRoute$$);({condition:$condition$$}=$appCondition$$);for(let $key_q$$ in $condition$$)if($key_q$$==="_id"||$key_q$$.startsWith("$")||$key_q$$.includes(".")||_.has($model$$.schema.paths,$key_q$$)||delete $condition$$[$key_q$$],$key_q$$=="$and"){for(let $dk$$ of $condition$$.$and)for(let $key_q$$ in $dk$$)$key_q$$===
26
+ $_condition$$,($e$$,$_condition$$)=>{if($e$$)return $reject$$({error:$e$$.error||$e$$.message||$e$$});_.isObject($_condition$$)&&Object.keys($_condition$$).length>0&&$appCondition$$.condition.$and.push($_condition$$);$appCondition$$.condition_assign=$_condition$$;$resolve$$($appCondition$$)});else _.isObject($_condition$$)&&Object.keys($_condition$$).length>0&&$appCondition$$.condition.$and.push($_condition$$),$resolve$$($appCondition$$)},$ctrl$$.name,{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$})})},
27
+ getRightByCollectionRef=async($condition$jscomp$7_ctrl$$,$req$$,$appCondition$$,$shareRoute$$)=>{if($shareRoute$$||$appCondition$$.admin||!$appCondition$$.condition_assign||Object.keys($appCondition$$.condition_assign).length===0||!$condition$jscomp$7_ctrl$$.options.assignWiths)return $appCondition$$;const $condition_assignwiths$$={};await Promise.all($condition$jscomp$7_ctrl$$.options.assignWiths.map($col$$=>new Promise(($resolve$$,$reject$$)=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($appCondition$$.id_app,
28
+ $m$$,$req$$.user.email,function($e$$,$_condition$$,$admin$$){if($e$$)return $reject$$({error:$e$$.error||$e$$.message||$e$$,code:$e$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $resolve$$();$_condition$$.id_app=$appCondition$$.id_app;$appCondition$$.condition[$col$$.ref_field]&&($_condition$$[$col$$.ref_field]=$appCondition$$.condition[$col$$.ref_field]);$m$$.find($_condition$$,{[$col$$.ref_field]:1}).lean().then($dsdt_rs$$=>{$dsdt_rs$$=$dsdt_rs$$.map($r$$=>$r$$[$col$$.ref_field]);$dsdt_rs$$.push("");
29
+ $dsdt_rs$$.push(null);$condition_assignwiths$$[$col$$.field]={$in:$dsdt_rs$$};$resolve$$()}).catch($reject$$)},$col$$.ref_module)})));Object.keys($condition_assignwiths$$).length>0&&($condition$jscomp$7_ctrl$$=$appCondition$$.condition_assign||$appCondition$$.condition,$condition$jscomp$7_ctrl$$.$and||($condition$jscomp$7_ctrl$$.$and=[]),$condition$jscomp$7_ctrl$$.$and.push($condition_assignwiths$$),$appCondition$$.condition=$condition$jscomp$7_ctrl$$);return $appCondition$$},findHandlerCore=async($ctrl$$,
30
+ $req$$)=>{let $model$$=$ctrl$$.model,$shareRoute$$=$req$$.shareRoute;var $condition_group_conditions_listinfo_code$$=$req$$?.body?.["listinfo-code"]||$req$$?.query["listinfo-code"]||$req$$?.headers?.["listinfo-code"]||$req$$?.headers?.["Listinfo-Code"];if(($condition_group_conditions_listinfo_code$$=$condition_group_conditions_listinfo_code$$||$ctrl$$.name)&&$condition_group_conditions_listinfo_code$$!=$ctrl$$.name){var $appConditions$jscomp$1_fields$$=await global.getModel("listinfo").findOne({code:$condition_group_conditions_listinfo_code$$},
31
+ {api_code:1,code:1}).lean();$appConditions$jscomp$1_fields$$?($appConditions$jscomp$1_fields$$.api_code||$appConditions$jscomp$1_fields$$.code)!=$ctrl$$.name&&($condition_group_conditions_listinfo_code$$=$ctrl$$.name):$condition_group_conditions_listinfo_code$$=$ctrl$$.name}$appConditions$jscomp$1_fields$$=await buildCondition($ctrl$$,$req$$,$condition_group_conditions_listinfo_code$$,$shareRoute$$);for(var $appCondition$$ of $appConditions$jscomp$1_fields$$){await hasRight($ctrl$$,$req$$,$condition_group_conditions_listinfo_code$$,
32
+ $appCondition$$.id_app,$shareRoute$$)=="0"&&($appCondition$$.condition._id={$in:[]});await getRightByItem($ctrl$$,$req$$,$condition_group_conditions_listinfo_code$$,$appCondition$$,$shareRoute$$);await getRightByCollectionRef($ctrl$$,$req$$,$appCondition$$,$shareRoute$$);let {condition:$condition$$}=$appCondition$$;for(let $key_q$$ in $condition$$)if($key_q$$==="_id"||$key_q$$.startsWith("$")||$key_q$$.includes(".")||_.has($model$$.schema.paths,$key_q$$)||delete $condition$$[$key_q$$],$key_q$$=="$and"){for(let $dk$$ of $condition$$.$and)for(let $key_q$$ in $dk$$)$key_q$$===
33
33
  "_id"||$key_q$$.startsWith("$")||$key_q$$.includes(".")||_.has($model$$.schema.paths,$key_q$$)||delete $dk$$[$key_q$$];$condition$$.$and=$condition$$.$and.filter($a$$=>Object.keys($a$$).length>0)}$appCondition$$.id_app&&($condition$$=await convertNamesToCodes($appCondition$$.id_app,$condition$$,FIELDS_NEED_CONVERT_CODE,$model$$),$appCondition$$.condition=$condition$$);if($shareRoute$$){$condition$$.shared=!0;let $id_sellers$$=(await global.getModel("app").find({sale_online:!0},{_id:1}).lean()).map($a$$=>
34
34
  $a$$._id);$condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push({id_app:{$in:$id_sellers$$}});$condition$$.id_app&&$condition$$.$and.push({id_app:$condition$$.id_app})}else _.has($model$$.schema.paths,"id_app")&&$ctrl$$.require_id_app!==!1&&($condition$$.id_app=$appCondition$$.id_app);$req$$.user.email==="public"&&_.has($model$$.schema.paths,"session_created")&&($condition$$.session_created=($req$$.cookies||{}).uid);_.extend($condition$$,$ctrl$$.keyValues);utils.deleteEmptyObject($condition$$);
35
- delete $condition$$.$where;_.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$$.ma_ct=$ctrl$$.name.toUpperCase());let $condition_group$$;$req$$.fetch_by_groups&&$req$$.fetch_by_groups.model_group&&$req$$.fetch_by_groups.field&&($condition_group$$=$req$$.fetch_by_groups.condition||{},$condition_group$$.status=!0,$condition_group$$.id_app=$appCondition$$.id_app,$condition$$[$req$$.fetch_by_groups.field]&&($condition_group$$[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]=
36
- $condition$$[$req$$.fetch_by_groups.field]));$appCondition$$.condition_group=$condition_group$$;let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($appCondition$$.id_app,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}$appCondition$$.field_not_right=$field_not_right$$}}catch($e$$){return $callback$$($e$$)}async.series([function($callback$$){setImmediate(async()=>{var $condition_group$$=$appConditions$$.filter($a$$=>Object.keys($a$$.condition).length>
37
- 0).map($a$$=>$a$$.condition);let $condition$$;$condition$$=$condition_group$$.length==0?{}:$condition_group$$.length==1?$condition_group$$[0]:{$or:$condition_group$$};$condition_group$$={$or:$appConditions$$.filter($a$$=>$a$$.condition_group).map($a$$=>$a$$.condition_group)};if($req$$.query.count){var $fields_fields$jscomp$1_groups_number_notfields_rows_number$$=0;$condition_group$$.$or.length>0&&($fields_fields$jscomp$1_groups_number_notfields_rows_number$$=await global.getModel($req$$.fetch_by_groups.model_group).countDocuments($condition_group$$));
38
- $condition_group$$=await $model$$.countDocuments($condition$$);$req$$.result={groups_number:$fields_fields$jscomp$1_groups_number_notfields_rows_number$$,rows_number:$condition_group$$};return $callback$$("0")}$req$$.query.pagination&&($fields_fields$jscomp$1_groups_number_notfields_rows_number$$=await $model$$.countDocuments($condition$$),$req$$.pagination={total:$fields_fields$jscomp$1_groups_number_notfields_rows_number$$});let $field_not_right$$=[...(new Set($appConditions$$.map($a$$=>$a$$.field_not_right).reduce(($a$$,
39
- $b$$)=>$a$$.concat($b$$),[])))].filter($a$$=>$a$$);$fields_fields$jscomp$1_groups_number_notfields_rows_number$$=$req$$.query.fields;let $gfields$$={};$fields_fields$jscomp$1_groups_number_notfields_rows_number$$&&(_.isArray($fields_fields$jscomp$1_groups_number_notfields_rows_number$$)?$fields_fields$jscomp$1_groups_number_notfields_rows_number$$.forEach($f$$=>{$f$$!=="_id"&&($gfields$$[$f$$]=1)}):_.isObject($fields_fields$jscomp$1_groups_number_notfields_rows_number$$)?($gfields$$={...$gfields$$,
40
- ...$fields_fields$jscomp$1_groups_number_notfields_rows_number$$},$req$$.query.fields=Object.keys($gfields$$).join(",")):$fields_fields$jscomp$1_groups_number_notfields_rows_number$$.split(",").filter($f$$=>$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});!$fields_fields$jscomp$1_groups_number_notfields_rows_number$$&&
41
- (($fields_fields$jscomp$1_groups_number_notfields_rows_number$$=$req$$.query.notfields)&&(_.isArray($fields_fields$jscomp$1_groups_number_notfields_rows_number$$)?$fields_fields$jscomp$1_groups_number_notfields_rows_number$$.forEach($f$$=>{$f$$&&$f$$!=="_id"&&(Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)}):_.isObject($fields_fields$jscomp$1_groups_number_notfields_rows_number$$)?$gfields$$={...$gfields$$,...$fields_fields$jscomp$1_groups_number_notfields_rows_number$$}:
42
- $fields_fields$jscomp$1_groups_number_notfields_rows_number$$.split(",").forEach($f$$=>{$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"});
43
- delete $req$$.query_cache;$ctrl$$.cache&&($req$$.query_cache={..._.cloneDeep($req$$.query),..._.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$$=
44
- 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"});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$$}]);
45
- let $group$$;$req$$.query.group&&($group$$=JSONParser($req$$.query.group),$query$$.group($group$$));if($req$$.query.match){let $match$$=JSONParser($req$$.query.match);$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]",
46
- $e$$,$req$$.query),$callback$$({error:$e$$.message||$e$$.error||$e$$})}else _.has($model$$.schema.paths,"id_app")&&Object.keys($gfields$$).length>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$$]!=
47
- 1&&$aggregate_piples_sort$$[$key$$]!=-1)return Logger.error("sort is valid",$aggregate_piples_sort$$,$key$$,$aggregate_piples_sort$$[$key$$]),$callback$$({error:`Sort ${JSON.stringify($aggregate_piples_sort$$)} is not valid`});$aggregate_piples_sort$$&&Object.keys($aggregate_piples_sort$$).length>0&&$query$$.sort($aggregate_piples_sort$$);if($req$$.pagination||$req$$.query.type_data!=="xlsx"&&$req$$.query.type_data!=="json_file"&&$req$$.query.type_data!=="json_export"&&$req$$.query.rpt!="1")$page$$&&
48
- $limit$$?($key$$=(Number($page$$)-1)*$limit$$,$key$$<0&&($key$$=0),$query$$.skip($key$$).limit($limit$$)):$query$$.limit($limit$$);$ctrl$$.populate&&($query$$=$ctrl$$.populate($query$$));$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||
49
- 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),{parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$}=$explainResult$$.queryPlanner||{},{executionSuccess:$executionSuccess$$,nReturned:$nReturned$$,executionTimeMillis:$executionTimeMillis$$,totalKeysExamined:$totalKeysExamined$$,totalDocsExamined:$totalDocsExamined$$}=
50
- $explainResult$$.executionStats||{};$callback$$(null,[{queryPlanner:{parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$},executionStats:{executionSuccess:$executionSuccess$$,nReturned:$nReturned$$,executionTimeMillis:$executionTimeMillis$$,totalKeysExamined:$totalKeysExamined$$,totalDocsExamined:$totalDocsExamined$$},_id:""}])}catch($e$$){$callback$$($e$$)}}else $query$$.lean().then($rs$$=>{$callback$$(null,$rs$$)}).catch($e$$=>{$callback$$($e$$)})})};let $data_log$$=$req$$.query;delete $data_log$$.access_token;
51
- $appConditions$$.forEach($a$jscomp$12_id_app$$=>{({id_app:$a$jscomp$12_id_app$$}=$a$jscomp$12_id_app$$);$req$$.user&&!$data_log$$.count&&$ctrl$$.name!=="log"&&$ctrl$$.name!=="labelinfo"&&$ctrl$$.name!=="listinfo"&&$ctrl$$.name!=="reportinfo"&&$ctrl$$.name!=="moduleinfo"&&$ctrl$$.name!=="options"&&global.getModel("log").create({id_app:$a$jscomp$12_id_app$$,id_func:$ctrl$$.name,action:"QUERY",data:{condition:JSON.stringify($data_log$$)}},$req$$.user.email,$req$$.user_agent,$req$$)});let $page_fetch$$=
52
- Number($req$$.query.page||0);isNaN($page_fetch$$)&&($page_fetch$$=0);let $limit$$=$req$$.query.limit;$limit$$&&=Number($limit$$);isNaN($limit$$)&&($limit$$=0);$req$$.query.type_data!=="xlsx"&&$req$$.query.type_data!=="json_file"&&$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!==
53
- "labelinfo"&&($limit$$=500));$req$$.pagination&&($limit$$||=20,$req$$.pagination.page=$page_fetch$$?$page_fetch$$:1,$req$$.pagination.limit=$limit$$,$req$$.pagination.totalPages=Math.ceil($req$$.pagination.total/$req$$.pagination.limit));let $condition_groups$$=[];if($condition_group$$.length>0){let $field_ref$$=$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field;$fields_fields$jscomp$1_groups_number_notfields_rows_number$$={[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1};
54
- let $limit_group$$=$req$$.fetch_by_groups.limit_group||10,$page$$=Number($req$$.query.page||0);isNaN($page$$)&&($page$$=0);let $skip$$=0;$page$$>1&&($skip$$=($page$$-1)*$limit_group$$);$skip$$<0&&($skip$$=0);(await global.getModel($req$$.fetch_by_groups.model_group).find($condition_group$$,$fields_fields$jscomp$1_groups_number_notfields_rows_number$$).sort({stt:1,[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1}).skip($skip$$).limit($limit_group$$).lean()).forEach($g$$=>{let $c$$=
55
- {...$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$$)=>{if($e$$)return Logger.error("exec query find",
56
- $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$$=>{$obj$$.collection_name||($obj$$.collection_name=
57
- $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$$)=>{if($error$$)return Logger.error("Erron on view:",$error$$),$callback$$($error$$);$callback$$(null,$viewValue$$)},{req:$req$$,shareRoute:$shareRoute$$})}},async function($e$$,$_rs_func_string_rs$$){if($error$$)return $callback$$({error:$error$$.error||
58
- $error$$.message||$error$$});if($req$$.query.type_data==="json_file"){var {template:$_groupBy_template$jscomp$1_template$$}=$req$$.body;try{var $app_dir_root_template_fileName$$=await createTmpFile(`${$_groupBy_template$jscomp$1_template$$?.title||$ctrl$$.name}.json`,JSON.stringify($_rs_func_string_rs$$.e_view,null,2)),$downloadUrl_template_id$$=$req$$.host?.startsWith("http")?`${$req$$.host}/downloads/temp/${$app_dir_root_template_fileName$$}`:`https://${$req$$.host}/downloads/temp/${$app_dir_root_template_fileName$$}`;
59
- $req$$.result={url:$downloadUrl_template_id$$};$req$$.dataType="json";return $callback$$("0")}catch($e$$){return $callback$$($e$$)}}if($req$$.query.type_data==="xlsx"){if($req$$.body.template){({template:$_groupBy_template$jscomp$1_template$$}=$req$$.body);try{const $fileName$$=await generateDefaultExcel({title:$_groupBy_template$jscomp$1_template$$.title,data:$_rs_func_string_rs$$.e_view,columns:$_groupBy_template$jscomp$1_template$$.columns,filterFields:$_groupBy_template$jscomp$1_template$$.filterFields,
60
- condition:$_groupBy_template$jscomp$1_template$$.condition||$req$$.body.q||$req$$.query||{}}),$downloadUrl$$=$req$$.host?.startsWith("http")?`${$req$$.host}/downloads/temp/${$fileName$$}`:`https://${$req$$.host}/downloads/temp/${$fileName$$}`;$req$$.result={url:$downloadUrl$$};$req$$.dataType="json";return $callback$$("0")}catch($e$$){return $callback$$($e$$)}}$app_dir_root_template_fileName$$=(configs.paths||{}).templates;let $excelTemplate$$;if($downloadUrl_template_id$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($downloadUrl_template_id$$))return $callback$$({error:"ID m\u1eabu file xu\u1ea5t kh\u00f4ng h\u1ee3p l\u1ec7"});
61
- $excelTemplate$$=await global.getModel("exportexceltemplate").findById($downloadUrl_template_id$$);if(!$excelTemplate$$||!$excelTemplate$$.file)return $callback$$({error:"M\u1eabu file xu\u1ea5t kh\u00f4ng t\u1ed3n t\u1ea1i"});$_groupBy_template$jscomp$1_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$jscomp$1_template$$=
62
- `${$app_dir_root_template_fileName$$}/excels/lists/${$ctrl$$.name}.xlsx`),$_groupBy_template$jscomp$1_template$$&&fs.existsSync($_groupBy_template$jscomp$1_template$$)||($_groupBy_template$jscomp$1_template$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($_groupBy_template$jscomp$1_template$$))return $callback$$({error:"File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$_groupBy_template$jscomp$1_template$$+"'"});$app_dir_root_template_fileName$$=
63
- {};$app_dir_root_template_fileName$$.detail=$_rs_func_string_rs$$.e_view;$app_dir_root_template_fileName$$.items=$_rs_func_string_rs$$.e_view;if($excelTemplate$$&&$excelTemplate$$.handle_data){$_rs_func_string_rs$$=`return (async ()=>{
64
- try{
65
- ${$excelTemplate$$.handle_data}
66
- }catch(e){
67
- return {error:e}
68
- }
69
-
70
- })`;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$$),
71
- $callback$$({error:$e$$.message||$e$$.error||$e$$})}}excelReport($_groupBy_template$jscomp$1_template$$,$app_dir_root_template_fileName$$,function($e$$,$result$$){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,
72
- {...$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,items:$_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$jscomp$1_template$$=$req$$.query.groupBy.split(","),$_rs_func_string_rs$$.groupBy($_groupBy_template$jscomp$1_template$$,
73
- [],($e$$,$_items$$)=>{if($e$$)return Logger.error("jsonReport",$e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$_items$$;$callback$$("0")})):($req$$.result=$_rs_func_string_rs$$,$callback$$("0")))})})})})})}],$e$jscomp$24_result$$=>{if($e$jscomp$24_result$$&&$e$jscomp$24_result$$!="0")return $callback$$($e$jscomp$24_result$$);$req$$.pagination?($req$$.pagination.total>$req$$.result.length&&$req$$.pagination.totalPages==1&&($req$$.pagination.total=$req$$.result.length),$e$jscomp$24_result$$=
74
- {data:$req$$.result,pagination:$req$$.pagination}):$e$jscomp$24_result$$=$req$$.result;$callback$$(null,{result:$e$jscomp$24_result$$,dataType:$req$$.dataType||"json"})})};module.exports=findHanlder;
35
+ delete $condition$$.$where;_.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$$.ma_ct=$ctrl$$.name.toUpperCase());var $condition_group$jscomp$1_page$$=void 0;$req$$.fetch_by_groups&&$req$$.fetch_by_groups.model_group&&$req$$.fetch_by_groups.field&&($condition_group$jscomp$1_page$$=$req$$.fetch_by_groups.condition||{},$condition_group$jscomp$1_page$$.status=!0,$condition_group$jscomp$1_page$$.id_app=$appCondition$$.id_app,$condition$$[$req$$.fetch_by_groups.field]&&($condition_group$jscomp$1_page$$[$req$$.fetch_by_groups.ref_field||
36
+ $req$$.fetch_by_groups.field]=$condition$$[$req$$.fetch_by_groups.field]));$appCondition$$.condition_group=$condition_group$jscomp$1_page$$;var $field_not_right$jscomp$1_skip$$=void 0;try{$field_not_right$jscomp$1_skip$$=await permission.getFieldNotRight($appCondition$$.id_app,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$jscomp$1_skip$$=[]}$appCondition$$.field_not_right=$field_not_right$jscomp$1_skip$$}$condition_group_conditions_listinfo_code$$=$appConditions$jscomp$1_fields$$.filter($a$$=>
37
+ Object.keys($a$$.condition).length>0).map($a$$=>$a$$.condition);let $condition$$;$condition$$=$condition_group_conditions_listinfo_code$$.length==0?{}:$condition_group_conditions_listinfo_code$$.length==1?$condition_group_conditions_listinfo_code$$[0]:{$or:$condition_group_conditions_listinfo_code$$};$condition_group_conditions_listinfo_code$$={$or:$appConditions$jscomp$1_fields$$.filter($a$$=>$a$$.condition_group).map($a$$=>$a$$.condition_group)};if($req$$.query.count){var $downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$=
38
+ 0;$condition_group_conditions_listinfo_code$$?.$or.length>0&&($downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$=await global.getModel($req$$.fetch_by_groups.model_group).countDocuments($condition_group_conditions_listinfo_code$$));var $excelTemplate_rows_number_template$jscomp$1_template$$=await $model$$.countDocuments($condition$$);return{result:{groups_number:$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$,
39
+ rows_number:$excelTemplate_rows_number_template$jscomp$1_template$$},dataType:"json"}}let $pagination$$;$req$$.query.pagination&&($pagination$$={total:await $model$$.countDocuments($condition$$)});let $field_not_right$$=[...(new Set($appConditions$jscomp$1_fields$$.map($a$$=>$a$$.field_not_right).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[])))].filter($a$$=>$a$$);$appCondition$$=$req$$.query.fields;let $gfields$$={};$appCondition$$&&(_.isArray($appCondition$$)?$appCondition$$.forEach($f$$=>{$f$$!=="_id"&&
40
+ ($gfields$$[$f$$]=1)}):_.isObject($appCondition$$)?($gfields$$={...$gfields$$,...$appCondition$$},$req$$.query.fields=Object.keys($gfields$$).join(",")):$appCondition$$.split(",").filter($f$$=>$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});!$appCondition$$&&(($appCondition$$=$req$$.query.notfields)&&(_.isArray($appCondition$$)?
41
+ $appCondition$$.forEach($f$$=>{$f$$&&$f$$!=="_id"&&(Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)}):_.isObject($appCondition$$)?$gfields$$={...$gfields$$,...$appCondition$$}:$appCondition$$.split(",").forEach($f$$=>{$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,
42
+ 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,delete $req$$.query_cache.refresh_required,$req$$.query_cache.gfields=_.cloneDeep($gfields$$));const $fetchData$$=async($condition$jscomp$10_explainResult_piples_query$$,$filter_limit$$,
43
+ $page_projection_skip$$)=>{if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate||$req$$.query.$aggregate)if($req$$.query.aggregate){var $aggregate_group_limit$jscomp$2_sort$$=JSONParser($req$$.query.$aggregate||$req$$.query.aggregate);if(!Array.isArray($aggregate_group_limit$jscomp$2_sort$$))throw{error:"Aggregate ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"};if($aggregate_group_limit$jscomp$2_sort$$.find($f$$=>$f$$.$lookup))throw{error:"Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eed d\u1ee5ng $lookup trong aggregate"};
44
+ $condition$jscomp$10_explainResult_piples_query$$=[{$match:$condition$jscomp$10_explainResult_piples_query$$},...$aggregate_group_limit$jscomp$2_sort$$];$condition$jscomp$10_explainResult_piples_query$$=$model$$.aggregate($condition$jscomp$10_explainResult_piples_query$$)}else{$condition$jscomp$10_explainResult_piples_query$$=$model$$.aggregate([{$match:$condition$jscomp$10_explainResult_piples_query$$}]);$req$$.query.group&&($aggregate_group_limit$jscomp$2_sort$$=JSONParser($req$$.query.group),$condition$jscomp$10_explainResult_piples_query$$.group($aggregate_group_limit$jscomp$2_sort$$));
45
+ if($req$$.query.match){var $match_project$$=JSONParser($req$$.query.match);$condition$jscomp$10_explainResult_piples_query$$.match($match_project$$)}if($req$$.query.project)$match_project$$=JSONParser($req$$.query.project),$condition$jscomp$10_explainResult_piples_query$$.project($match_project$$);else if($gfields$$&&Object.keys($gfields$$).length>0)$match_project$$=$gfields$$;else if($match_project$$={_id:1},$aggregate_group_limit$jscomp$2_sort$$)for(var $key$jscomp$11_sort$$ in $aggregate_group_limit$jscomp$2_sort$$)$match_project$$[$key$jscomp$11_sort$$]=
46
+ 1;$condition$jscomp$10_explainResult_piples_query$$.project($match_project$$)}else _.has($model$$.schema.paths,"id_app")&&Object.keys($gfields$$).length>0&&Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)&&($gfields$$.id_app=1),$condition$jscomp$10_explainResult_piples_query$$=$model$$.find($condition$jscomp$10_explainResult_piples_query$$,$gfields$$);$aggregate_group_limit$jscomp$2_sort$$=$req$$.sort;if(!$aggregate_group_limit$jscomp$2_sort$$)$gfields$$.textScore&&($aggregate_group_limit$jscomp$2_sort$$=
47
+ {textScore:{$meta:"textScore"}});else for(var $key$jscomp$12_skip$$ in $aggregate_group_limit$jscomp$2_sort$$)if($key$jscomp$12_skip$$!=="textScore"&&$aggregate_group_limit$jscomp$2_sort$$[$key$jscomp$12_skip$$]!=1&&$aggregate_group_limit$jscomp$2_sort$$[$key$jscomp$12_skip$$]!=-1)throw Logger.error("sort is valid",$aggregate_group_limit$jscomp$2_sort$$,$key$jscomp$12_skip$$,$aggregate_group_limit$jscomp$2_sort$$[$key$jscomp$12_skip$$]),{error:`Sort ${JSON.stringify($aggregate_group_limit$jscomp$2_sort$$)} is not valid`};
48
+ $aggregate_group_limit$jscomp$2_sort$$&&Object.keys($aggregate_group_limit$jscomp$2_sort$$).length>0&&$condition$jscomp$10_explainResult_piples_query$$.sort($aggregate_group_limit$jscomp$2_sort$$);if($pagination$$||$req$$.query.type_data!=="xlsx"&&$req$$.query.type_data!=="json_file"&&$req$$.query.type_data!=="json_export"&&$req$$.query.rpt!="1")$page_projection_skip$$&&$filter_limit$$?($page_projection_skip$$=(Number($page_projection_skip$$)-1)*$filter_limit$$,$page_projection_skip$$<0&&($page_projection_skip$$=
49
+ 0),$condition$jscomp$10_explainResult_piples_query$$.skip($page_projection_skip$$).limit($filter_limit$$)):$condition$jscomp$10_explainResult_piples_query$$.limit($filter_limit$$);$ctrl$$.populate&&($condition$jscomp$10_explainResult_piples_query$$=$ctrl$$.populate($condition$jscomp$10_explainResult_piples_query$$));$condition$jscomp$10_explainResult_piples_query$$.lean&&($condition$jscomp$10_explainResult_piples_query$$=$condition$jscomp$10_explainResult_piples_query$$.lean());if($req$$.query.explainQuery){$req$$.query.explainQuery!=
50
+ "explainQuery"&&$req$$.query.explainQuery!="executionStats"&&($req$$.query.explainQuery="queryPlanner");$filter_limit$$=$condition$jscomp$10_explainResult_piples_query$$.getFilter();$page_projection_skip$$=$condition$jscomp$10_explainResult_piples_query$$.getOptions().projection||{};$key$jscomp$12_skip$$=$condition$jscomp$10_explainResult_piples_query$$.getOptions().skip||0;$aggregate_group_limit$jscomp$2_sort$$=$condition$jscomp$10_explainResult_piples_query$$.getOptions().limit||0;$key$jscomp$11_sort$$=
51
+ $condition$jscomp$10_explainResult_piples_query$$.getOptions().sort||{};$condition$jscomp$10_explainResult_piples_query$$=await $condition$jscomp$10_explainResult_piples_query$$.mongooseCollection.find($filter_limit$$,{projection:$page_projection_skip$$}).skip($key$jscomp$12_skip$$).limit($aggregate_group_limit$jscomp$2_sort$$).sort($key$jscomp$11_sort$$).explain($req$$.query.explainQuery);const {parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$}=$condition$jscomp$10_explainResult_piples_query$$.queryPlanner||
52
+ {},{executionSuccess:$executionSuccess$$,nReturned:$nReturned$$,executionTimeMillis:$executionTimeMillis$$,totalKeysExamined:$totalKeysExamined$$,totalDocsExamined:$totalDocsExamined$$}=$condition$jscomp$10_explainResult_piples_query$$.executionStats||{};return[{queryPlanner:{parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$},executionStats:{executionSuccess:$executionSuccess$$,nReturned:$nReturned$$,executionTimeMillis:$executionTimeMillis$$,totalKeysExamined:$totalKeysExamined$$,totalDocsExamined:$totalDocsExamined$$},
53
+ _id:""}]}return await $condition$jscomp$10_explainResult_piples_query$$.lean()};let $data_log$$=$req$$.query;delete $data_log$$.access_token;$appConditions$jscomp$1_fields$$.forEach($a$jscomp$12_id_app$$=>{({id_app:$a$jscomp$12_id_app$$}=$a$jscomp$12_id_app$$);$req$$.user&&!$data_log$$.count&&$ctrl$$.name!=="log"&&$ctrl$$.name!=="labelinfo"&&$ctrl$$.name!=="listinfo"&&$ctrl$$.name!=="reportinfo"&&$ctrl$$.name!=="moduleinfo"&&$ctrl$$.name!=="options"&&global.getModel("log").create({id_app:$a$jscomp$12_id_app$$,
54
+ id_func:$ctrl$$.name,action:"QUERY",data:{condition:JSON.stringify($data_log$$)}},$req$$.user.email,$req$$.user_agent,$req$$)});let $page_fetch$$=Number($req$$.query.page||0);isNaN($page_fetch$$)&&($page_fetch$$=0);let $limit$$=$req$$.query.limit;$limit$$&&=Number($limit$$);isNaN($limit$$)&&($limit$$=0);$req$$.query.type_data!=="xlsx"&&$req$$.query.type_data!=="json_file"&&$req$$.query.type_data!=="json_export"&&$req$$.query.rpt!="1"&&($limit$$||=$ctrl$$.require_id_app!==!1&&$ctrl$$.name!=="right"&&
55
+ $ctrl$$.name!=="labelinfo"?20:500,$limit$$&&$limit$$>500&&!$req$$.query.print&&$ctrl$$.require_id_app!==!1&&$ctrl$$.name!=="right"&&$ctrl$$.name!=="labelinfo"&&($limit$$=500));$pagination$$&&($limit$$||=20,$pagination$$.page=$page_fetch$$?$page_fetch$$:1,$pagination$$.limit=$limit$$,$pagination$$.totalPages=Math.ceil($pagination$$.total/$pagination$$.limit));let $condition_groups$$=[];if($condition_group_conditions_listinfo_code$$?.$or?.length>0){let $field_ref$$=$req$$.fetch_by_groups.ref_field||
56
+ $req$$.fetch_by_groups.field;$appConditions$jscomp$1_fields$$={[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1};$appCondition$$=$req$$.fetch_by_groups.limit_group||10;$condition_group$jscomp$1_page$$=Number($req$$.query.page||0);isNaN($condition_group$jscomp$1_page$$)&&($condition_group$jscomp$1_page$$=0);$field_not_right$jscomp$1_skip$$=0;$condition_group$jscomp$1_page$$>1&&($field_not_right$jscomp$1_skip$$=($condition_group$jscomp$1_page$$-1)*$appCondition$$);$field_not_right$jscomp$1_skip$$<
57
+ 0&&($field_not_right$jscomp$1_skip$$=0);(await global.getModel($req$$.fetch_by_groups.model_group).find($condition_group_conditions_listinfo_code$$,$appConditions$jscomp$1_fields$$).sort({stt:1,[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1}).skip($field_not_right$jscomp$1_skip$$).limit($appCondition$$).lean()).forEach($g$$=>{let $c$$={...$condition$$};$c$$[$req$$.fetch_by_groups.field]=$g$$[$field_ref$$];$condition_groups$$.push($c$$)});$condition_groups$$.length==0?$condition_groups$$=
58
+ [$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$$];try{var $finalize_obj4views$$=await Promise.all($condition_groups$$.map($c$$=>$fetchData$$($c$$,$limit$$,$page_fetch$$)))}catch($e$$){throw Logger.error("exec query find",$e$$,JSON.stringify($condition$$)),{error:$e$$.error||$e$$.message||$e$$};}let $obj4view$$=$finalize_obj4views$$.reduce(($a$$,
59
+ $b$$)=>$a$$.concat($b$$),[]);$obj4view$$||=[];$obj4view$$.forEach($obj$$=>{$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});if($ctrl$$.found)try{$obj4view$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.found($req$$.user,$condition$$,$obj4view$$,($error$$,$items$$)=>$error$$?$reject$$($error$$):$resolve$$($items$$))})}catch($error$$){throw{error:$error$$.error||$error$$.message||$error$$};}try{$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$=
60
+ await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.onView($req$$.user,$obj4view$$,($error$$,$vv$$)=>$error$$?$reject$$($error$$):$resolve$$($vv$$),{req:$req$$,shareRoute:$shareRoute$$})})}catch($error$$){throw Logger.error("Erron on view:",$error$$),{error:$error$$.error||$error$$.message||$error$$};}$finalize_obj4views$$=($result_wrapped$$,$dataType$$)=>{$pagination$$&&($pagination$$.total>$result_wrapped$$.length&&$pagination$$.totalPages==1&&($pagination$$.total=$result_wrapped$$.length),$result_wrapped$$=
61
+ {data:$result_wrapped$$,pagination:$pagination$$});return{result:$result_wrapped$$,dataType:$dataType$$||"json"}};if($req$$.query.type_data==="json_file")return{template:$excelTemplate_rows_number_template$jscomp$1_template$$}=$req$$.body,$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$=await createTmpFile(`${$excelTemplate_rows_number_template$jscomp$1_template$$?.title||$ctrl$$.name}.json`,JSON.stringify($downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$,
62
+ null,2)),$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$=$req$$.host?.startsWith("http")?`${$req$$.host}/downloads/temp/${$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$}`:`https://${$req$$.host}/downloads/temp/${$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$}`,$finalize_obj4views$$({url:$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$},
63
+ "json");if($req$$.query.type_data==="xlsx"){if($req$$.body.template)return{template:$excelTemplate_rows_number_template$jscomp$1_template$$}=$req$$.body,$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$=await generateDefaultExcel({title:$excelTemplate_rows_number_template$jscomp$1_template$$.title,data:$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$,columns:$excelTemplate_rows_number_template$jscomp$1_template$$.columns,
64
+ filterFields:$excelTemplate_rows_number_template$jscomp$1_template$$.filterFields,condition:$excelTemplate_rows_number_template$jscomp$1_template$$.condition||$req$$.body.q||$req$$.query||{}}),$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$=$req$$.host?.startsWith("http")?`${$req$$.host}/downloads/temp/${$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$}`:`https://${$req$$.host}/downloads/temp/${$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$}`,
65
+ $finalize_obj4views$$({url:$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$},"json");var $dir_root_template_result$$=(configs.paths||{}).templates;let $templatePath$$;if($appConditions$jscomp$1_fields$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($appConditions$jscomp$1_fields$$))throw{error:"ID m\u1eabu file xu\u1ea5t kh\u00f4ng h\u1ee3p l\u1ec7"};$excelTemplate_rows_number_template$jscomp$1_template$$=await global.getModel("exportexceltemplate").findById($appConditions$jscomp$1_fields$$);
66
+ if(!$excelTemplate_rows_number_template$jscomp$1_template$$||!$excelTemplate_rows_number_template$jscomp$1_template$$.file)throw{error:"M\u1eabu file xu\u1ea5t kh\u00f4ng t\u1ed3n t\u1ea1i"};$templatePath$$=$dir_root_template_result$$?`${path.dirname($dir_root_template_result$$)}${$excelTemplate_rows_number_template$jscomp$1_template$$.file}`:`${path.dirname(__dirname)}${$excelTemplate_rows_number_template$jscomp$1_template$$.file}`}else $dir_root_template_result$$&&($templatePath$$=`${$dir_root_template_result$$}/excels/lists/${$ctrl$$.name}.xlsx`),
67
+ $templatePath$$&&fs.existsSync($templatePath$$)||($templatePath$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($templatePath$$))throw{error:"File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$templatePath$$+"'"};let $app$$={};$app$$.detail=$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$;$app$$.items=$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$;
68
+ if($excelTemplate_rows_number_template$jscomp$1_template$$&&$excelTemplate_rows_number_template$jscomp$1_template$$.handle_data){$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$=`return (async ()=>{
69
+ try{
70
+ ${$excelTemplate_rows_number_template$jscomp$1_template$$.handle_data}
71
+ }catch(e){
72
+ return {error:e}
73
+ }
74
+
75
+ })`;try{if(($app$$=await evalute($downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$,{data:$app$$,moment,numeral,_,utils})())&&$app$$.error)throw Logger.error($app$$.error,$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$),{error:$app$$.error.message||$app$$.error.error||$app$$.error};}catch($e$$){throw Logger.error($e$$,$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$),
76
+ {error:$e$$.message||$e$$.error||$e$$};}}$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$=await new Promise(($resolve$$,$reject$$)=>{excelReport($templatePath$$,$app$$,($e$$,$result$$)=>$e$$?$reject$$($e$$):$resolve$$($result$$),{timezone:configs.timezone||"Asia/Ho_Chi_Minh"})});return $finalize_obj4views$$($downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$,"xlsx")}if($req$$.query.print&&
77
+ $req$$.query.id_rpt&&global.mongoose.Types.ObjectId.isValid($req$$.query.id_rpt))try{return $dir_root_template_result$$=await htmlReport($req$$.query.id_rpt,{...$req$$.user.current_app_info,...$req$$.query,company:{...$req$$.user.current_app_info},detail:$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$,details:$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$,items:$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$}),
78
+ $finalize_obj4views$$($dir_root_template_result$$,"json")}catch($e$$){throw Logger.error("htmlReport",$e$$),$e$$;}let $_rs$$=$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$;if($req$$.query.groupBy){let $_groupBy$$=$req$$.query.groupBy.split(",");$downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$=await new Promise(($resolve$$,$reject$$)=>{$_rs$$.groupBy($_groupBy$$,[],($e$$,$_items$$)=>
79
+ {if($e$$)return Logger.error("jsonReport",$e$$),$reject$$({error:$e$$.message||$e$$.error||$e$$});$resolve$$($_items$$)})});return $finalize_obj4views$$($downloadUrl_downloadUrl$jscomp$1_fileName_fileName$jscomp$1_func_string_groupedResult_groups_number_result$$,"json")}return $finalize_obj4views$$($_rs$$,"json")},findHanlder=function($ctrl$$,$req$$,$callback$$){findHandlerCore($ctrl$$,$req$$).then($rs$$=>$callback$$(null,$rs$$),$e$$=>$callback$$($e$$))};
80
+ findHanlder.findHandlerAsync=($ctrl$$,$req$$)=>findHandlerCore($ctrl$$,$req$$);findHanlder.findHandlerCore=findHandlerCore;module.exports=findHanlder;
@@ -0,0 +1,74 @@
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"),{createTmpFile,generateDefaultExcel}=
2
+ require("../libs/excelHelper"),{ERRORS}=require("./controllerUtils"),{isValidObjectId}=require("mongoose"),FIELDS_NEED_CONVERT_CODE={ten_kh:{code:"ma_kh",model:"customer"},ten_vt:{code:"ma_vt",model:"dmvt"},ten_kho:{code:"ma_kho",model:"dmkho"},ten_phi:{code:"ma_phi",model:"dmphi"},ten_dt:{code:"ma_dt",model:"dmdt"},ten_bp:{code:"ma_bp",model:"dmbp"},ten_nv:{code:"ma_nv",model:"dmnv"}};
3
+ async function convertNamesToCodes($id_app$$,$condition$$,$FIELDS_NEED_CONVERT_CODE$$,$model$$){if(!$condition$$||typeof $condition$$!=="object")return $condition$$;if(Array.isArray($condition$$)){for(var $i_key_q$$=0;$i_key_q$$<$condition$$.length;$i_key_q$$++)$condition$$[$i_key_q$$]=await convertNamesToCodes($id_app$$,$condition$$[$i_key_q$$],$FIELDS_NEED_CONVERT_CODE$$,$model$$);return $condition$$}for($i_key_q$$ in $condition$$)if($i_key_q$$==="$or"||$i_key_q$$==="$and")$condition$$[$i_key_q$$]=
4
+ await convertNamesToCodes($id_app$$,$condition$$[$i_key_q$$],$FIELDS_NEED_CONVERT_CODE$$,$model$$);else{var $ds_fieldMapping$$=$FIELDS_NEED_CONVERT_CODE$$[$i_key_q$$];if($ds_fieldMapping$$){const $targetCodeField$$=$ds_fieldMapping$$.code;$id_app$$&&_.has($model$$.schema.paths,$targetCodeField$$)&&$model$$.modelName!==$ds_fieldMapping$$.model&&($condition$$[$targetCodeField$$]?_.has($model$$.schema.paths,$i_key_q$$)&&delete $condition$$[$i_key_q$$]:($ds_fieldMapping$$=await global.getModel($ds_fieldMapping$$.model).find({id_app:$id_app$$,
5
+ [$i_key_q$$]:$condition$$[$i_key_q$$]},{[$targetCodeField$$]:1}),$condition$$[$targetCodeField$$]={$in:$ds_fieldMapping$$.map($d$$=>$d$$[$targetCodeField$$])},delete $condition$$[$i_key_q$$]))}}return $condition$$}
6
+ const NEED_GET_CHILDREN={ma_bp:{model:"dmbp",code:"ma_bp",code_mother:"ma_bp_me"},ma_kho:{model:"dmkho",code:"ma_kho",code_mother:"ma_kho_me"},nh_kh:{model:"group",code:"_id",code_mother:"group_mother"},nh_kh2:{model:"group",code:"_id",code_mother:"group_mother"},nh_kh3:{model:"group",code:"_id",code_mother:"group_mother"},nh_kh4:{model:"group",code:"_id",code_mother:"group_mother"},nh_kh5:{model:"group",code:"_id",code_mother:"group_mother"},ma_nvt:{model:"dmnvt",code:"_id",code_mother:"nh_me"},
7
+ ma_nvt2:{model:"dmnvt",code:"_id",code_mother:"nh_me"},ma_nvt3:{model:"dmnvt",code:"_id",code_mother:"nh_me"}};
8
+ async function getChildren($id_app$$,$condition$$,$NEED_GET_CHILDREN$$){if(!$condition$$||typeof $condition$$!=="object")return $condition$$;if(Array.isArray($condition$$))return await Promise.all($condition$$.map(async($item$$,$index$$)=>{$condition$$[$index$$]=await getChildren($id_app$$,$item$$,$NEED_GET_CHILDREN$$)})),$condition$$;const $tasks$$=[];for(let $key_q$$ in $condition$$){if($key_q$$==="$or"||$key_q$$==="$and"){$tasks$$.push((async()=>{$condition$$[$key_q$$]=await getChildren($id_app$$,
9
+ $condition$$[$key_q$$],$NEED_GET_CHILDREN$$)})());continue}const $fieldMapping$$=$NEED_GET_CHILDREN$$[$key_q$$];if($fieldMapping$$){const $value$$=$condition$$[$key_q$$];if($value$$&&(typeof $value$$==="string"||Array.isArray($value$$))){const $model$$=global.getModel($fieldMapping$$.model);$model$$&&$tasks$$.push((async()=>{const $childCodes$$=await utils.getCodeChildren($model$$,$id_app$$,$value$$,$fieldMapping$$.code,$fieldMapping$$.code_mother);$condition$$[$key_q$$]={$in:$childCodes$$}})())}}}$tasks$$.length>
10
+ 0&&await Promise.all($tasks$$);return $condition$$}
11
+ const hasRight=async($ctrl$$,$req$$,$listinfo_code$$,$id_app$$,$shareRoute$$)=>{if(!$shareRoute$$)return new Promise(($resolve$$,$reject$$)=>{setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.hasRight($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:",$req$$.user.email,$e$$);if($ctrl$$.options.onQuery)$ctrl$$.options.onQuery($req$$,
12
+ $e$$=>{if($e$$)return $reject$$({error:$e$$.error||$e$$.message||$e$$});if(!$permission$$)return $resolve$$("0");$resolve$$($permission$$)});else{if(!$permission$$)return $resolve$$("0");$resolve$$($permission$$)}},{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$,user:$req$$.user})})})},handleDynamicCondition=async($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$)=>{let {condition:$condition$$,id_app:$id_app$$}=$appCondition$$,$userInfo$$={...$req$$.user,current_id_app:$id_app$$};!$id_app$$||
13
+ $userInfo$$.current_app_info&&$userInfo$$.current_app_info?._id?.toString()==$id_app$$||($userInfo$$.current_app_info=await global.getModel("app").findOne({_id:$id_app$$}).lean());$appCondition$$.userInfo=$userInfo$$;let $new_condition$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.finding?$ctrl$$.finding($userInfo$$,$condition$$,function($error$$,$condition$$){if($error$$)return $reject$$({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($userInfo$$,
14
+ $condition$$,function($e$$,$condition$$){if($e$$)return Logger.error("dynamicFinding",$e$$),$e$$.error?$reject$$($e$$):$reject$$({error:$e$$.message||$e$$});$resolve$$($condition$$)},{listinfo_code:$listinfo_code$$,req:$req$$}):$resolve$$($condition$$)},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($userInfo$$,$condition$$,function($e$$,$condition$$){if($e$$)return Logger.error("dynamicFinding",$e$$),$e$$.error?$reject$$($e$$):$reject$$({error:$e$$.message||$e$$});$resolve$$($condition$$)},
15
+ {listinfo_code:$listinfo_code$$,req:$req$$}):$resolve$$($condition$$)});$new_condition$$=await getChildren($appCondition$$.id_app,$new_condition$$,NEED_GET_CHILDREN);$appCondition$$.condition=$new_condition$$;return $appCondition$$},buildCondition=async($ctrl$$,$req$$,$listinfo_code$$,$appConditions_shareRoute$$)=>{var $body_ds_id_app$$={};_.isObject($req$$.body)&&($body_ds_id_app$$=$req$$.body);let $query$$={...$req$$.query,...$body_ds_id_app$$};$query$$.tu_ngay&&($query$$.tu_ngay=moment($query$$.tu_ngay).startOf("date").toDate());
16
+ $query$$.den_ngay&&($query$$.den_ngay=moment($query$$.den_ngay).endOf("date").toDate());($body_ds_id_app$$=$query$$.id_apps)&&typeof $body_ds_id_app$$=="string"&&($body_ds_id_app$$=[$body_ds_id_app$$]);let $all_app$$=$query$$.all_app;$req$$.query=$query$$;if($query$$.sort)if(typeof $query$$.sort=="object")var $or_sort$$=$query$$.sort;else try{$or_sort$$=JSONParser($query$$.sort)}catch($e$$){throw Logger.error("error parse json",$e$$,$query$$.sort),`Sort ${$query$$.sort} is not valid`;}!$or_sort$$&&
17
+ $ctrl$$.sort&&($or_sort$$=Object.assign({},$ctrl$$.sort));$req$$.sort=$or_sort$$;$req$$.fetch_by_groups=$query$$.fetch_by_groups;delete $query$$.fetch_by_groups;let $condition$$={};$or_sort$$=[];const $hasCodeByName$$=$k$$=>FIELDS_NEED_CONVERT_CODE[$k$$]&&_.has($ctrl$$.model.schema.paths,FIELDS_NEED_CONVERT_CODE[$k$$].code)&&$ctrl$$.model.modelName!==FIELDS_NEED_CONVERT_CODE[$k$$].model?!0:!1;for(var $key$$ in $query$$)if($key$$!=="id_app"&&$key$$!=="access_token"&&$key$$!=="limit")if($key$$==="_id"&&
18
+ global.mongoose.Types.ObjectId.isValid($query$$._id))try{let $id$$=global.mongoose.Types.ObjectId($query$$._id);$or_sort$$.push({_id:$id$$})}catch($error$$){Logger.error("find condition",$error$$)}else{if($key$$==="q"&&$query$$[$key$$])try{let $q$$=_.isObject($query$$[$key$$])?$query$$[$key$$]:JSONParser($query$$[$key$$]);$req$$.fetch_by_groups=$req$$.fetch_by_groups||$q$$.fetch_by_groups;delete $q$$.fetch_by_groups;$body_ds_id_app$$=$q$$.id_apps||$body_ds_id_app$$;$all_app$$=$q$$.all_app||$all_app$$;
19
+ delete $q$$.all_app;delete $q$$.id_apps;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))throw Logger.error("Condition is not valid",$q$$),"Condition is not valid";for(let $k_q$$ in $q$$)if(typeof $q$$[$k_q$$]=="string"&&$ctrl$$.model.schema.paths[$k_q$$]?.instance?.toLowerCase()=="date"){let {fromDate:$fromDate$$,toDate:$toDate$$}=getDateRangeByType($q$$[$k_q$$]);$fromDate$$&&$toDate$$&&($q$$[$k_q$$]=
20
+ {$gte:$fromDate$$,$lte:$toDate$$})}($condition$$=$q$$)||($condition$$={});continue}catch($e$$){throw Logger.error("find condition",$e$$,$query$$[$key$$]),"Condition is not valid";}if($key$$!=="fields"&&(_.has($ctrl$$.model.schema.paths,$key$$)||$hasCodeByName$$($key$$)))if($ctrl$$.options.findExact[$key$$])$condition$$[$key$$]=$query$$[$key$$];else{let $item$$={};if($ctrl$$.model.schema.paths[$key$$]?.instance?.toLowerCase()=="number")$item$$[$key$$]=Number($query$$[$key$$]);else if($ctrl$$.model.schema.paths[$key$$]?.instance?.toLowerCase()==
21
+ "date"){let {fromDate:$fromDate$$,toDate:$toDate$$}=getDateRangeByType($query$$[$key$$]);$item$$[$key$$]=$fromDate$$&&$toDate$$?{$gte:$fromDate$$,$lte:$toDate$$}:new Date($query$$[$key$$])}else $ctrl$$.model.schema.paths[$key$$]?.instance?.toLowerCase()=="string"?$item$$[$key$$]={$regex:($query$$[$key$$]||"").trim(),$options:"i"}:$item$$[$key$$]=$query$$[$key$$];$or_sort$$.push($item$$)}else $key$$==="$text"&&$or_sort$$.push({$text:{$search:$query$$[$key$$]}})}$or_sort$$.length!==0&&($query$$.cType===
22
+ "$and"?$condition$$.$and=$or_sort$$:$condition$$.$or=$or_sort$$);$key$$=queryBuilding.convertLegacyQuery(_.cloneDeep($condition$$));$condition$$=queryBuilding.buildSearchQuery($key$$);$appConditions_shareRoute$$||$ctrl$$.require_id_app==0?$appConditions_shareRoute$$=[{id_app:$req$$.user.current_id_app,condition:{id_app:$req$$.user.current_id_app,...$condition$$}}]:($body_ds_id_app$$=($body_ds_id_app$$||[]).filter($id$$=>global.mongoose.Types.ObjectId.isValid($id$$)),$body_ds_id_app$$.length==0&&($all_app$$?
23
+ (Logger.warn("[findHanlder] t\u00ecm t\u1ea5t c\u1ea3 c\u00e1c c\u00f4ng ty c\u00f3 quy\u1ec1n..."),$body_ds_id_app$$=(await global.getModel("participant").find({email:$req$$.user.email},{id_app:1}).lean()).map($a$$=>$a$$.id_app).filter($id_app$$=>isValidObjectId($id_app$$)),$body_ds_id_app$$=(await global.getModel("app").find({_id:{$in:$body_ds_id_app$$}},{_id:1}).lean()).map($a$$=>$a$$._id.toString())):$body_ds_id_app$$=[$req$$.user.current_id_app]),$appConditions_shareRoute$$=$body_ds_id_app$$.map($id_app$$=>
24
+ ({id_app:$id_app$$,condition:{...$condition$$,id_app:$id_app$$}})));return Promise.all($appConditions_shareRoute$$.map($appCondition$$=>handleDynamicCondition($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$)))},getRightByItem=async($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$,$shareRoute$$)=>$shareRoute$$?$appCondition$$:new Promise(($resolve$$,$reject$$)=>{setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.getRightByItem($appCondition$$.id_app,
25
+ $ctrl$$.model,$req$$.user.email,function($e$$,$_condition$$,$admin$$){if($e$$)return Logger.error("[findHandler] [getRightByItem] L\u1ed7i Kh\u00f4ng c\u00f3 quy\u1ec1n:",$e$$),$reject$$({error:$e$$.error||$e$$.message||$e$$,code:$e$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($appCondition$$.addmin=$admin$$)return $resolve$$($appCondition$$);$appCondition$$.condition||($appCondition$$.condition={});$appCondition$$.condition.$and||($appCondition$$.condition.$and=[]);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,
26
+ $_condition$$,($e$$,$_condition$$)=>{if($e$$)return $reject$$({error:$e$$.error||$e$$.message||$e$$});_.isObject($_condition$$)&&Object.keys($_condition$$).length>0&&$appCondition$$.condition.$and.push($_condition$$);$appCondition$$.condition_assign=$_condition$$;$resolve$$($appCondition$$)});else _.isObject($_condition$$)&&Object.keys($_condition$$).length>0&&$appCondition$$.condition.$and.push($_condition$$),$resolve$$($appCondition$$)},$ctrl$$.name,{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$})})}),
27
+ getRightByCollectionRef=async($ctrl$$,$req$$,$appCondition$$,$shareRoute$$)=>$shareRoute$$||$appCondition$$.admin||!$appCondition$$.condition_assign||Object.keys($appCondition$$.condition_assign).length===0?$appCondition$$:new Promise(($resolve$$,$reject$$)=>{setImmediate(async()=>{if($ctrl$$.options.assignWiths){let $condition_assignwiths$$={};async.map($ctrl$$.options.assignWiths,($col$$,$callback$$)=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($appCondition$$.id_app,
28
+ $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$$(null);$_condition$$.id_app=$appCondition$$.id_app;$appCondition$$.condition[$col$$.ref_field]&&($_condition$$[$col$$.ref_field]=$appCondition$$.condition[$col$$.ref_field]);$m$$.find($_condition$$,{[$col$$.ref_field]:1}).lean().then($dsdt_rs$$=>{$dsdt_rs$$=$dsdt_rs$$.map($r$$=>$r$$[$col$$.ref_field]);$dsdt_rs$$.push("");
29
+ $dsdt_rs$$.push(null);$condition_assignwiths$$[$col$$.field]={$in:$dsdt_rs$$};$callback$$()}).catch($e$$=>{$callback$$($e$$)})},$col$$.ref_module)},$condition$jscomp$7_e$$=>{if($condition$jscomp$7_e$$)return $reject$$({error:$condition$jscomp$7_e$$.error||$condition$jscomp$7_e$$.message||$condition$jscomp$7_e$$});Object.keys($condition_assignwiths$$).length>0&&($condition$jscomp$7_e$$=$appCondition$$.condition_assign||$appCondition$$.condition,$condition$jscomp$7_e$$.$and||($condition$jscomp$7_e$$.$and=
30
+ []),$condition$jscomp$7_e$$.$and.push($condition_assignwiths$$),$appCondition$$.condition=$condition$jscomp$7_e$$);$resolve$$($appCondition$$)})}else $resolve$$($appCondition$$)})}),findHanlder=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$$!=
31
+ $ctrl$$.name){var $condition$$=await global.getModel("listinfo").findOne({code:$listinfo_code$$},{api_code:1,code:1}).lean();$condition$$?($condition$$.api_code||$condition$$.code)!=$ctrl$$.name&&($listinfo_code$$=$ctrl$$.name):$listinfo_code$$=$ctrl$$.name}let $appConditions$$;try{$appConditions$$=await buildCondition($ctrl$$,$req$$,$listinfo_code$$,$shareRoute$$);for(let $appCondition$$ of $appConditions$$){await hasRight($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$.id_app,$shareRoute$$)=="0"&&
32
+ ($appCondition$$.condition._id={$in:[]});await getRightByItem($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$,$shareRoute$$);await getRightByCollectionRef($ctrl$$,$req$$,$appCondition$$,$shareRoute$$);({condition:$condition$$}=$appCondition$$);for(let $key_q$$ in $condition$$)if($key_q$$==="_id"||$key_q$$.startsWith("$")||$key_q$$.includes(".")||_.has($model$$.schema.paths,$key_q$$)||delete $condition$$[$key_q$$],$key_q$$=="$and"){for(let $dk$$ of $condition$$.$and)for(let $key_q$$ in $dk$$)$key_q$$===
33
+ "_id"||$key_q$$.startsWith("$")||$key_q$$.includes(".")||_.has($model$$.schema.paths,$key_q$$)||delete $dk$$[$key_q$$];$condition$$.$and=$condition$$.$and.filter($a$$=>Object.keys($a$$).length>0)}$appCondition$$.id_app&&($condition$$=await convertNamesToCodes($appCondition$$.id_app,$condition$$,FIELDS_NEED_CONVERT_CODE,$model$$),$appCondition$$.condition=$condition$$);if($shareRoute$$){$condition$$.shared=!0;let $id_sellers$$=(await global.getModel("app").find({sale_online:!0},{_id:1}).lean()).map($a$$=>
34
+ $a$$._id);$condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push({id_app:{$in:$id_sellers$$}});$condition$$.id_app&&$condition$$.$and.push({id_app:$condition$$.id_app})}else _.has($model$$.schema.paths,"id_app")&&$ctrl$$.require_id_app!==!1&&($condition$$.id_app=$appCondition$$.id_app);$req$$.user.email==="public"&&_.has($model$$.schema.paths,"session_created")&&($condition$$.session_created=($req$$.cookies||{}).uid);_.extend($condition$$,$ctrl$$.keyValues);utils.deleteEmptyObject($condition$$);
35
+ delete $condition$$.$where;_.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$$.ma_ct=$ctrl$$.name.toUpperCase());let $condition_group$$;$req$$.fetch_by_groups&&$req$$.fetch_by_groups.model_group&&$req$$.fetch_by_groups.field&&($condition_group$$=$req$$.fetch_by_groups.condition||{},$condition_group$$.status=!0,$condition_group$$.id_app=$appCondition$$.id_app,$condition$$[$req$$.fetch_by_groups.field]&&($condition_group$$[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]=
36
+ $condition$$[$req$$.fetch_by_groups.field]));$appCondition$$.condition_group=$condition_group$$;let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($appCondition$$.id_app,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}$appCondition$$.field_not_right=$field_not_right$$}}catch($e$$){return $callback$$($e$$)}async.series([function($callback$$){setImmediate(async()=>{var $condition_group$$=$appConditions$$.filter($a$$=>Object.keys($a$$.condition).length>
37
+ 0).map($a$$=>$a$$.condition);let $condition$$;$condition$$=$condition_group$$.length==0?{}:$condition_group$$.length==1?$condition_group$$[0]:{$or:$condition_group$$};$condition_group$$={$or:$appConditions$$.filter($a$$=>$a$$.condition_group).map($a$$=>$a$$.condition_group)};if($req$$.query.count){var $fields_fields$jscomp$1_groups_number_notfields_rows_number$$=0;$condition_group$$.$or.length>0&&($fields_fields$jscomp$1_groups_number_notfields_rows_number$$=await global.getModel($req$$.fetch_by_groups.model_group).countDocuments($condition_group$$));
38
+ $condition_group$$=await $model$$.countDocuments($condition$$);$req$$.result={groups_number:$fields_fields$jscomp$1_groups_number_notfields_rows_number$$,rows_number:$condition_group$$};return $callback$$("0")}$req$$.query.pagination&&($fields_fields$jscomp$1_groups_number_notfields_rows_number$$=await $model$$.countDocuments($condition$$),$req$$.pagination={total:$fields_fields$jscomp$1_groups_number_notfields_rows_number$$});let $field_not_right$$=[...(new Set($appConditions$$.map($a$$=>$a$$.field_not_right).reduce(($a$$,
39
+ $b$$)=>$a$$.concat($b$$),[])))].filter($a$$=>$a$$);$fields_fields$jscomp$1_groups_number_notfields_rows_number$$=$req$$.query.fields;let $gfields$$={};$fields_fields$jscomp$1_groups_number_notfields_rows_number$$&&(_.isArray($fields_fields$jscomp$1_groups_number_notfields_rows_number$$)?$fields_fields$jscomp$1_groups_number_notfields_rows_number$$.forEach($f$$=>{$f$$!=="_id"&&($gfields$$[$f$$]=1)}):_.isObject($fields_fields$jscomp$1_groups_number_notfields_rows_number$$)?($gfields$$={...$gfields$$,
40
+ ...$fields_fields$jscomp$1_groups_number_notfields_rows_number$$},$req$$.query.fields=Object.keys($gfields$$).join(",")):$fields_fields$jscomp$1_groups_number_notfields_rows_number$$.split(",").filter($f$$=>$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});!$fields_fields$jscomp$1_groups_number_notfields_rows_number$$&&
41
+ (($fields_fields$jscomp$1_groups_number_notfields_rows_number$$=$req$$.query.notfields)&&(_.isArray($fields_fields$jscomp$1_groups_number_notfields_rows_number$$)?$fields_fields$jscomp$1_groups_number_notfields_rows_number$$.forEach($f$$=>{$f$$&&$f$$!=="_id"&&(Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)}):_.isObject($fields_fields$jscomp$1_groups_number_notfields_rows_number$$)?$gfields$$={...$gfields$$,...$fields_fields$jscomp$1_groups_number_notfields_rows_number$$}:
42
+ $fields_fields$jscomp$1_groups_number_notfields_rows_number$$.split(",").forEach($f$$=>{$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"});
43
+ delete $req$$.query_cache;$ctrl$$.cache&&($req$$.query_cache={..._.cloneDeep($req$$.query),..._.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$$=
44
+ 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"});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$$}]);
45
+ let $group$$;$req$$.query.group&&($group$$=JSONParser($req$$.query.group),$query$$.group($group$$));if($req$$.query.match){let $match$$=JSONParser($req$$.query.match);$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]",
46
+ $e$$,$req$$.query),$callback$$({error:$e$$.message||$e$$.error||$e$$})}else _.has($model$$.schema.paths,"id_app")&&Object.keys($gfields$$).length>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$$]!=
47
+ 1&&$aggregate_piples_sort$$[$key$$]!=-1)return Logger.error("sort is valid",$aggregate_piples_sort$$,$key$$,$aggregate_piples_sort$$[$key$$]),$callback$$({error:`Sort ${JSON.stringify($aggregate_piples_sort$$)} is not valid`});$aggregate_piples_sort$$&&Object.keys($aggregate_piples_sort$$).length>0&&$query$$.sort($aggregate_piples_sort$$);if($req$$.pagination||$req$$.query.type_data!=="xlsx"&&$req$$.query.type_data!=="json_file"&&$req$$.query.type_data!=="json_export"&&$req$$.query.rpt!="1")$page$$&&
48
+ $limit$$?($key$$=(Number($page$$)-1)*$limit$$,$key$$<0&&($key$$=0),$query$$.skip($key$$).limit($limit$$)):$query$$.limit($limit$$);$ctrl$$.populate&&($query$$=$ctrl$$.populate($query$$));$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||
49
+ 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),{parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$}=$explainResult$$.queryPlanner||{},{executionSuccess:$executionSuccess$$,nReturned:$nReturned$$,executionTimeMillis:$executionTimeMillis$$,totalKeysExamined:$totalKeysExamined$$,totalDocsExamined:$totalDocsExamined$$}=
50
+ $explainResult$$.executionStats||{};$callback$$(null,[{queryPlanner:{parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$},executionStats:{executionSuccess:$executionSuccess$$,nReturned:$nReturned$$,executionTimeMillis:$executionTimeMillis$$,totalKeysExamined:$totalKeysExamined$$,totalDocsExamined:$totalDocsExamined$$},_id:""}])}catch($e$$){$callback$$($e$$)}}else $query$$.lean().then($rs$$=>{$callback$$(null,$rs$$)}).catch($e$$=>{$callback$$($e$$)})})};let $data_log$$=$req$$.query;delete $data_log$$.access_token;
51
+ $appConditions$$.forEach($a$jscomp$12_id_app$$=>{({id_app:$a$jscomp$12_id_app$$}=$a$jscomp$12_id_app$$);$req$$.user&&!$data_log$$.count&&$ctrl$$.name!=="log"&&$ctrl$$.name!=="labelinfo"&&$ctrl$$.name!=="listinfo"&&$ctrl$$.name!=="reportinfo"&&$ctrl$$.name!=="moduleinfo"&&$ctrl$$.name!=="options"&&global.getModel("log").create({id_app:$a$jscomp$12_id_app$$,id_func:$ctrl$$.name,action:"QUERY",data:{condition:JSON.stringify($data_log$$)}},$req$$.user.email,$req$$.user_agent,$req$$)});let $page_fetch$$=
52
+ Number($req$$.query.page||0);isNaN($page_fetch$$)&&($page_fetch$$=0);let $limit$$=$req$$.query.limit;$limit$$&&=Number($limit$$);isNaN($limit$$)&&($limit$$=0);$req$$.query.type_data!=="xlsx"&&$req$$.query.type_data!=="json_file"&&$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!==
53
+ "labelinfo"&&($limit$$=500));$req$$.pagination&&($limit$$||=20,$req$$.pagination.page=$page_fetch$$?$page_fetch$$:1,$req$$.pagination.limit=$limit$$,$req$$.pagination.totalPages=Math.ceil($req$$.pagination.total/$req$$.pagination.limit));let $condition_groups$$=[];if($condition_group$$.length>0){let $field_ref$$=$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field;$fields_fields$jscomp$1_groups_number_notfields_rows_number$$={[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1};
54
+ let $limit_group$$=$req$$.fetch_by_groups.limit_group||10,$page$$=Number($req$$.query.page||0);isNaN($page$$)&&($page$$=0);let $skip$$=0;$page$$>1&&($skip$$=($page$$-1)*$limit_group$$);$skip$$<0&&($skip$$=0);(await global.getModel($req$$.fetch_by_groups.model_group).find($condition_group$$,$fields_fields$jscomp$1_groups_number_notfields_rows_number$$).sort({stt:1,[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1}).skip($skip$$).limit($limit_group$$).lean()).forEach($g$$=>{let $c$$=
55
+ {...$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$$)=>{if($e$$)return Logger.error("exec query find",
56
+ $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$$=>{$obj$$.collection_name||($obj$$.collection_name=
57
+ $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$$)=>{if($error$$)return Logger.error("Erron on view:",$error$$),$callback$$($error$$);$callback$$(null,$viewValue$$)},{req:$req$$,shareRoute:$shareRoute$$})}},async function($e$$,$_rs_func_string_rs$$){if($error$$)return $callback$$({error:$error$$.error||
58
+ $error$$.message||$error$$});if($req$$.query.type_data==="json_file"){var {template:$_groupBy_template$jscomp$1_template$$}=$req$$.body;try{var $app_dir_root_template_fileName$$=await createTmpFile(`${$_groupBy_template$jscomp$1_template$$?.title||$ctrl$$.name}.json`,JSON.stringify($_rs_func_string_rs$$.e_view,null,2)),$downloadUrl_template_id$$=$req$$.host?.startsWith("http")?`${$req$$.host}/downloads/temp/${$app_dir_root_template_fileName$$}`:`https://${$req$$.host}/downloads/temp/${$app_dir_root_template_fileName$$}`;
59
+ $req$$.result={url:$downloadUrl_template_id$$};$req$$.dataType="json";return $callback$$("0")}catch($e$$){return $callback$$($e$$)}}if($req$$.query.type_data==="xlsx"){if($req$$.body.template){({template:$_groupBy_template$jscomp$1_template$$}=$req$$.body);try{const $fileName$$=await generateDefaultExcel({title:$_groupBy_template$jscomp$1_template$$.title,data:$_rs_func_string_rs$$.e_view,columns:$_groupBy_template$jscomp$1_template$$.columns,filterFields:$_groupBy_template$jscomp$1_template$$.filterFields,
60
+ condition:$_groupBy_template$jscomp$1_template$$.condition||$req$$.body.q||$req$$.query||{}}),$downloadUrl$$=$req$$.host?.startsWith("http")?`${$req$$.host}/downloads/temp/${$fileName$$}`:`https://${$req$$.host}/downloads/temp/${$fileName$$}`;$req$$.result={url:$downloadUrl$$};$req$$.dataType="json";return $callback$$("0")}catch($e$$){return $callback$$($e$$)}}$app_dir_root_template_fileName$$=(configs.paths||{}).templates;let $excelTemplate$$;if($downloadUrl_template_id$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($downloadUrl_template_id$$))return $callback$$({error:"ID m\u1eabu file xu\u1ea5t kh\u00f4ng h\u1ee3p l\u1ec7"});
61
+ $excelTemplate$$=await global.getModel("exportexceltemplate").findById($downloadUrl_template_id$$);if(!$excelTemplate$$||!$excelTemplate$$.file)return $callback$$({error:"M\u1eabu file xu\u1ea5t kh\u00f4ng t\u1ed3n t\u1ea1i"});$_groupBy_template$jscomp$1_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$jscomp$1_template$$=
62
+ `${$app_dir_root_template_fileName$$}/excels/lists/${$ctrl$$.name}.xlsx`),$_groupBy_template$jscomp$1_template$$&&fs.existsSync($_groupBy_template$jscomp$1_template$$)||($_groupBy_template$jscomp$1_template$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($_groupBy_template$jscomp$1_template$$))return $callback$$({error:"File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$_groupBy_template$jscomp$1_template$$+"'"});$app_dir_root_template_fileName$$=
63
+ {};$app_dir_root_template_fileName$$.detail=$_rs_func_string_rs$$.e_view;$app_dir_root_template_fileName$$.items=$_rs_func_string_rs$$.e_view;if($excelTemplate$$&&$excelTemplate$$.handle_data){$_rs_func_string_rs$$=`return (async ()=>{
64
+ try{
65
+ ${$excelTemplate$$.handle_data}
66
+ }catch(e){
67
+ return {error:e}
68
+ }
69
+
70
+ })`;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$$),
71
+ $callback$$({error:$e$$.message||$e$$.error||$e$$})}}excelReport($_groupBy_template$jscomp$1_template$$,$app_dir_root_template_fileName$$,function($e$$,$result$$){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,
72
+ {...$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,items:$_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$jscomp$1_template$$=$req$$.query.groupBy.split(","),$_rs_func_string_rs$$.groupBy($_groupBy_template$jscomp$1_template$$,
73
+ [],($e$$,$_items$$)=>{if($e$$)return Logger.error("jsonReport",$e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$_items$$;$callback$$("0")})):($req$$.result=$_rs_func_string_rs$$,$callback$$("0")))})})})})})}],$e$jscomp$24_result$$=>{if($e$jscomp$24_result$$&&$e$jscomp$24_result$$!="0")return $callback$$($e$jscomp$24_result$$);$req$$.pagination?($req$$.pagination.total>$req$$.result.length&&$req$$.pagination.totalPages==1&&($req$$.pagination.total=$req$$.result.length),$e$jscomp$24_result$$=
74
+ {data:$req$$.result,pagination:$req$$.pagination}):$e$jscomp$24_result$$=$req$$.result;$callback$$(null,{result:$e$jscomp$24_result$$,dataType:$req$$.dataType||"json"})})};module.exports=findHanlder;