flexbiz-server 12.6.9 → 12.6.11

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 (45) hide show
  1. package/package.json +5 -3
  2. package/server/controllers/controllerUtils.js +16 -18
  3. package/server/controllers/createHandler.js +22 -22
  4. package/server/controllers/findHandler.js +55 -52
  5. package/server/controllers/historyHandler.js +8 -5
  6. package/server/controllers/importFromExcelHandler.js +10 -10
  7. package/server/controllers/importHandler.js +31 -31
  8. package/server/controllers/rptExcelHandler.js +12 -9
  9. package/server/controllers/updateHandler.js +4 -4
  10. package/server/flow/nodes/data.js +16 -13
  11. package/server/flow/nodes/event.js +11 -10
  12. package/server/flow/nodes/inject.js +11 -9
  13. package/server/flow/nodes/switch.js +12 -12
  14. package/server/libs/docs.js +559 -440
  15. package/server/libs/excel.js +2 -1
  16. package/server/libs/excelHelper.js +10 -8
  17. package/server/libs/mongoosePatch.js +4 -4
  18. package/server/libs/post-book.js +18 -19
  19. package/server/libs/post-socai.js +9 -8
  20. package/server/libs/post-sokho.js +19 -18
  21. package/server/libs/sessionContext.js +2 -2
  22. package/server/libs/tinhgiatb.js +1 -1
  23. package/server/libs/utils.js +5 -3
  24. package/server/libs/vectorService.js +12 -0
  25. package/server/models/customer.js +3 -3
  26. package/server/models/filechunk.js +2 -0
  27. package/server/models/log.js +1 -1
  28. package/server/models/socai.js +3 -3
  29. package/server/models/socainpp.js +1 -1
  30. package/server/models/tdttco.js +1 -1
  31. package/server/models/tdttco_tt.js +2 -2
  32. package/server/models/tdttno.js +1 -1
  33. package/server/models/tdttno_tt.js +1 -1
  34. package/server/modules/lists/ls-customer.js +16 -15
  35. package/server/modules/lists/ls-file.js +20 -18
  36. package/server/modules/reports/rp-chitietchitientheohoadon.js +8 -8
  37. package/server/modules/reports/rp-chitietthutientheohoadon.js +8 -8
  38. package/server/route.js +8 -7
  39. package/server/workers/excelParser.js +1 -1
  40. package/server/workers/inputWorker.js +8 -7
  41. package/install_centos7.sh +0 -476
  42. package/server/workers/customerOnImport.js +0 -8
  43. package/server/workers/customerOnImport_bk.js +0 -8
  44. package/server/workers/dmvtOnImport.js +0 -9
  45. package/server/workers/dmvtOnImport_bk.js +0 -9
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flexbiz-server",
3
3
  "main": "./server/app.js",
4
4
  "description": "Flexible Server",
5
- "version": "12.6.9",
5
+ "version": "12.6.11",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -31,7 +31,7 @@
31
31
  "dynamic-watermark": "^1.0.0",
32
32
  "ejs": "^4.0.1",
33
33
  "elliptic-nodejs": "^6.5.4",
34
- "excel-report": "^1.0.3",
34
+ "excel-report": "^1.0.6",
35
35
  "exceljs": "^4.4.0",
36
36
  "expo-server-sdk": "^3.6.0",
37
37
  "express": "^4.17.1",
@@ -49,6 +49,7 @@
49
49
  "lodash": "^4.17.15",
50
50
  "mail-listener2": "^0.3.1",
51
51
  "mailparser": "^3.2.0",
52
+ "mammoth": "^1.12.0",
52
53
  "moment": "^2.29.1",
53
54
  "moment-timezone": "^0.5.33",
54
55
  "mongodb-backup": "^1.6.9",
@@ -70,6 +71,7 @@
70
71
  "passport-http": "^0.3.0",
71
72
  "passport-http-bearer": "^1.0.1",
72
73
  "passport-local": "^1.0.0",
74
+ "pdf2json": "^4.0.3",
73
75
  "pug": "^3.0.2",
74
76
  "qr-image": "^3.2.0",
75
77
  "rate-limiter-flexible": "^2.2.2",
@@ -88,7 +90,7 @@
88
90
  "underscore": "^1.13.1",
89
91
  "unidecode": "^0.1.8",
90
92
  "validate.js": "^0.13.1",
91
- "validator": "^13.6.0",
93
+ "validator": "^13.15.35",
92
94
  "vhost": "^3.0.2",
93
95
  "vietnam-qr-pay": "^1.4.0",
94
96
  "vm2": "^3.10.0",
