flexbiz-server 12.7.6 → 12.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/server/app.js +23 -19
- package/server/auths/rateLimiterMiddleware.js +3 -3
- package/server/controllers/controller.js +41 -41
- package/server/controllers/controllerUtils.js +61 -61
- package/server/controllers/controllerUtils_v1.js +72 -0
- package/server/controllers/controller_old.js +129 -0
- package/server/controllers/createHandler.js +34 -34
- package/server/controllers/createHandler_old.js +35 -0
- package/server/controllers/deleteHandler.js +11 -12
- package/server/controllers/deleteHandler_old.js +12 -0
- package/server/controllers/exportHandler.js +19 -17
- package/server/controllers/exportHandler_old.js +17 -0
- package/server/controllers/findHandler.js +61 -55
- package/server/controllers/findHandler_old.js +74 -0
- package/server/controllers/importFromGsHandler.js +10 -10
- package/server/controllers/importFromJsonHandler.js +6 -6
- package/server/controllers/importFromJsonHandler_old.js +6 -0
- package/server/controllers/updateBookHandler.js +1 -1
- package/server/controllers/updateFieldHandler.js +12 -13
- package/server/controllers/updateFieldHandler_old.js +13 -0
- package/server/controllers/updateHandler.js +38 -40
- package/server/controllers/updateHandler_old.js +40 -0
- package/server/controllers/viewHandler.js +13 -14
- package/server/controllers/viewHandler_old.js +14 -0
- package/server/flow/nodes/aiAnalysis.js +1 -1
- package/server/global.js +2 -3
- package/server/libs/WorkerStaticPool.js +14 -14
- package/server/libs/asyncCompat.js +10 -0
- package/server/libs/createSocaitheongay.js +1 -1
- package/server/libs/invoiceVnpt.js +1 -1
- package/server/libs/post-book.js +2 -2
- package/server/libs/post-sokho.js +5 -5
- package/server/libs/redis-cache.js +2 -2
- package/server/models/assabcihandler.js +1 -1
- package/server/models/counter.js +2 -2
- package/server/models/listinfo.js +200 -225
- package/server/models/listinfo_old.js +124 -0
- package/server/models/po1.js +4 -4
- package/server/models/purchase_contract.js +3 -3
- package/server/models/smsaccount.js +2 -2
- package/server/models/tdttco.js +3 -3
- package/server/models/tdttno.js +3 -3
- package/server/modules/lists/ls-afflink.js +1 -1
- package/server/modules/lists/ls-assbooking.js +1 -1
- package/server/modules/lists/ls-assinvestment.js +11 -11
- package/server/modules/lists/ls-asskey.js +2 -2
- package/server/modules/lists/ls-assneedtobuy.js +1 -1
- package/server/modules/lists/ls-assperiod.js +1 -1
- package/server/modules/lists/ls-asssell.js +1 -1
- package/server/modules/lists/ls-cart.js +14 -14
- package/server/modules/lists/ls-congdoansx.js +1 -1
- package/server/modules/lists/ls-consultant.js +2 -2
- package/server/modules/lists/ls-dkhoc.js +2 -2
- package/server/modules/lists/ls-dmban.js +1 -1
- package/server/modules/lists/ls-dmbp.js +2 -2
- package/server/modules/lists/ls-dmdoi.js +1 -1
- package/server/modules/lists/ls-dmnhtask.js +2 -2
- package/server/modules/lists/ls-dmvt.js +3 -3
- package/server/modules/lists/ls-file.js +1 -1
- package/server/modules/lists/ls-giaoca.js +1 -1
- package/server/modules/lists/ls-introducer.js +2 -2
- package/server/modules/lists/ls-kbm-bcqt.js +1 -1
- package/server/modules/lists/ls-news.js +1 -1
- package/server/modules/lists/ls-participant.js +1 -1
- package/server/modules/lists/ls-rpt.js +1 -1
- package/server/modules/lists/ls-smsaccount.js +1 -1
- package/server/modules/lists/ls-sosanxuat.js +1 -1
- package/server/modules/lists/ls-support.js +1 -1
- package/server/modules/public/callin.js +1 -1
- package/server/modules/reports/calc-tinhgiafifo.js +1 -1
- package/server/modules/reports/calc-tinhgiatb.js +1 -1
- package/server/modules/reports/calc-tinhgiathanh.js +1 -1
- package/server/modules/reports/calc-tinhluong.js +1 -1
- package/server/modules/reports/rp-assbonus.js +1 -1
- package/server/modules/reports/rp-bkchamcong.js +1 -1
- package/server/modules/reports/rp-cdpsdiem.js +1 -1
- package/server/modules/reports/rp-cdpskh.js +1 -1
- package/server/modules/reports/rp-cdpsnphep.js +1 -1
- package/server/modules/reports/rp-kcsns.js +1 -1
- package/server/modules/reports/rp-sctbhxh.js +1 -1
- package/server/modules/reports/rp-sctluong.js +1 -1
- package/server/modules/reports/rp-sctthuetncn.js +1 -1
- package/server/modules/reports/rp-sctvt.js +1 -1
- package/server/modules/reports/rp-sctvtnpp.js +1 -1
- package/server/modules/reports/rp-sctvttt.js +1 -1
- package/server/modules/reports/rp-thgt.js +1 -1
- package/server/modules/systems/sys-labelinfo.js +2 -3
- package/server/modules/systems/sys-listinfo.js +1 -1
- package/server/modules/systems/sys-menuinfo.js +1 -4
- package/server/modules/systems/sys-moduleinfo.js +2 -4
- package/server/modules/systems/sys-notification.js +1 -1
- package/server/workers/backupApp.js +1 -1
- package/server/workers/calcGrid.js +1 -1
- package/server/workers/runScript.js +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
const async=require("
|
|
2
|
-
$spreadsheetid$$.split("/")[0]);if(!$spreadsheetid$$)return $callback$$({error:"spreadsheetId is not valid"});$range$$||="Sheet1";var $app_google_credentials_id_app$$=$req$$.query.id_app;$app_google_credentials_id_app$$=await global.getModel("app").findOne({_id:$app_google_credentials_id_app$$}).lean();if(!$app_google_credentials_id_app$$)return $callback$$({error:"id_app kh\u00f4ng t\u1ed3n t\u1ea1i"});$app_google_credentials_id_app$$=$app_google_credentials_id_app$$.google_credentials||
|
|
3
|
-
if(!$app_google_credentials_id_app$$)return $callback$$({error:"Ch\u01b0a khai b\u00e1o th\u00f4ng tin truy c\u1eadp google apis"});let $listinfo_code$$=($req$$.query.listinfo_code||$ctrl$$.name).toLowerCase(),$listinfo$$=await global.getModel("listinfo").findOne({code:$listinfo_code$$}).lean();if(!$listinfo$$||!$listinfo$$.fields||$listinfo$$.fields.length==0)return $callback$$({error:"API n\u00e0y kh\u00f4ng c\u00f3 th\u00f4ng tin listinfo"});let $credentials$$;try{$credentials$$=
|
|
4
|
-
"string"?JSONParser($app_google_credentials_id_app$$):$app_google_credentials_id_app$$;const {client_email:$client_email$$,private_key:$private_key$$}=$credentials$$;var {google:$error$$}=require("googleapis");const $auth$$=new $error$$.auth.JWT($client_email$$,null,$private_key$$,["https://www.googleapis.com/auth/spreadsheets.readonly"]),$response$$=await $error$$.sheets({version:"v4",auth:$auth$$}).spreadsheets.values.get({spreadsheetId:$spreadsheetid$$,
|
|
5
|
-
0)return $callback$$({error:"Sheet n\u00e0y kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u"});let $columns$$=$response$$.data.values[0].map($c$$=>{let $field$$=$listinfo$$.fields.find($f$$=>$f$$.name.toLowerCase()==($c$$||"").toString().toLowerCase());return $field$$?$field$$.name:($field$$=$listinfo$$.fields.find($f$$=>$f$$.header.toLowerCase()==($c$$||"").toString().toLowerCase()))?$field$$.name:$c$$}),$data$$=$response$$.data.values.slice(1).map($row$$=>
|
|
6
|
-
{$n_row$$[$c$$]=$row$$[$index$$]});return $n_row$$});$req$$.data=$data$$;$callback$$()}catch($e$$){return $error$$=(($e$$.response||{}).data||{}).error||$e$$,$credentials$$&&$error$$.code==403?$callback$$({error:`Kh\u00f4ng th\u1ec3 truy c\u1eadp v\u00e0o google sheet. H\u00e3y ph\u00e2n quy\u1ec1n cho t\u00e0i kho\u1ea3n ${$credentials$$.client_email} c\u00f3 quy\u1ec1n \u0111\u1ecdc google sheet tr\u00ean`}):$callback$$($error$$)}})},function($callback$$){let $data
|
|
7
|
-
$data$$,[],function($e$$,$new_data$$){setImmediate(()=>{if($e$$)return Logger.error("onImport from json:",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.data=$new_data$$||$data$$;$callback$$()})});else $req$$.data=$data$$,$callback$$()},function($callback$$){setImmediate(async()=>{let $data$$=$req$$.data,$values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){Logger.error("importFromJson"
|
|
8
|
-
{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(async()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTJSON",data:{data:$data$$,status_task:$req$$.status_task},result:{error:$e$$,result:$rs$$,finished_at:new Date}},$req$$.user.email,$req$$.user_agent,$req$$);if($e$$)return Logger.error("import from json"
|
|
9
|
-
$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.error||$e$$.message||$e$$,message:$e$$.message||$e$$.error});if($rs$$.rows_error.length===0)$req$$.result=$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:$req$$.query.update
|
|
10
|
-
|
|
1
|
+
const async=require("../libs/asyncCompat"),{JSONParser}=require("../libs/utils"),importFromGs=($ctrl$$,$req$$,$mainCallback$$)=>{async.series([function($callback$$){setImmediate(async()=>{let {spreadsheetid:$spreadsheetid$$,range:$range$$}=$req$$.query;if(!$spreadsheetid$$)return $callback$$({error:"Thi\u1ebfu tham s\u1ed1 spreadsheetid"});$spreadsheetid$$.indexOf("https://docs.google.com/spreadsheets/d/")>=0&&($spreadsheetid$$=$spreadsheetid$$.replace("https://docs.google.com/spreadsheets/d/",""),
|
|
2
|
+
$spreadsheetid$$=$spreadsheetid$$.split("/")[0]);if(!$spreadsheetid$$)return $callback$$({error:"spreadsheetId is not valid"});$range$$||="Sheet1";var $app_google_credentials_id_app$$=$req$$.query.id_app;$app_google_credentials_id_app$$=await global.getModel("app").findOne({_id:$app_google_credentials_id_app$$}).lean();if(!$app_google_credentials_id_app$$)return $callback$$({error:"id_app kh\u00f4ng t\u1ed3n t\u1ea1i"});$app_google_credentials_id_app$$=$app_google_credentials_id_app$$.google_credentials||
|
|
3
|
+
configs.google_credentials;if(!$app_google_credentials_id_app$$)return $callback$$({error:"Ch\u01b0a khai b\u00e1o th\u00f4ng tin truy c\u1eadp google apis"});let $listinfo_code$$=($req$$.query.listinfo_code||$ctrl$$.name).toLowerCase(),$listinfo$$=await global.getModel("listinfo").findOne({code:$listinfo_code$$}).lean();if(!$listinfo$$||!$listinfo$$.fields||$listinfo$$.fields.length==0)return $callback$$({error:"API n\u00e0y kh\u00f4ng c\u00f3 th\u00f4ng tin listinfo"});let $credentials$$;try{$credentials$$=
|
|
4
|
+
typeof $app_google_credentials_id_app$$=="string"?JSONParser($app_google_credentials_id_app$$):$app_google_credentials_id_app$$;const {client_email:$client_email$$,private_key:$private_key$$}=$credentials$$;var {google:$error$$}=require("googleapis");const $auth$$=new $error$$.auth.JWT($client_email$$,null,$private_key$$,["https://www.googleapis.com/auth/spreadsheets.readonly"]),$response$$=await $error$$.sheets({version:"v4",auth:$auth$$}).spreadsheets.values.get({spreadsheetId:$spreadsheetid$$,
|
|
5
|
+
range:$range$$});if($response$$.data.values.length==0)return $callback$$({error:"Sheet n\u00e0y kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u"});let $columns$$=$response$$.data.values[0].map($c$$=>{let $field$$=$listinfo$$.fields.find($f$$=>$f$$.name.toLowerCase()==($c$$||"").toString().toLowerCase());return $field$$?$field$$.name:($field$$=$listinfo$$.fields.find($f$$=>$f$$.header.toLowerCase()==($c$$||"").toString().toLowerCase()))?$field$$.name:$c$$}),$data$$=$response$$.data.values.slice(1).map($row$$=>
|
|
6
|
+
{let $n_row$$={};$columns$$.forEach(($c$$,$index$$)=>{$n_row$$[$c$$]=$row$$[$index$$]});return $n_row$$});$req$$.data=$data$$;$callback$$()}catch($e$$){return $error$$=(($e$$.response||{}).data||{}).error||$e$$,$credentials$$&&$error$$.code==403?$callback$$({error:`Kh\u00f4ng th\u1ec3 truy c\u1eadp v\u00e0o google sheet. H\u00e3y ph\u00e2n quy\u1ec1n cho t\u00e0i kho\u1ea3n ${$credentials$$.client_email} c\u00f3 quy\u1ec1n \u0111\u1ecdc google sheet tr\u00ean`}):$callback$$($error$$)}})},function($callback$$){let $data$$=
|
|
7
|
+
$req$$.data;if($ctrl$$.options.onImport)$ctrl$$.options.onImport($req$$.user,$data$$,[],function($e$$,$new_data$$){setImmediate(()=>{if($e$$)return Logger.error("onImport from json:",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.data=$new_data$$||$data$$;$callback$$()})});else $req$$.data=$data$$,$callback$$()},function($callback$$){setImmediate(async()=>{let $data$$=$req$$.data,$values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){Logger.error("importFromJson",
|
|
8
|
+
$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(async()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTJSON",data:{data:$data$$,status_task:$req$$.status_task},result:{error:$e$$,result:$rs$$,finished_at:new Date}},$req$$.user.email,$req$$.user_agent,$req$$);if($e$$)return Logger.error("import from json",
|
|
9
|
+
$ctrl$$.name,$data$$.length,"rows with error:",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.error||$e$$.message||$e$$,message:$e$$.message||$e$$.error});if($rs$$.rows_error.length===0)$req$$.result=$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:$req$$.query.update===
|
|
10
|
+
!0||$req$$.query.update=="true",req:$req$$})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.result)})};module.exports=importFromGs;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const fs=require("fs"),
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
const fs=require("fs"),_=require("lodash"),{JSONParser}=require("../libs/utils"),importFromJsonCore=async($ctrl$$,$req$$)=>{let $data$$;if($req$$.files&&$req$$.files.json){const $filePath$$=$req$$.files.json.path;try{Logger.info("read file json..."),$data$$=require($filePath$$),fs.unlink($filePath$$,function($error$$){$error$$&&Logger.error("Can't delete file tmp:"+$filePath$$,$error$$)})}catch($e$$){throw Logger.error("importFromJson",$e$$),{error:$e$$.message||$e$$};}if(!$data$$.map)throw{error:"D\u1eef li\u1ec7u \u0111\u1ec3 import ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"};
|
|
2
|
+
}else if($req$$.body){if(!$req$$.body.map)throw{error:"D\u1eef li\u1ec7u \u0111\u1ec3 import ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"};try{$data$$=$req$$.body.map($row_rs$$=>{$row_rs$$=_.isString($row_rs$$)?JSONParser($row_rs$$):$row_rs$$;delete $row_rs$$.id_app;delete $row_rs$$._id;return $row_rs$$})}catch($e$$){throw Logger.error("importFromJson",$e$$),{error:$e$$.message||$e$$};}}else throw{error:"Kh\u00f4ng t\u00ecm th\u1ea5y d\u1eef li\u1ec7u c\u1ea7n import"};$req$$.data=$data$$;if($ctrl$$.options.onImport)try{$data$$=
|
|
3
|
+
await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.options.onImport($req$$.user,$data$$,[],($e$$,$nd$$)=>$e$$?$reject$$($e$$):$resolve$$($nd$$))})||$data$$}catch($e$$){throw Logger.error("onImport from json:",$e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$};}$req$$.data=$data$$;let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){Logger.error("importFromJson",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}const {e:$importError$$,
|
|
4
|
+
rs:$rs$$}=await new Promise($resolve$$=>{$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>$resolve$$({e:$e$$,rs:$rs$$}),{replace:$req$$.query.update===!0||$req$$.query.update=="true",req:$req$$})});global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTJSON",data:{data:$data$$,status_task:$req$$.status_task},result:{error:$importError$$,result:$rs$$,finished_at:new Date}},$req$$.user.email,$req$$.user_agent,$req$$);if($importError$$){Logger.error("import from json",
|
|
5
|
+
$ctrl$$.name,$data$$.length,"rows with error:",$importError$$);if($importError$$.error)throw $importError$$.message=$importError$$.message||$importError$$.error,$importError$$;throw{error:$importError$$.error||$importError$$.message||$importError$$,message:$importError$$.message||$importError$$.error};}if($rs$$.rows_error.length===0)return $rs$$;const $message$$=[...(new Set($rs$$.rows_error.map($r$$=>[...(new Set($r$$.error.map($err$$=>$err$$.error||$err$$)))].join(", "))))].join(", ");throw{error:$rs$$.error||
|
|
6
|
+
$rs$$,message:$message$$};},importFromJSON=function($ctrl$$,$req$$,$callback$$){importFromJsonCore($ctrl$$,$req$$).then($rs$$=>$callback$$(null,$rs$$),$e$$=>$callback$$($e$$))};importFromJSON.importFromJsonAsync=($ctrl$$,$req$$)=>importFromJsonCore($ctrl$$,$req$$);importFromJSON.importFromJsonCore=importFromJsonCore;module.exports=importFromJSON;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
const fs=require("fs"),async=require("async"),_=require("lodash"),{JSONParser}=require("../libs/utils"),importFromJSON=($ctrl$$,$req$$,$mainCallback$$)=>{async.series([function($callback$$){if($req$$.files&&$req$$.files.json){let $filePath$$=$req$$.files.json.path;try{Logger.info("read file json...");$req$$.data=require($filePath$$);fs.unlink($filePath$$,function($error$$){$error$$&&Logger.error("Can't delete file tmp:"+$filePath$$,$error$$)});if(!$req$$.data.map)return $callback$$({error:"D\u1eef li\u1ec7u \u0111\u1ec3 import ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"});
|
|
2
|
+
$callback$$()}catch($e$$){return Logger.error("importFromJson",$e$$),$callback$$({error:$e$$.message||$e$$})}}else if($req$$.body){if(!$req$$.body.map)return $callback$$({error:"D\u1eef li\u1ec7u \u0111\u1ec3 import ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"});try{$req$$.data=$req$$.body.map($row_rs$$=>{$row_rs$$=_.isString($row_rs$$)?JSONParser($row_rs$$):$row_rs$$;delete $row_rs$$.id_app;delete $row_rs$$._id;return $row_rs$$})}catch($e$$){return Logger.error("importFromJson",$e$$),$callback$$({error:$e$$.message||
|
|
3
|
+
$e$$})}$callback$$()}else return $callback$$({error:"Kh\u00f4ng t\u00ecm th\u1ea5y d\u1eef li\u1ec7u c\u1ea7n import"})},function($callback$$){let $data$$=$req$$.data;if($ctrl$$.options.onImport)$ctrl$$.options.onImport($req$$.user,$data$$,[],function($e$$,$new_data$$){setImmediate(()=>{if($e$$)return Logger.error("onImport from json:",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.data=$new_data$$||$data$$;$callback$$()})});else $req$$.data=$data$$,$callback$$()},
|
|
4
|
+
function($callback$$){setImmediate(async()=>{let $data$$=$req$$.data,$values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){Logger.error("importFromJson",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(async()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTJSON",
|
|
5
|
+
data:{data:$data$$,status_task:$req$$.status_task},result:{error:$e$$,result:$rs$$,finished_at:new Date}},$req$$.user.email,$req$$.user_agent,$req$$);if($e$$)return Logger.error("import from json",$ctrl$$.name,$data$$.length,"rows with error:",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.error||$e$$.message||$e$$,message:$e$$.message||$e$$.error});if($rs$$.rows_error.length===0)$req$$.result=$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$$=>
|
|
6
|
+
[...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:$req$$.query.update===!0||$req$$.query.update=="true",req:$req$$})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.result)})};module.exports=importFromJSON;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const async=require("
|
|
1
|
+
const async=require("../libs/asyncCompat"),_=require("lodash"),moment=require("moment"),permission=require("../libs/permission"),utils=require("../libs/utils"),{JSONParser}=require("../libs/utils"),{onAfterCommit}=require("../libs/sessionContext.js"),queryBuilding=require("../libs/queryBuilding"),updateBookHanlder=($ctrl$$,$req$$,$mainCallback$$)=>{let $model$$=$ctrl$$.model;async.series([function($callback$$){setImmediate(async()=>{if(!$ctrl$$.post)return $callback$$({error:"Ch\u1ee9c n\u0103ng n\u00e0y kh\u00f4ng c\u00f3 t\u00ednh n\u0103ng post s\u1ed5 s\u00e1ch"});
|
|
2
2
|
var $condition_newFilters$$={};for(var $k_ngay_ks_tu_ngay$$ in $req$$.query)if($k_ngay_ks_tu_ngay$$!="id_app"&&$k_ngay_ks_tu_ngay$$!="access_token")if($k_ngay_ks_tu_ngay$$=="_id"&&global.mongoose.Types.ObjectId.isValid($req$$.query._id))try{let $id$$=global.mongoose.Types.ObjectId($req$$.query._id);$condition_newFilters$$._id=$id$$}catch($error$$){Logger.error("\u274c [updateBookhandler] postAgain condition",$error$$)}else{if($k_ngay_ks_tu_ngay$$=="q"&&$req$$.query[$k_ngay_ks_tu_ngay$$])try{$condition_newFilters$$=
|
|
3
3
|
JSONParser($req$$.query[$k_ngay_ks_tu_ngay$$]);continue}catch($e$$){return Logger.error("\u274c [updateBookhandler] postAgain parse condition",$e$$),$callback$$($e$$)}if($k_ngay_ks_tu_ngay$$=="tu_ngay"&&_.has($model$$.schema.paths,"ngay_ct")===!0){var $val_val$$=moment($req$$.query.tu_ngay).startOf("date").toDate();$condition_newFilters$$.ngay_ct?$condition_newFilters$$.ngay_ct.$gte=$val_val$$:$condition_newFilters$$.ngay_ct={$gte:$val_val$$}}else $k_ngay_ks_tu_ngay$$=="den_ngay"&&_.has($model$$.schema.paths,
|
|
4
4
|
"ngay_ct")===!0?($val_val$$=moment($req$$.query.den_ngay).endOf("date").toDate(),$condition_newFilters$$.ngay_ct?$condition_newFilters$$.ngay_ct.$lte=$val_val$$:$condition_newFilters$$.ngay_ct={$lte:$val_val$$}):_.has($model$$.schema.paths,$k_ngay_ks_tu_ngay$$)===!0&&($condition_newFilters$$[$k_ngay_ks_tu_ngay$$]=$req$$.query[$k_ngay_ks_tu_ngay$$])}$condition_newFilters$$=queryBuilding.convertLegacyQuery(_.cloneDeep($condition_newFilters$$));$condition_newFilters$$=queryBuilding.buildSearchQuery($condition_newFilters$$);
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
global.mongoose.Types.ObjectId($req$$.query._id);$
|
|
4
|
-
$
|
|
5
|
-
$
|
|
6
|
-
$
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
$
|
|
10
|
-
{
|
|
11
|
-
(
|
|
12
|
-
$
|
|
13
|
-
module.exports=withSesssion;
|
|
1
|
+
const _=require("lodash"),moment=require("moment"),permission=require("../libs/permission"),{JSONParser,convertObjectIdsToStrings}=require("../libs/utils"),{onAfterCommit,executeInTransaction}=require("../libs/sessionContext.js"),queryBuilding=require("../libs/queryBuilding"),{postData,pushNotification}=require("./controllerUtils"),updateFieldHanlderCore=async($ctrl$$,$req$$)=>{var $model_viewValue$$=$ctrl$$.model;const $field$$=$req$$.params.field;if(!_.has($model_viewValue$$.schema.paths,$field$$))throw{error:"Field "+
|
|
2
|
+
$field$$+" kh\u00f4ng t\u1ed3n t\u1ea1i"};var $name_cached_tien_to_val_val$$=$model_viewValue$$.collection.name;$req$$.user.current_id_app&&($name_cached_tien_to_val_val$$+=$req$$.user.current_id_app);delete global.cacheDatas[$name_cached_tien_to_val_val$$];let $condition$$={};for(var $k_newFilters_query_tu_so$$ in $req$$.query)if($k_newFilters_query_tu_so$$!="id_app"&&$k_newFilters_query_tu_so$$!="access_token")if($k_newFilters_query_tu_so$$=="_id"&&mongoose.Types.ObjectId.isValid($req$$.query._id))try{var $den_so_id$$=
|
|
3
|
+
global.mongoose.Types.ObjectId($req$$.query._id);$condition$$._id=$den_so_id$$}catch($error$$){Logger.error("updateField condition",$error$$)}else $k_newFilters_query_tu_so$$=="q"&&$req$$.query[$k_newFilters_query_tu_so$$]?$condition$$=JSONParser($req$$.query[$k_newFilters_query_tu_so$$]):$k_newFilters_query_tu_so$$=="tu_ngay"&&_.has($model_viewValue$$.schema.paths,"ngay_ct")===!0?($name_cached_tien_to_val_val$$=moment($req$$.query.tu_ngay).startOf("date").toDate(),$condition$$.ngay_ct?$condition$$.ngay_ct.$gte=
|
|
4
|
+
$name_cached_tien_to_val_val$$:$condition$$.ngay_ct={$gte:$name_cached_tien_to_val_val$$}):$k_newFilters_query_tu_so$$=="den_ngay"&&_.has($model_viewValue$$.schema.paths,"ngay_ct")===!0?($name_cached_tien_to_val_val$$=moment($req$$.query.den_ngay).endOf("date").toDate(),$condition$$.ngay_ct?$condition$$.ngay_ct.$lte=$name_cached_tien_to_val_val$$:$condition$$.ngay_ct={$lte:$name_cached_tien_to_val_val$$}):_.has($model_viewValue$$.schema.paths,$k_newFilters_query_tu_so$$)===!0&&($condition$$[$k_newFilters_query_tu_so$$]=
|
|
5
|
+
$req$$.query[$k_newFilters_query_tu_so$$]);$k_newFilters_query_tu_so$$=queryBuilding.convertLegacyQuery(_.cloneDeep($condition$$));$condition$$=queryBuilding.buildSearchQuery($k_newFilters_query_tu_so$$);_.has($model_viewValue$$.schema.paths,"id_app")===!0&&($condition$$.id_app=$req$$.user.current_id_app);$ctrl$$.finding&&($condition$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.finding($req$$.user,$condition$$,($e$$,$c$$)=>{if($e$$)return Logger.error("updateField find",$e$$),$e$$.error?$reject$$($e$$):
|
|
6
|
+
$reject$$({error:$e$$.message||$e$$});$resolve$$($c$$)},{req:$req$$})}));$ctrl$$.dynamicFinding&&($condition$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.dynamicFinding($req$$.user,$condition$$,($e$$,$c$$)=>{if($e$$)return Logger.error("updateField dynamicFinding",$e$$),$e$$.error?$reject$$($e$$):$reject$$({error:$e$$.message||$e$$});$resolve$$($c$$)},{req:$req$$})}));await new Promise(($resolve$$,$reject$$)=>{permission.isAdmin($req$$.user.current_id_app,$req$$.user.email,($e$$,$admin$$)=>
|
|
7
|
+
{if($e$$)return $reject$$({error:$e$$.error||$e$$,code:$e$$.code});if(!$admin$$)return $reject$$({error:"B\u1ea1n ph\u1ea3i c\u00f3 quy\u1ec1n admin \u0111\u1ec3 th\u1ef1c hi\u1ec7n t\u00ednh n\u0103ng n\u00e0y"});$resolve$$()})});_.has($model_viewValue$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$$.ma_ct=$ctrl$$.name.toUpperCase());$k_newFilters_query_tu_so$$=$model_viewValue$$.find($condition$$);_.has($model_viewValue$$.schema.paths,"ngay_ct")===!0&&$k_newFilters_query_tu_so$$.sort({ngay_ct:1});
|
|
8
|
+
let $obj4view$$;try{$obj4view$$=await $k_newFilters_query_tu_so$$.lean()}catch($e$$){throw Logger.error("updateField query",$e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$.error||$e$$};}global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"UPDATE FIELD:"+$field$$,data:{condition:JSON.stringify($condition$$)}},$req$$.user.email,$req$$.user_agent,$req$$);($k_newFilters_query_tu_so$$=Number($req$$.query.tu_so))||($k_newFilters_query_tu_so$$=1);$den_so_id$$=$req$$.query.den_so;
|
|
9
|
+
$name_cached_tien_to_val_val$$=$req$$.query.tien_to;let $hau_to$$=$req$$.query.hau_to,$gia_tri$$;for(let $i$$=0;$i$$<$obj4view$$.length;$i$$++)$gia_tri$$=$k_newFilters_query_tu_so$$+$i$$+"",$den_so_id$$&&($gia_tri$$="0000000000000000000".substring(0,$den_so_id$$.length-$gia_tri$$.length)+$gia_tri$$),$name_cached_tien_to_val_val$$&&($gia_tri$$=$name_cached_tien_to_val_val$$+$gia_tri$$),$hau_to$$&&($gia_tri$$+=$hau_to$$),$obj4view$$[$i$$][$field$$]=$gia_tri$$;let $rs$$=[];for(const $obj$$ of $obj4view$$){delete $obj$$.__v;
|
|
10
|
+
try{await $model_viewValue$$.updateOne({_id:$obj$$._id},$obj$$)}catch($e$$){throw Logger.error("updateField",$e$$),$e$$.error?$e$$:{error:$e$$.message||$e$$};}await $ctrl$$.cacheData($obj$$);if($ctrl$$.post)try{await postData($obj$$,$ctrl$$,{req:$req$$})}catch($e$$){throw Logger.error("error post data",$e$$),$e$$;}$rs$$.push($obj$$)}onAfterCommit(()=>{$ctrl$$.emit("saved",$rs$$);$ctrl$$.emit("updated",$rs$$)});$rs$$=$rs$$.map($o$$=>$o$$.toObject?convertObjectIdsToStrings($o$$.toObject()):$o$$);$model_viewValue$$=
|
|
11
|
+
await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.onView($req$$.user,$rs$$,($e$$,$vv$$)=>{if($e$$)return Logger.error("updateField onview",$e$$),$e$$.error?$reject$$($e$$):$reject$$({error:$e$$.message||$e$$});$resolve$$($vv$$)},{req:$req$$})});$req$$&&$model_viewValue$$.forEach($r$$=>{pushNotification($ctrl$$,$r$$,"update",null,!0,{exclude_token:$req$$.query.access_token})});return $rs$$},updateFieldHanlderAsync=($ctrl$$,$req$$)=>updateFieldHanlderCore($ctrl$$,$req$$),withSesssion=async($ctrl$$,
|
|
12
|
+
$req$$,$callback$$)=>{try{const $rs$$=await executeInTransaction(()=>updateFieldHanlderCore($ctrl$$,$req$$));$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}};module.exports=withSesssion;module.exports.updateFieldHanlderAsync=updateFieldHanlderAsync;module.exports.updateFieldHanlderCore=updateFieldHanlderCore;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const async=require("async"),_=require("lodash"),moment=require("moment"),permission=require("../libs/permission"),{JSONParser,convertObjectIdsToStrings}=require("../libs/utils"),{onAfterCommit,executeInTransaction}=require("../libs/sessionContext.js"),queryBuilding=require("../libs/queryBuilding"),{postData,pushNotification}=require("./controllerUtils"),updateFieldHanlder=($ctrl$$,$req$$,$mainCallback$$)=>{const $model$$=$ctrl$$.model;let $field$$;async.series([function($callback$$){$field$$=$req$$.params.field;
|
|
2
|
+
if(!_.has($model$$.schema.paths,$field$$))return $callback$$({error:"Field "+$field$$+" kh\u00f4ng t\u1ed3n t\u1ea1i"});var $condition_name_cached$$=$model$$.collection.name;$req$$.user.current_id_app&&($condition_name_cached$$+=$req$$.user.current_id_app);delete global.cacheDatas[$condition_name_cached$$];$condition_name_cached$$={};for(var $k_newFilters$$ in $req$$.query)if($k_newFilters$$!="id_app"&&$k_newFilters$$!="access_token")if($k_newFilters$$=="_id"&&mongoose.Types.ObjectId.isValid($req$$.query._id))try{let $id$$=
|
|
3
|
+
global.mongoose.Types.ObjectId($req$$.query._id);$condition_name_cached$$._id=$id$$}catch($error$$){Logger.error("updateField condition",$error$$)}else if($k_newFilters$$=="q"&&$req$$.query[$k_newFilters$$])$condition_name_cached$$=JSONParser($req$$.query[$k_newFilters$$]);else if($k_newFilters$$=="tu_ngay"&&_.has($model$$.schema.paths,"ngay_ct")===!0){var $val_val$$=moment($req$$.query.tu_ngay).startOf("date").toDate();$condition_name_cached$$.ngay_ct?$condition_name_cached$$.ngay_ct.$gte=$val_val$$:
|
|
4
|
+
$condition_name_cached$$.ngay_ct={$gte:$val_val$$}}else $k_newFilters$$=="den_ngay"&&_.has($model$$.schema.paths,"ngay_ct")===!0?($val_val$$=moment($req$$.query.den_ngay).endOf("date").toDate(),$condition_name_cached$$.ngay_ct?$condition_name_cached$$.ngay_ct.$lte=$val_val$$:$condition_name_cached$$.ngay_ct={$lte:$val_val$$}):_.has($model$$.schema.paths,$k_newFilters$$)===!0&&($condition_name_cached$$[$k_newFilters$$]=$req$$.query[$k_newFilters$$]);$k_newFilters$$=queryBuilding.convertLegacyQuery(_.cloneDeep($condition_name_cached$$));
|
|
5
|
+
$condition_name_cached$$=queryBuilding.buildSearchQuery($k_newFilters$$);_.has($model$$.schema.paths,"id_app")===!0&&($condition_name_cached$$.id_app=$req$$.user.current_id_app);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition_name_cached$$,function($e$$,$condition$$){if($e$$)return Logger.error("updateField find",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$$,function($e$$,$condition$$){if($e$$)return Logger.error("updateField dynamicFinding",
|
|
6
|
+
$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$callback$$()},{req:$req$$}):($req$$.condition=$condition$$,$callback$$())},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition_name_cached$$,function($e$$,$condition$$){if($e$$)return Logger.error("updateField dynamicFinding",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$callback$$()},{req:$req$$}):($req$$.condition=
|
|
7
|
+
$condition_name_cached$$,$callback$$())},function($callback$$){permission.isAdmin($req$$.user.current_id_app,$req$$.user.email,function($e$$,$admin$$){if($e$$)return $callback$$({error:$e$$.error||$e$$,code:$e$$.code});if(!$admin$$)return $callback$$({error:"B\u1ea1n ph\u1ea3i c\u00f3 quy\u1ec1n admin \u0111\u1ec3 th\u1ef1c hi\u1ec7n t\u00ednh n\u0103ng n\u00e0y"});$callback$$()})},function($callback$$){let $condition$$=$req$$.condition;_.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&
|
|
8
|
+
($condition$$.ma_ct=$ctrl$$.name.toUpperCase());let $query$$=$model$$.find($condition$$);_.has($model$$.schema.paths,"ngay_ct")===!0&&$query$$.sort({ngay_ct:1});$query$$.lean().then(function($obj4view$$){setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"UPDATE FIELD:"+$field$$,data:{condition:JSON.stringify($condition$$)}},$req$$.user.email,$req$$.user_agent,$req$$);let $tu_so$$=Number($req$$.query.tu_so);$tu_so$$||=1;let $den_so$$=$req$$.query.den_so,
|
|
9
|
+
$tien_to$$=$req$$.query.tien_to,$hau_to$$=$req$$.query.hau_to,$gia_tri$$;for(let $i$$=0;$i$$<$obj4view$$.length;$i$$++)$gia_tri$$=$tu_so$$+$i$$+"",$den_so$$&&($gia_tri$$="0000000000000000000".substring(0,$den_so$$.length-$gia_tri$$.length)+$gia_tri$$),$tien_to$$&&($gia_tri$$=$tien_to$$+$gia_tri$$),$hau_to$$&&($gia_tri$$+=$hau_to$$),$obj4view$$[$i$$][$field$$]=$gia_tri$$;async.mapSeries($obj4view$$,function($obj$$,$callback$$){delete $obj$$.__v;$model$$.updateOne({_id:$obj$$._id},$obj$$,function($e$$){setImmediate(async()=>
|
|
10
|
+
{if($e$$)return $callback$$($e$$);await $ctrl$$.cacheData($obj$$);$ctrl$$.post?postData($obj$$,$ctrl$$,function($e$$){if($e$$)return Logger.error("error post data",$e$$),$callback$$($e$$);$callback$$(null,$obj$$)},{req:$req$$}):$callback$$(null,$obj$$)})})},function($e$$,$rs$$){if($e$$)return Logger.error("updateField",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});onAfterCommit(()=>{$ctrl$$.emit("saved",$rs$$);$ctrl$$.emit("updated",$rs$$)});$rs$$=$rs$$.map($o$$=>{$o$$.toObject&&
|
|
11
|
+
($o$$=convertObjectIdsToStrings($o$$.toObject()));return $o$$});$ctrl$$.onView($req$$.user,$rs$$,function($e$$,$viewValue$$){if($e$$)return Logger.error("updateField onview",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$&&$viewValue$$.forEach($r$$=>{pushNotification($ctrl$$,$r$$,"update",null,!0,{exclude_token:$req$$.query.access_token})});$req$$.result=$rs$$;$callback$$()},{req:$req$$})})})}).catch($e$$=>{Logger.error("updateField query",$e$$);return $e$$.error?
|
|
12
|
+
$callback$$($e$$):$callback$$({error:$e$$.message||$e$$.error||$e$$})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.result)})},updateFieldHanlderAsync=($ctrl$$,$req$$)=>new Promise(($resolve$$,$reject$$)=>{updateFieldHanlder($ctrl$$,$req$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})}),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{try{const $rs$$=await executeInTransaction(async()=>updateFieldHanlderAsync($ctrl$$,$req$$));$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}};
|
|
13
|
+
module.exports=withSesssion;
|
|
@@ -1,40 +1,38 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
$e
|
|
8
|
-
|
|
9
|
-
$
|
|
10
|
-
|
|
11
|
-
($
|
|
12
|
-
$
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
$
|
|
18
|
-
|
|
19
|
-
if($ctrl$$.dynamicUpdating)$ctrl$$.dynamicUpdating($user$$,$
|
|
20
|
-
|
|
21
|
-
$unique
|
|
22
|
-
Logger.
|
|
23
|
-
|
|
24
|
-
$
|
|
25
|
-
$obj
|
|
26
|
-
$
|
|
27
|
-
"
|
|
28
|
-
$
|
|
29
|
-
|
|
30
|
-
$
|
|
31
|
-
|
|
32
|
-
$
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
$
|
|
37
|
-
$
|
|
38
|
-
|
|
39
|
-
{req:$req$$})):(Logger.info("[updateHanlder] tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3 sau khi import..."),$callback$$(null,{_id:$obj_created_cv$$._id}))})}],($e$$,$rs$$)=>{$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,{new_obj:$rs$$,old_obj:$current_obj$$}))})}catch($e$$){Logger.error("[updateHanlder]",$ctrl$$.name,$e$$),$callback$$($e$$)}},updateHandlerAsync=($ctrl$$,$req$$)=>
|
|
40
|
-
new Promise(($resolve$$,$reject$$)=>{updateHandler($ctrl$$,$req$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})}),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{try{const $rs$$=await executeInTransaction(async()=>updateHandlerAsync($ctrl$$,$req$$));$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}};module.exports=withSesssion;module.exports.updateHandler=updateHandler;
|
|
1
|
+
const Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),_=require("lodash"),validate=require("../libs/validate"),permission=require("../libs/permission"),validator=require("../libs/validator"),{convertObjectIdsToStrings}=require("../libs/utils"),{onAfterCommit,executeInTransaction}=require("../libs/sessionContext.js"),{ERRORS,isExists,createIdRef,checkReference,fields_sync_master_detail,postData,getNextSequence,runWebhooks,cleanDataByMongooseSchema,
|
|
2
|
+
deletePost}=require("./controllerUtils"),updateHandlerCore=async function($ctrl$$,$req$$){let {user:$user$$,id:$id$$,data:$data$$,action:$action$$,_action:$_action$$}=$req$$;$_action$$||="update";delete $data$$.__v;try{const $model$$=$ctrl$$.model,$unique$$=$ctrl$$.unique,$module$$=$ctrl$$.module,$schema_paths$$=$model$$.schema.paths;$schema_paths$$.ma_ct&&$ctrl$$.options.isVoucher&&($data$$.ma_ct=$ctrl$$.name.toUpperCase());delete $data$$.session_updated;delete $data$$.session_created;$req$$&&$schema_paths$$.session_updated&&
|
|
3
|
+
($data$$.session_updated=($req$$.cookies||{}).uid);Logger.info("[updateHanlder] t\u00ecm object \u0111\u1ec3 update...");const $obj$$=await $model$$.findById($id$$).inTxn();if(!$obj$$)throw Logger.error("[updateHanlder] not found object",$model$$.modelName,$id$$),{error:ERRORS.ERR_NOT_FOUND,code:ERRORS.ERR_NOT_FOUND_CODE};$data$$.listinfo_code=$obj$$.toObject().listinfo_code||$ctrl$$.name;$req$$.headers=$req$$.headers||{};$req$$.query=$req$$.query||{};Logger.info("[updateHanlder] x\u1eed l\u00fd d\u1eef li\u1ec7u...");
|
|
4
|
+
let $listinfo_code$$=$req$$.headers["Listinfo-Code"]||$req$$.headers["listinfo-code"]||$req$$.query["listinfo-code"]||$data$$.listinfo_code,$voucher_options$$;if($listinfo_code$$){if($listinfo_code$$!=$ctrl$$.name){const $listinfo$$=await global.getModel("listinfo").findOne({code:$listinfo_code$$},{api_code:1,code:1}).lean();$listinfo$$?($listinfo$$.api_code||$listinfo$$.code)!=$ctrl$$.name&&($listinfo_code$$=$ctrl$$.name):$listinfo_code$$=$ctrl$$.name}$voucher_options$$=(await global.getModel("options").findOne({id_app:$user$$.current_id_app,
|
|
5
|
+
id_func:$listinfo_code$$.toLowerCase()}).lean()||{}).option}$voucher_options$$||($voucher_options$$=(await global.getModel("options").findOne({id_app:$user$$.current_id_app,id_func:$ctrl$$.name}).lean()||{}).option);Logger.info("[updateHanlder] ki\u1ec3m tra recaptcha...");if($ctrl$$.options.requireRecaptchaToken&&configs.GOOGLE_RECAPTCHA_SECRET_KEY){if(!$data$$["g-recaptcha-response"])throw"Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u g-recaptcha-response";try{await permission.verifyReCaptcha($data$$["g-recaptcha-response"])}catch($e$$){throw $e$$.message||
|
|
6
|
+
$e$$.error||$e$$;}}Logger.info("[updateHanlder] Ki\u1ec3m tra verify otp...");var $checkHasRight_requireOtp$$=$ctrl$$.options.requireOtp;$checkHasRight_requireOtp$$&&_.isFunction($checkHasRight_requireOtp$$)&&($checkHasRight_requireOtp$$=$checkHasRight_requireOtp$$($data$$,{action:$_action$$,_id:$id$$,user:$user$$}));if($checkHasRight_requireOtp$$&&$_action$$!=="import")try{await permission.verifyOTP($user$$.email,$data$$["otp-id"],$data$$["otp-code"])}catch($e$$){throw{error:$e$$.message||$e$$.error||
|
|
7
|
+
$e$$,code:ERRORS.ERR_VERIFY_OTP};}let $current_obj$$;const $runOnErrorUpdating$$=$msgError$$=>new Promise($resolve$$=>{if(!$ctrl$$.options.onErrorUpdating)return $resolve$$($msgError$$);$ctrl$$.options.onErrorUpdating($user$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$resolve$$($msgError$$)},$current_obj$$)});Logger.info("[updateHanlder] ki\u1ec3m tra tr\u1ea1ng th\u00e1i duy\u1ec7t...");$data$$.trang_thai&&($data$$.trang_thai=$data$$.trang_thai.toString());if($data$$.trang_thai||$obj$$.trang_thai){let $q_approve$$=
|
|
8
|
+
{id_ct:$obj$$._id.toString(),user_approved:{$exists:!0}};$q_approve$$.trang_thai=($data$$.trang_thai||$obj$$.trang_thai||"").toString();let $old_request$$=await global.getModel("approve").findOne($q_approve$$);if($old_request$$&&$old_request$$.update_after_approve?.cho_phep_cap_nhat_khi_da_duyet!=1)throw"Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt ch\u1ee9ng t\u1eeb \u1edf tr\u1ea1ng th\u00e1i n\u00e0y do n\u00f3 \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t";}Logger.info("[updateHanlder] ki\u1ec3m tra kho\u00e1 s\u1ed5...");
|
|
9
|
+
if($obj$$.ngay_ct&&$obj$$.id_app&&$obj$$.schema&&$obj$$.schema.validate&&$obj$$.schema.validate.ngay_ct)try{await new Promise(($resolve$$,$reject$$)=>{validator.unlockBook[0]($obj$$.id_app,$obj$$.ngay_ct,$unlock$$=>{if(!$unlock$$)return $reject$$(validator.unlockBook[1]);$resolve$$($unlock$$)},$voucher_options$$)})}catch($e$$){throw $e$$.message||$e$$.error||$e$$;}$schema_paths$$.exfields&&($obj$$.exfields=$obj$$.exfields||{});const $old_obj$$=convertObjectIdsToStrings($obj$$.toObject());$current_obj$$=
|
|
10
|
+
_.cloneDeep($old_obj$$);const $data_keys$$=Object.keys($data$$);for(let $key$$ in $old_obj$$)$data_keys$$.indexOf($key$$)<0&&($data$$[$key$$]=$old_obj$$[$key$$]);Logger.info("[updateHanlder] ki\u1ec3m tra quy\u1ec1n truy c\u1eadp...");var $checkSoCT_notNeedRight$$=await $ctrl$$.notNeedRight($user$$,{action:$_action$$,data:$data$$,obj:$current_obj$$});$checkHasRight_requireOtp$$=$extraOptions$$=>new Promise(($resolve$$,$reject$$)=>{permission.hasRight($user$$.current_id_app,$user$$.email,$module$$,
|
|
11
|
+
$_action$$,($error$$,$hr$$,$c_app$$)=>{if(!$hr$$)return $reject$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||ERRORS.ERR_NOT_PERMIT_CODE});$ctrl$$.checkData($c_app$$,{...$data$$,_id:$obj$$._id.toString()},$e$$=>{if($e$$)return $reject$$($e$$);$resolve$$()})},$extraOptions$$)});await $checkHasRight_requireOtp$$({obj:$current_obj$$,notNeedRight:$checkSoCT_notNeedRight$$,listinfo_code:$listinfo_code$$,user:$user$$});await $checkHasRight_requireOtp$$({data:$data$$,obj:$current_obj$$,
|
|
12
|
+
notNeedRight:$checkSoCT_notNeedRight$$,listinfo_code:$listinfo_code$$,user:$user$$});$checkSoCT_notNeedRight$$=async()=>{if($model$$.schema.paths.ngay_ct&&$model$$.schema.paths.so_ct&&$obj$$.ngay_ct&&$data$$.so_ct&&$obj$$.so_ct!==$data$$.so_ct&&$voucher_options$$?.check_so_ct&&$voucher_options$$?.check_so_ct!=="0"){let $query_check$$={id_app:$obj$$.id_app,so_ct:$data$$.so_ct,listinfo_code:$listinfo_code$$||$ctrl$$.name,_id:{$ne:$obj$$._id.toString()}},$tu_ngay$$;var $date_check_den_ngay$$=$data$$.ngay_ct||
|
|
13
|
+
$obj$$.ngay_ct;switch($voucher_options$$.check_so_ct){case "1":$tu_ngay$$=moment($date_check_den_ngay$$).startOf("date").toDate();$date_check_den_ngay$$=moment($date_check_den_ngay$$).endOf("date").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$date_check_den_ngay$$};break;case "2":$tu_ngay$$=moment($date_check_den_ngay$$).startOf("month").toDate();$date_check_den_ngay$$=moment($date_check_den_ngay$$).endOf("month").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$date_check_den_ngay$$};
|
|
14
|
+
break;case "3":$tu_ngay$$=moment($date_check_den_ngay$$).startOf("quarter").toDate();$date_check_den_ngay$$=moment($date_check_den_ngay$$).endOf("quarter").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$date_check_den_ngay$$};break;case "8":$tu_ngay$$=moment($date_check_den_ngay$$).startOf("year").toDate(),$date_check_den_ngay$$=moment($date_check_den_ngay$$).startOf("year").toDate(),$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$date_check_den_ngay$$}}if(await $model$$.findOne($query_check$$,
|
|
15
|
+
{so_ct:1}).lean())throw"S\u1ed1 ch\u1ee9ng t\u1eeb "+$data$$.so_ct+" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ch\u1ecdn m\u1ed9t s\u1ed1 ch\u1ee9ng t\u1eeb kh\u00e1c";}};Logger.info("[updateHanlder] ki\u1ec3m tra/t\u1ea1o s\u1ed1 ch\u1ee9ng t\u1eeb...");var $count$$=$data$$.trang_thai||$obj$$.trang_thai;const $current_so_ct$$=$data$$.so_ct||$obj$$.so_ct;if($count$$!==$obj$$.trang_thai&&(!$voucher_options$$?.trang_thai_create_voucher_numbers||$voucher_options$$?.trang_thai_create_voucher_numbers.length==
|
|
16
|
+
0||$voucher_options$$?.trang_thai_create_voucher_numbers?.indexOf($count$$)>=0)&&$model$$.schema.paths.so_ct)if($current_so_ct$$&&$current_so_ct$$.toUpperCase()!==($listinfo_code$$||$ctrl$$.name).toUpperCase()&&$current_so_ct$$.toUpperCase()!==$ctrl$$.name.toUpperCase())await $checkSoCT_notNeedRight$$();else for($count$$=0;$count$$<100;$count$$++){var $kq_rs$$=await getNextSequence($obj$$.id_app,$listinfo_code$$||$ctrl$$.name,"so_ct",{...($obj$$.toObject?$obj$$.toObject():$obj$$),...$data$$});$data$$.so_ct=
|
|
17
|
+
$kq_rs$$.so_ct;try{await $checkSoCT_notNeedRight$$();break}catch($error$$){if($count$$>=99)throw $error$$;}}else await $checkSoCT_notNeedRight$$();Logger.info("[updateHanlder] c\u1eadp nh\u1eadt d\u1eef li\u1ec7u...");try{(await permission.getFieldNotRight($obj$$.id_app,$user$$.email,$ctrl$$.name)).forEach($f$$=>{delete $data$$[$f$$]})}catch($e$$){Logger.error("Error get field not right",$e$$)}if($ctrl$$.updating){const [$updatedData$$,$updatedObj$$]=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.updating($user$$,
|
|
18
|
+
$data$$,$obj$$,($error$$,$_data$$,$_obj$$)=>$error$$?$reject$$($error$$):$resolve$$([$_data$$,$_obj$$]))});if($ctrl$$.dynamicUpdating){const $dynData$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.dynamicUpdating($user$$,$updatedData$$,$updatedObj$$,($error$$,$_data$$)=>$error$$?$reject$$($error$$):$resolve$$($_data$$),{listinfo_code:$listinfo_code$$,req:$req$$})});for(let $f$$ in $dynData$$)$schema_paths$$[$f$$]&&($data$$[$f$$]=$dynData$$[$f$$])}else for(let $f$$ in $updatedData$$)$schema_paths$$[$f$$]&&
|
|
19
|
+
($data$$[$f$$]=$updatedData$$[$f$$])}else if($ctrl$$.dynamicUpdating){const $dynData$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.dynamicUpdating($user$$,$data$$,$obj$$,($error$$,$_data$$)=>$error$$?$reject$$($error$$):$resolve$$($_data$$),{listinfo_code:$listinfo_code$$,req:$req$$})});for(let $f$$ in $dynData$$)$schema_paths$$[$f$$]&&($data$$[$f$$]=$dynData$$[$f$$])}Logger.info("[updateHanlder] ki\u1ec3m tra s\u1ef1 t\u1ed3n t\u1ea1i...");if($unique$$&&$unique$$.length>0){let $c1$$={},$c2$$=
|
|
20
|
+
{};$obj$$.id_app&&($c1$$.id_app=$obj$$.id_app,$c2$$.id_app=$obj$$.id_app);$unique$$.forEach(function($key$$){$c1$$[$key$$]=$obj$$[$key$$];if($ctrl$$.model.schema.paths[$key$$]){var $instance$$=$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase();$c2$$[$key$$]=$instance$$=="number"?Number($data$$[$key$$]):$instance$$=="date"?new Date($data$$[$key$$]):$instance$$=="string"?($data$$[$key$$]||"").toString():$data$$[$key$$];$c2$$[$key$$]||($c2$$[$key$$]=$c1$$[$key$$])}else Logger.error("[updateHanlder] field",
|
|
21
|
+
$key$$," is not exist. please check unique of controller")});if(_.isEqual($c1$$,$c2$$)!==!0){$kq_rs$$=!1;try{$kq_rs$$=await isExists($model$$,$unique$$,$c2$$,$ctrl$$.replaceIfExists)}catch($error$$){throw await $runOnErrorUpdating$$($error$$||ERRORS.ERR_ALREADY_EXIST);}if($kq_rs$$)throw await $runOnErrorUpdating$$(ERRORS.ERR_ALREADY_EXIST);try{await checkReference($model$$,$obj$$,$unique$$)}catch($error$$){throw Logger.error("[updateHandler] Keys arise data",$c1$$,$c2$$,$error$$,$unique$$),{error:ERRORS.ERR_KEY_ARISE+
|
|
22
|
+
($error$$.error||$error$$.message||$error$$),code:ERRORS.ERR_KEY_ARISE_CODE,unique:$unique$$};}}}Logger.info("[updateHanlder] ki\u1ec3m tra ph\u00e1t sinh d\u1eef li\u1ec7u...");let $keys$$=Object.keys($model$$.referenceKeys||{}).filter($key$$=>$key$$!=="_id");$unique$$&&($keys$$=$keys$$.filter($key$$=>$unique$$.indexOf($key$$)<0));if($keys$$.length>0)try{await checkReference($model$$,$obj$$,$keys$$)}catch($msgError$$){if($ctrl$$.options.onErrorUpdating)throw await $runOnErrorUpdating$$($msgError$$);
|
|
23
|
+
throw{error:ERRORS.ERR_ARISE+($msgError$$.error||$msgError$$.message||$msgError$$),code:ERRORS.ERR_ARISE_CODE};}Logger.info("[updateHanlder] validate d\u1eef li\u1ec7u...");$ctrl$$.validating||($ctrl$$.validating=($u$$,$d$$,$next$$)=>$next$$(null,$d$$));$data$$=cleanDataByMongooseSchema($data$$,$model$$.schema);$data$$._id=$obj$$._id;$data$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.validating($user$$,$data$$,($error$$,$result$$)=>$error$$?$reject$$($error$$):$resolve$$($result$$),{action:$action$$})});
|
|
24
|
+
$data$$.date_updated=new Date;$data$$.user_updated=$user$$.email;delete $data$$.__v;$ctrl$$.options.onUpdateExtending||($ctrl$$.options.onUpdateExtending=function($obj$$,$data$$,$action$$,$fn$$){$fn$$()});await new Promise($resolve$$=>{$ctrl$$.options.onUpdateExtending($obj$$,$data$$,$action$$,()=>$resolve$$())});$schema_paths$$.exfields&&$data$$.exfields&&($obj$$.exfields=$data$$.exfields);delete $data$$.__v;for(let $f$$ in $data$$)$schema_paths$$[$f$$]&&$f$$!=="_id"&&($obj$$.set($f$$,$data$$[$f$$]),
|
|
25
|
+
$f$$!=="exfields"||$obj$$.exfields||($obj$$.exfields={}));try{await new Promise(($resolve$$,$reject$$)=>{validate($obj$$,$msgError$$=>$msgError$$?$reject$$($msgError$$):$resolve$$(),$voucher_options$$)})}catch($msgError$$){throw await $runOnErrorUpdating$$($msgError$$);}Logger.info("[updateHanlder] xo\u00e1 s\u1ed5 s\u00e1ch...");$current_obj$$&&($obj$$._id=$current_obj$$._id);await deletePost($user$$,$obj$$);if($ctrl$$.dynamicDeletePost)try{await $ctrl$$.dynamicDeletePost($obj$$)}catch($e$$){throw Logger.error("[updatehandler] [deleteBooks] [dynamicDeletePost]",
|
|
26
|
+
$e$$),$e$$;}Logger.info("[updateHanlder] L\u01b0u t\u1edbi database...");let $result$$=await (async()=>{$obj$$.ngay_ct&&($obj$$.ngay_ct=moment($obj$$.ngay_ct).toDate());for(var $$condition_k_msgErrors$$ in $ctrl$$.keyValues)$obj$$[$$condition_k_msgErrors$$]=$ctrl$$.keyValues[$$condition_k_msgErrors$$];Object.keys($model$$.schema.paths).filter($model_path$$=>$obj$$[$model_path$$]&&_.isArray($obj$$[$model_path$$])).forEach($model_path$$=>{const $childSchema$$=$model$$.schema.paths[$model_path$$].schema;
|
|
27
|
+
$childSchema$$&&$childSchema$$.paths&&Object.keys($childSchema$$.paths).filter($path$$=>$path$$!=="line"&&$path$$!=="_id"&&$path$$!=="__v"&&fields_sync_master_detail.indexOf($path$$)>=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$$){throw{error:$e$$.message||$e$$.error||$e$$};
|
|
28
|
+
}$ctrl$$.emit("saving",$obj$$);$current_obj$$&&($obj$$._id=$current_obj$$._id);let $obj_created$$,$error$$;$data$$.$condition&&($$condition_k_msgErrors$$=$data$$.$condition,$$condition_k_msgErrors$$._id=$obj$$._id,await $model$$.findOne($$condition_k_msgErrors$$)||($error$$=ERRORS.ERR_CAN_NOT_UPDATE),delete $data$$.$condition);if(!$error$$)try{delete $obj$$.__v,$obj_created$$=await $obj$$.save(),$ctrl$$.populate&&($obj_created$$=$model$$.findById($obj_created$$._id).inTxn(),$obj_created$$=await $ctrl$$.populate($obj_created$$))}catch($e$$){if($error$$=
|
|
29
|
+
$e$$,$ctrl$$.options.onErrorSave)$ctrl$$.options.onErrorSave($user$$,$obj$$,$error$$,$_action$$)}if($error$$){$$condition_k_msgErrors$$=[];for(let $k$$ in $error$$.errors)$$condition_k_msgErrors$$.push($error$$.errors[$k$$].message);$$condition_k_msgErrors$$.length==0&&($$condition_k_msgErrors$$=$error$$.message);$$condition_k_msgErrors$$||=JSON.stringify($error$$);$ctrl$$.options.onErrorUpdating&&await new Promise($resolve$$=>{$ctrl$$.options.onErrorUpdating($user$$,$obj$$,$e$$=>{$e$$&&Logger.error("onErrorUpdating",
|
|
30
|
+
$e$$);$resolve$$()},$current_obj$$)});throw{error:$$condition_k_msgErrors$$,code:ERRORS.ERR_CAN_NOT_UPDATE_CODE};}try{await postData($obj_created$$,$ctrl$$,{req:$req$$})}catch($msgError$$){throw await $runOnErrorUpdating$$($msgError$$);}const $obj_created_cv$$=convertObjectIdsToStrings($obj_created$$.toObject());onAfterCommit(async()=>{$ctrl$$.emit("saved",$obj_created$$,$current_obj$$);$ctrl$$.emit("updated",$obj_created$$);$model$$.modelName!="customer"&&global.getModel("customer").updateActives&&
|
|
31
|
+
global.getModel("customer").updateActives($obj_created$$);runWebhooks($ctrl$$,$obj_created_cv$$,$_action$$.toUpperCase(),$voucher_options$$);await $ctrl$$.cacheData($obj_created_cv$$,void 0,$_action$$);$req$$&&global.getModel("log").create({id_app:$user$$.current_id_app,id_func:$ctrl$$.name,action:$_action$$.toUpperCase(),data:{oldData:$current_obj$$,newData:$data$$,id:$obj$$._id.toString()}},$user$$.email,$req$$.user_agent,$req$$)});return $obj_created_cv$$})();Logger.info("[updateHanlder] X\u1eed l\u00fd sau khi updated...");
|
|
32
|
+
$ctrl$$.updated?($result$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.updated($user$$,$result$$,($error$$,$o$$)=>$error$$?$reject$$($error$$):$resolve$$($o$$),$current_obj$$)}),$ctrl$$.dynamicUpdated&&await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.dynamicUpdated($user$$,$result$$,$error$$=>$error$$?$reject$$($error$$):$resolve$$())})):$ctrl$$.dynamicUpdated&&await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.dynamicUpdated($user$$,$result$$,$error$$=>$error$$?$reject$$($error$$):$resolve$$())});
|
|
33
|
+
Logger.info("[updateHanlder] requestApprove...");$result$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.requestApprove($user$$.current_app_info,$user$$,$result$$,($error$$,$o$$)=>$error$$?$reject$$($error$$):$resolve$$($o$$),$voucher_options$$)});let $approve_data$$;$obj$$.trang_thai!=void 0&&($approve_data$$=await global.getModel("approve").findOne({id_ct:$result$$._id.toString(),"update_after_approve.data.trang_thai":$result$$.trang_thai.toString()}).lean(),!$approve_data$$||$approve_data$$.user_approved||
|
|
34
|
+
$approve_data$$.user_denied?$approve_data$$=null:($approve_data$$.user_approved=$req$$.user.email,$approve_data$$.user_approved_name=$req$$.user.name,$approve_data$$.date_approved=new Date,await global.getModel("approve").updateOne({_id:$approve_data$$._id},$approve_data$$)));let $viewResult$$;if($req$$&&$_action$$!="import"&&$req$$.query.return_data!==!1){$result$$.collection_name=$ctrl$$.collection_name;(await permission.getFieldNotRight($result$$.id_app,$user$$.email,$ctrl$$.name)).forEach($f$$=>
|
|
35
|
+
{delete $result$$[$f$$]});const $viewValue$$=await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.onView($user$$,[$result$$],($error$$,$vv$$)=>$error$$?$reject$$($error$$):$resolve$$($vv$$),{req:$req$$})});$approve_data$$&&onAfterCommit(async()=>{global.getModel("approve").sendNotifyApproved($approve_data$$,$req$$.query.access_token);let $channel$$=`${$ctrl$$.name.toLowerCase()}-${"request_approved"}`;$obj$$.id_app&&($channel$$=`${$channel$$}-${$obj$$.id_app}`);let $message$$=JSON.stringify($viewValue$$[0]);
|
|
36
|
+
try{await global.clientRedis.publish($channel$$,$message$$)}catch($e$$){Logger.error("[approve] [sendNotifyApproved] fire event","request_approved",$e$$)}});$viewResult$$=$viewValue$$[0]}else Logger.info("[updateHanlder] tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3 sau khi import..."),$viewResult$$={_id:$result$$._id};let $name_cached$$=$model$$.collection.name;$user$$.current_id_app&&($name_cached$$+=$user$$.current_id_app);delete global.cacheDatas[$name_cached$$];return{new_obj:$viewResult$$,old_obj:$current_obj$$}}catch($e$$){throw Logger.error("[updateHanlder]",
|
|
37
|
+
$ctrl$$.name,$e$$),$e$$;}},updateHandler=function($ctrl$$,$req$$,$callback$$){updateHandlerCore($ctrl$$,$req$$).then($rs$$=>$callback$$(null,$rs$$),$e$$=>$callback$$($e$$))},updateHandlerAsync=($ctrl$$,$req$$)=>updateHandlerCore($ctrl$$,$req$$),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{try{const $rs$$=await executeInTransaction(()=>updateHandlerCore($ctrl$$,$req$$));$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}};module.exports=withSesssion;module.exports.updateHandler=updateHandler;
|
|
38
|
+
module.exports.updateHandlerAsync=updateHandlerAsync;module.exports.updateHandlerCore=updateHandlerCore;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const async=require("async"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),_=require("lodash"),validate=require("../libs/validate"),permission=require("../libs/permission"),validator=require("../libs/validator"),{convertObjectIdsToStrings}=require("../libs/utils"),{onAfterCommit,executeInTransaction}=require("../libs/sessionContext.js"),{ERRORS,isExists,createIdRef,checkReference,fields_sync_master_detail,postData,getNextSequence,runWebhooks,
|
|
2
|
+
cleanDataByMongooseSchema,deletePost}=require("./controllerUtils"),updateHandler=async function($ctrl$$,$req$$,$callback$$){let {user:$user$$,id:$id$$,data:$data$$,action:$action$$,_action:$_action$$}=$req$$;$_action$$||="update";delete $data$$.__v;try{const $model$$=$ctrl$$.model,$unique$$=$ctrl$$.unique,$module$$=$ctrl$$.module,$schema_paths$$=$model$$.schema.paths;$schema_paths$$.ma_ct&&$ctrl$$.options.isVoucher&&($data$$.ma_ct=$ctrl$$.name.toUpperCase());delete $data$$.session_updated;delete $data$$.session_created;
|
|
3
|
+
$req$$&&$schema_paths$$.session_updated&&($data$$.session_updated=($req$$.cookies||{}).uid);Logger.info("[updateHanlder] t\u00ecm object ddeer update...");const $obj$$=await $model$$.findById($id$$).inTxn();if(!$obj$$)return Logger.error("[updateHanlder] not found object",$model$$.modelName,$id$$),$callback$$({error:ERRORS.ERR_NOT_FOUND,code:ERRORS.ERR_NOT_FOUND_CODE});$data$$.listinfo_code=$obj$$.toObject().listinfo_code||$ctrl$$.name;$req$$.headers=$req$$.headers||{};$req$$.query=$req$$.query||
|
|
4
|
+
{};Logger.info("[updateHanlder] x\u1eed l\u00fd d\u1eef li\u1ec7u...");let $listinfo_code$$=$req$$.headers["Listinfo-Code"]||$req$$.headers["listinfo-code"]||$req$$.query["listinfo-code"]||$data$$.listinfo_code,$voucher_options$$;if($listinfo_code$$){if($listinfo_code$$!=$ctrl$$.name){const $listinfo$$=await global.getModel("listinfo").findOne({code:$listinfo_code$$},{api_code:1,code:1}).lean();$listinfo$$?($listinfo$$.api_code||$listinfo$$.code)!=$ctrl$$.name&&($listinfo_code$$=$ctrl$$.name):$listinfo_code$$=
|
|
5
|
+
$ctrl$$.name}$voucher_options$$=(await global.getModel("options").findOne({id_app:$user$$.current_id_app,id_func:$listinfo_code$$.toLowerCase()}).lean()||{}).option}$voucher_options$$||($voucher_options$$=(await global.getModel("options").findOne({id_app:$user$$.current_id_app,id_func:$ctrl$$.name}).lean()||{}).option);let $current_obj$$;Logger.info("[updateHanlder] ki\u1ec3m tra recaptcha...");if($ctrl$$.options.requireRecaptchaToken&&configs.GOOGLE_RECAPTCHA_SECRET_KEY){if(!$data$$["g-recaptcha-response"])return $callback$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u g-recaptcha-response");
|
|
6
|
+
try{await permission.verifyReCaptcha($data$$["g-recaptcha-response"])}catch($e$$){return $callback$$($e$$.message||$e$$.error||$e$$)}}Logger.info("[updateHanlder] Ki\u1ec3m tra verify otp...");let $requireOtp$$=$ctrl$$.options.requireOtp;$requireOtp$$&&_.isFunction($requireOtp$$)&&($requireOtp$$=$requireOtp$$($data$$,{action:$_action$$,_id:$id$$,user:$user$$}));if($requireOtp$$&&$_action$$!=="import")try{await permission.verifyOTP($user$$.email,$data$$["otp-id"],$data$$["otp-code"])}catch($e$$){return $callback$$({error:$e$$.message||
|
|
7
|
+
$e$$.error||$e$$,code:ERRORS.ERR_VERIFY_OTP})}let $checkSoCT$$=function($obj$$,$callback$$){if($model$$.schema.paths.ngay_ct&&$model$$.schema.paths.so_ct&&$obj$$.ngay_ct&&$data$$.so_ct&&$obj$$.so_ct!==$data$$.so_ct&&$voucher_options$$?.check_so_ct&&$voucher_options$$?.check_so_ct!=="0"){let $query_check$$={id_app:$obj$$.id_app,so_ct:$data$$.so_ct,listinfo_code:$listinfo_code$$||$ctrl$$.name,_id:{$ne:$obj$$._id.toString()}},$tu_ngay$$;var $date_check_den_ngay$$=$data$$.ngay_ct||$obj$$.ngay_ct;switch($voucher_options$$.check_so_ct){case "1":$tu_ngay$$=
|
|
8
|
+
moment($date_check_den_ngay$$).startOf("date").toDate();$date_check_den_ngay$$=moment($date_check_den_ngay$$).endOf("date").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$date_check_den_ngay$$};break;case "2":$tu_ngay$$=moment($date_check_den_ngay$$).startOf("month").toDate();$date_check_den_ngay$$=moment($date_check_den_ngay$$).endOf("month").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$date_check_den_ngay$$};break;case "3":$tu_ngay$$=moment($date_check_den_ngay$$).startOf("quarter").toDate();
|
|
9
|
+
$date_check_den_ngay$$=moment($date_check_den_ngay$$).endOf("quarter").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$date_check_den_ngay$$};break;case "8":$tu_ngay$$=moment($date_check_den_ngay$$).startOf("year").toDate(),$date_check_den_ngay$$=moment($date_check_den_ngay$$).startOf("year").toDate(),$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$date_check_den_ngay$$}}$model$$.findOne($query_check$$,{so_ct:1}).lean().then($rs$$=>{if($rs$$)return $callback$$("S\u1ed1 ch\u1ee9ng t\u1eeb "+$data$$.so_ct+
|
|
10
|
+
" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ch\u1ecdn m\u1ed9t s\u1ed1 ch\u1ee9ng t\u1eeb kh\u00e1c");$callback$$(null,$obj$$)}).catch($e$$=>{Logger.error($e$$)})}else $callback$$(null,$obj$$)};async.waterfall([function($callback$$){setImmediate(async function(){$data$$.trang_thai&&($data$$.trang_thai=$data$$.trang_thai.toString());if($data$$.trang_thai||$obj$$.trang_thai){var $old_obj_old_request_q_approve$$={id_ct:$obj$$._id.toString(),user_approved:{$exists:!0}};$old_obj_old_request_q_approve$$.trang_thai=
|
|
11
|
+
($data$$.trang_thai||$obj$$.trang_thai||"").toString();if(($old_obj_old_request_q_approve$$=await global.getModel("approve").findOne($old_obj_old_request_q_approve$$))&&$old_obj_old_request_q_approve$$.update_after_approve?.cho_phep_cap_nhat_khi_da_duyet!=1)return $callback$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt ch\u1ee9ng t\u1eeb \u1edf tr\u1ea1ng th\u00e1i n\u00e0y do n\u00f3 \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t")}Logger.info("[updateHanlder] ki\u1ec3m tra kho\u00e1 s\u1ed5...");if($obj$$.ngay_ct&&
|
|
12
|
+
$obj$$.id_app&&$obj$$.schema&&$obj$$.schema.validate&&$obj$$.schema.validate.ngay_ct)try{await new Promise(($rs$$,$rj$$)=>{validator.unlockBook[0]($obj$$.id_app,$obj$$.ngay_ct,$unlock$$=>{if(!$unlock$$)return $rj$$(validator.unlockBook[1]);$rs$$($unlock$$)},$voucher_options$$)})}catch($e$$){return $callback$$($e$$.message||$e$$.error||$e$$)}$schema_paths$$.exfields&&($obj$$.exfields=$obj$$.exfields||{});$old_obj_old_request_q_approve$$=convertObjectIdsToStrings($obj$$.toObject());$current_obj$$=_.cloneDeep($old_obj_old_request_q_approve$$);
|
|
13
|
+
const $data_keys$$=Object.keys($data$$);for(let $key$$ in $old_obj_old_request_q_approve$$)$data_keys$$.indexOf($key$$)<0&&($data$$[$key$$]=$old_obj_old_request_q_approve$$[$key$$]);$callback$$(null,$obj$$)})},function($obj$$,$_callback$$){Logger.info("[updateHanlder] ki\u1ec3m tra quy\u1ec1n truy c\u1eadp...");setImmediate(async function(){let $notNeedRight$$=await $ctrl$$.notNeedRight($user$$,{action:$_action$$,data:$data$$,obj:$current_obj$$});async.series({old_data:$callback$$=>{permission.hasRight($user$$.current_id_app,
|
|
14
|
+
$user$$.email,$module$$,$_action$$,function($error$$,$hr$$,$c_app$$){if($hr$$)$ctrl$$.checkData($c_app$$,{...$data$$,_id:$obj$$._id.toString()},$e$$=>{if($e$$)return $callback$$($e$$);$callback$$(null,$obj$$)});else return $callback$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||ERRORS.ERR_NOT_PERMIT_CODE})},{obj:$current_obj$$,notNeedRight:$notNeedRight$$,listinfo_code:$listinfo_code$$,user:$user$$})},new_data:$callback$$=>{permission.hasRight($user$$.current_id_app,
|
|
15
|
+
$user$$.email,$module$$,$_action$$,function($error$$,$hr$$,$c_app$$){if($hr$$)$ctrl$$.checkData($c_app$$,{...$data$$,_id:$obj$$._id.toString()},$e$$=>{if($e$$)return $callback$$($e$$);$callback$$(null,$obj$$)});else return $callback$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||ERRORS.ERR_NOT_PERMIT_CODE})},{data:$data$$,obj:$current_obj$$,notNeedRight:$notNeedRight$$,listinfo_code:$listinfo_code$$,user:$user$$})}},$e$$=>{$_callback$$($e$$,$obj$$)})})},($obj$$,$_callback$$)=>
|
|
16
|
+
{let $current_trang_thai$$=$data$$.trang_thai||$obj$$.trang_thai,$current_so_ct$$=$data$$.so_ct||$obj$$.so_ct;if($current_trang_thai$$!==$obj$$.trang_thai&&(!$voucher_options$$?.trang_thai_create_voucher_numbers||$voucher_options$$?.trang_thai_create_voucher_numbers.length==0||$voucher_options$$?.trang_thai_create_voucher_numbers?.indexOf($current_trang_thai$$)>=0)&&$model$$.schema.paths.so_ct)if($current_so_ct$$&&$current_so_ct$$.toUpperCase()!==($listinfo_code$$||$ctrl$$.name).toUpperCase()&&$current_so_ct$$.toUpperCase()!==
|
|
17
|
+
$ctrl$$.name.toUpperCase())$checkSoCT$$($obj$$,$error$$=>{$_callback$$($error$$,$obj$$)});else{let $count$$=0;async.whilst(function($cb$$){$cb$$(null,$count$$<100)},function($callbackWhilst$$){getNextSequence($obj$$.id_app,$listinfo_code$$||$ctrl$$.name,"so_ct",function($e$$,$rs$$){if($e$$)return $callbackWhilst$$($e$$);$data$$.so_ct=$rs$$.so_ct;$checkSoCT$$($obj$$,$error$$=>{$error$$?$count$$>=99?$callbackWhilst$$($error$$):($count$$++,$callbackWhilst$$()):($count$$=99999,$callbackWhilst$$())})},
|
|
18
|
+
{...($obj$$.toObject?$obj$$.toObject():$obj$$),...$data$$})},function($err$$){$_callback$$($err$$,$obj$$)})}else $_callback$$(null,$obj$$)},$checkSoCT$$,($obj$$,$_callback$$)=>{(async($obj$$,$callback$$)=>{try{(await permission.getFieldNotRight($obj$$.id_app,$user$$.email,$ctrl$$.name)).forEach($f$$=>{delete $data$$[$f$$]})}catch($e$$){Logger.error("Error get field not right",$e$$)}$ctrl$$.updating?$ctrl$$.updating($user$$,$data$$,$obj$$,function($error$$,$_data$$,$_obj$$){if($error$$)return $callback$$($error$$);
|
|
19
|
+
if($ctrl$$.dynamicUpdating)$ctrl$$.dynamicUpdating($user$$,$_data$$,$_obj$$,function($error$$,$_data$$){if($error$$)return $callback$$($error$$);for(let $f$$ in $_data$$)$schema_paths$$[$f$$]&&($data$$[$f$$]=$_data$$[$f$$]);$callback$$(null,$obj$$)},{listinfo_code:$listinfo_code$$,req:$req$$});else{for(let $f$$ in $_data$$)$schema_paths$$[$f$$]&&($data$$[$f$$]=$_data$$[$f$$]);$callback$$(null,$obj$$)}}):$ctrl$$.dynamicUpdating?$ctrl$$.dynamicUpdating($user$$,$data$$,$obj$$,function($error$$,$_data$$){if($error$$)return $callback$$($error$$);
|
|
20
|
+
for(let $f$$ in $_data$$)$schema_paths$$[$f$$]&&($data$$[$f$$]=$_data$$[$f$$]);$callback$$(null,$obj$$)},{listinfo_code:$listinfo_code$$,req:$req$$}):$callback$$(null,$obj$$)})($obj$$,($err$$,$next$$)=>{$_callback$$($err$$,$next$$)})},function($obj$$,$callback$$){Logger.info("[updateHanlder] ki\u1ec3m tra s\u1ef1 t\u1ed3n t\u1ea1i...");if(!$unique$$||$unique$$.length===0)return $callback$$(null,$obj$$);let $c1$$={},$c2$$={};$obj$$.id_app&&($c1$$.id_app=$obj$$.id_app,$c2$$.id_app||($c2$$.id_app=$obj$$.id_app));
|
|
21
|
+
$unique$$.forEach(function($key$$){$c1$$[$key$$]=$obj$$[$key$$];$ctrl$$.model.schema.paths[$key$$]?($ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()=="number"?$c2$$[$key$$]=Number($data$$[$key$$]):$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()=="date"?$c2$$[$key$$]=new Date($data$$[$key$$]):$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()=="string"?$c2$$[$key$$]=($data$$[$key$$]||"").toString():$c2$$[$key$$]=$data$$[$key$$],$c2$$[$key$$]||($c2$$[$key$$]=$c1$$[$key$$])):
|
|
22
|
+
Logger.error("[updateHanlder] field",$key$$," is not exist. please check unique of controller")});_.isEqual($c1$$,$c2$$)!==!0?isExists($model$$,$unique$$,$c2$$,$ctrl$$.replaceIfExists,function($error$$,$kq$$){if($error$$||$kq$$){let $msgError$$=$error$$||ERRORS.ERR_ALREADY_EXIST;if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);else $callback$$($msgError$$)}else checkReference($model$$,
|
|
23
|
+
$obj$$,function($error$$){if($error$$)return Logger.error("[updateHandler] Keys arise data",$c1$$,$c2$$,$error$$,$unique$$),$callback$$({error:ERRORS.ERR_KEY_ARISE+($error$$.error||$error$$.message||$error$$),code:ERRORS.ERR_KEY_ARISE_CODE,unique:$unique$$});$callback$$(null,$obj$$)},$unique$$)}):$callback$$(null,$obj$$)},function($obj$$,$_callback$$){const $callback$$=($err$$,$next$$)=>{$_callback$$($err$$,$next$$)};let $keys$$=Object.keys($model$$.referenceKeys||{}).filter($key$$=>$key$$!=="_id");
|
|
24
|
+
$unique$$&&($keys$$=$keys$$.filter($key$$=>$unique$$.indexOf($key$$).length<0));$keys$$.length===0?$_callback$$(null,$obj$$):checkReference($model$$,$obj$$,function($msgError$$){if($msgError$$)if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$_callback$$($msgError$$,void 0)},$current_obj$$);else $callback$$({error:ERRORS.ERR_ARISE+($msgError$$.error||$msgError$$.message||$msgError$$),code:ERRORS.ERR_ARISE_CODE});else $_callback$$(null,
|
|
25
|
+
$obj$$)},$keys$$)},function($obj$$,$_callback$$){$ctrl$$.validating||($ctrl$$.validating=($user$$,$data$$,$next$$)=>{$next$$(null,$data$$)});$data$$=cleanDataByMongooseSchema($data$$,$model$$.schema);$data$$._id=$obj$$._id;$ctrl$$.validating($user$$,$data$$,($error$$,$data$$)=>{$error$$?$_callback$$($error$$,void 0):($data$$.date_updated=new Date,$data$$.user_updated=$user$$.email,delete $data$$.__v,$ctrl$$.options.onUpdateExtending||($ctrl$$.options.onUpdateExtending=function($obj$$,$data$$,$action$$,
|
|
26
|
+
$fn$$){$fn$$()}),$ctrl$$.options.onUpdateExtending($obj$$,$data$$,$action$$,function(){$schema_paths$$.exfields&&$data$$.exfields&&($obj$$.exfields=$data$$.exfields);delete $data$$.__v;for(let $f$$ in $data$$)$schema_paths$$[$f$$]&&$f$$!=="_id"&&($obj$$.set($f$$,$data$$[$f$$]),$f$$!=="exfields"||$obj$$.exfields||($obj$$.exfields={}));validate($obj$$,function($msgError$$){if($msgError$$)if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+
|
|
27
|
+
"\n"+$e$$);$_callback$$($msgError$$,void 0)},$current_obj$$);else $_callback$$($msgError$$,void 0);else $_callback$$(null,$obj$$)},$voucher_options$$)}))},{action:$action$$})},function($obj$$,$_callback$$){Logger.info("[updateHanlder] xo\u00e1 s\u1ed5 s\u00e1ch...");$current_obj$$&&($obj$$._id=$current_obj$$._id);deletePost($user$$,$obj$$,async $e$$=>{if($ctrl$$.dynamicDeletePost)try{await $ctrl$$.dynamicDeletePost($obj$$)}catch($e$$){Logger.error("[updatehandler] [deleteBooks] [dynamicDeletePost]",
|
|
28
|
+
$e$$);$_callback$$($e$$,void 0);return}$_callback$$($e$$,$obj$$)})},function($obj$$,$_callback$$){Logger.info("[updateHanlder] L\u01b0u t\u1edbi database...");const $callback$$=($err$$,$next$$)=>{$_callback$$($err$$,$next$$)};setImmediate(async()=>{$obj$$.ngay_ct&&($obj$$.ngay_ct=moment($obj$$.ngay_ct).toDate());for(var $$condition_k$$ in $ctrl$$.keyValues)$obj$$[$$condition_k$$]=$ctrl$$.keyValues[$$condition_k$$];Object.keys($model$$.schema.paths).filter($model_path$$=>$obj$$[$model_path$$]&&_.isArray($obj$$[$model_path$$])).forEach($model_path$$=>
|
|
29
|
+
{$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$$)>=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$$,
|
|
30
|
+
$obj$$,$_action$$)}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error||$e$$})}$ctrl$$.emit("saving",$obj$$);$current_obj$$&&($obj$$._id=$current_obj$$._id);let $obj_created$$,$error$$;$data$$.$condition&&($$condition_k$$=$data$$.$condition,$$condition_k$$._id=$obj$$._id,await $model$$.findOne($$condition_k$$)||($error$$=ERRORS.ERR_CAN_NOT_UPDATE),delete $data$$.$condition);if(!$error$$)try{delete $obj$$.__v,$obj_created$$=await $obj$$.save(),$ctrl$$.populate&&($obj_created$$=$model$$.findById($obj_created$$._id).inTxn(),
|
|
31
|
+
$obj_created$$=await $ctrl$$.populate($obj_created$$))}catch($e$$){if($error$$=$e$$,$ctrl$$.options.onErrorSave)$ctrl$$.options.onErrorSave($user$$,$obj$$,$error$$,$_action$$)}if($error$$){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.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$$,$obj$$,$e$$=>{$e$$&&Logger.error("onErrorUpdating",
|
|
32
|
+
$e$$);$_callback$$({error:$msgErrors$$,code:ERRORS.ERR_CAN_NOT_UPDATE_CODE},void 0)},$current_obj$$);else $callback$$({error:$msgErrors$$,code:ERRORS.ERR_CAN_NOT_UPDATE_CODE})}else postData($obj_created$$,$ctrl$$,function($msgError$$){if($msgError$$)if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$_callback$$($msgError$$,void 0)},$current_obj$$);else $_callback$$($msgError$$,void 0);else{const $obj_created_cv$$=convertObjectIdsToStrings($obj_created$$.toObject());
|
|
33
|
+
onAfterCommit(async()=>{$ctrl$$.emit("saved",$obj_created$$,$current_obj$$);$ctrl$$.emit("updated",$obj_created$$);$model$$.modelName!="customer"&&global.getModel("customer").updateActives&&global.getModel("customer").updateActives($obj_created$$);runWebhooks($ctrl$$,$obj_created_cv$$,$_action$$.toUpperCase(),$voucher_options$$);await $ctrl$$.cacheData($obj_created_cv$$,void 0,$_action$$);$req$$&&global.getModel("log").create({id_app:$user$$.current_id_app,id_func:$ctrl$$.name,action:$_action$$.toUpperCase(),
|
|
34
|
+
data:{oldData:$current_obj$$,newData:$data$$,id:$obj$$._id.toString()}},$user$$.email,$req$$.user_agent,$req$$)});$_callback$$(null,$obj_created_cv$$)}},{req:$req$$})})},function($obj$$,$callback$$){Logger.info("[updateHanlder] X\u1eed l\u00fd sau khi updated...");$ctrl$$.updated?$ctrl$$.updated($user$$,$obj$$,function($error$$,$obj$$){if($error$$)return Logger.error("[updateHandler] [saved] error when saved",$error$$),$callback$$($error$$);$ctrl$$.dynamicUpdated?$ctrl$$.dynamicUpdated($user$$,$obj$$,
|
|
35
|
+
function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$$)}):$callback$$(null,$obj$$)},$current_obj$$):$ctrl$$.dynamicUpdated?$ctrl$$.dynamicUpdated($user$$,$obj$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$$)}):$callback$$(null,$obj$$)},function($obj$$,$callback$$){Logger.info("[updateHanlder] requestApprove...");$ctrl$$.requestApprove($user$$.current_app_info,$user$$,$obj$$,$callback$$,$voucher_options$$)},function($obj_created_cv$$,
|
|
36
|
+
$callback$$){setImmediate(async()=>{let $approve_data$$;$obj$$.trang_thai!=void 0&&($approve_data$$=await global.getModel("approve").findOne({id_ct:$obj_created_cv$$._id.toString(),"update_after_approve.data.trang_thai":$obj_created_cv$$.trang_thai.toString()}).lean(),!$approve_data$$||$approve_data$$.user_approved||$approve_data$$.user_denied?$approve_data$$=null:($approve_data$$.user_approved=$req$$.user.email,$approve_data$$.user_approved_name=$req$$.user.name,$approve_data$$.date_approved=new Date,
|
|
37
|
+
await global.getModel("approve").updateOne({_id:$approve_data$$._id},$approve_data$$)));$req$$&&$_action$$!="import"&&$req$$.query.return_data!==!1?($obj_created_cv$$.collection_name=$ctrl$$.collection_name,(await permission.getFieldNotRight($obj_created_cv$$.id_app,$user$$.email,$ctrl$$.name)).forEach($f$$=>{delete $obj_created_cv$$[$f$$]}),$ctrl$$.onView($user$$,[$obj_created_cv$$],function($error$$,$viewValue$$){if($error$$)return $callback$$($error$$);$approve_data$$&&onAfterCommit(async()=>{global.getModel("approve").sendNotifyApproved($approve_data$$,
|
|
38
|
+
$req$$.query.access_token);let $channel$$=`${$ctrl$$.name.toLowerCase()}-${"request_approved"}`;$obj$$.id_app&&($channel$$=`${$channel$$}-${$obj$$.id_app}`);let $message$$=JSON.stringify($viewValue$$[0]);try{await global.clientRedis.publish($channel$$,$message$$)}catch($e$$){Logger.error("[approve] [sendNotifyApproved] fire event","request_approved",$e$$)}});$callback$$(null,$viewValue$$[0])},{req:$req$$})):(console.log("updating...20"),Logger.info("[updateHanlder] tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3 sau khi import..."),
|
|
39
|
+
$callback$$(null,{_id:$obj_created_cv$$._id}))})}],($e$$,$rs$$)=>{$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,{new_obj:$rs$$,old_obj:$current_obj$$}))})}catch($e$$){Logger.error("[updateHanlder]",$ctrl$$.name,$e$$),$callback$$($e$$)}},updateHandlerAsync=($ctrl$$,$req$$)=>new Promise(($resolve$$,$reject$$)=>{updateHandler($ctrl$$,$req$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);
|
|
40
|
+
$resolve$$($rs$$)})}),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{try{const $rs$$=await executeInTransaction(async()=>updateHandlerAsync($ctrl$$,$req$$));$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}};module.exports=withSesssion;module.exports.updateHandler=updateHandler;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
[];$item$$.approved_latest=$item$$.approve_data.filter($a$$=>$a$$.user_approved||$a$$.user_denied)[0];$item$$.approve_next=$item$$.approve_data.filter($a$$=>!$a$$.user_approved&&!$a$$.user_denied)[0];await $item$$.approve_data.filter($r$$=>$r$$.user_approved).asyncJoinModel2($item$$.id_app,
|
|
7
|
-
global.getModel("participant"),{where:{
|
|
8
|
-
id_ct_chuyen:$item$$._id.toString()},{_id:1}).lean()
|
|
9
|
-
|
|
10
|
-
0){let $ds_vt_voucher$$=$item$$.details.filter($d$$=>$d$$.tg_tk).map($d$$=>$d$$.ma_vt).sort(($a$$,$b$$)=>$a$$-$b$$),$ds_vt_book$$=$exists_exists$$.map($d$$=>$d$$.ma_vt).sort(($a$$,$b$$)=>$a$$-$b$$);$ds_vt_voucher$$.find($v$$=>$ds_vt_book$$.indexOf($v$$)<0)?$item$$[`${$book$$}_posted`]=!1:$item$$[`${$book$$}_posted`]=!0}else $item$$[`${$book$$}_posted`]=!1;else $exists_exists$$=await global.getModel($book$$).findOne({id_app:$item$$.id_app,id_ct:$item$$._id.toString()},$exists_exists$$).lean()
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
$rs$$){if($error$$)return $callback$$($error$$);$items$$=$rs$$||$items$$;$callback$$(null,$items$$)},$options$$)}catch($e$$){Logger.error("Error on viewRequired of",$name$$,$e$$),$callback$$(null,$items$$)}else $callback$$(null,$items$$)}},$error$$=>{if($error$$)return $next$$($error$$);$next$$(null,$items$$)})})};module.exports=view;
|
|
1
|
+
const _=require("lodash");async function mapLimit($items$$,$limit_workers$$,$iterator$$){let $index$$=0,$firstError$$=null;$limit_workers$$=Array(Math.min($limit_workers$$,$items$$.length)).fill(null).map(async()=>{for(;$index$$<$items$$.length&&!$firstError$$;){const $current$$=$index$$++;try{await $iterator$$($items$$[$current$$],$current$$)}catch($e$$){throw $firstError$$=$e$$,$e$$;}}});await Promise.allSettled($limit_workers$$);if($firstError$$)throw $firstError$$;}
|
|
2
|
+
const view=async($user$$,$self$$,$rows$$,$next$$,$options$$)=>{try{const $model$$=$self$$.model,$name$$=$self$$.name,$listinfo_code$$=$options$$?.req?.query?.["listinfo-code"]||$options$$?.req?.query?.listinfo_code||$options$$?.req?.headers?.["listinfo-code"]||$options$$?.req?.headers?.["Listinfo-Code"];let $fields_load$$="";$options$$&&$options$$.req&&$options$$.req.query&&$options$$.req.query.fields&&($fields_load$$=$options$$.req.query.fields,typeof $fields_load$$=="object"&&($fields_load$$=JSON.stringify($fields_load$$)));
|
|
3
|
+
let $schema_paths$$=$model$$.schema.paths;for(let $index$$=0;$index$$<$rows$$.length;$index$$++){const $item$$=$rows$$[$index$$];$item$$._id&&typeof $item$$._id!=="string"&&($item$$._id=$item$$._id.toString());delete $item$$.__v;$item$$.stt_sorted=$index$$;delete $item$$.from_cached;_.has($schema_paths$$,"exfields")&&!$item$$.exfields&&($item$$.exfields={})}let $items$$=$rows$$;await Promise.all([(async()=>{_.has($schema_paths$$,"id_app")&&await $items$$.filter($item$$=>$item$$.id_app).asyncJoinModel2(null,
|
|
4
|
+
"app",{where:{id_app:"_id"},fields:{app_name:"name"}})})(),(async()=>{_.has($schema_paths$$,"id_app")&&await $items$$.filter($item$$=>$item$$.user_created&&!$item$$.from_cached).asyncJoinModel2($user$$.current_id_app,"participant",{where:{user_created:"email"},fields:{name_user_created:"name"}});await $items$$.filter($item$$=>$item$$.user_created&&!$item$$.name_user_created&&!$item$$.from_cached).asyncJoinModel2(null,"user",{where:{user_created:"email"},fields:{name_user_created:"name"}})})(),(async()=>
|
|
5
|
+
{_.has($schema_paths$$,"id_app")&&await $items$$.filter($item$$=>$item$$.user_updated&&!$item$$.from_cached).asyncJoinModel2($user$$.current_id_app,global.getModel("participant"),{where:{user_updated:"email"},fields:{name_user_updated:"name"}});await $items$$.filter($item$$=>$item$$.user_updated&&!$item$$.name_user_updated&&!$item$$.from_cached).asyncJoinModel2(null,global.getModel("user"),{where:{user_updated:"email"},fields:{name_user_updated:"name"}})})(),(async()=>{(!$fields_load$$||$fields_load$$.indexOf("approve_data")>=
|
|
6
|
+
0)&&await Promise.all($items$$.map(async $item$$=>{const $rsApprove$$=await global.getModel("approve").find({id_ct:$item$$._id.toString(),id_app:$item$$.id_app},{data:0,request_content:0}).sort({data_created:-1}).lean();$item$$.approve_data=$rsApprove$$||[];$item$$.approved_latest=$item$$.approve_data.filter($a$$=>$a$$.user_approved||$a$$.user_denied)[0];$item$$.approve_next=$item$$.approve_data.filter($a$$=>!$a$$.user_approved&&!$a$$.user_denied)[0];await $item$$.approve_data.filter($r$$=>$r$$.user_approved).asyncJoinModel2($item$$.id_app,
|
|
7
|
+
global.getModel("participant"),{where:{user_approved:"email"},fields:{user_approved_name:"name",signature_image:"signature_image"}});await $item$$.approve_data.filter($r$$=>$r$$.user_denied).asyncJoinModel2($item$$.id_app,global.getModel("participant"),{where:{user_denied:"email"},fields:{user_denied_name:"name",signature_image:"signature_image"}})}))})(),(async()=>{_.has($schema_paths$$,"id_ct_chuyen")&&$user$$.current_app_info&&$user$$.current_app_info.options&&$user$$.current_app_info.options.id_app_thue&&
|
|
8
|
+
await Promise.all($items$$.map(async $item$$=>{const $rsTransfer$$=await $model$$.findOne({id_app:$user$$.current_app_info.options.id_app_thue,id_ct_chuyen:$item$$._id.toString()},{_id:1}).lean();$rsTransfer$$&&($item$$.id_ct_nhan=$rsTransfer$$._id)}))})(),(async()=>{$options$$&&$options$$.req&&($options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book)&&(Logger.info(`[viewHandler] x\u1eed l\u00fd y\u00eau c\u1ea7u ki\u1ec3m tra post s\u1ed5 query: ${JSON.stringify($options$$.req.query,
|
|
9
|
+
null,2)}, items: ${$items$$.length}`),await mapLimit($items$$,10,async $item$$=>{let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book;var $exists_exists$$={_id:1};if($book$$=="sokho"&&$item$$.details?.length>0)if(await $item$$.details.asyncJoinModel2($item$$.id_app,"dmvt",{where:"ma_vt",fields:["tg_tk"]}),$exists_exists$$.ma_vt=1,$exists_exists$$=await global.getModel($book$$).find({id_app:$item$$.id_app,id_ct:$item$$._id.toString()},$exists_exists$$).lean(),
|
|
10
|
+
$exists_exists$$.length>0){let $ds_vt_voucher$$=$item$$.details.filter($d$$=>$d$$.tg_tk).map($d$$=>$d$$.ma_vt).sort(($a$$,$b$$)=>$a$$-$b$$),$ds_vt_book$$=$exists_exists$$.map($d$$=>$d$$.ma_vt).sort(($a$$,$b$$)=>$a$$-$b$$);$ds_vt_voucher$$.find($v$$=>$ds_vt_book$$.indexOf($v$$)<0)?$item$$[`${$book$$}_posted`]=!1:$item$$[`${$book$$}_posted`]=!0}else $item$$[`${$book$$}_posted`]=!1;else $exists_exists$$=await global.getModel($book$$).findOne({id_app:$item$$.id_app,id_ct:$item$$._id.toString()},$exists_exists$$).lean(),
|
|
11
|
+
$item$$[`${$book$$}_posted`]=!!$exists_exists$$}))})()]);if($options$$&&$options$$.req&&($options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book)){let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book;$items$$=$items$$.filter($r$$=>$options$$.req.query.show_posted_book?$r$$[`${$book$$}_posted`]:!$r$$[`${$book$$}_posted`])}let $items_need_view$$=$items$$.filter($i$$=>!$i$$.from_cached),$items_cached$$=$items$$.filter($i$$=>$i$$.from_cached);
|
|
12
|
+
if($self$$.view)try{$items_need_view$$=await new Promise(($resolve$$,$reject$$)=>{$self$$.view($user$$,$items_need_view$$,($error$$,$rs$$)=>$error$$?$reject$$($error$$):$resolve$$($rs$$||$items_need_view$$),$options$$)})}catch($e$$){Logger.error("Error on view of",$name$$,$e$$)}$self$$.dynamicView&&($items_need_view$$=await new Promise(($resolve$$,$reject$$)=>{$self$$.dynamicView($user$$,$items_need_view$$,($error$$,$rs$$)=>$error$$?$reject$$($error$$):$resolve$$($rs$$||$items_need_view$$),{listinfo_code:$listinfo_code$$,
|
|
13
|
+
req:$options$$?.req})}));$items$$=[...$items_cached$$,...$items_need_view$$].sort(($a$$,$b$$)=>$a$$.stt_sorted-$b$$.stt_sorted);if($self$$.viewRequired)try{$items$$=await new Promise(($resolve$$,$reject$$)=>{$self$$.viewRequired($user$$,$items$$,($error$$,$rs$$)=>$error$$?$reject$$($error$$):$resolve$$($rs$$||$items$$),$options$$)})}catch($e$$){Logger.error("Error on viewRequired of",$name$$,$e$$)}$next$$(null,$items$$)}catch($e$$){$next$$($e$$)}};module.exports=view;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const async=require("async"),_=require("lodash"),view=async($user$$,$self$$,$rows$$,$next$$,$options$$)=>{const $model$$=$self$$.model,$name$$=$self$$.name,$listinfo_code$$=$options$$?.req?.query?.["listinfo-code"]||$options$$?.req?.query?.listinfo_code||$options$$?.req?.headers?.["listinfo-code"]||$options$$?.req?.headers?.["Listinfo-Code"];let $fields_load$$="";$options$$&&$options$$.req&&$options$$.req.query&&$options$$.req.query.fields&&($fields_load$$=$options$$.req.query.fields,typeof $fields_load$$==
|
|
2
|
+
"object"&&($fields_load$$=JSON.stringify($fields_load$$)));let $schema_paths$$=$model$$.schema.paths;for(let $index$$=0;$index$$<$rows$$.length;$index$$++){const $item$$=$rows$$[$index$$];$item$$._id&&typeof $item$$._id!=="string"&&($item$$._id=$item$$._id.toString());delete $item$$.__v;$item$$.stt_sorted=$index$$;delete $item$$.from_cached;_.has($schema_paths$$,"exfields")&&!$item$$.exfields&&($item$$.exfields={})}let $items$$=$rows$$;async.parallel({app:$callback$$=>{setImmediate(async()=>{_.has($schema_paths$$,
|
|
3
|
+
"id_app")&&await $items$$.filter($item$$=>$item$$.id_app).asyncJoinModel2(null,"app",{where:{id_app:"_id"},fields:{app_name:"name"}});$callback$$(null)})},_Participant_created:$callback$$=>{setImmediate(async()=>{_.has($schema_paths$$,"id_app")&&await $items$$.filter($item$$=>$item$$.user_created&&!$item$$.from_cached).asyncJoinModel2($user$$.current_id_app,"participant",{where:{user_created:"email"},fields:{name_user_created:"name"}});await $items$$.filter($item$$=>$item$$.user_created&&!$item$$.name_user_created&&
|
|
4
|
+
!$item$$.from_cached).asyncJoinModel2(null,"user",{where:{user_created:"email"},fields:{name_user_created:"name"}});$callback$$(null)})},_Participant_updated:$callback$$=>{setImmediate(async()=>{_.has($schema_paths$$,"id_app")&&await $items$$.filter($item$$=>$item$$.user_updated&&!$item$$.from_cached).asyncJoinModel2($user$$.current_id_app,global.getModel("participant"),{where:{user_updated:"email"},fields:{name_user_updated:"name"}});await $items$$.filter($item$$=>$item$$.user_updated&&!$item$$.name_user_updated&&
|
|
5
|
+
!$item$$.from_cached).asyncJoinModel2(null,global.getModel("user"),{where:{user_updated:"email"},fields:{name_user_updated:"name"}});$callback$$(null)})},_approve:$callback$$=>{!$fields_load$$||$fields_load$$.indexOf("approve_data")>=0?async.map($items$$,($item$$,$next$$)=>{setImmediate(()=>{global.getModel("approve").find({id_ct:$item$$._id.toString(),id_app:$item$$.id_app},{data:0,request_content:0}).sort({data_created:-1}).lean().then(async $rs$$=>{setImmediate(async()=>{$item$$.approve_data=$rs$$||
|
|
6
|
+
[];$item$$.approved_latest=$item$$.approve_data.filter($a$$=>$a$$.user_approved||$a$$.user_denied)[0];$item$$.approve_next=$item$$.approve_data.filter($a$$=>!$a$$.user_approved&&!$a$$.user_denied)[0];await $item$$.approve_data.filter($r$$=>$r$$.user_approved).asyncJoinModel2($item$$.id_app,global.getModel("participant"),{where:{user_approved:"email"},fields:{user_approved_name:"name",signature_image:"signature_image"}});await $item$$.approve_data.filter($r$$=>$r$$.user_denied).asyncJoinModel2($item$$.id_app,
|
|
7
|
+
global.getModel("participant"),{where:{user_denied:"email"},fields:{user_denied_name:"name",signature_image:"signature_image"}});$next$$(null)})}).catch($e$$=>{Logger.error($e$$)})})},()=>{$callback$$(null)}):$callback$$(null)},transfer_ct:$callback$$=>{if(_.has($schema_paths$$,"id_ct_chuyen")&&$user$$.current_app_info&&$user$$.current_app_info.options&&$user$$.current_app_info.options.id_app_thue)async.map($items$$,($item$$,$next$$)=>{setImmediate(()=>{$model$$.findOne({id_app:$user$$.current_app_info.options.id_app_thue,
|
|
8
|
+
id_ct_chuyen:$item$$._id.toString()},{_id:1}).lean().then(async $rs$$=>{$rs$$&&($item$$.id_ct_nhan=$rs$$._id);$next$$(null)}).catch($e$$=>{Logger.error($e$$)})})},()=>{$callback$$(null)});else return $callback$$()},posted:$callback$$=>{$options$$&&$options$$.req&&($options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book)?(Logger.info(`[viewHandler] x\u1eed l\u00fd y\u00eau c\u1ea7u ki\u1ec3m tra post s\u1ed5 query: ${JSON.stringify($options$$.req.query,null,2)}, items: ${$items$$.length}`),
|
|
9
|
+
async.mapLimit($items$$,10,($item$$,$next$$)=>{setImmediate(async()=>{let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book;var $exists_exists$$={_id:1};if($book$$=="sokho"&&$item$$.details?.length>0)if(await $item$$.details.asyncJoinModel2($item$$.id_app,"dmvt",{where:"ma_vt",fields:["tg_tk"]}),$exists_exists$$.ma_vt=1,$exists_exists$$=await global.getModel($book$$).find({id_app:$item$$.id_app,id_ct:$item$$._id.toString()},$exists_exists$$).lean(),$exists_exists$$.length>
|
|
10
|
+
0){let $ds_vt_voucher$$=$item$$.details.filter($d$$=>$d$$.tg_tk).map($d$$=>$d$$.ma_vt).sort(($a$$,$b$$)=>$a$$-$b$$),$ds_vt_book$$=$exists_exists$$.map($d$$=>$d$$.ma_vt).sort(($a$$,$b$$)=>$a$$-$b$$);$ds_vt_voucher$$.find($v$$=>$ds_vt_book$$.indexOf($v$$)<0)?$item$$[`${$book$$}_posted`]=!1:$item$$[`${$book$$}_posted`]=!0}else $item$$[`${$book$$}_posted`]=!1;else $exists_exists$$=await global.getModel($book$$).findOne({id_app:$item$$.id_app,id_ct:$item$$._id.toString()},$exists_exists$$).lean(),$item$$[`${$book$$}_posted`]=
|
|
11
|
+
!!$exists_exists$$;$next$$()})},()=>{$callback$$(null)})):$callback$$()}},$e$$=>{if($e$$)return $next$$($e$$);if($options$$&&$options$$.req&&($options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book)){let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book;$items$$=$items$$.filter($r$$=>$options$$.req.query.show_posted_book?$r$$[`${$book$$}_posted`]:!$r$$[`${$book$$}_posted`])}let $items_need_view$$=$items$$.filter($i$$=>!$i$$.from_cached),
|
|
12
|
+
$items_cached$$=$items$$.filter($i$$=>$i$$.from_cached);async.series({view:$callback$$=>{if($self$$.view)try{$self$$.view($user$$,$items_need_view$$,function($error$$,$rs$$){setImmediate(()=>{if($error$$)return $callback$$($error$$);$items_need_view$$=$rs$$||$items_need_view$$;$callback$$(null,$items_need_view$$)})},$options$$)}catch($e$$){Logger.error("Error on view of",$name$$,$e$$),$callback$$(null,$items_need_view$$)}else $callback$$(null,$items_need_view$$)},dynamicView:$callback$$=>{$self$$.dynamicView?
|
|
13
|
+
$self$$.dynamicView($user$$,$items_need_view$$,function($error$$,$rs$$){if($error$$)return $callback$$($error$$);$items_need_view$$=$rs$$||$items_need_view$$;$callback$$(null,$items_need_view$$)},{listinfo_code:$listinfo_code$$,req:$options$$?.req}):$callback$$(null,$items_need_view$$)},viewRequired:$callback$$=>{$items$$=[...$items_cached$$,...$items_need_view$$].sort(($a$$,$b$$)=>$a$$.stt_sorted-$b$$.stt_sorted);if($self$$.viewRequired)try{$self$$.viewRequired($user$$,$items$$,function($error$$,
|
|
14
|
+
$rs$$){if($error$$)return $callback$$($error$$);$items$$=$rs$$||$items$$;$callback$$(null,$items$$)},$options$$)}catch($e$$){Logger.error("Error on viewRequired of",$name$$,$e$$),$callback$$(null,$items$$)}else $callback$$(null,$items$$)}},$error$$=>{if($error$$)return $next$$($error$$);$next$$(null,$items$$)})})};module.exports=view;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const {runWorkflowAgent}=require("../../agents/agents"),async=require("
|
|
1
|
+
const {runWorkflowAgent}=require("../../agents/agents"),async=require("../../libs/asyncCompat"),_=require("lodash");
|
|
2
2
|
function parseJsonReplacingOnlyQuotes($jsonStringWithEntities$$){if(typeof $jsonStringWithEntities$$!=="string")return Logger.error("Input must be a string."),null;let $correctedString$$=$jsonStringWithEntities$$.trim();try{return $correctedString$$.startsWith('"```json')?$correctedString$$=$correctedString$$.substring(8).trimStart():$correctedString$$.startsWith("```json")&&($correctedString$$=$correctedString$$.substring(7).trimStart()),$correctedString$$.endsWith("```")&&($correctedString$$=$correctedString$$.substring(0,
|
|
3
3
|
$correctedString$$.length-3).trimEnd()),$correctedString$$=$correctedString$$.replace(/"/g,'"'),JSON.parse($correctedString$$)}catch($error$$){return Logger.error("Error parsing JSON string after corrections:",$error$$),Logger.error("Original string:",$jsonStringWithEntities$$),Logger.error("Corrected string attempt:",$correctedString$$),$jsonStringWithEntities$$}}
|
|
4
4
|
async function aiAnalysisHandler($flowState$$,$node$$,$payload$$,$abortSignal$$){const $nodeInstanceId$$=`${$flowState$$.instanceId}-${$node$$.id}`,$nodeLabel$$=$node$$.data?.name||$node$$.id||"AI Analysis Node",$id_app$$=$flowState$$.flowDefinition.id_app;let $prompt$$=$node$$.data?.prompt,$handle_multi_line$$=$node$$.data?.handle_multi_line;if(!$payload$$||$payload$$.length==0)throw Error("Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u \u0111\u1ec3 ph\u00e2n t\u00edch");if(!$prompt$$)throw Error("Thi\u1ebfu y\u00eau c\u1ea7u ph\u00e2n t\u00edch");
|