@@ -40,17 +40,15 @@ $p$$.send_to_user_created===!1&&($users_will_receive$$=$users_will_receive$$.fil
40
40
  })`,$admins_of_user_sandbox_us$$)();_.isArray($cust_users_will_receive$$)?$users_will_receive$$=$cust_users_will_receive$$:Logger.error("handle user will receive notify:",$cust_users_will_receive$$,$p$$.handle_receivers)}}catch($e$$){Logger.error("[controllerUtiles][pushNotification]",$e$$)}}$ctrl$$.options||($ctrl$$.options={});$ctrl$$.options.onEmitEvent||($ctrl$$.options.onEmitEvent=($obj$$,$users_will_receive$$,$next$$,$_notificationData$$)=>{$next$$(null,$users_will_receive$$,
41
41
  $_notificationData$$)});$ctrl$$.options.onEmitEvent(Object.assign({},$obj$$),$users_will_receive$$,($e$$,$_users_will_receive$$,$_notificationData$$)=>{setImmediate(()=>{if($e$$)return Logger.error("[controllerUtiles][pushNotification]","Error emit events",$e$$);$_users_will_receive$$=_.uniq($_users_will_receive$$);Logger.info("[controllerUtiles][pushNotification] Emit event to users",`${$ctrl$$.name.toLowerCase()}:${$eventName$$}`,$_users_will_receive$$,$_notificationData$$||$notificationData$$);
42
42
  $_users_will_receive$$.length>0&&app.emitEvent($obj$$.id_app,`${$ctrl$$.name.toLowerCase()}:${$eventName$$}`,$_notificationData$$||$notificationData$$,$exclude_token$$,$_users_will_receive$$,!$_justFireEvents$$)})},Object.assign({},$notificationData$$),Object.assign({},$p$$))})}))}})},PostBook=require("../libs/post-book"),Sokho=global.getModel("sokho"),Sokhott=global.getModel("sokhott"),Sokhokhongton=global.getModel("sokhokhongton"),Tdttno=global.getModel("tdttno"),Tdttno_tt=global.getModel("tdttno_tt"),
43
- Tdttco_tt=global.getModel("tdttco_tt"),Tdttco=global.getModel("tdttco"),Vatra=global.getModel("vatra"),Vatvao=global.getModel("vatvao"),deletePost=function($user$$,$obj$$,$callback$$){$obj$$.toObject&&($obj$$=utils.convertObjectIdsToStrings($obj$$.toObject()));if(!$obj$$._id)return Logger.error("Error when delete post: obj does not have _id",$obj$$),$callback$$("Error when delete post: obj does not have _id",$obj$$);if(!getCurrentSession())return $callback$$("T\u00ednh n\u0103ng [deletePost] c\u1ea7n ch\u1ea1y trong m\u1ed9t transaction");
44
- let $query_delete$$={id_ct:$obj$$._id.toString()};$obj$$.id_app&&($query_delete$$.id_app=$obj$$.id_app);async.series({delete_model_books_registed:$callback$$=>{if(!global.model_books)return $callback$$();async.mapSeries(global.model_books.filter($d$$=>$d$$!=="sokho"&&$d$$!=="sokhonpp"&&$d$$!=="sokhott"&&$d$$!=="sokhokhongton"&&$d$$!=="socai"&&$d$$!=="socaitmp"),($bookName$$,$callback$$)=>{setImmediate(async()=>{let $book$$=mongoose.models[$bookName$$.toLowerCase()];$book$$?$book$$.deleteMany($query_delete$$,
45
- $e$$=>{$callback$$($e$$)}):$callback$$()})},$e$$=>{$callback$$($e$$)})},sk:$callback$$=>{(new PostBook($obj$$,$obj$$.details,Sokho,function($detail$$,$callback$$){$callback$$($detail$$)})).remove(function($e$$){$callback$$($e$$)})},sktt:$callback$$=>{(new PostBook($obj$$,$obj$$.details,Sokhott,function($detail$$,$callback$$){$callback$$($detail$$)})).remove(function($e$$){$callback$$($e$$)})},skkhongton:$callback$$=>{(new PostBook($obj$$,$obj$$.details,Sokhokhongton,function($detail$$,$callback$$){$callback$$($detail$$)})).remove(function($e$$){$callback$$($e$$)})},
46
- sknpp:$callback$$=>{setImmediate(async()=>{(new PostBook($obj$$,$obj$$.details,global.getModel("sokhonpp"),function($detail$$,$callback$$){$callback$$($detail$$)})).remove(function($e$$){$callback$$($e$$)})})},sc:$callback$$=>{setImmediate(async()=>{Socai.deleteMany($query_delete$$,function($error$$){$callback$$($error$$)})})},sctmp:$callback$$=>{global.getModel("socaitmp").deleteMany($query_delete$$,function($error$$){$callback$$($error$$)})},vatra:$callback$$=>{if(global.model_books&&global.model_books.indexOf("vatra")>=
47
- 0)return $callback$$();Vatra.deleteMany($query_delete$$,function($error$$){$callback$$($error$$)})},vatvao:$callback$$=>{if(global.model_books&&global.model_books.indexOf("vatvao")>=0)return $callback$$();Vatvao.deleteMany($query_delete$$,function($error$$){$callback$$($error$$)})},tdttno:$callback$$=>{setImmediate(async()=>{let $tdtts$$=await Tdttno.find($query_delete$$,{_id:1,tat_toan:1}).lean();if($tdtts$$.length>0){if($tdtts$$.filter($t$$=>$t$$.tat_toan).length>0)return $callback$$(null);$tdtts$$=
48
- $tdtts$$.map($t$$=>$t$$._id.toString());if(await Tdttno_tt.findOne({id_tdtt:{$in:$tdtts$$},id_app:$obj$$.id_app}))return $callback$$()}Tdttno.deleteMany($query_delete$$,function($error$$){$callback$$($error$$)})})},tdttco:$callback$$=>{setImmediate(async()=>{let $tdtts$$=await Tdttco.find($query_delete$$,{_id:1,tat_toan:1}).lean();if($tdtts$$.length>0){if($tdtts$$.filter($t$$=>$t$$.tat_toan).length>0)return $callback$$(null);$tdtts$$=$tdtts$$.map($t$$=>$t$$._id.toString());if(await Tdttco_tt.findOne({id_tdtt:{$in:$tdtts$$}}))return $callback$$()}Tdttco.deleteMany($query_delete$$,
49
- function($error$$){$callback$$($error$$)})})},tdttno_tt:$callback$$=>{setImmediate(async()=>{Tdttno_tt.deleteMany($query_delete$$,function($error$$){if($error$$)return $callback$$($error$$);$obj$$.tdttnos?async.mapSeries($obj$$.tdttnos,function($detail$$,$callback$$){setImmediate(()=>{Tdttno.updateOne({_id:$detail$$.id_tdtt},{$set:{tat_toan:!1}},function($error$$){setImmediate(()=>{if($error$$)return $callback$$($error$$);$callback$$()})})})},function($e$$){$e$$&&Logger.error($e$$);$callback$$()}):
50
- $callback$$()})})},tdttco_tt:$callback$$=>{setImmediate(async()=>{Tdttco_tt.deleteMany($query_delete$$,function($error$$){if($error$$)return $callback$$($error$$);$obj$$.tdttcos?async.mapSeries($obj$$.tdttcos,function($detail$$,$callback$$){setImmediate(()=>{Tdttco.updateOne({_id:$detail$$.id_tdtt},{$set:{tat_toan:!1}},function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})})},function($e$$){$e$$&&Logger.error($e$$);$callback$$()}):$callback$$()})})}},async function($e$$){$e$$&&
51
- Logger.error("[controllerUtiles] [deletePost]",$e$$.message||$e$$.error||$e$$);$callback$$($e$$,$obj$$)})},runWebhooks=async($ctrl$$,$obj$$,$action$$,$voucher_options$$)=>{$voucher_options$$||($voucher_options$$=(await OptionsModel.findOne({id_app:$obj$$.id_app,id_func:$ctrl$$.name},{option:1}).lean()||{}).option);if($voucher_options$$&&$voucher_options$$.option_webhooks&&($ctrl$$=$voucher_options$$.option_webhooks.find($w$$=>$w$$.action.toUpperCase()===$action$$.toUpperCase()&&$w$$.url))){$voucher_options$$=
52
- path.dirname(__dirname)+"/workers/webhook.js";if(!fs.existsSync($voucher_options$$))return Logger.error("webhook process is not exitst");global.webhookPool||(global.webhookPool=new StaticPool($voucher_options$$,0,1));global.webhookPool.exec({data:$obj$$,webhook_configs:$ctrl$$},$response$$=>{$response$$.error?Logger.error("runWebhooks",$response$$.error):Logger.info($response$$)})}},getNextSequence=async function($id_app$$,$ma_ct$$,$field$$,$callback$$,$options$$={}){var $condition_qct_qcts$$={status:!0,
53
- field:$field$$,id_app:$id_app$$,cac_ma_ct:$ma_ct$$.toLowerCase()};$options$$.id_qct&&($condition_qct_qcts$$._id=$options$$.id_qct);if($options$$.ngay_ct){$condition_qct_qcts$$.$and||($condition_qct_qcts$$.$and=[]);let $start_date$$=moment($options$$.ngay_ct).startOf("date").toDate(),$end_date$$=moment($options$$.ngay_ct).endOf("date").toDate();$condition_qct_qcts$$.$and.push({$or:[{tu_ngay:null},{tu_ngay:{$lte:$end_date$$}}]});$condition_qct_qcts$$.$and.push({$or:[{den_ngay:null},{den_ngay:{$gte:$start_date$$}}]})}$options$$.toObject&&
43
+ Tdttco_tt=global.getModel("tdttco_tt"),Tdttco=global.getModel("tdttco"),Vatra=global.getModel("vatra"),Vatvao=global.getModel("vatvao"),deletePost=async function($query_delete_user$$,$obj$$,$callback$$){$obj$$.toObject&&($obj$$=utils.convertObjectIdsToStrings($obj$$.toObject()));if(!$obj$$._id)return Logger.error("Error when delete post: obj does not have _id",$obj$$),$callback$$("Error when delete post: obj does not have _id",$obj$$);if(!getCurrentSession())return $callback$$("T\u00ednh n\u0103ng [deletePost] c\u1ea7n ch\u1ea1y trong m\u1ed9t transaction");
44
+ $query_delete_user$$={id_ct:$obj$$._id.toString()};$obj$$.id_app&&($query_delete_user$$.id_app=$obj$$.id_app);try{if(global.model_books){const $excludedBooks$$="sokho sokhonpp sokhott sokhokhongton socai socaitmp".split(" ");var $filteredBooks_removePostBook$$=global.model_books.filter($d$$=>!$excludedBooks$$.includes($d$$));for(const $bookName$$ of $filteredBooks_removePostBook$$){let $bookModel$$=mongoose.models[$bookName$$.toLowerCase()];$bookModel$$&&await $bookModel$$.deleteMany($query_delete_user$$).exec()}}$filteredBooks_removePostBook$$=
45
+ ($model$$,$data$$,$details$$)=>new Promise(($resolve$$,$reject$$)=>{(new PostBook($data$$,$details$$,$model$$,($detail$$,$cb$$)=>$cb$$($detail$$))).remove($err$$=>$err$$?$reject$$($err$$):$resolve$$())});await $filteredBooks_removePostBook$$(Sokho,$obj$$,$obj$$.details);await $filteredBooks_removePostBook$$(Sokhott,$obj$$,$obj$$.details);await $filteredBooks_removePostBook$$(Sokhokhongton,$obj$$,$obj$$.details);await $filteredBooks_removePostBook$$(global.getModel("sokhonpp"),$obj$$,$obj$$.details);
46
+ await Socai.deleteMany($query_delete_user$$).exec();await global.getModel("socaitmp").deleteMany($query_delete_user$$).exec();const $registeredBooks$$=global.model_books||[];$registeredBooks$$.includes("vatra")||await Vatra.deleteMany($query_delete_user$$).exec();$registeredBooks$$.includes("vatvao")||await Vatvao.deleteMany($query_delete_user$$).exec();let $tdttsNo$$=await Tdttno.find($query_delete_user$$,{_id:1,tat_toan:1}).lean();if($tdttsNo$$.length>0){const $isAnySettled$$=$tdttsNo$$.some($t$$=>
47
+ $t$$.tat_toan),$ids$$=$tdttsNo$$.map($t$$=>$t$$._id.toString()),$cttt$$=await Tdttno_tt.findOne({id_tdtt:{$in:$ids$$},id_app:$obj$$.id_app});$isAnySettled$$||$cttt$$||await Tdttno.deleteMany($query_delete_user$$).exec()}let $tdttsCo$$=await Tdttco.find($query_delete_user$$,{_id:1,tat_toan:1}).lean();if($tdttsCo$$.length>0){const $isAnySettled$$=$tdttsCo$$.some($t$$=>$t$$.tat_toan),$ids$$=$tdttsCo$$.map($t$$=>$t$$._id.toString()),$cttt$$=await Tdttco_tt.findOne({id_tdtt:{$in:$ids$$}});$isAnySettled$$||
48
+ $cttt$$||await Tdttco.deleteMany($query_delete_user$$).exec()}await Tdttno_tt.deleteMany($query_delete_user$$).exec();if($obj$$.tdttnos&&Array.isArray($obj$$.tdttnos))for(const $detail$$ of $obj$$.tdttnos)await Tdttno.updateOne({_id:$detail$$.id_tdtt},{$set:{tat_toan:!1}}).exec();await Tdttco_tt.deleteMany($query_delete_user$$).exec();if($obj$$.tdttcos&&Array.isArray($obj$$.tdttcos))for(const $detail$$ of $obj$$.tdttcos)await Tdttco.updateOne({_id:$detail$$.id_tdtt},{$set:{tat_toan:!1}}).exec();return $callback$$(null,
49
+ $obj$$)}catch($error$$){return Logger.error("[controllerUtils] [deletePost] Error:",$error$$.message||$error$$),$callback$$($error$$,$obj$$)}},runWebhooks=async($ctrl$$,$obj$$,$action$$,$voucher_options$$)=>{$voucher_options$$||($voucher_options$$=(await OptionsModel.findOne({id_app:$obj$$.id_app,id_func:$ctrl$$.name},{option:1}).lean()||{}).option);if($voucher_options$$&&$voucher_options$$.option_webhooks&&($ctrl$$=$voucher_options$$.option_webhooks.find($w$$=>$w$$.action.toUpperCase()===$action$$.toUpperCase()&&
50
+ $w$$.url))){$voucher_options$$=path.dirname(__dirname)+"/workers/webhook.js";if(!fs.existsSync($voucher_options$$))return Logger.error("webhook process is not exitst");global.webhookPool||(global.webhookPool=new StaticPool($voucher_options$$,0,1));global.webhookPool.exec({data:$obj$$,webhook_configs:$ctrl$$},$response$$=>{$response$$.error?Logger.error("runWebhooks",$response$$.error):Logger.info($response$$)})}},getNextSequence=async function($id_app$$,$ma_ct$$,$field$$,$callback$$,$options$$={}){var $condition_qct_qcts$$=
51
+ {status:!0,field:$field$$,id_app:$id_app$$,cac_ma_ct:$ma_ct$$.toLowerCase()};$options$$.id_qct&&($condition_qct_qcts$$._id=$options$$.id_qct);if($options$$.ngay_ct){$condition_qct_qcts$$.$and||($condition_qct_qcts$$.$and=[]);let $start_date$$=moment($options$$.ngay_ct).startOf("date").toDate(),$end_date$$=moment($options$$.ngay_ct).endOf("date").toDate();$condition_qct_qcts$$.$and.push({$or:[{tu_ngay:null},{tu_ngay:{$lte:$end_date$$}}]});$condition_qct_qcts$$.$and.push({$or:[{den_ngay:null},{den_ngay:{$gte:$start_date$$}}]})}$options$$.toObject&&
54
52
  ($options$$=utils.convertObjectIdsToStrings($options$$.toObject()));$condition_qct_qcts$$=await dmqct.find($condition_qct_qcts$$).lean();const $keys$$=Object.keys($options$$),$qct$$=$condition_qct_qcts$$.find($qct$$=>{if($qct$$.dieu_kien&&$keys$$.length>0)try{let $str_func$$=$qct$$.dieu_kien;if($str_func$$.indexOf("async ")>=0)return!1;$str_func$$.indexOf("return ")!==0&&($str_func$$=`return ${$str_func$$}`);return evalute($str_func$$,{...$options$$,master:{...$options$$},moment,numeral})}catch($e$$){return Logger.error("[controllerUtils][getNextSequence] Error find quyen chung tu",
55
53
  $e$$,$qct$$.dieu_kien),!1}else return!0});let $code$$=$qct$$?$qct$$._id.toString():$field$$,$id_qct$$=$qct$$?$qct$$._id.toString():$ma_ct$$;counter.getNextSequence($id_app$$,$id_qct$$,$code$$,async function($error$$,$rs$$){if($error$$)Logger.error("[controllerUtils][getNextSequence] auto create code for qct: ",$id_qct$$,$code$$,$error$$),$callback$$($error$$);else{if($qct$$){let $tien_to$$=$qct$$.tien_to||"";if($tien_to$$.indexOf("return ")>=0&&$tien_to$$.indexOf("async ")<0)try{$tien_to$$=evalute($tien_to$$,
56
54
  {...$options$$,moment,numeral}),$tien_to$$=$tien_to$$.toString().trim()}catch($e$$){Logger.error("[controllerUtils][getNextSequence]",$e$$)}let $hau_to$$=$qct$$.hau_to||"";if($hau_to$$.indexOf("return ")>=0&&$hau_to$$.indexOf("async ")<0)try{$hau_to$$=evalute($hau_to$$,{...$options$$,moment,numeral}),$hau_to$$=$hau_to$$.toString().trim()}catch($e$$){Logger.error("[controllerUtils][getNextSequence]",$e$$)}!$qct$$.tu_dong_reset||$qct$$.tien_to_ht==void 0||$qct$$.hau_to_ht==void 0||$qct$$.tien_to_ht==
@@ -65,10 +63,10 @@ if($query$jscomp$1_sandbox$$.collection&&$query$jscomp$1_sandbox$$.field){$query
65
63
  {};$app$$[$p$$.name]=await getData($app$$.id_app,$query$jscomp$1_sandbox$$.collection,$query$jscomp$1_sandbox$$.field,$condition$$)}}catch($e$$){$app$$[$p$$.name]=$e$$}else if($p$$.type==="E"&&$p$$.value){$condition$$=$p$$.value;$condition$$.indexOf("return ")<0&&($condition$$=`return ${$condition$$}`);if($condition$$.indexOf("async ")>=0)return $app$$[$p$$.name]="async function is not allow";$query$jscomp$1_sandbox$$={m:$obj$$,master:$obj$$,data:$obj$$,Moment:moment,Numeral:numeral,numberToWord,
66
64
  getData,round:utils.round};try{$app$$[$p$$.name]=await evalute(`return (async ()=>{
67
65
  ${$condition$$}
68
- })`,$query$jscomp$1_sandbox$$)()}catch($e$$){$app$$[$p$$.name]=$e$$.message}}else $app$$[$p$$.name]=$p$$.value})().then(()=>{$callback$$()}).catch(()=>{$callback$$()})})},function($e$jscomp$34_v$$){if($e$jscomp$34_v$$)return $callback$$($e$jscomp$34_v$$);_.extend($app$$,$obj$$);if($ctrl$$.getData4Export)$ctrl$$.getData4Export($app$$,function($error$jscomp$16_v$$){if($error$jscomp$16_v$$)return $callback$$($error$jscomp$16_v$$);for(let $key$$ in $app$$)$error$jscomp$16_v$$=$app$$[$key$$],
69
- _.isDate($error$jscomp$16_v$$)&&($app$$[$key$$+"_string"]=moment($error$jscomp$16_v$$).format("DD/MM/YYYY"));$callback$$()});else{for(let $key$$ in $app$$)$e$jscomp$34_v$$=$app$$[$key$$],_.isDate($e$jscomp$34_v$$)&&($app$$[$key$$+"_string"]=moment($e$jscomp$34_v$$).format("DD/MM/YYYY"));$callback$$()}})},cleanDataByMongooseSchema=($rawData$$,$mongooseSchema_paths$$)=>{if(!$rawData$$||typeof $rawData$$!=="object")return{};const $cleanedData$$={};$mongooseSchema_paths$$=$mongooseSchema_paths$$.paths;
70
- for(const $key$$ in $rawData$$){if(!$mongooseSchema_paths$$[$key$$])continue;var $parsedDate_val$$=$rawData$$[$key$$];if($parsedDate_val$$===void 0||$parsedDate_val$$===null)continue;const $schemaType$$=$mongooseSchema_paths$$[$key$$];var $instanceType_numVal$$=$schemaType$$.instance;if(typeof $parsedDate_val$$!=="object"||Array.isArray($parsedDate_val$$)||$parsedDate_val$$ instanceof Date||!Object.keys($parsedDate_val$$).some($k$$=>$k$$.startsWith("$")))switch($instanceType_numVal$$){case "String":typeof $parsedDate_val$$!==
71
- "string"&&($parsedDate_val$$=String($parsedDate_val$$));$parsedDate_val$$=$parsedDate_val$$.trim();$cleanedData$$[$key$$]=$parsedDate_val$$;break;case "Number":typeof $parsedDate_val$$==="string"&&($parsedDate_val$$=$parsedDate_val$$.replace(/,/g,""));$instanceType_numVal$$=Number($parsedDate_val$$);isNaN($instanceType_numVal$$)||$parsedDate_val$$===""||($cleanedData$$[$key$$]=$instanceType_numVal$$);break;case "Boolean":$cleanedData$$[$key$$]=$parsedDate_val$$===!0||$parsedDate_val$$==="true"||$parsedDate_val$$===
72
- 1||$parsedDate_val$$==="1";break;case "Date":$parsedDate_val$$!==""&&($parsedDate_val$$=new Date($parsedDate_val$$),isNaN($parsedDate_val$$.getTime())||($cleanedData$$[$key$$]=$parsedDate_val$$));break;case "ObjectID":case "ObjectId":typeof $parsedDate_val$$==="string"&&$parsedDate_val$$.trim()!==""&&($cleanedData$$[$key$$]=$parsedDate_val$$.trim());break;case "Array":Array.isArray($parsedDate_val$$)||($parsedDate_val$$=$parsedDate_val$$!==""?[$parsedDate_val$$]:[]);$cleanedData$$[$key$$]=$schemaType$$.schema?
73
- $parsedDate_val$$.filter($item$$=>typeof $item$$!=="object"||$item$$===null||Array.isArray($item$$)||Object.keys($item$$).length===0?!1:!0).map($item$$=>cleanDataByMongooseSchema($item$$,$schemaType$$.schema)):$parsedDate_val$$.filter($v$$=>$v$$!==""&&$v$$!==null);break;default:$cleanedData$$[$key$$]=$parsedDate_val$$}}return $cleanedData$$};
74
- module.exports={createIdRef,postData,asyncPostData,pushNotification,ERRORS,isExists,getData,asyncBodyToJson,bodyToJson,deleteEmptyArray,fields_sync_master_detail,runWebhooks,deletePost,getNextSequence,asyncGetNextSequence,checkReference,getParameters,prepareParameters,cleanDataByMongooseSchema};
66
+ })`,$query$jscomp$1_sandbox$$)()}catch($e$$){$app$$[$p$$.name]=$e$$.message}}else $app$$[$p$$.name]=$p$$.value})().then(()=>{$callback$$()}).catch(()=>{$callback$$()})})},function($e$jscomp$25_v$$){if($e$jscomp$25_v$$)return $callback$$($e$jscomp$25_v$$);_.extend($app$$,$obj$$);if($ctrl$$.getData4Export)$ctrl$$.getData4Export($app$$,function($error$jscomp$7_v$$){if($error$jscomp$7_v$$)return $callback$$($error$jscomp$7_v$$);for(let $key$$ in $app$$)$error$jscomp$7_v$$=$app$$[$key$$],
67
+ _.isDate($error$jscomp$7_v$$)&&($app$$[$key$$+"_string"]=moment($error$jscomp$7_v$$).format("DD/MM/YYYY"));$callback$$()});else{for(let $key$$ in $app$$)$e$jscomp$25_v$$=$app$$[$key$$],_.isDate($e$jscomp$25_v$$)&&($app$$[$key$$+"_string"]=moment($e$jscomp$25_v$$).format("DD/MM/YYYY"));$callback$$()}})},cleanDataByMongooseSchema=($rawData$$,$mongooseSchema_paths$$)=>{if(!$rawData$$||typeof $rawData$$!=="object")return{};const $cleanedData$$={};$mongooseSchema_paths$$=$mongooseSchema_paths$$.paths;
68
+ for(const $key$$ in $rawData$$){if(!$mongooseSchema_paths$$[$key$$])continue;var $parsedDate_val$$=$rawData$$[$key$$];const $schemaType$$=$mongooseSchema_paths$$[$key$$];var $instanceType_numVal$$=$schemaType$$.instance;if($parsedDate_val$$!==void 0){if($parsedDate_val$$===null)if($instanceType_numVal$$==="String")$parsedDate_val$$="";else{Logger.warn("[controllerUtiles][cleanDataByMongooseSchema]",{instanceType:$instanceType_numVal$$,val:$parsedDate_val$$});continue}if(typeof $parsedDate_val$$!==
69
+ "object"||Array.isArray($parsedDate_val$$)||$parsedDate_val$$ instanceof Date||!Object.keys($parsedDate_val$$).some($k$$=>$k$$.startsWith("$")))switch($instanceType_numVal$$){case "String":typeof $parsedDate_val$$!=="string"&&($parsedDate_val$$=String($parsedDate_val$$));$parsedDate_val$$=$parsedDate_val$$.trim();$cleanedData$$[$key$$]=$parsedDate_val$$;break;case "Number":typeof $parsedDate_val$$==="string"&&($parsedDate_val$$=$parsedDate_val$$.replace(/,/g,""));$instanceType_numVal$$=Number($parsedDate_val$$);
70
+ isNaN($instanceType_numVal$$)||$parsedDate_val$$===""||($cleanedData$$[$key$$]=$instanceType_numVal$$);break;case "Boolean":$cleanedData$$[$key$$]=$parsedDate_val$$===!0||$parsedDate_val$$==="true"||$parsedDate_val$$===1||$parsedDate_val$$==="1";break;case "Date":$parsedDate_val$$!==""&&($parsedDate_val$$=new Date($parsedDate_val$$),isNaN($parsedDate_val$$.getTime())||($cleanedData$$[$key$$]=$parsedDate_val$$));break;case "ObjectID":case "ObjectId":typeof $parsedDate_val$$==="string"&&$parsedDate_val$$.trim()!==
71
+ ""&&($cleanedData$$[$key$$]=$parsedDate_val$$.trim());break;case "Array":Array.isArray($parsedDate_val$$)||($parsedDate_val$$=$parsedDate_val$$!==""?[$parsedDate_val$$]:[]);$cleanedData$$[$key$$]=$schemaType$$.schema?$parsedDate_val$$.filter($item$$=>typeof $item$$!=="object"||$item$$===null||Array.isArray($item$$)||Object.keys($item$$).length===0?!1:!0).map($item$$=>cleanDataByMongooseSchema($item$$,$schemaType$$.schema)):$parsedDate_val$$.filter($v$$=>$v$$!==""&&$v$$!==null);break;default:$cleanedData$$[$key$$]=
72
+ $parsedDate_val$$}}}return $cleanedData$$};module.exports={createIdRef,postData,asyncPostData,pushNotification,ERRORS,isExists,getData,asyncBodyToJson,bodyToJson,deleteEmptyArray,fields_sync_master_detail,runWebhooks,deletePost,getNextSequence,asyncGetNextSequence,checkReference,getParameters,prepareParameters,cleanDataByMongooseSchema};
@@ -4,33 +4,33 @@ $listinfo_code$$!=$ctrl$$.name){Logger.warn(`[createHandler] listinfo_code (${$l
4
4
  $listinfo_code$$=$ctrl$$.name)):(Logger.warn(`[createHandler] listinfo_code (${$listinfo_code$$}) kh\u00f4ng t\u1ed3n t\u1ea1i. S\u1eeda d\u1ee5ng controller name (${$ctrl$$.name}) cho listinfo_code`),$listinfo_code$$=$ctrl$$.name)}$listinfo_code$$=$listinfo_code$$||$ctrl$$.name;$req$$.headers=$req$$.headers||{};$req$$.headers["Listinfo-Code"]=$listinfo_code$$;$data$$.listinfo_code=$listinfo_code$$;try{const $model$$=$ctrl$$.model;let $voucher_options$$=(await global.getModel("options").findOne({id_app:$user$$.current_id_app,
5
5
  id_func:$listinfo_code$$.toLowerCase()}).lean()||{}).option;$voucher_options$$||$ctrl$$.name===$listinfo_code$$||($voucher_options$$=(await global.getModel("options").findOne({id_app:$user$$.current_id_app,id_func:$ctrl$$.name}).lean()||{}).option);const $schema_paths$$=$model$$.schema.paths;let $v_data$$;try{$v_data$$=await asyncBodyToJson($data$$,$ctrl$$,$user$$.current_id_app,$voucher_options$$)}catch($e$$){return $callback$$($e$$.message||$e$$.error||$e$$)}$schema_paths$$.ma_ct&&$ctrl$$.options.isVoucher&&
6
6
  ($v_data$$.ma_ct=$ctrl$$.name.toUpperCase());delete $v_data$$.session_created;delete $v_data$$.session_updated;$req$$&&$schema_paths$$.session_created&&($v_data$$.session_created=($req$$.cookies||{}).uid);if($ctrl$$.options.requireRecaptchaToken&&configs.GOOGLE_RECAPTCHA_SECRET_KEY){if(!$v_data$$["g-recaptcha-response"])return $callback$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u g-recaptcha-response");try{await permission.verifyReCaptcha($v_data$$["g-recaptcha-response"])}catch($e$$){return $callback$$($e$$.message||
7
- $e$$.error||$e$$)}}let $requireOtp$$=$ctrl$$.options.requireOtp;$requireOtp$$&&_.isFunction($requireOtp$$)&&($requireOtp$$=$requireOtp$$($v_data$$,{action:$action$$,user:$user$$}));if($requireOtp$$&&$action$$!="import")try{await permission.verifyOTP($user$$.email,$v_data$$["otp-id"],$v_data$$["otp-code"])}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error||$e$$,code:ERRORS.ERR_VERIFY_OTP})}if($ctrl$$.dynamicCreating)try{$v_data$$=await new Promise(($resolve$$,$reject$$)=>{try{$ctrl$$.dynamicCreating($user$$,
8
- $v_data$$,function($error$$,$v_data$$){if($error$$)return $reject$$($error$$);$resolve$$($v_data$$)},{listinfo_code:$listinfo_code$$,req:$req$$})}catch($e$$){return $reject$$($e$$)}})}catch($e$$){return $callback$$($e$$.message||$e$$.error||$e$$)}$v_data$$=cleanDataByMongooseSchema($v_data$$,$model$$.schema);const $obj$$=new $model$$;$schema_paths$$.exfields&&($obj$$.exfields=$v_data$$.exfields||{});for(let $f$$ in $v_data$$)$schema_paths$$[$f$$]&&($obj$$.set($f$$,$v_data$$[$f$$]),$f$$!=="exfields"||
9
- $obj$$.exfields||($obj$$.exfields={}));$schema_paths$$.id_app&&($obj$$.id_app=$user$$.current_id_app);const $checkVoucherNumber$$=$callback$$=>{$model$$.schema.paths.ngay_ct&&$obj$$.ngay_ct?setImmediate(()=>{if($voucher_options$$&&($voucher_options$$?.trang_thai_create_voucher_numbers?.length==0||$voucher_options$$?.trang_thai_create_voucher_numbers?.indexOf($obj$$.trang_thai)>=0)&&$voucher_options$$.check_so_ct&&$voucher_options$$.check_so_ct!=="0"){let $query_check$$={id_app:$obj$$.id_app,so_ct:$obj$$.so_ct,
10
- listinfo_code:$listinfo_code$$},$tu_ngay$$,$den_ngay$$;switch($voucher_options$$.check_so_ct){case "1":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("day").toDate();$den_ngay$$=moment($obj$$.ngay_ct).endOf("day").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "2":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("month").toDate();$den_ngay$$=moment($obj$$.ngay_ct).endOf("month").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "3":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("quarter").toDate();
11
- $den_ngay$$=moment($obj$$.ngay_ct).endOf("quarter").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "8":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("year").toDate(),$den_ngay$$=moment($obj$$.ngay_ct).endOf("year").toDate(),$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$}}$model$$.findOne($query_check$$,{so_ct:1}).lean().then($rs$$=>{setImmediate(()=>{if($rs$$){let $msgError$$="S\u1ed1 ch\u1ee9ng t\u1eeb "+$obj$$.so_ct+" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ch\u1ecdn m\u1ed9t s\u1ed1 ch\u1ee9ng t\u1eeb kh\u00e1c";
12
- if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)});else $callback$$($msgError$$)}else $callback$$()})}).catch($e$$=>{Logger.error($e$$)})}else $callback$$()}):$callback$$()},$File$$=global.getModel("file"),$Support$$=global.getModel("support");async.waterfall([function($callback$$){setImmediate(async function(){let $notNeedRight$$=await $ctrl$$.notNeedRight($user$$,{action:$action$$,obj:$obj$$});
13
- permission.hasRight($obj$$.id_app,$user$$.email,$ctrl$$.module,$action$$,function($error$$,$hr$$,$c_app$$){setImmediate(()=>{if($error$$||!$hr$$)return $error$$=$error$$||"",$callback$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||ERRORS.ERR_NOT_PERMIT_CODE});$ctrl$$.checkData($c_app$$,$obj$$,$e$$=>{if($e$$)return $callback$$($e$$);$ctrl$$.creating?$ctrl$$.creating($user$$,$obj$$,function($error$$,$_obj$$){if($error$$)return $callback$$($error$$);for(let $f$$ of Object.keys($schema_paths$$))$error$$=
14
- $_obj$$.get?$_obj$$.get($f$$):$_obj$$[$f$$],$obj$$.set($f$$,$error$$);$callback$$(null,$obj$$)},{data:$data$$,action:$action$$}):$callback$$(null,$obj$$)})})},{data:$obj$$,notNeedRight:$notNeedRight$$,listinfo_code:$listinfo_code$$})})},($obj$$,$callback$$)=>{setImmediate(()=>{let $ma_ct$$=$listinfo_code$$||$ctrl$$.name;const $condition_qct$$={status:!0,id_app:$obj$$.id_app,cac_ma_ct:$ma_ct$$.toLowerCase()};let $_options_qct$$;$_options_qct$$=$obj$$.toObject?convertObjectIdsToStrings($obj$$.toObject()):
15
- {...$obj$$};let $keys_options$$=Object.keys($_options_qct$$);global.getModel("dmqct").find($condition_qct$$).lean().then($rs$$=>{setImmediate(()=>{let $qcts$$=($rs$$||[]).filter($qct$$=>$qct$$.field!=="so_ct"&&!$obj$$[$qct$$.field]&&$model$$.schema.paths[$qct$$.field]);$qcts$$=$qcts$$.filter($qct$$=>{if($qct$$.dieu_kien&&$keys_options$$.length>0)try{let $str_func$$=$qct$$.dieu_kien;$str_func$$.indexOf("return ")!==0&&($str_func$$=`return ${$str_func$$}`);return $str_func$$.indexOf("async ")>0?!1:
16
- evalute($str_func$$,{...$_options_qct$$,master:{...$_options_qct$$},moment,numeral})}catch($e$$){return Logger.error("Error find quyen chung tu",$e$$.message,$qct$$.dieu_kien),!1}else return!0});async.mapSeries($qcts$$,($qct$$,$cb$$)=>{let $field$$=$qct$$.field,$_options$$={...$_options_qct$$};$_options$$.id_qct=$qct$$._id.toString();let $count$$=0;async.whilst(function($cb$$){$cb$$(null,$count$$<10)},function($callback$$){getNextSequence($obj$$.id_app,$ma_ct$$,$field$$,function($e$$,$rs$$){setImmediate(async()=>
17
- {if($e$$)return $callback$$($e$$);$obj$$[$field$$]=$rs$$[$field$$];$qct$$.check_duplicate?await $model$$.findOne({id_app:$obj$$.id_app,[$field$$]:$obj$$[$field$$]},{[$field$$]:1}).lean()?$count$$>=9?$callback$$(`Kh\u00f4ng th\u1ec3 t\u1ef1 \u0111\u1ed9ng t\u1ea1o gi\u00e1 tr\u1ecb cho field ${$field$$}. Gi\u00e1 tr\u1ecb "${$obj$$[$field$$]}" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ki\u1ec3m tra l\u1ea1i th\u00f4ng s\u1ed1 quy\u1ec3n ch\u1ee9ng t\u1eeb sao cho gi\u00e1 tr\u1ecb s\u1ebd t\u1ea1o ra kh\u00f4ng b\u1ecb tr\u00f9ng v\u1edbi gi\u00e1 tr\u1ecb \u0111\u00e3 c\u00f3`):
18
- ($count$$++,$callback$$()):($count$$=99999,$callback$$()):($count$$=99999,$callback$$())})},$_options$$)},function($err$$){$cb$$($err$$)})},$e$$=>{$callback$$($e$$)})})}).catch($e$$=>{Logger.error($e$$)})})},$callback$$=>{setImmediate(function(){if((!$voucher_options$$?.trang_thai_create_voucher_numbers||$voucher_options$$?.trang_thai_create_voucher_numbers.length==0||$voucher_options$$?.trang_thai_create_voucher_numbers?.indexOf($obj$$.trang_thai)>=0)&&$model$$.schema.paths.so_ct)if($obj$$.so_ct&&
19
- $obj$$.so_ct.toUpperCase()!==($listinfo_code$$||$ctrl$$.name).toUpperCase()&&$obj$$.so_ct.toUpperCase()!==$ctrl$$.name.toUpperCase())$checkVoucherNumber$$($error$$=>{$callback$$($error$$)});else{let $count$$=0;async.whilst(function($cb$$){$cb$$(null,$count$$<100)},function($callback$$){getNextSequence($obj$$.id_app,$listinfo_code$$||$ctrl$$.name,"so_ct",function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$obj$$.so_ct=$rs$$.so_ct;$checkVoucherNumber$$($error$$=>{$error$$?$count$$>=99?$callback$$($error$$):
20
- ($count$$++,$callback$$()):($count$$=99999,$callback$$())})},$obj$$)},function($err$$){$callback$$($err$$)})}else $callback$$()})},function($callback$$){setImmediate(async()=>{if($model$$.schema.paths.ma_dvcs&&$ctrl$$.name!=="dvcs")try{if($obj$$.ma_dvcs)if(global.mongoose.Types.ObjectId.isValid($obj$$.ma_dvcs)){let $_id_dvcs$$=global.mongoose.Types.ObjectId($obj$$.ma_dvcs);await global.getModel("dvcs").findOne({_id:$_id_dvcs$$})?$callback$$():global.getModel("dvcs").create({_id:$_id_dvcs$$,id_app:$obj$$.id_app,
21
- ma_dvcs:"IMPORTED",ten_dvcs:"Imported"},$e$$=>{$e$$&&Logger.error("Can't import dvcs",$e$$);$callback$$()})}else $callback$$();else{let $dvcs$$=await global.getModel("dvcs").findOne({id_app:$obj$$.id_app,status:!0}).inTxn().lean();$dvcs$$||($dvcs$$=await global.getModel("dvcs").create({id_app:$obj$$.id_app,ma_dvcs:"CTY",ten_dvcs:"C\u00f4ng ty"}),console.log("[createHandler] t\u1ef1 t\u1ea1o dvcs m\u1edbi",$dvcs$$));$obj$$.ma_dvcs=$dvcs$$._id.toString();$callback$$()}}catch($e$$){Logger.error("[createHandler] t\u1ea1o \u0111\u01a1n v\u1ecb c\u01a1 s\u1edf",
7
+ $e$$.error||$e$$)}}let $requireOtp$$=$ctrl$$.options.requireOtp;$requireOtp$$&&_.isFunction($requireOtp$$)&&($requireOtp$$=$requireOtp$$($v_data$$,{action:$action$$,user:$user$$}));if($requireOtp$$&&$action$$!="import")try{await permission.verifyOTP($user$$.email,$v_data$$["otp-id"],$v_data$$["otp-code"])}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error||$e$$,code:ERRORS.ERR_VERIFY_OTP})}$schema_paths$$.id_app&&($v_data$$.id_app=$user$$.current_id_app);if($ctrl$$.dynamicCreating)try{$v_data$$=
8
+ await new Promise(($resolve$$,$reject$$)=>{try{$ctrl$$.dynamicCreating($user$$,$v_data$$,function($error$$,$v_data$$){if($error$$)return $reject$$($error$$);$resolve$$($v_data$$)},{listinfo_code:$listinfo_code$$,req:$req$$})}catch($e$$){return $reject$$($e$$)}})}catch($e$$){return $callback$$($e$$.message||$e$$.error||$e$$)}$v_data$$=cleanDataByMongooseSchema($v_data$$,$model$$.schema);const $obj$$=new $model$$;$schema_paths$$.exfields&&($obj$$.exfields=$v_data$$.exfields||{});for(let $f$$ in $v_data$$)$schema_paths$$[$f$$]&&
9
+ ($obj$$.set($f$$,$v_data$$[$f$$]),$f$$!=="exfields"||$obj$$.exfields||($obj$$.exfields={}));$schema_paths$$.id_app&&($obj$$.id_app=$user$$.current_id_app);const $checkVoucherNumber$$=$callback$$=>{if($model$$.schema.paths.ngay_ct&&$obj$$.ngay_ct)if($voucher_options$$&&($voucher_options$$?.trang_thai_create_voucher_numbers?.length==0||$voucher_options$$?.trang_thai_create_voucher_numbers?.indexOf($obj$$.trang_thai)>=0)&&$voucher_options$$.check_so_ct&&$voucher_options$$.check_so_ct!=="0"){let $query_check$$=
10
+ {id_app:$obj$$.id_app,so_ct:$obj$$.so_ct,listinfo_code:$listinfo_code$$},$tu_ngay$$,$den_ngay$$;switch($voucher_options$$.check_so_ct){case "1":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("day").toDate();$den_ngay$$=moment($obj$$.ngay_ct).endOf("day").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "2":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("month").toDate();$den_ngay$$=moment($obj$$.ngay_ct).endOf("month").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};
11
+ break;case "3":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("quarter").toDate();$den_ngay$$=moment($obj$$.ngay_ct).endOf("quarter").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "8":$tu_ngay$$=moment($obj$$.ngay_ct).startOf("year").toDate(),$den_ngay$$=moment($obj$$.ngay_ct).endOf("year").toDate(),$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$}}$model$$.findOne($query_check$$,{so_ct:1}).lean().then($rs$$=>{if($rs$$){let $msgError$$="S\u1ed1 ch\u1ee9ng t\u1eeb "+
12
+ $obj$$.so_ct+" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ch\u1ecdn m\u1ed9t s\u1ed1 ch\u1ee9ng t\u1eeb kh\u00e1c";if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)});else $callback$$($msgError$$)}else $callback$$()}).catch($e$$=>{Logger.error($e$$)})}else $callback$$();else $callback$$()},$File$$=global.getModel("file"),$Support$$=global.getModel("support");async.waterfall([function($callback$$){setImmediate(async function(){let $notNeedRight$$=
13
+ await $ctrl$$.notNeedRight($user$$,{action:$action$$,obj:$obj$$});permission.hasRight($obj$$.id_app,$user$$.email,$ctrl$$.module,$action$$,function($error$$,$hr$$,$c_app$$){setImmediate(()=>{if($error$$||!$hr$$)return $error$$=$error$$||"",$callback$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||ERRORS.ERR_NOT_PERMIT_CODE});$ctrl$$.checkData($c_app$$,$obj$$,$e$$=>{if($e$$)return $callback$$($e$$);$ctrl$$.creating?$ctrl$$.creating($user$$,$obj$$,function($error$$,$_obj$$){if($error$$)return $callback$$($error$$);
14
+ for(let $f$$ of Object.keys($schema_paths$$))$error$$=$_obj$$.get?$_obj$$.get($f$$):$_obj$$[$f$$],$obj$$.set($f$$,$error$$);$callback$$(null,$obj$$)},{data:$data$$,action:$action$$}):$callback$$(null,$obj$$)})})},{data:$obj$$,notNeedRight:$notNeedRight$$,listinfo_code:$listinfo_code$$})})},($obj$$,$callback$$)=>{setImmediate(()=>{let $ma_ct$$=$listinfo_code$$||$ctrl$$.name;const $condition_qct$$={status:!0,id_app:$obj$$.id_app,cac_ma_ct:$ma_ct$$.toLowerCase()};let $_options_qct$$;$_options_qct$$=
15
+ $obj$$.toObject?convertObjectIdsToStrings($obj$$.toObject()):{...$obj$$};let $keys_options$$=Object.keys($_options_qct$$);global.getModel("dmqct").find($condition_qct$$).lean().then($rs$$=>{setImmediate(()=>{let $qcts$$=($rs$$||[]).filter($qct$$=>$qct$$.field!=="so_ct"&&!$obj$$[$qct$$.field]&&$model$$.schema.paths[$qct$$.field]);$qcts$$=$qcts$$.filter($qct$$=>{if($qct$$.dieu_kien&&$keys_options$$.length>0)try{let $str_func$$=$qct$$.dieu_kien;$str_func$$.indexOf("return ")!==0&&($str_func$$=`return ${$str_func$$}`);
16
+ return $str_func$$.indexOf("async ")>0?!1:evalute($str_func$$,{...$_options_qct$$,master:{...$_options_qct$$},moment,numeral})}catch($e$$){return Logger.error("Error find quyen chung tu",$e$$.message,$qct$$.dieu_kien),!1}else return!0});async.mapSeries($qcts$$,($qct$$,$cb$$)=>{let $field$$=$qct$$.field,$_options$$={...$_options_qct$$};$_options$$.id_qct=$qct$$._id.toString();let $count$$=0;async.whilst(function($cb$$){$cb$$(null,$count$$<10)},function($callback$$){getNextSequence($obj$$.id_app,$ma_ct$$,
17
+ $field$$,function($e$$,$rs$$){setImmediate(async()=>{if($e$$)return $callback$$($e$$);$obj$$[$field$$]=$rs$$[$field$$];$qct$$.check_duplicate?await $model$$.findOne({id_app:$obj$$.id_app,[$field$$]:$obj$$[$field$$]},{[$field$$]:1}).lean()?$count$$>=9?$callback$$(`Kh\u00f4ng th\u1ec3 t\u1ef1 \u0111\u1ed9ng t\u1ea1o gi\u00e1 tr\u1ecb cho field ${$field$$}. Gi\u00e1 tr\u1ecb "${$obj$$[$field$$]}" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ki\u1ec3m tra l\u1ea1i th\u00f4ng s\u1ed1 quy\u1ec3n ch\u1ee9ng t\u1eeb sao cho gi\u00e1 tr\u1ecb s\u1ebd t\u1ea1o ra kh\u00f4ng b\u1ecb tr\u00f9ng v\u1edbi gi\u00e1 tr\u1ecb \u0111\u00e3 c\u00f3`):
18
+ ($count$$++,$callback$$()):($count$$=99999,$callback$$()):($count$$=99999,$callback$$())})},$_options$$)},function($err$$){$cb$$($err$$)})},$e$$=>{$callback$$($e$$)})})}).catch($e$$=>{Logger.error($e$$)})})},$callback$$=>{if((!$voucher_options$$?.trang_thai_create_voucher_numbers||$voucher_options$$?.trang_thai_create_voucher_numbers.length==0||$voucher_options$$?.trang_thai_create_voucher_numbers?.indexOf($obj$$.trang_thai)>=0)&&$model$$.schema.paths.so_ct)if($obj$$.so_ct&&$obj$$.so_ct.toUpperCase()!==
19
+ ($listinfo_code$$||$ctrl$$.name).toUpperCase()&&$obj$$.so_ct.toUpperCase()!==$ctrl$$.name.toUpperCase())$checkVoucherNumber$$($error$$=>{$callback$$($error$$)});else{let $count$$=0;async.whilst(function($cb$$){$cb$$(null,$count$$<100)},function($callback$$){getNextSequence($obj$$.id_app,$listinfo_code$$||$ctrl$$.name,"so_ct",function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$obj$$.so_ct=$rs$$.so_ct;$checkVoucherNumber$$($error$$=>{$error$$?$count$$>=99?$callback$$($error$$):($count$$++,$callback$$()):
20
+ ($count$$=99999,$callback$$())})},$obj$$)},function($err$$){$callback$$($err$$)})}else $callback$$()},function($callback$$){setImmediate(async()=>{if($model$$.schema.paths.ma_dvcs&&$ctrl$$.name!=="dvcs")try{if($obj$$.ma_dvcs)if(global.mongoose.Types.ObjectId.isValid($obj$$.ma_dvcs)){let $_id_dvcs$$=global.mongoose.Types.ObjectId($obj$$.ma_dvcs);await global.getModel("dvcs").findOne({_id:$_id_dvcs$$}).lean()?$callback$$():global.getModel("dvcs").create({_id:$_id_dvcs$$,id_app:$obj$$.id_app,ma_dvcs:"IMPORTED",
21
+ ten_dvcs:"Imported"},$e$$=>{$e$$&&Logger.error("Can't import dvcs",$e$$);$callback$$()})}else $callback$$();else{let $dvcs$$=await global.getModel("dvcs").findOne({id_app:$obj$$.id_app,status:!0}).inTxn().lean();$dvcs$$||($dvcs$$=await global.getModel("dvcs").create({id_app:$obj$$.id_app,ma_dvcs:"CTY",ten_dvcs:"C\u00f4ng ty"}),console.log("[createHandler] t\u1ef1 t\u1ea1o dvcs m\u1edbi",$dvcs$$));$obj$$.ma_dvcs=$dvcs$$._id.toString();$callback$$()}}catch($e$$){Logger.error("[createHandler] t\u1ea1o \u0111\u01a1n v\u1ecb c\u01a1 s\u1edf",
22
22
  $e$$),$callback$$("Kh\u00f4ng th\u1ec3 t\u1ea1o \u0111\u01a1n v\u1ecb c\u01a1 s\u1edf m\u1eb7c \u0111\u1ecbnh")}else $callback$$()})},$callback$$=>{$ctrl$$.validating||($ctrl$$.validating=($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)});$ctrl$$.validating($user$$,$obj$$,$e$$=>{if($e$$)return $callback$$($e$$);setImmediate(()=>{$obj$$.user_created=$action$$=="import"?$obj$$.user_created||$user$$.email:$user$$.email;$obj$$.user_updated=$user$$.email;$obj$$.date_created=new Date;$obj$$.date_updated=
23
23
  new Date;validate($obj$$,async $error$$=>{setImmediate(async()=>{if($error$$){let $msgError$$=$error$$;if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)});else $callback$$($msgError$$)}else{if($id_be_supply_by_user$$&&global.mongoose.Types.ObjectId.isValid($id_be_supply_by_user$$)){let $_id$$=global.mongoose.Types.ObjectId($id_be_supply_by_user$$);await $model$$.findOne({_id:$_id$$},{_id:1})||
24
24
  ($obj$$._id=$_id$$)}$callback$$()}})},$voucher_options$$)})},{action:$action$$})},function($callback$$){isExists($model$$,$ctrl$$.unique,$obj$$,$ctrl$$.replaceIfExists,async($error$$,$kq$$)=>{setImmediate(async()=>{if($error$$||$kq$$){let $msgError$$=$error$$||ERRORS.ERR_ALREADY_EXIST;if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$({error:$msgError$$,code:ERRORS.ERR_ALREADY_EXIST_CODE})});else $callback$$({error:$msgError$$,
25
25
  code:ERRORS.ERR_ALREADY_EXIST_CODE})}else{for(let $k$$ in $ctrl$$.keyValues)$obj$$[$k$$]=$ctrl$$.keyValues[$k$$];Object.keys($model$$.schema.paths).filter($model_path$$=>$obj$$[$model_path$$]&&_.isArray($obj$$[$model_path$$])).forEach($model_path$$=>{$model$$.schema.paths[$model_path$$].schema&&$model$$.schema.paths[$model_path$$].schema.paths&&Object.keys($model$$.schema.paths[$model_path$$].schema.paths).filter($path$$=>$path$$!=="line"&&$path$$!=="_id"&&$path$$!=="__v"&&fields_sync_master_detail.indexOf($path$$)>=
26
26
  0).forEach($path$$=>{$obj$$[$path$$]&&$obj$$[$model_path$$].filter($detail$$=>!$detail$$[$path$$]).forEach($detail$$=>{$detail$$[$path$$]=$obj$$[$path$$]})})});await createIdRef($model$$,$obj$$);if($ctrl$$.saving)try{await $ctrl$$.saving($user$$,$obj$$,$action$$)}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error||$e$$})}$ctrl$$.emit("saving",$obj$$);$obj$$.save(function($error$$,$obj_created$$){setImmediate(async()=>{if($error$$){if($ctrl$$.options.onErrorSave)$ctrl$$.options.onErrorSave($user$$,
27
27
  $obj$$,$error$$,$action$$);let $msgErrors$$=[];for(let $k$$ in $error$$.errors)$msgErrors$$.push($error$$.errors[$k$$].message);$msgErrors$$.length==0&&($msgErrors$$=$error$$.message);$msgErrors$$||=JSON.stringify($error$$);if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$$,$obj$$,$e$$=>{$e$$&&Logger.error("onErrorCreating",$e$$);$callback$$($msgErrors$$)});else $callback$$($msgErrors$$)}else $ctrl$$.populate&&($obj_created$$=$model$$.findById($obj_created$$._id).inTxn(),$obj_created$$=
28
- await $ctrl$$.populate($obj_created$$)),postData($obj_created$$,$ctrl$$,function($msgErrors$$){if($msgErrors$$)if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$$,$obj$$,$e$$=>{$e$$&&($msgErrors$$=$msgErrors$$+"\n"+$e$$);$callback$$($msgErrors$$)});else $callback$$($msgErrors$$);else{const $obj_created_cv$$=convertObjectIdsToStrings($obj_created$$.toObject());onAfterCommit(async()=>{$ctrl$$.emit("saved",$obj_created$$);$ctrl$$.emit("created",$obj_created$$);global.getModel("customer").updateActives&&
29
- global.getModel("customer").updateActives($obj_created$$);$req$$&&setImmediate(()=>{global.getModel("log").create({id_app:$user$$.current_id_app,id_func:$ctrl$$.name,action:$action$$.toUpperCase(),data:{id:$obj_created_cv$$._id.toString(),data:$obj_created_cv$$}},$user$$.email,$req$$.user_agent,$req$$)});runWebhooks($ctrl$$,$obj_created_cv$$,$action$$.toUpperCase(),$voucher_options$$);await $ctrl$$.cacheData($obj_created_cv$$,void 0,$action$$)});$callback$$(null,$obj_created_cv$$)}},{req:$req$$})})})}})})},
30
- function($obj$$,$callback$$){setImmediate(async()=>{let $co_gia_tri_tam$$=!1;if($obj$$.exfields&&$obj$$.exfields.__files__){for(let $_file$$ of $obj$$.exfields.__files__)await $File$$.updateOne({_id:$_file$$._id},{id_link:$obj$$._id.toString(),collection_link:$ctrl$$.collection_name});delete $obj$$.exfields.__files__;$co_gia_tri_tam$$=!0}if($obj$$.exfields&&$obj$$.exfields.__supports__){for(let $_support$$ of $obj$$.exfields.__supports__)await $Support$$.updateOne({_id:$_support$$._id},{id_link:$obj$$._id.toString(),
31
- collection_link:$ctrl$$.collection_name});delete $obj$$.exfields.__supports__;$co_gia_tri_tam$$=!0}$co_gia_tri_tam$$&&await $model$$.updateOne({_id:$obj$$._id},{exfields:$obj$$.exfields});$ctrl$$.created?$ctrl$$.created($user$$,$obj$$,function($error$$,$rs$$){if($error$$)return $callback$$($error$$);$ctrl$$.dynamicCreated?$ctrl$$.dynamicCreated($user$$,$rs$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$rs$$)},{listinfo_code:$listinfo_code$$}):$callback$$(null,$rs$$)}):
32
- $ctrl$$.dynamicCreated?$ctrl$$.dynamicCreated($user$$,$obj$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$$)},{listinfo_code:$listinfo_code$$}):$callback$$(null,$obj$$)})},function($obj$$,$callback$$){$ctrl$$.requestApprove($user$$.current_app_info,$user$$,$obj$$,$callback$$,$voucher_options$$)},function($obj_created_cv$$,$callback$$){$action$$==="import"||$req$$&&($req$$.query||{}).return_data==0?$callback$$(null,{_id:$obj_created_cv$$._id.toString()}):($obj_created_cv$$.collection_name=
33
- $ctrl$$.collection_name,$ctrl$$.onView($user$$,[$obj_created_cv$$],($error$jscomp$13_html_rs$$,$viewValues$$)=>{if($error$jscomp$13_html_rs$$)return $callback$$($error$jscomp$13_html_rs$$);$error$jscomp$13_html_rs$$=$viewValues$$?$viewValues$$[0]:$obj_created_cv$$;$req$$&&$req$$.uploadFile?($error$jscomp$13_html_rs$$="<html><title>OK</title><body>"+JSON.stringify($error$jscomp$13_html_rs$$)+"</body></html>",$callback$$(null,$error$jscomp$13_html_rs$$)):$callback$$(null,$error$jscomp$13_html_rs$$)},
34
- {req:$req$$}))}],($e$$,$obj_created$$)=>{$e$$?(Logger.error($e$$),$callback$$($e$$)):($e$$=$model$$.collection.name,$user$$.current_id_app&&($e$$+=$user$$.current_id_app),delete global.cacheDatas[$e$$],$callback$$(null,{obj_created:$obj_created$$}))})}catch($e$$){Logger.error("[createHanlder]",$ctrl$$.name,$e$$),$callback$$($e$$)}},createHandlerAsync=($ctrl$$,$req$$)=>new Promise(($resolve$$,$reject$$)=>{if(!$req$$.data)return $reject$$("Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u \u0111\u1ec3 x\u1eed l\u00fd");
28
+ await $ctrl$$.populate($obj_created$$)),postData($obj_created$$,$ctrl$$,function($msgErrors$$){if($msgErrors$$)if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$$,$obj$$,$e$$=>{$e$$&&($msgErrors$$=$msgErrors$$+"\n"+$e$$);$callback$$($msgErrors$$)});else $callback$$($msgErrors$$);else{const $obj_created_cv$$=convertObjectIdsToStrings($obj_created$$.toObject());onAfterCommit(async()=>{$ctrl$$.emit("saved",$obj_created$$);$ctrl$$.emit("created",$obj_created$$);$model$$.modelName!=
29
+ "customer"&&global.getModel("customer").updateActives&&global.getModel("customer").updateActives($obj_created$$);$req$$&&setImmediate(()=>{global.getModel("log").create({id_app:$user$$.current_id_app,id_func:$ctrl$$.name,action:$action$$.toUpperCase(),data:{id:$obj_created_cv$$._id.toString(),data:$obj_created_cv$$}},$user$$.email,$req$$.user_agent,$req$$)});runWebhooks($ctrl$$,$obj_created_cv$$,$action$$.toUpperCase(),$voucher_options$$);await $ctrl$$.cacheData($obj_created_cv$$,void 0,$action$$)});
30
+ $callback$$(null,$obj_created_cv$$)}},{req:$req$$})})})}})})},function($obj$$,$callback$$){setImmediate(async()=>{let $co_gia_tri_tam$$=!1;if($obj$$.exfields&&$obj$$.exfields.__files__){for(let $_file$$ of $obj$$.exfields.__files__)await $File$$.updateOne({_id:$_file$$._id},{id_link:$obj$$._id.toString(),collection_link:$ctrl$$.collection_name});delete $obj$$.exfields.__files__;$co_gia_tri_tam$$=!0}if($obj$$.exfields&&$obj$$.exfields.__supports__){for(let $_support$$ of $obj$$.exfields.__supports__)await $Support$$.updateOne({_id:$_support$$._id},
31
+ {id_link:$obj$$._id.toString(),collection_link:$ctrl$$.collection_name});delete $obj$$.exfields.__supports__;$co_gia_tri_tam$$=!0}$co_gia_tri_tam$$&&await $model$$.updateOne({_id:$obj$$._id},{exfields:$obj$$.exfields});$ctrl$$.created?$ctrl$$.created($user$$,$obj$$,function($error$$,$rs$$){if($error$$)return $callback$$($error$$);$ctrl$$.dynamicCreated?$ctrl$$.dynamicCreated($user$$,$rs$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$rs$$)},{listinfo_code:$listinfo_code$$}):
32
+ $callback$$(null,$rs$$)}):$ctrl$$.dynamicCreated?$ctrl$$.dynamicCreated($user$$,$obj$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$$)},{listinfo_code:$listinfo_code$$}):$callback$$(null,$obj$$)})},function($obj$$,$callback$$){$ctrl$$.requestApprove($user$$.current_app_info,$user$$,$obj$$,$callback$$,$voucher_options$$)},function($obj_created_cv$$,$callback$$){$action$$==="import"||$req$$&&($req$$.query||{}).return_data==0?$callback$$(null,{_id:$obj_created_cv$$._id.toString()}):
33
+ ($obj_created_cv$$.collection_name=$ctrl$$.collection_name,$ctrl$$.onView($user$$,[$obj_created_cv$$],($error$jscomp$13_html_rs$$,$viewValues$$)=>{if($error$jscomp$13_html_rs$$)return $callback$$($error$jscomp$13_html_rs$$);$error$jscomp$13_html_rs$$=$viewValues$$?$viewValues$$[0]:$obj_created_cv$$;$req$$&&$req$$.uploadFile?($error$jscomp$13_html_rs$$="<html><title>OK</title><body>"+JSON.stringify($error$jscomp$13_html_rs$$)+"</body></html>",$callback$$(null,$error$jscomp$13_html_rs$$)):$callback$$(null,
34
+ $error$jscomp$13_html_rs$$)},{req:$req$$}))}],($e$$,$obj_created$$)=>{$e$$?(Logger.error($e$$),$callback$$($e$$)):($e$$=$model$$.collection.name,$user$$.current_id_app&&($e$$+=$user$$.current_id_app),delete global.cacheDatas[$e$$],$callback$$(null,{obj_created:$obj_created$$}))})}catch($e$$){Logger.error("[createHanlder]",$ctrl$$.name,$e$$),$callback$$($e$$)}},createHandlerAsync=($ctrl$$,$req$$)=>new Promise(($resolve$$,$reject$$)=>{if(!$req$$.data)return $reject$$("Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u \u0111\u1ec3 x\u1eed l\u00fd");
35
35
  createHandler($ctrl$$,$req$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})}),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{try{const $rs$$=await executeInTransaction(async()=>{var $datas_r$$=$req$$.data;if(Array.isArray($datas_r$$)){let $rs$$=[];for(let $data$$ of $datas_r$$)$req$$.data=$data$$,$req$$.body=$data$$,$datas_r$$=await createHandlerAsync($ctrl$$,$req$$),$rs$$.push($datas_r$$);return $rs$$}return createHandlerAsync($ctrl$$,$req$$)});$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}};
36
36
  module.exports=withSesssion;module.exports.createHandler=createHandler;
@@ -1,56 +1,59 @@
1
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"),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:",
3
- $req$$.user.email,$e$$);if($ctrl$$.options.onQuery)$ctrl$$.options.onQuery($req$$,$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$$})})})},handleDynamicCondition=async($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$)=>{let {condition:$condition$$,id_app:$id_app$$}=$appCondition$$,
4
- $userInfo$$={...$req$$.user,current_id_app:$id_app$$};!$id_app$$||$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||
5
- $error$$});$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$$,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$$):
6
- $reject$$({error:$e$$.message||$e$$});$resolve$$($condition$$)},{listinfo_code:$listinfo_code$$,req:$req$$}):$resolve$$($condition$$)});$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$$};$body_ds_id_app$$=$query$$.id_apps;let $all_app$$=$query$$.all_app;$req$$.query=
7
- $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$$&&$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$$=[];for(var $k_newFilters$$ in $query$$)if($k_newFilters$$!==
8
- "id_app"&&$k_newFilters$$!=="access_token"&&$k_newFilters$$!=="limit")if($k_newFilters$$==="_id"&&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($k_newFilters$$==="q"&&$query$$[$k_newFilters$$])try{let $q$$=_.isObject($query$$[$k_newFilters$$])?$query$$[$k_newFilters$$]:JSONParser($query$$[$k_newFilters$$]);$req$$.fetch_by_groups=$req$$.fetch_by_groups||
9
- $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$$;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$$ in $q$$)if(typeof $q$$[$k$$]=="string"&&$ctrl$$.model.schema.paths[$k$$]?.instance?.toLowerCase()==
10
- "date"){let {fromDate:$fromDate$$,toDate:$toDate$$}=getDateRangeByType($q$$[$k$$]);$fromDate$$&&$toDate$$&&($q$$[$k$$]={$gte:$fromDate$$,$lte:$toDate$$})}($condition$$=$q$$)||($condition$$={});continue}catch($e$$){throw Logger.error("find condition",$e$$,$query$$[$k_newFilters$$]),"Condition is not valid";}if($k_newFilters$$!=="fields"&&_.has($ctrl$$.model.schema.paths,$k_newFilters$$))if($ctrl$$.options.findExact[$k_newFilters$$])$condition$$[$k_newFilters$$]=$query$$[$k_newFilters$$];else{let $item$$=
11
- {};if($ctrl$$.model.schema.paths[$k_newFilters$$].instance.toLowerCase()=="number")$item$$[$k_newFilters$$]=Number($query$$[$k_newFilters$$]);else if($ctrl$$.model.schema.paths[$k_newFilters$$].instance.toLowerCase()=="date"){let {fromDate:$fromDate$$,toDate:$toDate$$}=getDateRangeByType($query$$[$k_newFilters$$]);$item$$[$k_newFilters$$]=$fromDate$$&&$toDate$$?{$gte:$fromDate$$,$lte:$toDate$$}:new Date($query$$[$k_newFilters$$])}else $ctrl$$.model.schema.paths[$k_newFilters$$].instance.toLowerCase()==
12
- "string"?$item$$[$k_newFilters$$]={$regex:($query$$[$k_newFilters$$]||"").trim().replace(/[.*+\-?^${}()|[\]\\]/g,"\\$&"),$options:"i"}:$item$$[$k_newFilters$$]=$query$$[$k_newFilters$$];$or_sort$$.push($item$$)}else $k_newFilters$$==="$text"&&$or_sort$$.push({$text:{$search:$query$$[$k_newFilters$$]}})}$or_sort$$.length!==0&&($query$$.cType==="$and"?$condition$$.$and=$or_sort$$:$condition$$.$or=$or_sort$$);$k_newFilters$$=queryBuilding.convertLegacyQuery(_.cloneDeep($condition$$));$condition$$=queryBuilding.buildSearchQuery($k_newFilters$$);
13
- $appConditions_shareRoute$$||$ctrl$$.require_id_app==0?$appConditions_shareRoute$$=[{id_app:$req$$.user.current_id_app,condition:{...$condition$$,id_app:$req$$.user.current_id_app}}]:($body_ds_id_app$$=($body_ds_id_app$$||[]).filter($id$$=>global.mongoose.Types.ObjectId.isValid($id$$)),$body_ds_id_app$$.length==0&&($all_app$$?(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},
14
- {id_app:1}).lean()).map($a$$=>$a$$.id_app)):$body_ds_id_app$$=[$req$$.user.current_id_app]),$appConditions_shareRoute$$=$body_ds_id_app$$.map($id_app$$=>({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$$,
15
- $reject$$)=>{setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.getRightByItem($appCondition$$.id_app,$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$$);
16
- $appCondition$$.condition||($appCondition$$.condition={});$appCondition$$.condition.$and||($appCondition$$.condition.$and=[]);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,$_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$$)&&
17
- Object.keys($_condition$$).length>0&&$appCondition$$.condition.$and.push($_condition$$),$resolve$$($appCondition$$)},$ctrl$$.name,{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$})})}),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$$=
18
- {};async.map($ctrl$$.options.assignWiths,($col$$,$callback$$)=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($appCondition$$.id_app,$m$$,$req$$.user.email,function($e$$,$_condition$$,$admin$$){if($e$$)return $callback$$({e:$e$$.error||$e$$.message||$e$$,code:$e$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $callback$$(null);$_condition$$.id_app=$appCondition$$.id_app;$appCondition$$.condition[$col$$.ref_field]&&($_condition$$[$col$$.ref_field]=$appCondition$$.condition[$col$$.ref_field]);
19
- $m$$.find($_condition$$,{[$col$$.ref_field]:1}).lean().then($dsdt_rs$$=>{$dsdt_rs$$=$dsdt_rs$$.map($r$$=>$r$$[$col$$.ref_field]);$dsdt_rs$$.push("");$dsdt_rs$$.push(null);$condition_assignwiths$$[$col$$.field]={$in:$dsdt_rs$$};$callback$$()}).catch($e$$=>{$callback$$($e$$)})},$col$$.ref_module)},$condition$jscomp$5_e$$=>{if($condition$jscomp$5_e$$)return $reject$$({error:$condition$jscomp$5_e$$.error||$condition$jscomp$5_e$$.message||$condition$jscomp$5_e$$});Object.keys($condition_assignwiths$$).length>
20
- 0&&($condition$jscomp$5_e$$=$appCondition$$.condition_assign||$appCondition$$.condition,$condition$jscomp$5_e$$.$and||($condition$jscomp$5_e$$.$and=[]),$condition$jscomp$5_e$$.$and.push($condition_assignwiths$$),$appCondition$$.condition=$condition$jscomp$5_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"]||
21
- $req$$?.headers?.["listinfo-code"]||$req$$?.headers?.["Listinfo-Code"];if(($listinfo_code$$=$listinfo_code$$||$ctrl$$.name)&&$listinfo_code$$!=$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$$)).filter($a$$=>
22
- !$a$$.id_app||$a$$.userInfo?.current_app_info);for(let $appCondition$$ of $appConditions$$){await hasRight($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$.id_app,$shareRoute$$)=="0"&&($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("$")||
23
- $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$$==="_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)}if($shareRoute$$){$condition$$.shared=!0;let $id_sellers$$=(await global.getModel("app").find({sale_online:!0},{_id:1}).lean()).map($a$$=>
24
- $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$$);
25
- 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]=
26
- $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>
27
- 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$$));
28
- $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$$,
29
- $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$$,
30
- ...$fields_fields$jscomp$1_groups_number_notfields_rows_number$$}:$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$$&&(($fields_fields$jscomp$1_groups_number_notfields_rows_number$$=
31
- $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$$}:$fields_fields$jscomp$1_groups_number_notfields_rows_number$$.split(",").forEach($f$$=>
32
- {$f$$&&$f$$!=="_id"&&(Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)})),$shareRoute$$||$req$$.user.email==="public")&&(Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?(delete $gfields$$.dataview_to,delete $gfields$$.dataview_to_users):($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0));$condition$$.$text&&($gfields$$||={},$gfields$$.textScore={$meta:"textScore"});delete $req$$.query_cache;$ctrl$$.cache&&($req$$.query_cache={..._.cloneDeep($req$$.query),
33
- ..._.cloneDeep($condition$$)},delete $req$$.query_cache.q,delete $req$$.query_cache.refresh_required,$req$$.query_cache.gfields=_.cloneDeep($gfields$$));const $fetchData$$=($condition$$,$limit$$,$page$$,$callback$$)=>{setImmediate(async()=>{let $query$$;if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate||$req$$.query.$aggregate)try{if($req$$.query.aggregate){var $aggregate_piples_sort$$=JSONParser($req$$.query.$aggregate||$req$$.query.aggregate);if(!Array.isArray($aggregate_piples_sort$$))return $callback$$({error:"Aggregate ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"});
34
- if($aggregate_piples_sort$$.find($f$$=>$f$$.$lookup))return $callback$$({error:"Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eed d\u1ee5ng $lookup trong aggregate"});$aggregate_piples_sort$$=[{$match:$condition$$},...$aggregate_piples_sort$$];$query$$=$model$$.aggregate($aggregate_piples_sort$$)}else{$query$$=$model$$.aggregate([{$match:$condition$$}]);let $group$$;$req$$.query.group&&($group$$=JSONParser($req$$.query.group),$query$$.group($group$$));if($req$$.query.match){let $match$$=JSONParser($req$$.query.match);
35
- $query$$.match($match$$)}let $project$$;if($req$$.query.project)$project$$=JSONParser($req$$.query.project),$query$$.project($project$$);else if($gfields$$&&Object.keys($gfields$$).length>0)$project$$=$gfields$$;else if($project$$={_id:1},$group$$)for(let $key$$ in $group$$)$project$$[$key$$]=1;$query$$.project($project$$)}}catch($e$$){return Logger.error("[findHanlder]",$e$$,$req$$.query),$callback$$({error:$e$$.message||$e$$.error||$e$$})}else _.has($model$$.schema.paths,"id_app")&&Object.keys($gfields$$).length>
36
- 0&&Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)&&($gfields$$.id_app=1),$query$$=$model$$.find($condition$$,$gfields$$);$aggregate_piples_sort$$=$req$$.sort;if(!$aggregate_piples_sort$$)$gfields$$.textScore&&($aggregate_piples_sort$$={textScore:{$meta:"textScore"}});else for(var $key$$ in $aggregate_piples_sort$$)if($key$$!=="textScore"&&$aggregate_piples_sort$$[$key$$]!=1&&$aggregate_piples_sort$$[$key$$]!=-1)return Logger.error("sort is valid",$aggregate_piples_sort$$,$key$$,$aggregate_piples_sort$$[$key$$]),
37
- $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$$&&$limit$$?($key$$=(Number($page$$)-1)*$limit$$,$key$$<0&&($key$$=0),$query$$.skip($key$$).limit($limit$$)):$query$$.limit($limit$$);$ctrl$$.populate&&
38
- ($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||0,$limit$$=$query$$.getOptions().limit||0,$sort$$=$query$$.getOptions().sort||{},$explainResult$$=await $query$$.mongooseCollection.find($filter$$,
39
- {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$$}=$explainResult$$.executionStats||{};$callback$$(null,[{queryPlanner:{parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$},
40
- 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;$appConditions$$.forEach($a$jscomp$12_id_app$$=>{({id_app:$a$jscomp$12_id_app$$}=$a$jscomp$12_id_app$$);$req$$.user&&
41
- !$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$$=Number($req$$.query.page||0);isNaN($page_fetch$$)&&($page_fetch$$=0);let $limit$$=$req$$.query.limit;$limit$$&&=Number($limit$$);
42
- 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!=="labelinfo"&&($limit$$=500));$req$$.pagination&&($limit$$||=20,$req$$.pagination.page=$page_fetch$$?$page_fetch$$:1,$req$$.pagination.limit=
43
- $limit$$,$req$$.pagination.totalPages=Math.ceil($req$$.pagination.total/$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};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&&
44
- ($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$$={...$condition$$};$c$$[$req$$.fetch_by_groups.field]=$g$$[$field_ref$$];$condition_groups$$.push($c$$)});$condition_groups$$.length==0?$condition_groups$$=
45
- [$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",$e$$,JSON.stringify($condition$$)),$callback$$({error:$e$$.error||$e$$.message||$e$$});let $obj4view$$=$obj4views$$.reduce(($a$$,
46
- $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=$ctrl$$.collection_name)});$callback$$(null)}},function($error$$,$rs$$){setImmediate(()=>{if($error$$)return $callback$$({error:$error$$.error||
47
- $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||$error$$.message||$error$$});if($req$$.query.type_data==="json_file"){var {template:$_groupBy_template$jscomp$1_template$$}=
48
- $req$$.body;try{var $app_dir_root_template_fileName$$=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$$}`;$req$$.result={url:$downloadUrl_template_id$$};$req$$.dataType="json";return $callback$$("0")}catch($e$$){return $callback$$($e$$)}}if($req$$.query.type_data===
49
- "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,condition:$_groupBy_template$jscomp$1_template$$.condition||$req$$.body.q||$req$$.query||{}}),$downloadUrl$$=$req$$.host?.startsWith("http")?`${$req$$.host}/downloads/temp/${$fileName$$}`:
50
- `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"});$excelTemplate$$=await global.getModel("exportexceltemplate").findById($downloadUrl_template_id$$);
51
- 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$$=`${$app_dir_root_template_fileName$$}/excels/lists/${$ctrl$$.name}.xlsx`),$_groupBy_template$jscomp$1_template$$&&
52
- 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$$={};$app_dir_root_template_fileName$$.detail=$_rs_func_string_rs$$.e_view;$app_dir_root_template_fileName$$.items=
53
- $_rs_func_string_rs$$.e_view;if($excelTemplate$$&&$excelTemplate$$.handle_data){$_rs_func_string_rs$$=`return (async ()=>{
2
+ require("../libs/excelHelper"),{ERRORS}=require("./controllerUtils"),FIELDS_NEED_CONVERT_CODE={ten_kh:{code:"ma_kh",model:"customer"},ten_vt:{code:"ma_vt",model:"dmvt"},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 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$$,
7
+ $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$$})})})},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&&
8
+ $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$$,
9
+ $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$$,
10
+ req:$req$$}):$resolve$$($condition$$)});$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$$};$body_ds_id_app$$=$query$$.id_apps;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$$=
11
+ JSONParser($query$$.sort)}catch($e$$){throw Logger.error("error parse json",$e$$,$query$$.sort),`Sort ${$query$$.sort} is not valid`;}!$or_sort$$&&$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?
12
+ !0:!1;for(var $k$$ in $query$$)if($k$$!=="id_app"&&$k$$!=="access_token"&&$k$$!=="limit")if($k$$==="_id"&&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($k$$==="q"&&$query$$[$k$$])try{let $q$$=_.isObject($query$$[$k$$])?$query$$[$k$$]:JSONParser($query$$[$k$$]);$req$$.fetch_by_groups=$req$$.fetch_by_groups||$q$$.fetch_by_groups;delete $q$$.fetch_by_groups;
13
+ $body_ds_id_app$$=$q$$.id_apps||$body_ds_id_app$$;$all_app$$=$q$$.all_app||$all_app$$;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$$ in $q$$)if(typeof $q$$[$k$$]=="string"&&$ctrl$$.model.schema.paths[$k$$]?.instance?.toLowerCase()=="date"){let {fromDate:$fromDate$$,toDate:$toDate$$}=
14
+ getDateRangeByType($q$$[$k$$]);$fromDate$$&&$toDate$$&&($q$$[$k$$]={$gte:$fromDate$$,$lte:$toDate$$})}($condition$$=$q$$)||($condition$$={});continue}catch($e$$){throw Logger.error("find condition",$e$$,$query$$[$k$$]),"Condition is not valid";}if($k$$!=="fields"&&(_.has($ctrl$$.model.schema.paths,$k$$)||$hasCodeByName$$($k$$)))if($ctrl$$.options.findExact[$k$$])$condition$$[$k$$]=$query$$[$k$$];else{let $item$$={};if($ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()=="number")$item$$[$k$$]=
15
+ Number($query$$[$k$$]);else if($ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()=="date"){let {fromDate:$fromDate$$,toDate:$toDate$$}=getDateRangeByType($query$$[$k$$]);$item$$[$k$$]=$fromDate$$&&$toDate$$?{$gte:$fromDate$$,$lte:$toDate$$}:new Date($query$$[$k$$])}else $ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()=="string"?$item$$[$k$$]={$regex:($query$$[$k$$]||"").trim(),$options:"i"}:$item$$[$k$$]=$query$$[$k$$];$or_sort$$.push($item$$)}else $k$$==="$text"&&$or_sort$$.push({$text:{$search:$query$$[$k$$]}})}$or_sort$$.length!==
16
+ 0&&($query$$.cType==="$and"?$condition$$.$and=$or_sort$$:$condition$$.$or=$or_sort$$);$k$$=queryBuilding.convertLegacyQuery(_.cloneDeep($condition$$));$condition$$=queryBuilding.buildSearchQuery($k$$);$appConditions_shareRoute$$||$ctrl$$.require_id_app==0?$appConditions_shareRoute$$=[{id_app:$req$$.user.current_id_app,condition:{...$condition$$,id_app:$req$$.user.current_id_app}}]:($body_ds_id_app$$=($body_ds_id_app$$||[]).filter($id$$=>global.mongoose.Types.ObjectId.isValid($id$$)),$body_ds_id_app$$.length==
17
+ 0&&($all_app$$?(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)):$body_ds_id_app$$=[$req$$.user.current_id_app]),$appConditions_shareRoute$$=$body_ds_id_app$$.map($id_app$$=>({id_app:$id_app$$,condition:{...$condition$$,id_app:$id_app$$}})));return Promise.all($appConditions_shareRoute$$.map($appCondition$$=>handleDynamicCondition($ctrl$$,
18
+ $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,$ctrl$$.model,$req$$.user.email,function($e$$,$_condition$$,$admin$$){if($e$$)return Logger.error("[findHandler] [getRightByItem] L\u1ed7i Kh\u00f4ng c\u00f3 quy\u1ec1n:",
19
+ $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,$_condition$$,($e$$,$_condition$$)=>{if($e$$)return $reject$$({error:$e$$.error||$e$$.message||$e$$});_.isObject($_condition$$)&&Object.keys($_condition$$).length>
20
+ 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$$})})}),getRightByCollectionRef=async($ctrl$$,$req$$,$appCondition$$,$shareRoute$$)=>$shareRoute$$||$appCondition$$.admin||!$appCondition$$.condition_assign||
21
+ 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,$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});
22
+ 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("");$dsdt_rs$$.push(null);$condition_assignwiths$$[$col$$.field]={$in:$dsdt_rs$$};$callback$$()}).catch($e$$=>{$callback$$($e$$)})},$col$$.ref_module)},
23
+ $condition$jscomp$6_e$$=>{if($condition$jscomp$6_e$$)return $reject$$({error:$condition$jscomp$6_e$$.error||$condition$jscomp$6_e$$.message||$condition$jscomp$6_e$$});Object.keys($condition_assignwiths$$).length>0&&($condition$jscomp$6_e$$=$appCondition$$.condition_assign||$appCondition$$.condition,$condition$jscomp$6_e$$.$and||($condition$jscomp$6_e$$.$and=[]),$condition$jscomp$6_e$$.$and.push($condition_assignwiths$$),$appCondition$$.condition=$condition$jscomp$6_e$$);$resolve$$($appCondition$$)})}else $resolve$$($appCondition$$)})}),
24
+ 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$$!=$ctrl$$.name){var $condition$$=await global.getModel("listinfo").findOne({code:$listinfo_code$$},{api_code:1,code:1}).lean();$condition$$?($condition$$.api_code||$condition$$.code)!=
25
+ $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"&&($appCondition$$.condition._id={$in:[]});await getRightByItem($ctrl$$,$req$$,$listinfo_code$$,$appCondition$$,$shareRoute$$);await getRightByCollectionRef($ctrl$$,$req$$,$appCondition$$,
26
+ $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$$==="_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>
27
+ 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$$=>$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,
28
+ "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$$);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&&
29
+ $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]=$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,
30
+ $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>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$$=>
31
+ $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$$));$condition_group$$=await $model$$.countDocuments($condition$$);$req$$.result={groups_number:$fields_fields$jscomp$1_groups_number_notfields_rows_number$$,rows_number:$condition_group$$};
32
+ 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$$,$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$$&&
33
+ (_.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$$,...$fields_fields$jscomp$1_groups_number_notfields_rows_number$$}:$fields_fields$jscomp$1_groups_number_notfields_rows_number$$.split(",").filter($f$$=>$f$$&&$field_not_right$$.indexOf($f$$)<0).forEach($f$$=>{$f$$!==
34
+ "_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$$&&(($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$$=>
35
+ $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$$}:$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$$=>
36
+ $gfields$$[$k$$]==1)?(delete $gfields$$.dataview_to,delete $gfields$$.dataview_to_users):($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0));$condition$$.$text&&($gfields$$||={},$gfields$$.textScore={$meta:"textScore"});delete $req$$.query_cache;$ctrl$$.cache&&($req$$.query_cache={..._.cloneDeep($req$$.query),..._.cloneDeep($condition$$)},delete $req$$.query_cache.q,delete $req$$.query_cache.refresh_required,$req$$.query_cache.gfields=_.cloneDeep($gfields$$));const $fetchData$$=($condition$$,
37
+ $limit$$,$page$$,$callback$$)=>{setImmediate(async()=>{let $query$$;if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate||$req$$.query.$aggregate)try{if($req$$.query.aggregate){var $aggregate_piples_sort$$=JSONParser($req$$.query.$aggregate||$req$$.query.aggregate);if(!Array.isArray($aggregate_piples_sort$$))return $callback$$({error:"Aggregate ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"});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"});
38
+ $aggregate_piples_sort$$=[{$match:$condition$$},...$aggregate_piples_sort$$];$query$$=$model$$.aggregate($aggregate_piples_sort$$)}else{$query$$=$model$$.aggregate([{$match:$condition$$}]);let $group$$;$req$$.query.group&&($group$$=JSONParser($req$$.query.group),$query$$.group($group$$));if($req$$.query.match){let $match$$=JSONParser($req$$.query.match);$query$$.match($match$$)}let $project$$;if($req$$.query.project)$project$$=JSONParser($req$$.query.project),$query$$.project($project$$);else if($gfields$$&&
39
+ Object.keys($gfields$$).length>0)$project$$=$gfields$$;else if($project$$={_id:1},$group$$)for(let $key$$ in $group$$)$project$$[$key$$]=1;$query$$.project($project$$)}}catch($e$$){return Logger.error("[findHanlder]",$e$$,$req$$.query),$callback$$({error:$e$$.message||$e$$.error||$e$$})}else _.has($model$$.schema.paths,"id_app")&&Object.keys($gfields$$).length>0&&Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)&&($gfields$$.id_app=1),$query$$=$model$$.find($condition$$,$gfields$$);$aggregate_piples_sort$$=
40
+ $req$$.sort;if(!$aggregate_piples_sort$$)$gfields$$.textScore&&($aggregate_piples_sort$$={textScore:{$meta:"textScore"}});else for(var $key$$ in $aggregate_piples_sort$$)if($key$$!=="textScore"&&$aggregate_piples_sort$$[$key$$]!=1&&$aggregate_piples_sort$$[$key$$]!=-1)return Logger.error("sort is valid",$aggregate_piples_sort$$,$key$$,$aggregate_piples_sort$$[$key$$]),$callback$$({error:`Sort ${JSON.stringify($aggregate_piples_sort$$)} is not valid`});$aggregate_piples_sort$$&&Object.keys($aggregate_piples_sort$$).length>
41
+ 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$$&&$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"&&
42
+ $req$$.query.explainQuery!="executionStats"&&($req$$.query.explainQuery="queryPlanner");try{const $filter$$=$query$$.getFilter(),$projection$$=$query$$.getOptions().projection||{},$skip$$=$query$$.getOptions().skip||0,$limit$$=$query$$.getOptions().limit||0,$sort$$=$query$$.getOptions().sort||{},$explainResult$$=await $query$$.mongooseCollection.find($filter$$,{projection:$projection$$}).skip($skip$$).limit($limit$$).sort($sort$$).explain($req$$.query.explainQuery),{parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$}=
43
+ $explainResult$$.queryPlanner||{},{executionSuccess:$executionSuccess$$,nReturned:$nReturned$$,executionTimeMillis:$executionTimeMillis$$,totalKeysExamined:$totalKeysExamined$$,totalDocsExamined:$totalDocsExamined$$}=$explainResult$$.executionStats||{};$callback$$(null,[{queryPlanner:{parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$},executionStats:{executionSuccess:$executionSuccess$$,nReturned:$nReturned$$,executionTimeMillis:$executionTimeMillis$$,totalKeysExamined:$totalKeysExamined$$,totalDocsExamined:$totalDocsExamined$$},
44
+ _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;$appConditions$$.forEach($a$jscomp$11_id_app$$=>{({id_app:$a$jscomp$11_id_app$$}=$a$jscomp$11_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$11_id_app$$,
45
+ 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"&&
46
+ $ctrl$$.name!=="labelinfo"?20:500,$limit$$&&$limit$$>500&&!$req$$.query.print&&$ctrl$$.require_id_app!==!1&&$ctrl$$.name!=="right"&&$ctrl$$.name!=="labelinfo"&&($limit$$=500));$req$$.pagination&&($limit$$||=20,$req$$.pagination.page=$page_fetch$$?$page_fetch$$:1,$req$$.pagination.limit=$limit$$,$req$$.pagination.totalPages=Math.ceil($req$$.pagination.total/$limit$$));let $condition_groups$$=[];if($condition_group$$.length>0){let $field_ref$$=$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field;
47
+ $fields_fields$jscomp$1_groups_number_notfields_rows_number$$={[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1};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||
48
+ $req$$.fetch_by_groups.field]:1}).skip($skip$$).limit($limit_group$$).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$$=[$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$$,
49
+ $cb$$)=>{$fetchData$$($condition$$,$limit$$,$page_fetch$$,$cb$$)},($e$$,$obj4views$$)=>{if($e$$)return Logger.error("exec query find",$e$$,JSON.stringify($condition$$)),$callback$$({error:$e$$.error||$e$$.message||$e$$});let $obj4view$$=$obj4views$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$obj4view$$||=[];async.parallel({found:function($callback$$){$ctrl$$.found?$ctrl$$.found($req$$.user,$condition$$,$obj4view$$,function($error$$,$items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,
50
+ $obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>{$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});$callback$$(null)}},function($error$$,$rs$$){setImmediate(()=>{if($error$$)return $callback$$({error:$error$$.error||$error$$.message||$error$$});$obj4view$$=$rs$$.found;async.parallel({e_view:function($callback$$){$ctrl$$.onView($req$$.user,$obj4view$$,($error$$,$viewValue$$)=>{if($error$$)return Logger.error("Erron on view:",$error$$),$callback$$($error$$);
51
+ $callback$$(null,$viewValue$$)},{req:$req$$,shareRoute:$shareRoute$$})}},async function($e$$,$_rs_func_string_rs$$){if($error$$)return $callback$$({error:$error$$.error||$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$$=
52
+ $req$$.host?.startsWith("http")?`${$req$$.host}/downloads/temp/${$app_dir_root_template_fileName$$}`:`https://${$req$$.host}/downloads/temp/${$app_dir_root_template_fileName$$}`;$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,
53
+ data:$_rs_func_string_rs$$.e_view,columns:$_groupBy_template$jscomp$1_template$$.columns,filterFields:$_groupBy_template$jscomp$1_template$$.filterFields,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$$=
54
+ (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"});$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$$=
55
+ $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$$=`${$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`);
56
+ 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$$={};$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 ()=>{
54
57
  try{
55
58
  ${$excelTemplate$$.handle_data}
56
59
  }catch(e){
@@ -1,5 +1,8 @@
1
- const {difference}=require("../libs/utils"),historyHandler=($ctrl$$,$req$$,$mainCallback$$)=>{var $id_query$$=$req$$.params.id;$id_query$$={id_app:$req$$.user.current_id_app,$or:[{"data.id":$id_query$$},{"data.data.id_link":$id_query$$},{"data.oldData.id_link":$id_query$$}]};let $actions$$=$req$$.query.actions;$actions$$?($actions$$=$actions$$.split(","),$id_query$$.action={$in:$actions$$,$ne:"GET"}):$id_query$$.action={$ne:"GET"};global.getModel("log").find($id_query$$).lean().then(async function($rs$$){await $rs$$.asyncJoinModel2($req$$.user.current_id_app,
2
- "participant",{where:{user_created:"email"},fields:[{name_user_created:"name"}]});await $rs$$.filter($r$$=>$r$$.data_changed&&($r$$.data_changed.trang_thai||($r$$.data_changed.progress||"").toString())).map($r$$=>$r$$.data_changed).asyncJoinModel2($req$$.user.current_id_app,"trangthai",{where:$item$$=>({ma_trang_thai:$item$$.trang_thai||($item$$.progress||"").toString(),ma_ct:($ctrl$$.name||"").toUpperCase()}),fields:[{ten_trang_thai:"ten_trang_thai"}]});setImmediate(()=>{$rs$$.forEach($r$$=>{$r$$.ip=
3
- $r$$.ip||""});for(var $log_rows$$ of $rs$$){$log_rows$$.data?.newData?.toObject&&($log_rows$$.data.newData=$log_rows$$.data?.newData?.toObject());$log_rows$$.data?.oldData?.toObject&&($log_rows$$.data.oldData=$log_rows$$.data?.oldData?.toObject());let $data_changed$$=$log_rows$$.data_changed||($log_rows$$.data?difference($log_rows$$.data.newData,$log_rows$$.data.oldData):{});delete $data_changed$$.is_full_data;delete $data_changed$$.collection_name;delete $data_changed$$.date_updated;delete $data_changed$$.user_updated;
4
- delete $data_changed$$.approve_data;$log_rows$$.data_changed=$data_changed$$}$log_rows$$=$rs$$.map($r$$=>$r$$.data?.data).filter($r$$=>$r$$);$ctrl$$.onView($req$$.user,$log_rows$$,$e$$=>{if($e$$)return Logger.error("[historyHandler] log onview",$e$$),$e$$.error?$mainCallback$$($e$$):$mainCallback$$({error:$e$$.message||$e$$});$mainCallback$$(null,$rs$$)},{req:$req$$})})}).catch($e$$=>{Logger.error("[historyHandler] history query",$e$$);return $e$$.error?$mainCallback$$($e$$):$mainCallback$$({error:$e$$.message||
5
- $e$$})})};module.exports=historyHandler;
1
+ const {difference}=require("../libs/utils");
2
+ function cleanObjectForJSON($obj$$){if($obj$$===null||typeof $obj$$!=="object")return $obj$$;if($obj$$._bsontype==="ObjectID"||$obj$$.constructor?.name==="ObjectId"||$obj$$.constructor?.name==="ObjectID")return $obj$$.toString();if($obj$$ instanceof Date||$obj$$.constructor?.name==="Date"||typeof $obj$$.getMonth==="function")try{var $cleaned_time$$=$obj$$.getTime();return isNaN($cleaned_time$$)?null:$obj$$.toISOString()}catch($e$$){return null}if(Array.isArray($obj$$))return $obj$$.map($item$$=>cleanObjectForJSON($item$$));
3
+ $cleaned_time$$={};for(const $key$$ in $obj$$)Object.prototype.hasOwnProperty.call($obj$$,$key$$)&&($cleaned_time$$[$key$$]=cleanObjectForJSON($obj$$[$key$$]));return $cleaned_time$$}
4
+ const historyHandler=($ctrl$$,$req$$,$mainCallback$$)=>{var $id_query$$=$req$$.params.id;$id_query$$={id_app:$req$$.user.current_id_app,$or:[{"data.id":$id_query$$},{"data.data.id_link":$id_query$$},{"data.oldData.id_link":$id_query$$}]};let $actions$$=$req$$.query.actions;$actions$$?($actions$$=$actions$$.split(","),$id_query$$.action={$in:$actions$$,$ne:"GET"}):$id_query$$.action={$ne:"GET"};global.getModel("log").find($id_query$$).lean().then(async function($rs$$){await $rs$$.asyncJoinModel2($req$$.user.current_id_app,
5
+ "participant",{where:{user_created:"email"},fields:[{name_user_created:"name"}]});await $rs$$.filter($r$$=>$r$$.data_changed&&($r$$.data_changed.trang_thai||($r$$.data_changed.progress||"").toString())).map($r$$=>$r$$.data_changed).asyncJoinModel2($req$$.user.current_id_app,"trangthai",{where:$item$$=>({ma_trang_thai:$item$$.trang_thai||($item$$.progress||"").toString(),ma_ct:($ctrl$$.name||"").toUpperCase()}),fields:[{ten_trang_thai:"ten_trang_thai"}]});$rs$$.forEach($r$$=>{$r$$.ip=$r$$.ip||""});
6
+ for(var $log_rows$$ of $rs$$){$log_rows$$.data?.newData?.toObject&&($log_rows$$.data.newData=$log_rows$$.data?.newData?.toObject());$log_rows$$.data?.oldData?.toObject&&($log_rows$$.data.oldData=$log_rows$$.data?.oldData?.toObject());$log_rows$$.data_changed&&$log_rows$$.data_changed.toObject&&($log_rows$$.data_changed=$log_rows$$.data_changed.toObject());$log_rows$$?.data?.newData?._id&&($log_rows$$.data.newData._id=$log_rows$$.data.newData._id.toString());$log_rows$$?.data?.oldData?._id&&($log_rows$$.data.oldData._id=
7
+ $log_rows$$.data.oldData._id.toString());let $data_changed$$=$log_rows$$.data_changed||($log_rows$$.data?difference($log_rows$$.data.newData,$log_rows$$.data.oldData):{});delete $data_changed$$.is_full_data;delete $data_changed$$.collection_name;delete $data_changed$$.date_updated;delete $data_changed$$.user_updated;delete $data_changed$$.approve_data;$log_rows$$.data_changed=cleanObjectForJSON($data_changed$$)}$log_rows$$=$rs$$.map($r$$=>$r$$.data?.data).filter($r$$=>$r$$);$ctrl$$.onView($req$$.user,
8
+ $log_rows$$,$e$$=>{if($e$$)return Logger.error("[historyHandler] log onview",$e$$),$e$$.error?$mainCallback$$($e$$):$mainCallback$$({error:$e$$.message||$e$$});$mainCallback$$(null,$rs$$)},{req:$req$$})}).catch($e$$=>{Logger.error("[historyHandler] history query",$e$$);return $e$$.error?$mainCallback$$($e$$):$mainCallback$$({error:$e$$.message||$e$$})})};module.exports=historyHandler;