flexbiz-server 12.0.14 → 12.0.17

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 CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flexbiz-server",
3
3
  "main": "./server/app.js",
4
4
  "description": "Flexible Server",
5
- "version": "12.0.14",
5
+ "version": "12.0.17",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -1,6 +1,6 @@
1
1
  'use strict';const User=global.getModel("user"),Usergroup=global.getModel("usergroup"),Participant=global.getModel("participant"),Token=global.getModel("token"),Customer=global.getModel("customer"),App=global.getModel("app"),request=require("request");
2
2
  module.exports=function($app$$){function $getProfile$$($access_token$$,$callback$$){request(`${"https://graph.facebook.com/me?fields=location,first_name,last_name,middle_name,name,gender,timezone,locale,about,address,age_range,birthday,cover,currency,email,id,languages,religion,sports,picture.type(large)"}&access_token=${$access_token$$}`,($e_profileUser$$,$res$$,$body$$)=>{if($e_profileUser$$)return $callback$$($e_profileUser$$);$e_profileUser$$=JSON.parse($body$$);if($e_profileUser$$.error)return $callback$$($e_profileUser$$);
3
- $e_profileUser$$.emails&&0<$e_profileUser$$.emails.length&&!$e_profileUser$$.email&&($e_profileUser$$.email=$e_profileUser$$.emails[0]);$e_profileUser$$.displayName||($e_profileUser$$.displayName=$e_profileUser$$.name);$callback$$(null,$e_profileUser$$)})}function $addUserToCompany$$($body$$,$newUser$$){$body$$.id_app&&App.findOne({_id:$body$$.id_app},async($e$jscomp$0$$,$app$$)=>{if($e$jscomp$0$$||!$app$$)return console.log("Can't find app",$body$$.id_app,$e$jscomp$0$$);$e$jscomp$0$$=$body$$.group_id;
3
+ $e_profileUser$$.emails&&0<$e_profileUser$$.emails.length&&!$e_profileUser$$.email&&($e_profileUser$$.email=$e_profileUser$$.emails[0]);$e_profileUser$$.displayName||($e_profileUser$$.displayName=$e_profileUser$$.name);$callback$$(null,$e_profileUser$$)})}function $addUserToCompany$$($body$$,$newUser$$){$body$$.id_app&&App.findById($body$$.id_app,async($e$jscomp$0$$,$app$$)=>{if($e$jscomp$0$$||!$app$$)return console.log("Can't find app",$body$$.id_app,$e$jscomp$0$$);$e$jscomp$0$$=$body$$.group_id;
4
4
  if(!$e$jscomp$0$$)try{$e$jscomp$0$$=await Usergroup.getInfo($body$$.id_app,{status:!0,is_customer_group:!0},"_id")}catch($e$$){console.log($e$$.message)}Participant.createParticipant({id_app:$body$$.id_app,email:$newUser$$.email,group_id:$e$jscomp$0$$,active:!0},$cust_e$$=>{$cust_e$$&&console.log("can't add user",$newUser$$.email,"to company",$app$$.name,$cust_e$$);$cust_e$$={ten_kh:$newUser$$.name,email:$newUser$$.email,id_app:$body$$.id_app,user_created:$newUser$$.email,user_updated:$newUser$$.email,
5
5
  kh_yn:!0,of_user:$newUser$$.email};try{Customer.asyncCreateCustomer($cust_e$$)}catch($e$$){console.log("Auto create new customer with error:",$e$$.message)}})})}async function $checkExistUser$$($email$$){return new Promise(($resolve$$,$reject$$)=>{User.findOne({email:$email$$.toLowerCase()},($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));$rs$$?$resolve$$($rs$$.toObject()):$resolve$$(null)})})}async function $createUser$$($accessToken$$,$profile$$,$done$$){setImmediate(async function(){let $u$$=
6
6
  await $checkExistUser$$($profile$$.email||$profile$$.id);if($u$$){if($u$$.facebook&&$u$$.facebook.id===$profile$$.id||$u$$.email===$profile$$.email){$addUserToCompany$$($profile$$,$u$$);(new Token({email:$u$$.email,token:$accessToken$$,service:"facebook"})).save(function($e$$){if($e$$)return $done$$($e$$);$done$$(null,$u$$)});return}return $done$$(`${$u$$.email} \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd tr\u00ean h\u1ec7 th\u1ed1ng`)}$profile$$.email||($profile$$.email=$profile$$.id);
@@ -1,6 +1,6 @@
1
1
  'use strict';const User=global.getModel("user"),Usergroup=global.getModel("usergroup"),Customer=global.getModel("customer"),Token=global.getModel("token"),App=global.getModel("app"),Participant=global.getModel("participant"),request=require("request");
2
2
  module.exports=function($app$$){function $getProfile$$($token$$,$callback$$){request({url:$token$$.access_token?"https://www.googleapis.com/userinfo/v2/me":"https://oauth2.googleapis.com/tokeninfo?id_token="+$token$$.id_token,headers:{Authorization:$token$$.access_token?`Bearer ${$token$$.access_token}`:null}},($e_profileUser$$,$res$$,$body$$)=>{if($e_profileUser$$)return $callback$$($e_profileUser$$);$e_profileUser$$=JSON.parse($body$$);if($e_profileUser$$.error)return $callback$$($e_profileUser$$.error);
3
- $e_profileUser$$.emails&&0<$e_profileUser$$.emails.length&&!$e_profileUser$$.email&&($e_profileUser$$.email=$e_profileUser$$.emails[0].value);$e_profileUser$$.emails||($e_profileUser$$.emails=[{value:$e_profileUser$$.email||$e_profileUser$$.id}]);$e_profileUser$$.displayName||($e_profileUser$$.displayName=$e_profileUser$$.name);$callback$$(null,$e_profileUser$$)})}function $addUserToCompany$$($body$$,$newUser$$){$body$$.id_app&&App.findOne({_id:$body$$.id_app},async($e$jscomp$0$$,$app$$)=>{if($e$jscomp$0$$||
3
+ $e_profileUser$$.emails&&0<$e_profileUser$$.emails.length&&!$e_profileUser$$.email&&($e_profileUser$$.email=$e_profileUser$$.emails[0].value);$e_profileUser$$.emails||($e_profileUser$$.emails=[{value:$e_profileUser$$.email||$e_profileUser$$.id}]);$e_profileUser$$.displayName||($e_profileUser$$.displayName=$e_profileUser$$.name);$callback$$(null,$e_profileUser$$)})}function $addUserToCompany$$($body$$,$newUser$$){$body$$.id_app&&App.findById($body$$.id_app,async($e$jscomp$0$$,$app$$)=>{if($e$jscomp$0$$||
4
4
  !$app$$)return console.log("Can't find app",$body$$.id_app,$e$jscomp$0$$);$e$jscomp$0$$=$body$$.group_id;if(!$e$jscomp$0$$)try{$e$jscomp$0$$=await Usergroup.getInfo($body$$.id_app,{status:!0,is_customer_group:!0},"_id")}catch($e$$){console.log($e$$.message)}Participant.createParticipant({id_app:$body$$.id_app,email:$newUser$$.email,group_id:$e$jscomp$0$$,active:!0},$cust_e$$=>{$cust_e$$&&console.log("can't add user",$newUser$$.email,"to company",$app$$.name);$cust_e$$={ten_kh:$newUser$$.name,email:$newUser$$.email,
5
5
  id_app:$body$$.id_app,user_created:$newUser$$.email,user_updated:$newUser$$.email,kh_yn:!0,of_user:$newUser$$.email};try{Customer.asyncCreateCustomer($cust_e$$)}catch($e$$){console.log("Auto create new customer with error:",$e$$.message)}})})}async function $checkExistUser$$($email$$){return new Promise(($resolve$$,$reject$$)=>{User.findOne({email:$email$$.toLowerCase()}).lean().exec(($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));$rs$$?$resolve$$($rs$$):$resolve$$(null)})})}async function $createUser$$($accessToken$$,
6
6
  $profile$$,$done$$){setImmediate(async()=>{let $u$$=await $checkExistUser$$($profile$$.emails[0].value);if($u$$){if($u$$.google&&$u$$.google.id===$profile$$.id||$u$$.email===$profile$$.email){$addUserToCompany$$($profile$$,$u$$);(new Token({email:$u$$.email,token:$accessToken$$,service:"google"})).save(function($e$$){if($e$$)return console.log("error create token",$e$$),$done$$($e$$);$done$$(null,$u$$)});return}console.error(`${$profile$$.email} \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd tr\u00ean h\u1ec7 th\u1ed1ng`,
@@ -8,10 +8,10 @@ $username$$+" ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd.");if($user$$
8
8
  if(!$user$$.validPassword($password$$))return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}return $done$$(null,$user$$)})})}));$app$$.get("/send-otp/:phone",$rateLimiter$$,async($req_url$$,$res$$)=>{const $Phone$$=$req_url$$.params.phone.trim();if("9999"===$Phone$$)saveOTP($Phone$$,"9999",($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)});else{if(!await User.findOne({email:$Phone$$}))return $res$$.status(400).send({error:`T\u00e0i kho\u1ea3n ${$Phone$$} kh\u00f4ng t\u1ed3n t\u1ea1i`});
9
9
  var $otp_code$$=generateOTP();validator.isEmail($Phone$$)?email.sendHtml({to:{address:$Phone$$},subject:"M\u00e3 x\u00e1c th\u1ef1c",html:`Xin vui l\u00f2ng g\u1eedi qu\u00fd kh\u00e1ch m\u00e3 x\u00e1c th\u1ef1c: ${$otp_code$$}. M\u00e3 n\u00e0y s\u1ebd h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng sau 5 ph\u00fat.`},function($error$$){$error$$?(console.error("Error send otp to email",$error$$),$res$$.status(400).send(`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi email ${$Phone$$}`)):
10
10
  saveOTP($Phone$$,$otp_code$$,($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)},5)},configs.sender_otp):($req_url$$=configs.sms.genUrlSendOTP($Phone$$,$otp_code$$),request({url:$req_url$$},($error$$,$response$$,$body$$)=>{$error$$||200!=$response$$.statusCode?$res$$.status(400).send($error$$||`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi s\u1ed1 ${$Phone$$}`):($error$$=JSON.parse($body$$),"100"==$error$$.CodeResult?saveOTP($Phone$$,$otp_code$$,
11
- ($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)}):(console.error("Error send sms",$error$$),$res$$.status(400).send(`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi s\u1ed1 ${$Phone$$}`)))}))}});$app$$.get("/verify-otp/:id/:otp",$rateLimiter$$,async function($req$$,$res$$){try{const $id$$=$req$$.params.id,$otp_code$$=$req$$.params.otp,$otp$$=await OTP.findOne({_id:$id$$});if(!$otp$$||$otp$$.otp!=$otp_code$$||$otp$$.verified||$otp$$.expire_time.getTime()<
11
+ ($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)}):(console.error("Error send sms",$error$$),$res$$.status(400).send(`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi s\u1ed1 ${$Phone$$}`)))}))}});$app$$.get("/verify-otp/:id/:otp",$rateLimiter$$,async function($req$$,$res$$){try{const $id$$=$req$$.params.id,$otp_code$$=$req$$.params.otp,$otp$$=await OTP.findById($id$$);if(!$otp$$||$otp$$.otp!=$otp_code$$||$otp$$.verified||$otp$$.expire_time.getTime()<
12
12
  (new Date).getTime())return $res$$.status(400).send({error:"M\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i ho\u1eb7c \u0111\u00e3 h\u1ebft hi\u1ec7u l\u1ef1c",code:4001});await OTP.findOneAndUpdate({_id:$id$$},{verified:!0});let $is_new$$=!1;const $username$$=$otp$$.phone;let $user$$=await User.findOne({email:$username$$});if(!$user$$){$user$$=new User;$user$$.email=$username$$;$user$$.local={active:!0};$user$$.local.email=$otp$$.email;$user$$.local.phone=$otp$$.phone;$user$$.local.name=
13
13
  $otp$$.phone;$user$$.name=$otp$$.phone;$is_new$$=!0;try{await $user$$.save()}catch($e$$){return console.log("error verify otp, create user",$e$$),$res$$.status(500).send($e$$)}}else if(!$user$$.local||!$user$$.local.active){$user$$.local=$user$$.local||{};$user$$.local.active=!0;try{await $user$$.save()}catch($e$$){return console.log("error verify otp, create user",$e$$),$res$$.status(500).send($e$$)}}if($req$$.query.id_app&&$req$$.query.group_id){const $id_app$$=$req$$.query.id_app,$group_id$$=$req$$.query.group_id,
14
- $app$$=await App.findOne({_id:$id_app$$});$app$$&&Participant.createParticipant({id_app:$id_app$$,email:$user$$.email,name:$user$$.name,group_id:$group_id$$,active:!0},$cust_e$$=>{if($cust_e$$)return console.log("can't add user",$user$$.email,"to company",$app$$.name);$cust_e$$={ten_kh:$user$$.name,email:$user$$.email,dien_thoai:$otp$$.phone,id_app:$id_app$$,user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email};try{Customer.asyncCreateCustomer($cust_e$$)}catch($e$$){console.log("Auto create new customer with error:",
14
+ $app$$=await App.findById($id_app$$);$app$$&&Participant.createParticipant({id_app:$id_app$$,email:$user$$.email,name:$user$$.name,group_id:$group_id$$,active:!0},$cust_e$$=>{if($cust_e$$)return console.log("can't add user",$user$$.email,"to company",$app$$.name);$cust_e$$={ten_kh:$user$$.name,email:$user$$.email,dien_thoai:$otp$$.phone,id_app:$id_app$$,user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email};try{Customer.asyncCreateCustomer($cust_e$$)}catch($e$$){console.log("Auto create new customer with error:",
15
15
  $e$$.message)}})}const $accessToken$$=generateToken($user$$),$agent$$=$req$$.headers["user-agent"];console.log("create new token for user",$user$$.email);(new Token({email:$user$$.email,token:$accessToken$$,agent:$agent$$,ip:"",once:1==$req$$.query.once||"true"==$req$$.query.once||"1"===$req$$.query.once?!0:!1})).save(function($e$$,$rs$$){return $e$$?$res$$.status(500).send($e$$):$res$$.send({token:$accessToken$$,is_new:$is_new$$,once:$rs$$.once})})}catch($e$$){console.log("error verify otp",$e$$),
16
16
  $res$$.status(400).send($e$$.message)}});$app$$.post("/auth/sign",$rateLimiter$$,($req$$,$res$$,$next$$)=>{$passport$$.authenticate("basic",{session:!1},function($err$$,$user$$){if($err$$||!$user$$)return $res$$.status(401).send({message:$err$$||"Unauthorized"});$req$$.user=$user$$;$next$$()})($req$$,$res$$,$next$$)},async($req$jscomp$3_user$$,$res$$)=>{let $data$$=$req$jscomp$3_user$$.body;$req$jscomp$3_user$$=$req$jscomp$3_user$$.user;if(!$data$$)return $res$$.status(400).send("Not have data to sign");
17
17
  if(!$data$$.id_app)return $res$$.status(400).send("Data miss id_app property");try{let $signature$$=await Wallet.sign($data$$.id_app,$req$jscomp$3_user$$.email,$data$$);$res$$.send($signature$$)}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$)}});$app$$.get("/auth/local",$rateLimiter$$,function($req$$,$res$$,$next$$){let $ip$$=($req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress).split(".").join("").split(":").join(""),$authorization$$=$req$$.headers.authorization;
@@ -20,7 +20,7 @@ $d$$=$now$$,$times_try$$=1;if($req$$.headers.cookie&&$req$$.session){$req$$=$req
20
20
  Math.round((18E6-$req$$)/6E4,0)+" ph\u00fat"});$next$$()}else global.clientRedis.get($t_session$$,function($err$$,$reply$$){$reply$$?($times_try$$=Number($reply$$)+1,global.clientRedis.set($t_session$$,$times_try$$)):(global.clientRedis.set($t_session$$,$times_try$$),global.clientRedis.set($d_session$$,$now$$));global.clientRedis.get($d_session$$,function($err$jscomp$3_time_wait$$,$reply$$){$reply$$?$d$$=new Date($reply$$):global.clientRedis.set($d_session$$,$now$$);$err$jscomp$3_time_wait$$=$now$$.getTime()-
21
21
  $d$$.getTime();if(18E6>$err$jscomp$3_time_wait$$&&10<$times_try$$)return $res$$.status(400).send({message:"B\u1ea1n \u0111\u0103ng nh\u1eadp sai 10 l\u1ea7n li\u00ean ti\u1ebfp. H\u00e3y th\u1eed l\u1ea1i sau "+Math.round((18E6-$err$jscomp$3_time_wait$$)/6E4,0)+" ph\u00fat"});$next$$()})})}},function($req$$,$res$$,$next$$){$passport$$.authenticate("basic",{session:!1},function($err$$,$user$$){if($err$$||!$user$$)return $res$$.status(401).send({message:$err$$||"Unauthorized"});if(configs.require_verify&&
22
22
  !$user$$.local.active)return $res$$.status(401).send({require_verify:!0});$req$$.user=$user$$;$next$$()})($req$$,$res$$,$next$$)},async($req$$,$res$$)=>{let $agent$$=$req$$.headers["user-agent"];if($req$$.headers.cookie){var $group_id$jscomp$1_session$$=$req$$.session;$group_id$jscomp$1_session$$[$req$$.t_session]=0;$group_id$jscomp$1_session$$[$req$$.d_session]=""}else global.clientRedis.set($req$$.t_session,0),global.clientRedis.set($req$$.d_session,"");log.create({id_app:"LOGIN",id_func:"LOGIN",
23
- action:"LOCALLOGIN"},$req$$.user.email,$req$$.header("user-agent"),$req$$);let $user$$=$req$$.user;if($req$$.query.id_app&&$req$$.query.group_id&&global.mongoose.Types.ObjectId.isValid($req$$.query.group_id)){const $id_app$$=$req$$.query.id_app;$group_id$jscomp$1_session$$=$req$$.query.group_id;const $app$$=await App.findOne({_id:$id_app$$}),$group$$=await UserGroup.findOne({_id:$group_id$jscomp$1_session$$,is_customer_group:!0});$app$$&&$group$$&&Participant.createParticipant({id_app:$id_app$$,email:$user$$.email,
23
+ action:"LOCALLOGIN"},$req$$.user.email,$req$$.header("user-agent"),$req$$);let $user$$=$req$$.user;if($req$$.query.id_app&&$req$$.query.group_id&&global.mongoose.Types.ObjectId.isValid($req$$.query.group_id)){const $id_app$$=$req$$.query.id_app;$group_id$jscomp$1_session$$=$req$$.query.group_id;const $app$$=await App.findById($id_app$$),$group$$=await UserGroup.findOne({_id:$group_id$jscomp$1_session$$,is_customer_group:!0});$app$$&&$group$$&&Participant.createParticipant({id_app:$id_app$$,email:$user$$.email,
24
24
  name:$user$$.name,group_id:$group_id$jscomp$1_session$$,active:!0},$cust$jscomp$1_e$$=>{if($cust$jscomp$1_e$$)return console.log("can't add user",$user$$.email,"to company",$app$$.name);$cust$jscomp$1_e$$={ten_kh:$user$$.name,email:$user$$.email,id_app:$id_app$$,user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email};validator.isMobilePhone($user$$.email,["vi-VN"])&&($cust$jscomp$1_e$$.dien_thoai=$user$$.email);try{Customer.asyncCreateCustomer($cust$jscomp$1_e$$)}catch($e$$){console.log("Auto create new customer with error:",
25
25
  $e$$.message)}})}const $accessToken$$=generateToken($user$$);(new Token({email:$user$$.email,token:$accessToken$$,agent:$agent$$,ip:"",once:1==$req$$.query.once||"true"==$req$$.query.once||"1"===$req$$.query.once?!0:!1})).save(function($e$$,$rs$$){if($e$$)return $res$$.status(500).send($e$$);$res$$.send({token:$accessToken$$,once:$rs$$.once})})});$app$$.get("/check-user/:email",$rateLimiter$$,function($req$$,$res$$){User.findOne({email:$req$$.params.email},{email:1,name:1,picture:1}).lean().exec(function($e$$,
26
26
  $user$$){if($e$$)return $res$$.status(400).send($e$$);$res$$.send($user$$)})});$app$$.post("/signup",$rateLimiter$$,async($req$$,$res$$)=>{var $body$$=$req$$.body;$body$$.json&&($body$$=JSON.parse($body$$.json));if(!$body$$)return $res$$.status(400).send("Kh\u00f4ng c\u00f3 n\u1ed9i dung");if(!$body$$.email)return $res$$.status(400).send("L\u1ed7i: B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");$body$$.email=$body$$.email.trim().toLowerCase();if(!$body$$.name)return $res$$.status(400).send("L\u1ed7i: H\u1ecd v\u00e0 t\u00ean ch\u01b0a nh\u1eadp");
@@ -28,7 +28,7 @@ User.findOne({email:$body$$.email},function($error$jscomp$1$$,$result$$){if($err
28
28
  $body$$.name;$result$$.partner=$body$$.partner;$result$$.name=$result$$.local.name;$body$$.picture?$result$$.local.picture=$body$$.picture:$result$$.local.picture||($result$$.local.picture="/images/avatar.jpg");let $password$$;if($body$$.password){if($body$$.rePassword!==$body$$.password)return $res$$.status(400).send("L\u1ed7i: M\u1eadt kh\u1ea9u x\u00e1c nh\u1eadn kh\u00f4ng ch\u00ednh x\u00e1c");if(!User.teststrengthPassword($body$$.password))return $res$$.status(400).send("L\u1ed7i: M\u1eadt kh\u1ea9u ph\u1ea3i c\u00f3 \u00edt nh\u1ea5t 6 k\u00fd t\u1ef1 v\u00e0 bao g\u1ed3m \u00edt nh\u1ea5t m\u1ed9t ch\u1eef s\u1ed1, m\u1ed9t ch\u1eef hoa v\u00e0 m\u1ed9t ch\u1eef th\u01b0\u1eddng");
29
29
  $password$$=$body$$.password}else $password$$=_crypto.createHash("md5").update($result$$.email+(new Date).toISOString()).digest("hex");$result$$.local.password=$result$$.generateHash($password$$);$result$$.save(function($app$jscomp$3_error$$,$newUser$$){if($app$jscomp$3_error$$)return $res$$.status(400).send("L\u1ed7i: Kh\u00f4ng th\u1ec3 \u0111\u0103ng k\u00fd");log.create({id_app:"SIGNUP",id_func:"SIGNUP",action:"SIGNUP"},$result$$.email,$req$$.header("user-agent"),$req$$);if($body$$.cty_name){$app$jscomp$3_error$$=
30
30
  new App;$app$jscomp$3_error$$.user_created=$result$$.email;$app$jscomp$3_error$$.user_updated=$result$$.email;$app$jscomp$3_error$$.name=$body$$.cty_name;var $d$jscomp$1_now$$=new Date;$app$jscomp$3_error$$.ngay_dn=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$app$jscomp$3_error$$.ngay_ks=new Date($d$jscomp$1_now$$.getFullYear()-1,12,0);$app$jscomp$3_error$$.nam_bd=$d$jscomp$1_now$$.getFullYear();$app$jscomp$3_error$$.ngay_ky1=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$d$jscomp$1_now$$=new Date;
31
- $d$jscomp$1_now$$.setMonth($d$jscomp$1_now$$.getMonth()+3);$app$jscomp$3_error$$.expire_date=new Date($d$jscomp$1_now$$);$app$jscomp$3_error$$.save(function($error$jscomp$0$$,$obj$$){if($error$jscomp$0$$)return console.log("Khong tao duoc new app: "+$error$jscomp$0$$);require("../libs/initDatabase").init($obj$$._id,function($error$$){$error$$&&console.log("Can't init database \n"+$error$$)})})}$body$$.id_app&&App.findOne({_id:$body$$.id_app},($e$jscomp$0$$,$app$$)=>{if($e$jscomp$0$$||!$app$$)return console.log("Can't find app",
31
+ $d$jscomp$1_now$$.setMonth($d$jscomp$1_now$$.getMonth()+3);$app$jscomp$3_error$$.expire_date=new Date($d$jscomp$1_now$$);$app$jscomp$3_error$$.save(function($error$jscomp$0$$,$obj$$){if($error$jscomp$0$$)return console.log("Khong tao duoc new app: "+$error$jscomp$0$$);require("../libs/initDatabase").init($obj$$._id,function($error$$){$error$$&&console.log("Can't init database \n"+$error$$)})})}$body$$.id_app&&App.findById($body$$.id_app,($e$jscomp$0$$,$app$$)=>{if($e$jscomp$0$$||!$app$$)return console.log("Can't find app",
32
32
  $body$$.id_app,$e$jscomp$0$$);Participant.createParticipant({id_app:$body$$.id_app,email:$body$$.email,group_id:$body$$.group_id,active:!0},$cust$jscomp$2_e$$=>{if($cust$jscomp$2_e$$)return console.log("can't add user",$body$$.email,"to company",$app$$.name);$cust$jscomp$2_e$$={ten_kh:$body$$.name,email:$newUser$$.email,id_app:$body$$.id_app,user_created:$newUser$$.email,user_updated:$newUser$$.email,kh_yn:!0,of_user:$newUser$$.email};try{Customer.asyncCreateCustomer($cust$jscomp$2_e$$)}catch($e$$){console.log("Auto create new customer with error:",
33
33
  $e$$.message)}})});validator.isEmail($body$$.email)&&!$body$$.password?(loadTemplate("thong tin dang nhap.html",{email:$result$$.email,password:$password$$,receiver_name:$body$$.name},function($error$jscomp$0$$,$html$$){if($error$jscomp$0$$)return console.log($error$jscomp$0$$);email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"Th\u00f4ng tin t\u00e0i kho\u1ea3n",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui email thon tin tai khoan cho nguoi dung\n"+
34
34
  $error$$)})}),$res$$.send("T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y th\u00f4ng tin \u0111\u0103ng nh\u1eadp")):$res$$.send("T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o")})})});$app$$.get("/resetpassword",$rateLimiter$$,async($req$$,$res$$)=>{let $address$$=$req$$.query.email;if(!$address$$)return $res$$.status(400).send("Y\u00eau c\u1ea7u m\u1ed9t email");$address$$=$address$$.toLowerCase();
@@ -1,8 +1,8 @@
1
1
  'use strict';const EventEmitter=require("events").EventEmitter,underscore=require("underscore"),_=require("lodash"),excelReport=require("excel-report"),validate=require("../libs/validate"),ckvt=require("../libs/ckvt"),vsocai=global.getModel("vsocai"),Socai=global.getModel("socai"),OptionsModel=global.getModel("options"),Approve=global.getModel("approve"),rpt=global.getModel("rpt"),log=global.getModel("log"),trangthai=global.getModel("trangthai"),app=global.getModel("app"),Participant=global.getModel("participant"),
2
- dmqct=global.getModel("dmqct"),counter=global.getModel("counter"),async=require("async"),excel=require("../libs/excel"),permission=require("../libs/permission"),fs=require("fs"),link=global.getModel("link"),moment=require("moment"),numeral=require("numeral"),Parameter=global.getModel("parameter"),templatevoucher=global.getModel("templatevoucher"),dvcs=global.getModel("dvcs"),{numberToWord,stripHtmlTags,compileHtml,evalute}=require("../libs/utils"),redisCache=require("../libs/redis-cache"),path=require("path"),
3
- htmlReport=require("../libs/htmlReport"),User=global.getModel("user"),Usergroup=global.getModel("usergroup"),textReport=require("../libs/textReport"),dmqddvt=global.getModel("dmqddvt"),StaticPool=require("../libs/WorkerStaticPool"),ERR_NOT_FOUND="ERR_NOT_FOUND: \u0110\u1ed1i t\u01b0\u1ee3ng n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i",ERR_NOT_FOUND_CODE=1100,ERR_NOT_PERMIT="ERR_NOT_PERMIT: Kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n t\u00e1c v\u1ee5 n\u00e0y",ERR_NOT_PERMIT_CODE=1200,ERR_ALREADY_EXIST=
4
- "ERR_ALREADY_EXIST: \u0110\u1ed1i t\u01b0\u1ee3ng n\u00e0y \u0111\u00e3 th\u1ef1c s\u1ef1 t\u1ed3n t\u1ea1i",ERR_ALREADY_EXIST_CODE=1300,ERR_NOT_HAVE_DATA="ERR_NOT_HAVE_DATA: Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u",ERR_NOT_HAVE_DATA_CODE=1400,ERR_CAN_NOT_UPDATE="ERR_CAN_NOT_UPDATE: Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",ERR_CAN_NOT_UPDATE_CODE=1500,ERR_DATA_GENERATED="ERR_DATA_GENERATED: \u0110\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u li\u00ean quan",ERR_DATA_GENERATED_CODE=
5
- 1600,ERR_ID_INVALID="ERR_ID_INVALID: Id kh\u00f4ng h\u1ee3p l\u1ec7",ERR_ID_INVALID_CODE=1700,ERR_KEY_ARISE="ERR_KEY_ARISE_DATA: ",ERR_KEY_ARISE_CODE=1800,ERR_ARISE="ERR_ARISE_DATA: ",ERR_ARISE_CODE=1900,ERR_VERIFY_OTP=4001,fields_sync_master_detail=["ma_ct","so_ct","ngay_ct"];function bodyToJson($body$$){$body$$.json&&($body$$=JSON.parse($body$$.json));delete $body$$._id;delete $body$$.__v;return $body$$}
2
+ dmqct=global.getModel("dmqct"),counter=global.getModel("counter"),async=require("async"),excel=require("../libs/excel"),permission=require("../libs/permission"),fs=require("fs"),link=global.getModel("link"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),numeral=require("numeral"),Parameter=global.getModel("parameter"),templatevoucher=global.getModel("templatevoucher"),dvcs=global.getModel("dvcs"),{numberToWord,stripHtmlTags,compileHtml,evalute}=
3
+ require("../libs/utils"),redisCache=require("../libs/redis-cache"),path=require("path"),htmlReport=require("../libs/htmlReport"),User=global.getModel("user"),Usergroup=global.getModel("usergroup"),textReport=require("../libs/textReport"),dmqddvt=global.getModel("dmqddvt"),StaticPool=require("../libs/WorkerStaticPool"),ERR_NOT_FOUND="ERR_NOT_FOUND: \u0110\u1ed1i t\u01b0\u1ee3ng n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i",ERR_NOT_FOUND_CODE=1100,ERR_NOT_PERMIT="ERR_NOT_PERMIT: Kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n t\u00e1c v\u1ee5 n\u00e0y",
4
+ ERR_NOT_PERMIT_CODE=1200,ERR_ALREADY_EXIST="ERR_ALREADY_EXIST: \u0110\u1ed1i t\u01b0\u1ee3ng n\u00e0y \u0111\u00e3 th\u1ef1c s\u1ef1 t\u1ed3n t\u1ea1i",ERR_ALREADY_EXIST_CODE=1300,ERR_NOT_HAVE_DATA="ERR_NOT_HAVE_DATA: Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u",ERR_NOT_HAVE_DATA_CODE=1400,ERR_CAN_NOT_UPDATE="ERR_CAN_NOT_UPDATE: Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",ERR_CAN_NOT_UPDATE_CODE=1500,ERR_DATA_GENERATED="ERR_DATA_GENERATED: \u0110\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u li\u00ean quan",
5
+ ERR_DATA_GENERATED_CODE=1600,ERR_ID_INVALID="ERR_ID_INVALID: Id kh\u00f4ng h\u1ee3p l\u1ec7",ERR_ID_INVALID_CODE=1700,ERR_KEY_ARISE="ERR_KEY_ARISE_DATA: ",ERR_KEY_ARISE_CODE=1800,ERR_ARISE="ERR_ARISE_DATA: ",ERR_ARISE_CODE=1900,ERR_VERIFY_OTP=4001,fields_sync_master_detail=["ma_ct","so_ct","ngay_ct"];function bodyToJson($body$$){$body$$.json&&($body$$=JSON.parse($body$$.json));delete $body$$._id;delete $body$$.__v;return $body$$}
6
6
  async function asyncBodyToJson($body$$,$ctrl$$,$id_app$$,$voucher_options$$){$voucher_options$$||($voucher_options$$=(await OptionsModel.findOne({id_app:$id_app$$,id_func:$ctrl$$.name},{option:1}).lean()||{}).option);$body$$=bodyToJson($body$$);if($voucher_options$$)for(let $field$$ in $voucher_options$$)!$body$$[$field$$]&&"_id"!==$field$$&&$voucher_options$$[$field$$]&&underscore.has($ctrl$$.model.schema.paths,$field$$)&&($body$$[$field$$]=$voucher_options$$[$field$$]);for(let $key$$ in $body$$)if(Array.isArray($body$$[$key$$])&&
7
7
  $body$$[$key$$].forEach($r$$=>{_.isObject($r$$)&&delete $r$$._id}),$body$$[$key$$]&&$body$$[$key$$]instanceof String&&(0==$body$$[$key$$].trim().indexOf("[")||0==$body$$[$key$$].trim().indexOf("{"))&&("mixed"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()||"array"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()))try{$body$$[$key$$]=JSON.parse($body$$[$key$$])}catch($e$$){console.error($e$$)}return $body$$}
8
8
  const getData=($id_app$$,$collection$$,$field$$,$condition$$)=>{if("token"===$collection$$||"asskey"===$collection$$)throw`Collection ${$collection$$} is not allow`;"dmkh"===$collection$$&&($collection$$="customer");"dmtk"===$collection$$&&($collection$$="account");let $col$$=mongoose.models[$collection$$];if($col$$){if($col$$.schema.paths.id_app){if(!$id_app$$)throw`Collection ${$collection$$} required id_app`;$condition$$.id_app=$id_app$$}let $fields$$;$field$$&&($fields$$={[$field$$]:1});if("user"===
@@ -13,8 +13,8 @@ Number($v$$):"date"==$model$$.schema.paths[$key$$].instance.toLowerCase()?$condi
13
13
  class controller{constructor($router$$,$model$$,$name$$,$options$jscomp$0$$={isVoucher:void 0,sort:void 0,check_stock:void 0,unique:void 0,require_id_app:void 0,notNeedRight:void 0}){this.name=$name$$;this.model=$model$$;this.router=$router$$;this.module=this.name;global.controllers[$name$$.trim().toUpperCase()]=this;$options$jscomp$0$$.findExact||($options$jscomp$0$$.findExact={});this.keyValues=$options$jscomp$0$$.keyValues;this.keyValues||(this.keyValues={});void 0===$options$jscomp$0$$.require_id_app||
14
14
  !0===$options$jscomp$0$$.require_id_app?(this.require_id_app=!0,this.route_name=`/:id_app/${this.module}`):(this.require_id_app=!1,this.route_name=`/${this.module}`);this.collection_name=$options$jscomp$0$$.collection_name?$options$jscomp$0$$.collection_name:$name$$;this.sort=$options$jscomp$0$$.sort;this.unique=$options$jscomp$0$$.unique;this.getting=$options$jscomp$0$$.onGetting;this.finding=$options$jscomp$0$$.onFinding;this.found=$options$jscomp$0$$.onFound;this.validating=$options$jscomp$0$$.onValidating;
15
15
  this.saving=$options$jscomp$0$$.onSaving;this.creating=$options$jscomp$0$$.onCreating;this.created=$options$jscomp$0$$.onCreated;this.updating=$options$jscomp$0$$.onUpdating;this.updated=$options$jscomp$0$$.onUpdated;this.deleting=$options$jscomp$0$$.onDeleting;this.deleted=$options$jscomp$0$$.onDeleted;this.approveData=$options$jscomp$0$$.approveData;this.view=$options$jscomp$0$$.onView;this.onView=($user$$,$items$$,$next$$,$options$$)=>{let $self$$=this,$schema_paths$$=$model$$.schema.paths;underscore.has($schema_paths$$,
16
- "exfields")&&$items$$.forEach($item$$=>{$item$$.exfields||($item$$.exfields={})});async.parallel({_user_created:$callback$$=>{$items$$.filter($item$$=>$item$$.user_created).joinModel2(null,User,{where:{user_created:"email"},fields:{name_user_created:"name"}},()=>{$callback$$(null)})},_user_updated:$callback$$=>{$items$$.filter($item$$=>$item$$.user_updated).joinModel2(null,User,{where:{user_updated:"email"},fields:{name_user_updated:"name"}},()=>{$callback$$(null)})},_approve:$callback$$=>{async.map($items$$,
17
- ($item$$,$next$$)=>{setImmediate(()=>{Approve.find({id_ct:$item$$._id.toString()},{title:1,trang_thai:1,user_approved:1,user_approved_name:1,date_approved:1,user_denied:1,user_denied_name:1,date_denied:1}).lean().exec(async($e$$,$rs$$)=>{setImmediate(async()=>{$item$$.approve_data=$rs$$;await $item$$.approve_data.asyncJoinModel2($item$$.id_app,Participant,{where:{user_approved:"email"},fields:{user_approved_name:"name",signature_image:"signature_image"}});await $item$$.approve_data.asyncJoinModel2($item$$.id_app,
16
+ "exfields")&&$items$$.forEach($item$$=>{delete $item$$.__v;$item$$.exfields||($item$$.exfields={})});async.parallel({_user_created:$callback$$=>{$items$$.filter($item$$=>$item$$.user_created).joinModel2(null,User,{where:{user_created:"email"},fields:{name_user_created:"name"}},()=>{$callback$$(null)})},_user_updated:$callback$$=>{$items$$.filter($item$$=>$item$$.user_updated).joinModel2(null,User,{where:{user_updated:"email"},fields:{name_user_updated:"name"}},()=>{$callback$$(null)})},_approve:$callback$$=>
17
+ {async.map($items$$,($item$$,$next$$)=>{setImmediate(()=>{Approve.find({id_ct:$item$$._id.toString()},{title:1,trang_thai:1,user_approved:1,user_approved_name:1,date_approved:1,user_denied:1,user_denied_name:1,date_denied:1}).lean().exec(async($e$$,$rs$$)=>{setImmediate(async()=>{$item$$.approve_data=$rs$$;await $item$$.approve_data.asyncJoinModel2($item$$.id_app,Participant,{where:{user_approved:"email"},fields:{user_approved_name:"name",signature_image:"signature_image"}});await $item$$.approve_data.asyncJoinModel2($item$$.id_app,
18
18
  Participant,{where:{user_denied:"email"},fields:{user_denied_name:"name",signature_image:"signature_image"}});$next$$(null)})})})},()=>{$callback$$(null)})},transfer_ct:$callback$$=>{if(underscore.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,id_ct_chuyen:$item$$._id.toString()},
19
19
  {_id:1}).lean().exec(async($e$$,$rs$$)=>{$rs$$&&($item$$.id_ct_nhan=$rs$$._id);$next$$(null)})})},()=>{$callback$$(null)});else return $callback$$()}},$e$jscomp$0$$=>{if($e$jscomp$0$$)return $next$$($e$jscomp$0$$);setImmediate(()=>{if($self$$.view)try{$self$$.view($user$$,$items$$,function($error$jscomp$0$$,$rs$jscomp$0$$){setImmediate(()=>{if($error$jscomp$0$$)return $next$$($error$jscomp$0$$);$self$$.dynamicView?$self$$.dynamicView($user$$,$rs$jscomp$0$$||$items$$,function($error$$,$rs$$){if($error$$)return $next$$($error$$);
20
20
  $next$$(null,$rs$$||$items$$)}):$next$$(null,$rs$jscomp$0$$||$items$$)})},$options$$)}catch($e$$){console.error("Error on view of",$name$$,$e$$),$next$$(null,$items$$)}else $self$$.dynamicView?$self$$.dynamicView($user$$,$items$$,function($error$$,$rs$$){if($error$$)return $next$$($error$$);$next$$(null,$rs$$||$items$$)}):$next$$(null,$items$$)})})};this.mapSql=$options$jscomp$0$$.mapSql;this.mapSql||(this.mapSql=function($data$$,$callback$$){$callback$$()});this.mapWeb=$options$jscomp$0$$.mapWeb;
@@ -72,10 +72,10 @@ $condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push({id_app:{$in:$i
72
72
  $condition$$.$nor&&0===$condition$$.$nor.length&&delete $condition$$.$nor;$id_sellers_query$$=null;if($req$$.query.count)$condition$$.$where?(console.log("phai loai bo $where trong condition"),$id_sellers_query$$=$model$$.count($condition$$,function($e$$,$data$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send({rows_number:$data$$})})):$id_sellers_query$$=$model$$.countDocuments($condition$$,function($e$$,
73
73
  $data$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send({rows_number:$data$$})});else{let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}var $fields$$=$req$$.query.fields;let $gfields$$={};$fields$$&&(underscore.isArray($fields$$)?$fields$$.forEach($f$$=>{"_id"!==$f$$&&($gfields$$[$f$$]=
74
74
  1)}):underscore.isObject($fields$$)?$gfields$$={...$gfields$$,...$fields$$}:$fields$$.split(",").filter($f$$=>$f$$&&0>$field_not_right$$.indexOf($f$$)).forEach($f$$=>{"_id"!==$f$$&&($gfields$$[$f$$]=1)}));$field_not_right$$.forEach($f$$=>{$gfields$$[$f$$]=0});!$fields$$&&(($fields$$=$req$$.query.notfields)&&(underscore.isArray($fields$$)?$fields$$.forEach($f$$=>{$f$$&&"_id"!==$f$$&&($gfields$$[$f$$]=0)}):underscore.isObject($fields$$)?$gfields$$={...$gfields$$,...$fields$$}:$fields$$.split(",").forEach($f$$=>
75
- {$f$$&&"_id"!==$f$$&&($gfields$$[$f$$]=0)})),$shareRoute$$||"public"===$req$$.user.email)&&($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0);$condition$$.$text&&($gfields$$||($gfields$$={}),$gfields$$.textScore={$meta:"textScore"});if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate)try{$id_sellers_query$$=$model$$.aggregate([{$match:$condition$$}]);$req$$.query.group&&($group_page$$=JSON.parse($req$$.query.group),$id_sellers_query$$.group($group_page$$));
76
- if($req$$.query.match){let $match$$=JSON.parse($req$$.query.match);$id_sellers_query$$.match($match$$)}if($req$$.query.project)$limit_project$$=JSON.parse($req$$.query.project),$id_sellers_query$$.project($limit_project$$);else if($gfields$$&&0<Object.keys($gfields$$).length)$limit_project$$=$gfields$$;else if($limit_project$$={_id:1},$group_page$$)for(let $key$$ in $group_page$$)$limit_project$$[$key$$]=1;$id_sellers_query$$.project($limit_project$$);if($req$$.query.aggregate){let $aggregate$$=JSON.parse($req$$.query.aggregate);
77
- $id_sellers_query$$.append($aggregate$$)}}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}else $id_sellers_query$$=$model$$.find($condition$$,$gfields$$);!$sort$$&&$gfields$$.textScore?$sort$$={textScore:{$meta:"textScore"}}:$sort$$&&($sort$$._id=1);$sort$$&&$id_sellers_query$$.sort($sort$$);var $group_page$$=$req$$.query.page,$limit_project$$=$req$$.query.limit;$limit_project$$&&($limit_project$$=Number($limit_project$$));$limit_project$$||($limit_project$$=!1!==
78
- $ctrl$$.require_id_app&&"right"!==$ctrl$$.name?20:1E5);$limit_project$$&&500<$limit_project$$&&"xlsx"!==$req$$.query.type_data&&!$req$$.query.print&&!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name&&($limit_project$$=500);$group_page$$?$id_sellers_query$$.skip((Number($group_page$$)-1)*$limit_project$$).limit($limit_project$$):$id_sellers_query$$.limit($limit_project$$);$id_sellers_query$$.lean&&($id_sellers_query$$=$id_sellers_query$$.lean());$id_sellers_query$$.exec(function($e$jscomp$0$$,$obj4view$$){if($e$jscomp$0$$)return console.error($e$jscomp$0$$,
75
+ {$f$$&&"_id"!==$f$$&&($gfields$$[$f$$]=0)})),$shareRoute$$||"public"===$req$$.user.email)&&($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0);$condition$$.$text&&($gfields$$||($gfields$$={}),$gfields$$.textScore={$meta:"textScore"});if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate)try{$id_sellers_query$$=$model$$.aggregate([{$match:$condition$$}]);if($req$$.query.group){var $group_page$$=JSON.parse($req$$.query.group);$id_sellers_query$$.group($group_page$$)}if($req$$.query.match){let $match$$=
76
+ JSON.parse($req$$.query.match);$id_sellers_query$$.match($match$$)}if($req$$.query.project){var $limit_project$$=JSON.parse($req$$.query.project);$id_sellers_query$$.project($limit_project$$)}else if($gfields$$&&0<Object.keys($gfields$$).length)$limit_project$$=$gfields$$;else if($limit_project$$={_id:1},$group_page$$)for(let $key$$ in $group_page$$)$limit_project$$[$key$$]=1;$id_sellers_query$$.project($limit_project$$);if($req$$.query.aggregate){let $aggregate$$=JSON.parse($req$$.query.aggregate);
77
+ $id_sellers_query$$.append($aggregate$$)}}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}else $id_sellers_query$$=$model$$.find($condition$$,$gfields$$);!$sort$$&&$gfields$$.textScore?$sort$$={textScore:{$meta:"textScore"}}:$sort$$&&($sort$$._id=1);$sort$$&&$id_sellers_query$$.sort($sort$$);"xlsx"!==$req$$.query.type_data&&($group_page$$=$req$$.query.page,($limit_project$$=$req$$.query.limit)&&($limit_project$$=Number($limit_project$$)),$limit_project$$||($limit_project$$=
78
+ !1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name?20:1E5),$limit_project$$&&500<$limit_project$$&&!$req$$.query.print&&!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name&&($limit_project$$=500),$group_page$$?$id_sellers_query$$.skip((Number($group_page$$)-1)*$limit_project$$).limit($limit_project$$):$id_sellers_query$$.limit($limit_project$$));$id_sellers_query$$.lean&&($id_sellers_query$$=$id_sellers_query$$.lean());$id_sellers_query$$.exec(function($e$jscomp$0$$,$obj4view$$){if($e$jscomp$0$$)return console.error($e$jscomp$0$$,
79
79
  $condition$$),$res$$.status(400).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});$obj4view$$||($obj4view$$=[]);async.parallel({found:function($callback$$){$ctrl$$.found?$ctrl$$.found($req$$.user,$condition$$,$obj4view$$,function($error$$,$items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,$obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>{$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});
80
80
  $callback$$(null)}},function($error$jscomp$0$$,$rs$jscomp$0$$){setImmediate(()=>{if($error$jscomp$0$$)return $res$$.status(400).send({error:$error$jscomp$0$$.error||$error$jscomp$0$$.message||$error$jscomp$0$$});$obj4view$$=$rs$jscomp$0$$.found;async.parallel({e_view:function($callback$$){$ctrl$$.onView($req$$.user,$obj4view$$,($error$$,$viewValue$$)=>{setImmediate(()=>{if($error$$)return console.error("Erron on view:",$error$$),$callback$$($error$$);$callback$$(null,$viewValue$$)})},{req:$req$$,
81
81
  shareRoute:$shareRoute$$})}},async function($app$jscomp$1_dir_root_template_e$$,$_groupBy_func_string_rs$$){if($error$jscomp$0$$)return $res$$.status(400).send({error:$error$jscomp$0$$.error||$error$jscomp$0$$.message||$error$jscomp$0$$});if($req$$.query.type_data&&"xlsx"==$req$$.query.type_data){$app$jscomp$1_dir_root_template_e$$=(configs.paths||{}).templates;let $template_id$$,$excelTemplate$$;if($template_id$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($template_id$$))return $res$$.status(400).send({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});
@@ -85,15 +85,15 @@ $item$$[$_key$$];if(underscore.isObject($_v$$))for(let $__key$$ in $_v$$){let $_
85
85
  $item$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){console.error("Error convert to date",$_v$$,$e$$)}}});$app$jscomp$1_dir_root_template_e$$.detail=$_groupBy_func_string_rs$$.e_view;if($excelTemplate$$&&$excelTemplate$$.handle_data){$_groupBy_func_string_rs$$=`return (async ()=>{
86
86
  ${$excelTemplate$$.handle_data}
87
87
  })`;try{$app$jscomp$1_dir_root_template_e$$=await evalute($_groupBy_func_string_rs$$,{data:$app$jscomp$1_dir_root_template_e$$,moment,numeral,_,utils})()}catch($e$$){return console.error($e$$,$_groupBy_func_string_rs$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}}excelReport($_rs_msg_templatePath$$,$app$jscomp$1_dir_root_template_e$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||
88
- $e$$});$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx");$res$$.end($result$$,"binary")})})}else $req$$.query.print&&$req$$.query.id_rpt&&global.mongoose.Types.ObjectId.isValid($req$$.query.id_rpt)?htmlReport($req$$.query.id_rpt,{...$req$$.user.current_app_info,...$req$$.query,company:{...$req$$.user.current_app_info},detail:$_groupBy_func_string_rs$$.e_view,details:$_groupBy_func_string_rs$$.e_view}).then($rs$$=>
89
- {$res$$.send($rs$$)},$e$$=>{console.error($e$$);$res$$.status(400).send($e$$)}):($_rs_msg_templatePath$$=$_groupBy_func_string_rs$$.e_view,$req$$.query.groupBy?($_groupBy_func_string_rs$$=$req$$.query.groupBy.split(","),$_rs_msg_templatePath$$.groupBy($_groupBy_func_string_rs$$,[],($e$$,$_items$$)=>{if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});$res$$.send($_items$$)})):$res$$.send($_rs_msg_templatePath$$))})})})})}})}];$_route_name_route_name$$=
90
- $_route_name_route_name$$||this.route_name;"GET"===$method$$?(this.router.route($_route_name_route_name$$).get(...$findRoute$$),this.router.route($_route_name_route_name$$+"/excel").get(...$findRoute$$)):(this.router.route($_route_name_route_name$$).post(...$findRoute$$),this.router.route($_route_name_route_name$$+"/excel").post(...$findRoute$$))};
88
+ $e$$});$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx");$res$$.end($result$$,"binary")})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"})}else $req$$.query.print&&$req$$.query.id_rpt&&global.mongoose.Types.ObjectId.isValid($req$$.query.id_rpt)?htmlReport($req$$.query.id_rpt,{...$req$$.user.current_app_info,...$req$$.query,company:{...$req$$.user.current_app_info},detail:$_groupBy_func_string_rs$$.e_view,
89
+ details:$_groupBy_func_string_rs$$.e_view}).then($rs$$=>{$res$$.send($rs$$)},$e$$=>{console.error($e$$);$res$$.status(400).send($e$$)}):($_rs_msg_templatePath$$=$_groupBy_func_string_rs$$.e_view,$req$$.query.groupBy?($_groupBy_func_string_rs$$=$req$$.query.groupBy.split(","),$_rs_msg_templatePath$$.groupBy($_groupBy_func_string_rs$$,[],($e$$,$_items$$)=>{if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});$res$$.send($_items$$)})):$res$$.send($_rs_msg_templatePath$$))})})})})}})}];
90
+ $_route_name_route_name$$=$_route_name_route_name$$||this.route_name;"GET"===$method$$?(this.router.route($_route_name_route_name$$).get(...$findRoute$$),this.router.route($_route_name_route_name$$+"/excel").get(...$findRoute$$)):(this.router.route($_route_name_route_name$$).post(...$findRoute$$),this.router.route($_route_name_route_name$$+"/excel").post(...$findRoute$$))};
91
91
  controller.prototype.get=function($route_name$$,$shareRoute$$=!1){let $model$$=this.model,$ctrl$$=this;this.router.route(`${$route_name$$||this.route_name}/:id`).get(function($req$$,$res$$,$next$$){let $id$$=$req$$.params.id;if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(404).send({error:ERR_ID_INVALID,code:ERR_ID_INVALID_CODE});async.parallel({c:$callback$$=>{global.clientRedis.get("stp:"+$id$$,async($err_fields$jscomp$2_notfields$$,$obj$jscomp$0$$)=>{if(!$err_fields$jscomp$2_notfields$$&&
92
92
  $obj$jscomp$0$$&&$obj$jscomp$0$$._id===$id$$)$callback$$(null,JSON.parse($obj$jscomp$0$$));else{let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}$err_fields$jscomp$2_notfields$$=$req$$.query.fields;let $gfields$$={};$err_fields$jscomp$2_notfields$$&&(underscore.isArray($err_fields$jscomp$2_notfields$$)?$err_fields$jscomp$2_notfields$$.filter($f$$=>0>$field_not_right$$.indexOf($f$$)).forEach($f$$=>
93
93
  {"_id"!=$f$$&&$f$$&&($gfields$$[$f$$]=1)}):underscore.isObject($err_fields$jscomp$2_notfields$$)?$gfields$$={...$gfields$$,...$err_fields$jscomp$2_notfields$$}:$err_fields$jscomp$2_notfields$$.split(",").filter($f$$=>0>$field_not_right$$.indexOf($f$$)).forEach($f$$=>{"_id"!=$f$$&&$f$$&&($gfields$$[$f$$]=1)}));if(!$err_fields$jscomp$2_notfields$$)try{$field_not_right$$.forEach($f$$=>{$f$$&&($gfields$$[$f$$]=0)})}catch($e$$){console.error("Error get field not right",$e$$)}!$err_fields$jscomp$2_notfields$$&&
94
94
  (($err_fields$jscomp$2_notfields$$=$req$$.query.notfields)&&(underscore.isArray($err_fields$jscomp$2_notfields$$)?$err_fields$jscomp$2_notfields$$.forEach($f$$=>{"_id"!=$f$$&&$f$$&&($gfields$$[$f$$]=0)}):underscore.isObject($err_fields$jscomp$2_notfields$$)?$gfields$$={...$gfields$$,...$err_fields$jscomp$2_notfields$$}:$err_fields$jscomp$2_notfields$$.split(",").forEach($f$$=>{"_id"!=$f$$&&$f$$&&($gfields$$[$f$$]=0)})),$shareRoute$$||"public"===$req$$.user.email)&&($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=
95
- 0);$model$$.findById($id$$,$gfields$$,function($err$$,$obj$$){setImmediate(()=>{$callback$$($err$$,$obj$$)})})}})}},async($e$jscomp$0$$,$rs$$)=>{if($e$jscomp$0$$)return console.error($e$jscomp$0$$),$e$jscomp$0$$.error?$res$$.status(400).send($e$jscomp$0$$):$res$$.status(400).send({error:$e$jscomp$0$$.message||$e$jscomp$0$$});let $obj$$=$rs$$.c;if(!$obj$$)return $res$$.status(404).send({error:ERR_NOT_FOUND,code:ERR_NOT_FOUND_CODE});if($shareRoute$$&&$obj$$.shared)underscore.has($model$$.schema.paths,
96
- "id_app")&&(await app.findOne({_id:$obj$$.id_app,sale_online:!0})||$res$$.status(403).send({error:ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE}));else if(!0===underscore.has($model$$.schema.paths,"id_app")&&$req$$.user.current_id_app!=$obj$$.id_app)return $res$$.status(403).send({error:ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE});$ctrl$$.getting?$ctrl$$.getting($req$$.user,$id$$,function($e$$){setImmediate(()=>{if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});
95
+ 0);$model$$.findById($id$$,$gfields$$,function($err$$,$obj$$){setImmediate(()=>{$callback$$($err$$,$obj$$)})})}})}},async($c_app_e$$,$rs$$)=>{if($c_app_e$$)return console.error($c_app_e$$),$c_app_e$$.error?$res$$.status(400).send($c_app_e$$):$res$$.status(400).send({error:$c_app_e$$.message||$c_app_e$$});let $obj$$=$rs$$.c;if(!$obj$$)return $res$$.status(404).send({error:ERR_NOT_FOUND,code:ERR_NOT_FOUND_CODE});if($shareRoute$$&&$obj$$.shared)underscore.has($model$$.schema.paths,"id_app")&&(($c_app_e$$=
96
+ await app.findById($obj$$.id_app))&&!0===$c_app_e$$.sale_online||$res$$.status(403).send({error:ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE}));else if(!0===underscore.has($model$$.schema.paths,"id_app")&&$req$$.user.current_id_app!=$obj$$.id_app)return $res$$.status(403).send({error:ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE});$ctrl$$.getting?$ctrl$$.getting($req$$.user,$id$$,function($e$$){setImmediate(()=>{if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});
97
97
  $req$$.obj=$obj$$;$next$$()})},$obj$$):($req$$.obj=$obj$$,$next$$())})},function($req$$,$res$$,$next$$){let $obj$$=$req$$.obj;if($obj$$&&$obj$$.toObject)$obj$$=$obj$$.toObject();else return $next$$();if($obj$$.shared&&$shareRoute$$)return $next$$();permission.hasRight($obj$$.id_app,$req$$.user.email,$ctrl$$.module,"view",function($error$$,$permission$$){setImmediate(()=>{if($ctrl$$.options.onQuery)$req$$.permission=$permission$$,$ctrl$$.options.onQuery($req$$,$e$$=>{setImmediate(()=>{if($e$$)return $res$$.status(403).send({error:$e$$||
98
98
  ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE});if($req$$.permission)$next$$();else return $res$$.status(403).send({error:$error$$||ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE})})});else if($permission$$)$next$$();else return $res$$.status(403).send({error:$error$$||ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE})})},{data:$obj$$,obj:$obj$$,notNeedRight:$ctrl$$.options.notNeedRight})},function($req$$,$res$$){let $obj$$=$req$$.obj;$obj$$&&$obj$$.toObject&&($obj$$=$obj$$.toObject());$obj$$.collection_name=$ctrl$$.collection_name;
99
99
  $ctrl$$.onView($req$$.user,[$obj$$],function($e$$,$viewValue$$){setImmediate(()=>{if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});$res$$.send($viewValue$$[0])})},{req:$req$$,shareRoute:$shareRoute$$})})};
@@ -113,9 +113,9 @@ $condition$jscomp$0$$,function($e$$,$condition$$){if($e$$)return console.error($
113
113
  $e$$});$req$$.condition=$condition$$;$next$$()},{req:$req$$}):($req$$.condition=$condition$jscomp$1$$,$next$$())},function($req$$,$res$$,$next$$){permission.isAdmin($req$$.user.current_id_app,$req$$.user.email,function($e$$,$admin$$){setImmediate(()=>{if($e$$)return $res$$.status(403).send({error:$e$$});if(!$admin$$)return $res$$.status(403).send({error:"B\u1ea1n ph\u1ea3i c\u00f3 quy\u1ec1n admin \u0111\u1ec3 th\u1ef1c hi\u1ec7n t\u00ednh n\u0103ng n\u00e0y"});$next$$()})})},function($req$$,$res$$){let $condition$$=
114
114
  $req$$.condition;underscore.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$$.ma_ct=$ctrl$$.name.toUpperCase());let $query$$=$model$$.find($condition$$);!0===underscore.has($model$$.schema.paths,"ngay_ct")&&$query$$.sort({ngay_ct:1});$query$$.lean().exec(function($e$jscomp$1$$,$obj4view$$){setImmediate(()=>{if($e$jscomp$1$$)return console.error($e$jscomp$1$$),$e$jscomp$1$$.error?$res$$.status(400).send($e$jscomp$1$$):$res$$.status(400).send({error:$e$jscomp$1$$.message||
115
115
  $e$jscomp$1$$.error||$e$jscomp$1$$});setImmediate(()=>{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$$.header("user-agent"),$req$$)});let $tu_so$$=Number($req$$.query.tu_so);$tu_so$$||($tu_so$$=1);let $den_so$$=$req$$.query.den_so,$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$$+"",
116
- $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.map($obj4view$$,function($obj$$,$callback$$){setImmediate(()=>{$model$$.findOneAndUpdate({_id:$obj$$._id},$obj$$,function($e$jscomp$0$$,$rs$$){setImmediate(()=>{if($e$jscomp$0$$||!$rs$$)return $callback$$($e$jscomp$0$$);$ctrl$$.cacheData($obj$$);$ctrl$$.post?postData($obj$$,
117
- $ctrl$$,function($e$$){if($e$$)return console.error("error post data",$e$$),$callback$$($e$$);$callback$$(null,$rs$$)}):$callback$$(null,$rs$$)})})})},function($e$jscomp$0$$,$rs$$){setImmediate(()=>{if($e$jscomp$0$$)return console.error($e$jscomp$0$$),$e$jscomp$0$$.error?$res$$.status(400).send($e$jscomp$0$$):$res$$.status(400).send({error:$e$jscomp$0$$.message||$e$jscomp$0$$});$ctrl$$.emit("saved",$rs$$);$ctrl$$.emit("updated",$rs$$);pushNotification($ctrl$$,$rs$$,"update",null,!0,{exclude_token:$req$$.query.access_token});
118
- $rs$$=$rs$$.map($o$$=>{$o$$.toObject&&($o$$=$o$$.toObject());return $o$$});$ctrl$$.onView($req$$.user,$rs$$,function($e$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})},{req:$req$$})})})})})})};
116
+ $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.map($obj4view$$,function($obj$$,$callback$$){setImmediate(()=>{delete $obj$$.__v;$model$$.findOneAndUpdate({_id:$obj$$._id},$obj$$,function($e$jscomp$0$$,$rs$$){setImmediate(()=>{if($e$jscomp$0$$||!$rs$$)return $callback$$($e$jscomp$0$$);$ctrl$$.cacheData($obj$$);$ctrl$$.post?
117
+ postData($obj$$,$ctrl$$,function($e$$){if($e$$)return console.error("error post data",$e$$),$callback$$($e$$);$callback$$(null,$rs$$)}):$callback$$(null,$rs$$)})})})},function($e$jscomp$0$$,$rs$$){setImmediate(()=>{if($e$jscomp$0$$)return console.error($e$jscomp$0$$),$e$jscomp$0$$.error?$res$$.status(400).send($e$jscomp$0$$):$res$$.status(400).send({error:$e$jscomp$0$$.message||$e$jscomp$0$$});$ctrl$$.emit("saved",$rs$$);$ctrl$$.emit("updated",$rs$$);pushNotification($ctrl$$,$rs$$,"update",null,!0,
118
+ {exclude_token:$req$$.query.access_token});$rs$$=$rs$$.map($o$$=>{$o$$.toObject&&($o$$=$o$$.toObject());return $o$$});$ctrl$$.onView($req$$.user,$rs$$,function($e$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})},{req:$req$$})})})})})})};
119
119
  const getParameters=($id_app$$,$rps_rpt_ids$$,$callback$$)=>{let $parameters$$=$rps_rpt_ids$$.filter($r$$=>$r$$.parameters).map($r$$=>$r$$.parameters).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);0<$parameters$$.length?$callback$$(null,$parameters$$):($rps_rpt_ids$$=underscore.pluck($rps_rpt_ids$$,"_id"),Parameter.find({id_app:$id_app$$,id_rpt:{$in:$rps_rpt_ids$$}}).lean().exec(function($e$$,$parameters$$){setImmediate(()=>{if($e$$)return $callback$$($e$$);$callback$$(null,$parameters$$)})}))},prepareParameters=
120
120
  function($ctrl$$,$parameters$$,$app$$,$obj$$,$callback$jscomp$0$$){async.map($parameters$$,function($p$$,$callback$$){setImmediate(()=>{(async()=>{if("W"===$p$$.type||"EN"===$p$$.type)try{$app$$[$p$$.name]="EN"===$p$$.type?numberToWord($obj$$[$p$$.value],{lang:"en"}):numberToWord($obj$$[$p$$.value])}catch($e$$){console.error($e$$),$app$$[$p$$.name]=$e$$.message}else if("Q"===$p$$.type)try{var $query$jscomp$8_sandbox$$=await evalute("return {"+$p$$.value+"}",{});if($query$jscomp$8_sandbox$$.collection&&
121
121
  $query$jscomp$8_sandbox$$.field){"dmkh"==$query$jscomp$8_sandbox$$.collection&&($query$jscomp$8_sandbox$$.collection="customer");"dmtk"==$query$jscomp$8_sandbox$$.collection&&($query$jscomp$8_sandbox$$.collection="account");var $condition$$=$query$jscomp$8_sandbox$$.condition;if($condition$$){$condition$$=JSON.stringify($condition$$);for(let $m$$ in $obj$$)$condition$$=$condition$$.replace(new RegExp("m."+$m$$,"g"),$obj$$[$m$$]);$condition$$=JSON.parse($condition$$)}else $condition$$={};$app$$[$p$$.name]=
@@ -137,9 +137,9 @@ $e$jscomp$0$$});if($req$$.query.print){console.log("render print page....");if(!
137
137
  $lien_page$$;$lien_page$$=await htmlReport($rs$jscomp$0$$.html_template,$_data$$);$pages$$.push($lien_page$$)},()=>{$callback$$()})},()=>{$res$$.send($pages$$.join('<p style="page-break-before: always"></p>'))})}catch($e$$){return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$})}}else if($req$$.query.json)$res$$.json($data4export$$);else{if(!$rs$jscomp$0$$.file_mau_in)return $res$$.status(400).send({error:"Ch\u01b0a khai b\u00e1o file excel m\u1eabu"});
138
138
  var $dir_root_templates_id_file$$=configs.paths.templates||__dirname;let $templatePath$$;if(0<$rs$jscomp$0$$.file_mau_in.indexOf("/file/download")){$dir_root_templates_id_file$$=$rs$jscomp$0$$.file_mau_in.split("/").pop();const $file$$=global.getModel("file");try{var $_data$jscomp$0$$=await $file$$.findOne({_id:$dir_root_templates_id_file$$});$_data$jscomp$0$$||$res$$.status(400).send({error:"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"});let $file_name$$=$_data$jscomp$0$$.file.name,$root$$=configs.paths.uploads;
139
139
  $root$$||($root$$=__dirname,$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$templatePath$$=path.join($root$$,$file_name$$)}catch($e$$){return $res$$.status(400).send({error:$e$$.message||"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"})}}else $templatePath$$=path.dirname($dir_root_templates_id_file$$)+$rs$jscomp$0$$.file_mau_in;if(!$templatePath$$||!fs.existsSync($templatePath$$))return $res$$.status(400).send({error:"File m\u1eabu kh\u00f4ng t\u1ed3n t\u1ea1i"});let $ext$$=$templatePath$$.split(".").pop();
140
- "xlsx"===$ext$$?excelReport($templatePath$$,$data4export$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx");$res$$.end($result$$,"binary")})}):($_data$jscomp$0$$=$data4export$$[0],$_data$jscomp$0$$.datasource={...$_data$jscomp$0$$},
141
- $_data$jscomp$0$$.company={...$_app$$},textReport($templatePath$$,$_data$jscomp$0$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});"docx"===$ext$$?($res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".docx"),$res$$.write($result$$,"binary"),$res$$.end(null,
142
- "binary")):$res$$.send($result$$)})}))}})})})})})})})};
140
+ "xlsx"===$ext$$?excelReport($templatePath$$,$data4export$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx");$res$$.end($result$$,"binary")})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"}):($_data$jscomp$0$$=$data4export$$[0],
141
+ $_data$jscomp$0$$.datasource={...$_data$jscomp$0$$},$_data$jscomp$0$$.company={...$_app$$},textReport($templatePath$$,$_data$jscomp$0$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});"docx"===$ext$$?($res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+
142
+ ".docx"),$res$$.write($result$$,"binary"),$res$$.end(null,"binary")):$res$$.send($result$$)})}))}})})})})})})})};
143
143
  controller.prototype.importFromJson=function(){const $name$$=this.name;let $ctrl$$=this;this.router.route(`${this.route_name}/import/json`).post(function($req$$,$res$$,$next$$){let $session$$=$req$$.session;if(!0===$session$$["import_json_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["import_json_"+$name$$]=!0;if($req$$.files&&$req$$.files.json){let $filePath$$=$req$$.files.json.path;try{console.log("read file json..."),$req$$.data=require($filePath$$),
144
144
  fs.unlink($filePath$$,function($error$$){$error$$&&console.error("Can't delete file tmp:"+$filePath$$,$error$$)}),$next$$()}catch($e$$){return $session$$["import_json_"+$name$$]=!1,console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$})}}else if($req$$.body){try{$req$$.data=$req$$.body.map($row$jscomp$2_rs$$=>{$row$jscomp$2_rs$$=_.isString($row$jscomp$2_rs$$)?JSON.parse($row$jscomp$2_rs$$):$row$jscomp$2_rs$$;delete $row$jscomp$2_rs$$.id_app;delete $row$jscomp$2_rs$$._id;return $row$jscomp$2_rs$$})}catch($e$$){return console.error($e$$),
145
145
  $res$$.status(400).send({error:$e$$.message||$e$$})}$next$$()}else return $session$$["import_json_"+$name$$]=!1,$res$$.status(400).send({error:"Kh\u00f4ng t\u00ecm th\u1ea5y d\u1eef li\u1ec7u c\u1ea7n import"})},function($req$$,$res$$){let $data$$=$req$$.data;console.log("import from json",$ctrl$$.name,$data$$.length,"rows");setImmediate(()=>{log.create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTJSON",data:{data:$data$$}},$req$$.user.email,$req$$.header("user-agent"),$req$$)});
@@ -196,26 +196,27 @@ $user$jscomp$0$$.current_id_app);const $checkVoucherNumber$$=$callback$$=>{under
196
196
  $den_ngay$$;switch($rs$jscomp$0$$.option.check_so_ct){case "1":$tu_ngay$$=moment($obj$jscomp$0$$.ngay_ct).startOf("day").toDate();$den_ngay$$=moment($obj$jscomp$0$$.ngay_ct).endOf("day").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "2":$tu_ngay$$=moment($obj$jscomp$0$$.ngay_ct).startOf("month").toDate();$den_ngay$$=moment($obj$jscomp$0$$.ngay_ct).endOf("month").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "3":$tu_ngay$$=moment($obj$jscomp$0$$.ngay_ct).startOf("quarter").toDate();
197
197
  $den_ngay$$=moment($obj$jscomp$0$$.ngay_ct).endOf("quarter").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "8":$tu_ngay$$=moment($obj$jscomp$0$$.ngay_ct).startOf("year").toDate(),$den_ngay$$=moment($obj$jscomp$0$$.ngay_ct).endOf("year").toDate(),$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$}}$model$$.findOne($query_check$$,{so_ct:1}).lean().exec(($e$jscomp$0$$,$rs$$)=>{setImmediate(()=>{if($rs$$){let $msgError$$="S\u1ed1 ch\u1ee9ng t\u1eeb "+$obj$jscomp$0$$.so_ct+
198
198
  " \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ch\u1ecdn m\u1ed9t s\u1ed1 ch\u1ee9ng t\u1eeb kh\u00e1c";if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)});else $callback$$($msgError$$)}else $callback$$()})})}else $callback$$()})}):$callback$$()};let $File$$=global.getModel("file"),$Support$$=global.getModel("support");async.waterfall([function($callback$$){setImmediate(function(){permission.hasRight($obj$jscomp$0$$.id_app,
199
- $user$jscomp$0$$.email,$ctrl$$.module,"add",function($error$jscomp$0$$,$hr$$,$c_app$$){setImmediate(()=>{if($error$jscomp$0$$||!$hr$$)return $callback$$($error$jscomp$0$$);$ctrl$$.checkData($c_app$$,$obj$jscomp$0$$,$e$$=>{if($e$$)return $callback$$($e$$);$ctrl$$.creating?$ctrl$$.creating($user$jscomp$0$$,$obj$jscomp$0$$,function($error$$,$obj$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$$)},{data:$data$$}):$callback$$(null,$obj$jscomp$0$$)})})},{data:$obj$jscomp$0$$,notNeedRight:$ctrl$$.options.notNeedRight})})},
200
- ($obj$$,$callback$$)=>{setImmediate(()=>{var $condition_qct$jscomp$1_ma_ct$$=$ctrl$$.name;$condition_qct$jscomp$1_ma_ct$$={status:!0,id_app:$obj$$.id_app,$and:[{$or:[{ma_ct:"#",ma_ct_khac:{$regex:$condition_qct$jscomp$1_ma_ct$$,$options:"i"}},{cac_ma_ct:$condition_qct$jscomp$1_ma_ct$$.toLowerCase()},{ma_ct:$condition_qct$jscomp$1_ma_ct$$.toUpperCase()}]}]};let $_options_qct$$;$_options_qct$$=$obj$$.toObject?$obj$$.toObject():{...$obj$$};let $keys_options$$=Object.keys($_options_qct$$);dmqct.find($condition_qct$jscomp$1_ma_ct$$).lean().exec(($e$jscomp$0$$,
201
- $rs$jscomp$0$$)=>{setImmediate(()=>{let $qcts$$=($rs$jscomp$0$$||[]).filter($qct$$=>"so_ct"!==$qct$$.field&&!$obj$$[$qct$$.field]&&underscore.has($model$$.schema.paths,$qct$$.field));$qcts$$=$qcts$$.filter($qct$$=>{if($qct$$.dieu_kien&&0<$keys_options$$.length)try{let $str_func$$=$qct$$.dieu_kien;0!==$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);return 0<$str_func$$.indexOf("async ")?!1:evalute($str_func$$,{...$_options_qct$$,master:{...$_options_qct$$},moment,numeral})}catch($e$$){return console.error("Error find quyen chung tu",
202
- $e$$.message,$qct$$.dieu_kien),!1}else return!0});async.map($qcts$$,($qct$$,$cb$$)=>{setImmediate(()=>{let $field$$=$qct$$.field,$_options$$={...$_options_qct$$};$_options$$.id_qct=$qct$$._id.toString();getNextSequence($obj$$.id_app,$ctrl$$.name,$field$$,function($e$$,$rs$$){if($e$$)return $cb$$();$obj$$[$field$$]=$rs$$[$field$$];$cb$$()},$_options$$)})},()=>{setImmediate(()=>{$callback$$()})})})})})},$callback$jscomp$0$$=>{setImmediate(function(){if(!0===underscore.has($model$$.schema.paths,"so_ct"))if($obj$jscomp$0$$.so_ct&&
203
- $obj$jscomp$0$$.so_ct.toUpperCase()!==$ctrl$$.name.toUpperCase())$checkVoucherNumber$$($error$$=>{$callback$jscomp$0$$($error$$)});else{let $count$$=0;async.whilst(function($cb$$){$cb$$(null,10>$count$$)},function($callback$$){getNextSequence($obj$jscomp$0$$.id_app,$ctrl$$.name,"so_ct",function($e$$,$rs$$){setImmediate(()=>{if($e$$)return $callback$$($e$$);$obj$jscomp$0$$.so_ct=$rs$$.so_ct;$checkVoucherNumber$$($error$$=>{$error$$?9<=$count$$?$callback$$($error$$):($count$$++,$callback$$()):($count$$=
204
- 99999,$callback$$())})})},$obj$jscomp$0$$)},function($err$$){$callback$jscomp$0$$($err$$)})}else $callback$jscomp$0$$()})},function($callback$$){setImmediate(async()=>{if(underscore.has($model$$.schema.paths,"ma_dvcs")&&"dvcs"!==$ctrl$$.name)if($obj$jscomp$0$$.ma_dvcs)if(global.mongoose.Types.ObjectId.isValid($obj$jscomp$0$$.ma_dvcs)){let $_id_dvcs$$=global.mongoose.Types.ObjectId($obj$jscomp$0$$.ma_dvcs);await dvcs.findOne({_id:$_id_dvcs$$})?$callback$$():dvcs.create({_id:$_id_dvcs$$,ma_dvcs:"IMPORTED",
205
- ten_dvcs:"Imported"},$e$$=>{setImmediate(()=>{$e$$&&console.error("Can't import dvcs",$e$$);$callback$$()})})}else $callback$$();else dvcs.findOne({id_app:$obj$jscomp$0$$.id_app,status:!0}).lean().exec(function($e$$,$rs$$){setImmediate(()=>{$rs$$&&($obj$jscomp$0$$.ma_dvcs=$rs$$._id.toString());$callback$$()})});else $callback$$()})},$callback$$=>{$ctrl$$.validating||($ctrl$$.validating=($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)});$ctrl$$.validating($user$jscomp$0$$,$obj$jscomp$0$$,($e$jscomp$0$$,
206
- $obj$$)=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);setImmediate(()=>{$obj$$.user_created=$user$jscomp$0$$.email;$obj$$.user_updated=$user$jscomp$0$$.email;validate($obj$$,async $error$$=>{setImmediate(async()=>{if($error$$){let $msgError$$=$error$$;if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)});else $callback$$($msgError$$)}else{if($id_be_supply_by_user$$&&global.mongoose.Types.ObjectId.isValid($id_be_supply_by_user$$)){let $_id$$=
207
- global.mongoose.Types.ObjectId($id_be_supply_by_user$$);$obj$$._id=$_id$$;await $model$$.deleteOne({_id:$_id$$})}$callback$$()}})})})})},function($callback$$){setImmediate(function(){isExists($model$$,$ctrl$$.unique,$obj$jscomp$0$$,$ctrl$$.replaceIfExists,async($error$jscomp$1$$,$kq$$)=>{setImmediate(async()=>{if($error$jscomp$1$$||$kq$$){let $msgError$$=$error$jscomp$1$$||ERR_ALREADY_EXIST;console.error($msgError$$,$obj$jscomp$0$$);if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,
208
- $obj$jscomp$0$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$({error:$msgError$$,code:ERR_ALREADY_EXIST_CODE})});else $callback$$({error:$msgError$$,code:ERR_ALREADY_EXIST_CODE})}else{for(let $k$$ in $ctrl$$.keyValues)$obj$jscomp$0$$[$k$$]=$ctrl$$.keyValues[$k$$];Object.keys($model$$.schema.paths).filter($model_path$$=>$obj$jscomp$0$$[$model_path$$]&&underscore.isArray($obj$jscomp$0$$[$model_path$$])).forEach($model_path$$=>{$model$$.schema.paths[$model_path$$].schema&&$model$$.schema.paths[$model_path$$].schema.paths&&
209
- Object.keys($model$$.schema.paths[$model_path$$].schema.paths).filter($path$$=>"line"!==$path$$&&"_id"!==$path$$&&"__v"!==$path$$&&0<=fields_sync_master_detail.indexOf($path$$)).forEach($path$$=>{$obj$jscomp$0$$[$path$$]&&$obj$jscomp$0$$[$model_path$$].filter($detail$$=>!$detail$$[$path$$]).forEach($detail$$=>{$detail$$[$path$$]=$obj$jscomp$0$$[$path$$]})})});await createIdRef($model$$,$obj$jscomp$0$$);$ctrl$$.saving&&await $ctrl$$.saving($user$jscomp$0$$,$obj$jscomp$0$$);$ctrl$$.emit("saving",$obj$jscomp$0$$);
210
- $obj$jscomp$0$$.save(function($error$jscomp$0$$,$obj_created$$){setImmediate(()=>{if($error$jscomp$0$$){let $msgErrors$$=[];for(let $k$$ in $error$jscomp$0$$.errors)$msgErrors$$.push($error$jscomp$0$$.errors[$k$$].message);0==$msgErrors$$.length&&($msgErrors$$=$error$jscomp$0$$.message);$msgErrors$$||($msgErrors$$=JSON.stringify($error$jscomp$0$$));if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&console.error($e$$);$callback$$($msgErrors$$)});
211
- else $callback$$($msgErrors$$)}else postData($obj_created$$,$ctrl$$,function($msgErrors$$){setImmediate(()=>{if($msgErrors$$)if($model$$.deleteOne({_id:$obj_created$$._id.toString()},$err$$=>{$err$$&&console.error("Error remove obj when has error post data:",$err$$,{_id:$obj_created$$._id.toString()})}),$ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&($msgErrors$$=$msgErrors$$+"\n"+$e$$);$callback$$($msgErrors$$)});else $callback$$($msgErrors$$);
212
- else if($req$$&&$req$$.header&&setImmediate(()=>{log.create({id_app:$user$jscomp$0$$.current_id_app,id_func:$ctrl$$.name,action:"ADD",data:{id:$obj$jscomp$0$$._id.toString(),data:$obj$jscomp$0$$}},$user$jscomp$0$$.email,$req$$.header("user-agent"),$req$$)}),$ctrl$$.emit("saved",$obj_created$$),$ctrl$$.emit("created",$obj_created$$),$obj_created$$=$obj_created$$.toObject(),runWebhooks($ctrl$$,$obj_created$$,"ADD",$voucher_options$$),$req$$&&pushNotification($ctrl$$,$obj_created$$,"new",null,null,{exclude_token:($req$$.query||
213
- {}).access_token}),$ctrl$$.cacheData($obj_created$$),$req$$&&!1!==($req$$.query||{}).return_data)$ctrl$$.onView($user$jscomp$0$$,[$obj_created$$],$error$$=>{setImmediate(()=>{if($error$$)return $callback$$($error$$);$callback$$(null,$obj_created$$)})},{req:$req$$});else $callback$$(null,{_id:$obj_created$$._id.toString()})})})})})}})})})},function($obj$$,$callback$$){$ctrl$$.requestApprove($user$jscomp$0$$.current_app_info,$user$jscomp$0$$,$obj$$,$callback$$,$voucher_options$$)},function($obj$$,$callback$$){setImmediate(function(){$obj$$.collection_name=
214
- $ctrl$$.collection_name;$obj$$.exfields&&$obj$$.exfields.__files__&&($obj$$.exfields.__files__.forEach($_file$$=>{$File$$.findOneAndUpdate({_id:$_file$$._id},{id_link:$obj$$._id.toString(),collection_link:$ctrl$$.collection_name}).lean().exec($e$$=>{$e$$&&console.error($e$$)})}),delete $obj$$.exfields.__files__);$obj$$.exfields&&$obj$$.exfields.__supports__&&($obj$$.exfields.__supports__.forEach($_file$$=>{$Support$$.findOneAndUpdate({_id:$_file$$._id},{id_link:$obj$$._id.toString(),collection_link:$ctrl$$.collection_name}).lean().exec($e$$=>
215
- {console.error($e$$)})}),delete $obj$$.exfields.__supports__);if($ctrl$$.created)$ctrl$$.created($user$jscomp$0$$,$obj$$,function($error$jscomp$0$$,$rs$$){setImmediate(()=>{if($error$jscomp$0$$)return $callback$$($error$jscomp$0$$);if($ctrl$$.dynamicCreated)$ctrl$$.dynamicCreated($user$jscomp$0$$,$rs$$,function($error$$){if($error$$)return $callback$$($error$$);$req$$&&$req$$.uploadFile?($error$$="<html><title>OK</title><body>"+JSON.stringify($rs$$)+"</body></html>",$callback$$(null,$error$$)):$callback$$(null,
216
- $rs$$)});else if($req$$&&$req$$.uploadFile){let $html$$="<html><title>OK</title><body>"+JSON.stringify($rs$$)+"</body></html>";$callback$$(null,$html$$)}else $callback$$(null,$rs$$)})});else if($ctrl$$.dynamicCreated)$ctrl$$.dynamicCreated($user$jscomp$0$$,$obj$$,function($error$jscomp$46_html$$){if($error$jscomp$46_html$$)return $callback$$($error$jscomp$46_html$$);$req$$&&$req$$.uploadFile?($error$jscomp$46_html$$="<html><title>OK</title><body>"+JSON.stringify($obj$$)+"</body></html>",$callback$$(null,
217
- $error$jscomp$46_html$$)):$callback$$(null,$obj$$)});else if($req$$&&$req$$.uploadFile){let $html$$="<html><title>OK</title><body>"+JSON.stringify($obj$$)+"</body></html>";$callback$$(null,$html$$)}else $callback$$(null,$obj$$)})}],($e$jscomp$145_name_cached$$,$rs$$)=>{$e$jscomp$145_name_cached$$?(console.error($e$jscomp$145_name_cached$$),$callback$jscomp$1$$($e$jscomp$145_name_cached$$)):($e$jscomp$145_name_cached$$=$model$$.collection.name,$user$jscomp$0$$.current_id_app&&($e$jscomp$145_name_cached$$+=
218
- $user$jscomp$0$$.current_id_app),delete global.cacheDatas[$e$jscomp$145_name_cached$$],$callback$jscomp$1$$(null,$rs$$))})}catch($e$$){console.error($e$$),$callback$jscomp$1$$($e$$)}}
199
+ $user$jscomp$0$$.email,$ctrl$$.module,"add",function($error$$,$hr$$,$c_app$$){setImmediate(()=>{if($error$$||!$hr$$)return $callback$$($error$$);$ctrl$$.checkData($c_app$$,$obj$jscomp$0$$,$e$$=>{if($e$$)return $callback$$($e$$);$ctrl$$.creating?$ctrl$$.creating($user$jscomp$0$$,$obj$jscomp$0$$,function($error$jscomp$37_v$$,$_obj$$){if($error$jscomp$37_v$$)return $callback$$($error$jscomp$37_v$$);for(let $f$$ of Object.keys($schema_paths$$))$error$jscomp$37_v$$=$_obj$$.get?$_obj$$.get($f$$):$_obj$$[$f$$],
200
+ $obj$jscomp$0$$.set($f$$,$error$jscomp$37_v$$);$callback$$(null,$obj$jscomp$0$$)},{data:$data$$}):$callback$$(null,$obj$jscomp$0$$)})})},{data:$obj$jscomp$0$$,notNeedRight:$ctrl$$.options.notNeedRight})})},($obj$$,$callback$$)=>{setImmediate(()=>{var $condition_qct$jscomp$1_ma_ct$$=$ctrl$$.name;$condition_qct$jscomp$1_ma_ct$$={status:!0,id_app:$obj$$.id_app,$and:[{$or:[{ma_ct:"#",ma_ct_khac:{$regex:$condition_qct$jscomp$1_ma_ct$$,$options:"i"}},{cac_ma_ct:$condition_qct$jscomp$1_ma_ct$$.toLowerCase()},
201
+ {ma_ct:$condition_qct$jscomp$1_ma_ct$$.toUpperCase()}]}]};let $_options_qct$$;$_options_qct$$=$obj$$.toObject?$obj$$.toObject():{...$obj$$};let $keys_options$$=Object.keys($_options_qct$$);dmqct.find($condition_qct$jscomp$1_ma_ct$$).lean().exec(($e$jscomp$0$$,$rs$jscomp$0$$)=>{setImmediate(()=>{let $qcts$$=($rs$jscomp$0$$||[]).filter($qct$$=>"so_ct"!==$qct$$.field&&!$obj$$[$qct$$.field]&&underscore.has($model$$.schema.paths,$qct$$.field));$qcts$$=$qcts$$.filter($qct$$=>{if($qct$$.dieu_kien&&0<$keys_options$$.length)try{let $str_func$$=
202
+ $qct$$.dieu_kien;0!==$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);return 0<$str_func$$.indexOf("async ")?!1:evalute($str_func$$,{...$_options_qct$$,master:{...$_options_qct$$},moment,numeral})}catch($e$$){return console.error("Error find quyen chung tu",$e$$.message,$qct$$.dieu_kien),!1}else return!0});async.map($qcts$$,($qct$$,$cb$$)=>{setImmediate(()=>{let $field$$=$qct$$.field,$_options$$={...$_options_qct$$};$_options$$.id_qct=$qct$$._id.toString();getNextSequence($obj$$.id_app,
203
+ $ctrl$$.name,$field$$,function($e$$,$rs$$){if($e$$)return $cb$$();$obj$$[$field$$]=$rs$$[$field$$];$cb$$()},$_options$$)})},()=>{setImmediate(()=>{$callback$$()})})})})})},$callback$jscomp$0$$=>{setImmediate(function(){if(!0===underscore.has($model$$.schema.paths,"so_ct"))if($obj$jscomp$0$$.so_ct&&$obj$jscomp$0$$.so_ct.toUpperCase()!==$ctrl$$.name.toUpperCase())$checkVoucherNumber$$($error$$=>{$callback$jscomp$0$$($error$$)});else{let $count$$=0;async.whilst(function($cb$$){$cb$$(null,10>$count$$)},
204
+ function($callback$$){getNextSequence($obj$jscomp$0$$.id_app,$ctrl$$.name,"so_ct",function($e$$,$rs$$){setImmediate(()=>{if($e$$)return $callback$$($e$$);$obj$jscomp$0$$.so_ct=$rs$$.so_ct;$checkVoucherNumber$$($error$$=>{$error$$?9<=$count$$?$callback$$($error$$):($count$$++,$callback$$()):($count$$=99999,$callback$$())})})},$obj$jscomp$0$$)},function($err$$){$callback$jscomp$0$$($err$$)})}else $callback$jscomp$0$$()})},function($callback$$){setImmediate(async()=>{if(underscore.has($model$$.schema.paths,
205
+ "ma_dvcs")&&"dvcs"!==$ctrl$$.name)if($obj$jscomp$0$$.ma_dvcs)if(global.mongoose.Types.ObjectId.isValid($obj$jscomp$0$$.ma_dvcs)){let $_id_dvcs$$=global.mongoose.Types.ObjectId($obj$jscomp$0$$.ma_dvcs);await dvcs.findOne({_id:$_id_dvcs$$})?$callback$$():dvcs.create({_id:$_id_dvcs$$,ma_dvcs:"IMPORTED",ten_dvcs:"Imported"},$e$$=>{setImmediate(()=>{$e$$&&console.error("Can't import dvcs",$e$$);$callback$$()})})}else $callback$$();else dvcs.findOne({id_app:$obj$jscomp$0$$.id_app,status:!0}).lean().exec(function($e$$,
206
+ $rs$$){setImmediate(()=>{$rs$$&&($obj$jscomp$0$$.ma_dvcs=$rs$$._id.toString());$callback$$()})});else $callback$$()})},$callback$$=>{$ctrl$$.validating||($ctrl$$.validating=($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)});$ctrl$$.validating($user$jscomp$0$$,$obj$jscomp$0$$,$e$jscomp$0$$=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);setImmediate(()=>{$obj$jscomp$0$$.user_created=$user$jscomp$0$$.email;$obj$jscomp$0$$.user_updated=$user$jscomp$0$$.email;validate($obj$jscomp$0$$,async $error$$=>
207
+ {setImmediate(async()=>{if($error$$){let $msgError$$=$error$$;if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)});else $callback$$($msgError$$)}else{if($id_be_supply_by_user$$&&global.mongoose.Types.ObjectId.isValid($id_be_supply_by_user$$)){let $_id$$=global.mongoose.Types.ObjectId($id_be_supply_by_user$$);$obj$jscomp$0$$._id=$_id$$;await $model$$.deleteOne({_id:$_id$$})}$callback$$()}})})})})},
208
+ function($callback$$){setImmediate(function(){isExists($model$$,$ctrl$$.unique,$obj$jscomp$0$$,$ctrl$$.replaceIfExists,async($error$jscomp$1$$,$kq$$)=>{setImmediate(async()=>{if($error$jscomp$1$$||$kq$$){let $msgError$$=$error$jscomp$1$$||ERR_ALREADY_EXIST;console.error($msgError$$,$obj$jscomp$0$$);if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$({error:$msgError$$,code:ERR_ALREADY_EXIST_CODE})});
209
+ else $callback$$({error:$msgError$$,code:ERR_ALREADY_EXIST_CODE})}else{for(let $k$$ in $ctrl$$.keyValues)$obj$jscomp$0$$[$k$$]=$ctrl$$.keyValues[$k$$];Object.keys($model$$.schema.paths).filter($model_path$$=>$obj$jscomp$0$$[$model_path$$]&&underscore.isArray($obj$jscomp$0$$[$model_path$$])).forEach($model_path$$=>{$model$$.schema.paths[$model_path$$].schema&&$model$$.schema.paths[$model_path$$].schema.paths&&Object.keys($model$$.schema.paths[$model_path$$].schema.paths).filter($path$$=>"line"!==$path$$&&
210
+ "_id"!==$path$$&&"__v"!==$path$$&&0<=fields_sync_master_detail.indexOf($path$$)).forEach($path$$=>{$obj$jscomp$0$$[$path$$]&&$obj$jscomp$0$$[$model_path$$].filter($detail$$=>!$detail$$[$path$$]).forEach($detail$$=>{$detail$$[$path$$]=$obj$jscomp$0$$[$path$$]})})});await createIdRef($model$$,$obj$jscomp$0$$);$ctrl$$.saving&&await $ctrl$$.saving($user$jscomp$0$$,$obj$jscomp$0$$);$ctrl$$.emit("saving",$obj$jscomp$0$$);$obj$jscomp$0$$.save(function($error$jscomp$0$$,$obj_created$$){setImmediate(()=>{if($error$jscomp$0$$){let $msgErrors$$=
211
+ [];for(let $k$$ in $error$jscomp$0$$.errors)$msgErrors$$.push($error$jscomp$0$$.errors[$k$$].message);0==$msgErrors$$.length&&($msgErrors$$=$error$jscomp$0$$.message);$msgErrors$$||($msgErrors$$=JSON.stringify($error$jscomp$0$$));if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&console.error($e$$);$callback$$($msgErrors$$)});else $callback$$($msgErrors$$)}else postData($obj_created$$,$ctrl$$,function($msgErrors$$){setImmediate(()=>{if($msgErrors$$)if($model$$.deleteOne({_id:$obj_created$$._id.toString()},
212
+ $err$$=>{$err$$&&console.error("Error remove obj when has error post data:",$err$$,{_id:$obj_created$$._id.toString()})}),$ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&($msgErrors$$=$msgErrors$$+"\n"+$e$$);$callback$$($msgErrors$$)});else $callback$$($msgErrors$$);else if($req$$&&$req$$.header&&setImmediate(()=>{log.create({id_app:$user$jscomp$0$$.current_id_app,id_func:$ctrl$$.name,action:"ADD",data:{id:$obj$jscomp$0$$._id.toString(),
213
+ data:$obj$jscomp$0$$}},$user$jscomp$0$$.email,$req$$.header("user-agent"),$req$$)}),$ctrl$$.emit("saved",$obj_created$$),$ctrl$$.emit("created",$obj_created$$),$obj_created$$=$obj_created$$.toObject(),runWebhooks($ctrl$$,$obj_created$$,"ADD",$voucher_options$$),$req$$&&pushNotification($ctrl$$,$obj_created$$,"new",null,null,{exclude_token:($req$$.query||{}).access_token}),$ctrl$$.cacheData($obj_created$$),$req$$&&!1!==($req$$.query||{}).return_data)$ctrl$$.onView($user$jscomp$0$$,[$obj_created$$],
214
+ $error$$=>{setImmediate(()=>{if($error$$)return $callback$$($error$$);$callback$$(null,$obj_created$$)})},{req:$req$$});else $callback$$(null,{_id:$obj_created$$._id.toString()})})})})})}})})})},function($obj$$,$callback$$){$ctrl$$.requestApprove($user$jscomp$0$$.current_app_info,$user$jscomp$0$$,$obj$$,$callback$$,$voucher_options$$)},function($obj$$,$callback$$){setImmediate(function(){$obj$$.collection_name=$ctrl$$.collection_name;$obj$$.exfields&&$obj$$.exfields.__files__&&($obj$$.exfields.__files__.forEach($_file$$=>
215
+ {$File$$.findOneAndUpdate({_id:$_file$$._id},{id_link:$obj$$._id.toString(),collection_link:$ctrl$$.collection_name}).lean().exec($e$$=>{$e$$&&console.error($e$$)})}),delete $obj$$.exfields.__files__);$obj$$.exfields&&$obj$$.exfields.__supports__&&($obj$$.exfields.__supports__.forEach($_file$$=>{$Support$$.findOneAndUpdate({_id:$_file$$._id},{id_link:$obj$$._id.toString(),collection_link:$ctrl$$.collection_name}).lean().exec($e$$=>{console.error($e$$)})}),delete $obj$$.exfields.__supports__);if($ctrl$$.created)$ctrl$$.created($user$jscomp$0$$,
216
+ $obj$$,function($error$jscomp$0$$,$rs$$){setImmediate(()=>{if($error$jscomp$0$$)return $callback$$($error$jscomp$0$$);if($ctrl$$.dynamicCreated)$ctrl$$.dynamicCreated($user$jscomp$0$$,$rs$$,function($error$$){if($error$$)return $callback$$($error$$);$req$$&&$req$$.uploadFile?($error$$="<html><title>OK</title><body>"+JSON.stringify($rs$$)+"</body></html>",$callback$$(null,$error$$)):$callback$$(null,$rs$$)});else if($req$$&&$req$$.uploadFile){let $html$$="<html><title>OK</title><body>"+JSON.stringify($rs$$)+
217
+ "</body></html>";$callback$$(null,$html$$)}else $callback$$(null,$rs$$)})});else if($ctrl$$.dynamicCreated)$ctrl$$.dynamicCreated($user$jscomp$0$$,$obj$$,function($error$jscomp$46_html$$){if($error$jscomp$46_html$$)return $callback$$($error$jscomp$46_html$$);$req$$&&$req$$.uploadFile?($error$jscomp$46_html$$="<html><title>OK</title><body>"+JSON.stringify($obj$$)+"</body></html>",$callback$$(null,$error$jscomp$46_html$$)):$callback$$(null,$obj$$)});else if($req$$&&$req$$.uploadFile){let $html$$="<html><title>OK</title><body>"+
218
+ JSON.stringify($obj$$)+"</body></html>";$callback$$(null,$html$$)}else $callback$$(null,$obj$$)})}],($e$jscomp$145_name_cached$$,$rs$$)=>{$e$jscomp$145_name_cached$$?(console.error($e$jscomp$145_name_cached$$),$callback$jscomp$1$$($e$jscomp$145_name_cached$$)):($e$jscomp$145_name_cached$$=$model$$.collection.name,$user$jscomp$0$$.current_id_app&&($e$jscomp$145_name_cached$$+=$user$jscomp$0$$.current_id_app),delete global.cacheDatas[$e$jscomp$145_name_cached$$],$callback$jscomp$1$$(null,$rs$$))})}catch($e$$){console.error($e$$),
219
+ $callback$jscomp$1$$($e$$)}}
219
220
  controller.prototype.create=function(){let $name$$=this.name,$ctrl$$=this;this.router.route(this.route_name).post(function($req$$,$res$$){let $session$$=$req$$.session;if(!0===$session$$["creating_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["creating_"+$name$$]=!0;let $body$$=$req$$.body;if(!$body$$)return $res$$.status(411).send({error:"Kh\u00f4ng c\u00f3 n\u1ed9i dung c\u1ea7n l\u01b0u"});$req$$.files&&0<underscore.keys($req$$.files).length&&
220
221
  ("JSON"!=$body$$.return&&($req$$.uploadFile=!0),underscore.extend($body$$,$req$$.files));create($req$$.user,$ctrl$$,$body$$,($e$$,$rs$$)=>{setImmediate(()=>{$session$$["creating_"+$name$$]=!1;if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});!1===$req$$.query.return_data?$res$$.send({_id:$rs$$._id.toString()}):$res$$.send($rs$$)})},null,$req$$)})};
221
222
  controller.prototype.quickCreate=function(){let $model$$=this.model,$name$$=this.name,$ctrl$$=this,$createFromTemplate$$=async($req$$,$res$$,$body$jscomp$4_query$$)=>{let $session$$=$req$$.session;if(!0===$session$$["creating_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["creating_"+$name$$]=!0;if(!$body$jscomp$4_query$$){$body$jscomp$4_query$$=$req$$.params.template_code;if(!$body$jscomp$4_query$$)return $session$$["creating_"+$name$$]=
@@ -223,37 +224,37 @@ controller.prototype.quickCreate=function(){let $model$$=this.model,$name$$=this
223
224
  {};delete $body$jscomp$4_query$$.so_ct;delete $body$jscomp$4_query$$.ngay_ct;delete $body$jscomp$4_query$$.user_created;delete $body$jscomp$4_query$$.date_created;delete $body$jscomp$4_query$$.user_updated;delete $body$jscomp$4_query$$.date_updated;delete $body$jscomp$4_query$$._id;delete $body$jscomp$4_query$$.pkey;delete $body$jscomp$4_query$$.__v;let $_data$$=$req$$.query;$req$$.body&&($_data$$=Object.assign($_data$$,$req$$.body));for(let $key$$ in $_data$$)$_data$$[$key$$]&&"access_token"!==$key$$&&
224
225
  "token"!==$key$$&&"_id"!==$key$$&&(underscore.has($model$$.schema.paths,$key$$)&&($body$jscomp$4_query$$[$key$$]=$_data$$[$key$$]),$body$jscomp$4_query$$.details&&$body$jscomp$4_query$$.details.forEach($d$$=>{$d$$[$key$$]=$_data$$[$key$$]}));create($req$$.user,$ctrl$$,$body$jscomp$4_query$$,($e$$,$rs$$)=>{setImmediate(()=>{$session$$["creating_"+$name$$]=!1;if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})},
225
226
  null,$req$$)};this.router.route(`${this.route_name}/quickcreate/:template_code`).get(function($req$$,$res$$){$createFromTemplate$$($req$$,$res$$)});this.router.route(`${this.route_name}/quickcreate/:template_code`).post(function($req$$,$res$$){$createFromTemplate$$($req$$,$res$$)})};
226
- const update=async function($user$jscomp$0$$,$ctrl$$,$id$$,$data$jscomp$1$$,$callback$jscomp$1$$,$action$jscomp$0$$,$req$$){delete $data$jscomp$1$$.__v;try{const $model$$=$ctrl$$.model,$unique$$=$ctrl$$.unique,$module$$=$ctrl$$.module,$schema_paths$$=$model$$.schema.paths;underscore.has($schema_paths$$,"ma_ct")&&$ctrl$$.options.isVoucher&&($data$jscomp$1$$.ma_ct=$ctrl$$.name.toUpperCase());const $voucher_options$$=(await OptionsModel.findOne({id_app:$user$jscomp$0$$.current_id_app,id_func:$ctrl$$.name}).lean()||
227
- {}).option;let $current_obj$$;if($ctrl$$.options.requireRecaptchaToken){if(!$data$jscomp$1$$["g-recaptcha-response"])return $callback$jscomp$1$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u g-recaptcha-response");try{await permission.verifyReCaptcha($data$jscomp$1$$["g-recaptcha-response"])}catch($e$$){return $callback$jscomp$1$$($e$$.message||$e$$.error||$e$$)}}if(0>global.configs.admins.indexOf($user$jscomp$0$$.email)){let $requireOtp$$=$ctrl$$.options.requireOtp;$requireOtp$$&&_.isFunction($requireOtp$$)&&
228
- ($requireOtp$$=$requireOtp$$($data$jscomp$1$$,{action:"update",_id:$id$$,user:$user$jscomp$0$$}));if($requireOtp$$)try{await permission.verifyOTP($user$jscomp$0$$.email,$data$jscomp$1$$["otp-id"],$data$jscomp$1$$["otp-code"])}catch($e$$){return $callback$jscomp$1$$({error:$e$$.message||$e$$.error||$e$$,code:ERR_VERIFY_OTP})}}async.waterfall([function($callback$$){setImmediate(function(){$model$$.findOne({_id:$id$$}).exec(function($error$$,$obj$$){setImmediate(()=>{if($error$$)return $callback$$($error$$);
229
- if(!$obj$$)return $callback$$("Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y");underscore.has($schema_paths$$,"exfields")&&($obj$$.exfields=$obj$$.exfields||{});const $old_obj$$=$obj$$.toObject();$current_obj$$=_.cloneDeep($old_obj$$);const $data_keys$$=Object.keys($data$jscomp$1$$);for(let $key$$ in $old_obj$$)0>$data_keys$$.indexOf($key$$)&&($data$jscomp$1$$[$key$$]=$old_obj$$[$key$$]);$callback$$(null,$obj$$)})})})},function($obj$$,$callback$$){setImmediate(function(){permission.hasRight($user$jscomp$0$$.current_id_app,
230
- $user$jscomp$0$$.email,$module$$,"update",function($error$$,$hr$$,$c_app$$){setImmediate(()=>{if($hr$$)$ctrl$$.checkData($c_app$$,{...$data$jscomp$1$$,_id:$obj$$._id.toString()},$e$$=>{if($e$$)return $callback$$($e$$);$callback$$(null,$obj$$)});else return $callback$$({error:$error$$||ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE})})},{data:$data$jscomp$1$$,obj:$obj$$,notNeedRight:$ctrl$$.options.notNeedRight})})},function($obj$$,$callback$$){underscore.has($model$$.schema.paths,"ngay_ct")&&underscore.has($model$$.schema.paths,
231
- "so_ct")&&$obj$$.ngay_ct&&$data$jscomp$1$$.so_ct&&$obj$$.so_ct!==$data$jscomp$1$$.so_ct?OptionsModel.findOne({id_app:$obj$$.id_app,id_func:$ctrl$$.name},{option:1}).lean().exec(($e$jscomp$0$$,$rs$jscomp$0$$)=>{setImmediate(()=>{if($rs$jscomp$0$$&&$rs$jscomp$0$$.option&&$rs$jscomp$0$$.option.check_so_ct&&"0"!==$rs$jscomp$0$$.option.check_so_ct){let $query_check$$={id_app:$obj$$.id_app,so_ct:$data$jscomp$1$$.so_ct,_id:{$ne:$obj$$._id.toString()}},$tu_ngay$$;var $date_check_den_ngay$$=$data$jscomp$1$$.ngay_ct||
227
+ const update=async function($user$jscomp$0$$,$ctrl$$,$id$$,$data$jscomp$0$$,$callback$jscomp$1$$,$action$jscomp$0$$,$req$$){delete $data$jscomp$0$$.__v;try{const $model$$=$ctrl$$.model,$unique$$=$ctrl$$.unique,$module$$=$ctrl$$.module,$schema_paths$$=$model$$.schema.paths;underscore.has($schema_paths$$,"ma_ct")&&$ctrl$$.options.isVoucher&&($data$jscomp$0$$.ma_ct=$ctrl$$.name.toUpperCase());const $voucher_options$$=(await OptionsModel.findOne({id_app:$user$jscomp$0$$.current_id_app,id_func:$ctrl$$.name}).lean()||
228
+ {}).option;let $current_obj$$;if($ctrl$$.options.requireRecaptchaToken){if(!$data$jscomp$0$$["g-recaptcha-response"])return $callback$jscomp$1$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u g-recaptcha-response");try{await permission.verifyReCaptcha($data$jscomp$0$$["g-recaptcha-response"])}catch($e$$){return $callback$jscomp$1$$($e$$.message||$e$$.error||$e$$)}}if(0>global.configs.admins.indexOf($user$jscomp$0$$.email)){let $requireOtp$$=$ctrl$$.options.requireOtp;$requireOtp$$&&_.isFunction($requireOtp$$)&&
229
+ ($requireOtp$$=$requireOtp$$($data$jscomp$0$$,{action:"update",_id:$id$$,user:$user$jscomp$0$$}));if($requireOtp$$)try{await permission.verifyOTP($user$jscomp$0$$.email,$data$jscomp$0$$["otp-id"],$data$jscomp$0$$["otp-code"])}catch($e$$){return $callback$jscomp$1$$({error:$e$$.message||$e$$.error||$e$$,code:ERR_VERIFY_OTP})}}async.waterfall([function($callback$$){setImmediate(function(){$model$$.findOne({_id:$id$$}).exec(function($error$$,$obj$$){setImmediate(()=>{if($error$$)return $callback$$($error$$);
230
+ if(!$obj$$)return $callback$$("Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y");underscore.has($schema_paths$$,"exfields")&&($obj$$.exfields=$obj$$.exfields||{});const $old_obj$$=$obj$$.toObject();$current_obj$$=_.cloneDeep($old_obj$$);const $data_keys$$=Object.keys($data$jscomp$0$$);for(let $key$$ in $old_obj$$)0>$data_keys$$.indexOf($key$$)&&($data$jscomp$0$$[$key$$]=$old_obj$$[$key$$]);$callback$$(null,$obj$$)})})})},function($obj$$,$callback$$){setImmediate(function(){permission.hasRight($user$jscomp$0$$.current_id_app,
231
+ $user$jscomp$0$$.email,$module$$,"update",function($error$$,$hr$$,$c_app$$){setImmediate(()=>{if($hr$$)$ctrl$$.checkData($c_app$$,{...$data$jscomp$0$$,_id:$obj$$._id.toString()},$e$$=>{if($e$$)return $callback$$($e$$);$callback$$(null,$obj$$)});else return $callback$$({error:$error$$||ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE})})},{data:$data$jscomp$0$$,obj:$obj$$,notNeedRight:$ctrl$$.options.notNeedRight})})},function($obj$$,$callback$$){underscore.has($model$$.schema.paths,"ngay_ct")&&underscore.has($model$$.schema.paths,
232
+ "so_ct")&&$obj$$.ngay_ct&&$data$jscomp$0$$.so_ct&&$obj$$.so_ct!==$data$jscomp$0$$.so_ct?OptionsModel.findOne({id_app:$obj$$.id_app,id_func:$ctrl$$.name},{option:1}).lean().exec(($e$jscomp$0$$,$rs$jscomp$0$$)=>{setImmediate(()=>{if($rs$jscomp$0$$&&$rs$jscomp$0$$.option&&$rs$jscomp$0$$.option.check_so_ct&&"0"!==$rs$jscomp$0$$.option.check_so_ct){let $query_check$$={id_app:$obj$$.id_app,so_ct:$data$jscomp$0$$.so_ct,_id:{$ne:$obj$$._id.toString()}},$tu_ngay$$;var $date_check_den_ngay$$=$data$jscomp$0$$.ngay_ct||
232
233
  $obj$$.ngay_ct;switch($rs$jscomp$0$$.option.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$$};
233
234
  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$$}}$model$$.findOne($query_check$$,{so_ct:1}).lean().exec(($e$$,
234
- $rs$$)=>{setImmediate(()=>{if($rs$$)return $callback$$("S\u1ed1 ch\u1ee9ng t\u1eeb "+$data$jscomp$1$$.so_ct+" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ch\u1ecdn m\u1ed9t s\u1ed1 ch\u1ee9ng t\u1eeb kh\u00e1c");$callback$$(null,$obj$$)})})}else $callback$$(null,$obj$$)})}):$callback$$(null,$obj$$)},($obj$jscomp$2$$,$callback$jscomp$0$$)=>{(async($obj$jscomp$1$$,$callback$$)=>{try{(await permission.getFieldNotRight($obj$jscomp$1$$.id_app,$user$jscomp$0$$.email,$ctrl$$.name)).forEach($f$$=>{delete $data$jscomp$1$$[$f$$]})}catch($e$$){console.error("Error get field not right",
235
- $e$$)}setImmediate(function(){$ctrl$$.updating?$ctrl$$.updating($user$jscomp$0$$,$data$jscomp$1$$,$obj$jscomp$1$$,function($error$jscomp$0$$,$data$jscomp$0$$,$obj$jscomp$0$$){setImmediate(()=>{if($error$jscomp$0$$)return $callback$$($error$jscomp$0$$);$ctrl$$.dynamicUpdating?$ctrl$$.dynamicUpdating($user$jscomp$0$$,$data$jscomp$0$$,$obj$jscomp$0$$,function($error$$,$data$$,$obj$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$$)}):$callback$$(null,$obj$jscomp$0$$)})}):$ctrl$$.dynamicUpdating?
236
- $ctrl$$.dynamicUpdating($req$$.user,$data$jscomp$1$$,$obj$jscomp$1$$,function($error$$,$data$$,$obj$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$$)}):$callback$$(null,$obj$jscomp$1$$)})})($obj$jscomp$2$$,$callback$jscomp$0$$)},function($obj$$,$callback$$){setImmediate(function(){if(!$unique$$||0===$unique$$.length)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));$unique$$.forEach(function($key$$){$c1$$[$key$$]=
237
- $obj$$[$key$$];$ctrl$$.model.schema.paths[$key$$]?("number"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()?$c2$$[$key$$]=Number($data$jscomp$1$$[$key$$]):"date"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()?$c2$$[$key$$]=new Date($data$jscomp$1$$[$key$$]):"string"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()?$c2$$[$key$$]=($data$jscomp$1$$[$key$$]||"").toString():$c2$$[$key$$]=$data$jscomp$1$$[$key$$],$c2$$[$key$$]||($c2$$[$key$$]=$c1$$[$key$$])):console.error("field",
238
- $key$$," is not exist. please check unique of controller")});!0!==underscore.isEqual($c1$$,$c2$$)?isExists($model$$,$unique$$,$c2$$,$ctrl$$.replaceIfExists,function($error$jscomp$0$$,$kq$$){setImmediate(()=>{if($error$jscomp$0$$||$kq$$){let $msgError$$=$error$jscomp$0$$||ERR_ALREADY_EXIST;console.error($msgError$$,$c2$$);if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);
239
- else $callback$$($msgError$$)}else checkReference($model$$,$obj$$,function($error$$){setImmediate(()=>{if($error$$)return console.error("Keys arise data",$c1$$,$c2$$,$error$$),$callback$$({error:ERR_KEY_ARISE+($error$$.error||$error$$.message||$error$$),code:ERR_KEY_ARISE_CODE});$callback$$(null,$obj$$)})},$unique$$)})}):$callback$$(null,$obj$$)})},function($obj$$,$callback$$){let $keys$$=underscore.keys($model$$.referenceKeys).filter($key$$=>"_id"!==$key$$);$unique$$&&($keys$$=$keys$$.filter($key$$=>
240
- 0>$unique$$.indexOf($key$$).length));if(0===$keys$$.length)return $callback$$(null,$obj$$);checkReference($model$$,$obj$$,function($msgError$$){setImmediate(()=>{if($msgError$$)if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);else $callback$$({error:ERR_ARISE+($msgError$$.error||$msgError$$.message||$msgError$$),code:ERR_ARISE_CODE});else $callback$$(null,$obj$$)})},
241
- $keys$$)},function($obj$jscomp$1$$,$callback$$){$ctrl$$.validating||($ctrl$$.validating=($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)});$ctrl$$.validating($user$jscomp$0$$,$obj$jscomp$1$$,($error$$,$obj$jscomp$0$$)=>{if($error$$)return $callback$$($error$$);setImmediate(function(){$data$jscomp$1$$.date_updated=new Date;$data$jscomp$1$$.user_updated=$user$jscomp$0$$.email;delete $data$jscomp$1$$.__v;$ctrl$$.options.onUpdateExtending||($ctrl$$.options.onUpdateExtending=function($obj$$,$data$$,$action$$,
242
- $fn$$){$fn$$()});$ctrl$$.options.onUpdateExtending($obj$jscomp$0$$,$data$jscomp$1$$,$action$jscomp$0$$,function(){underscore.has($schema_paths$$,"exfields")&&$data$jscomp$1$$.exfields&&($obj$jscomp$0$$.exfields=$data$jscomp$1$$.exfields);for(let $f$$ in $data$jscomp$1$$)underscore.has($schema_paths$$,$f$$)&&($obj$jscomp$0$$.set($f$$,$data$jscomp$1$$[$f$$]),"exfields"!==$f$$||$obj$jscomp$0$$.exfields||($obj$jscomp$0$$.exfields={}));validate($obj$jscomp$0$$,function($msgError$$){setImmediate(()=>{if($msgError$$)if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,
243
- $obj$jscomp$0$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);else $callback$$($msgError$$);else $callback$$(null,$obj$jscomp$0$$)})})})})})},function($obj$$,$callback$$){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$$]&&underscore.isArray($obj$$[$model_path$$])).forEach($model_path$$=>
244
- {$model$$.schema.paths[$model_path$$].schema&&$model$$.schema.paths[$model_path$$].schema.paths&&Object.keys($model$$.schema.paths[$model_path$$].schema.paths).filter($path$$=>"line"!==$path$$&&"_id"!==$path$$&&"__v"!==$path$$&&0<=fields_sync_master_detail.indexOf($path$$)).forEach($path$$=>{$obj$$[$path$$]&&$obj$$[$model_path$$].filter($detail$$=>!$detail$$[$path$$]).forEach($detail$$=>{$detail$$[$path$$]=$obj$$[$path$$]})})});await createIdRef($model$$,$obj$$);$ctrl$$.saving&&await $ctrl$$.saving($user$jscomp$0$$,
245
- $obj$$);$ctrl$$.emit("saving",$obj$$);let $obj_created$$,$error$jscomp$0$$;$data$jscomp$1$$.$condition&&($$condition_k$$=$data$jscomp$1$$.$condition,$$condition_k$$._id=$obj$$._id,await $model$$.findOne($$condition_k$$)||($error$jscomp$0$$=ERR_CAN_NOT_UPDATE),delete $data$jscomp$1$$.$condition);if(!$error$jscomp$0$$)try{$obj_created$$=await $obj$$.save()}catch($e$$){$error$jscomp$0$$=$e$$}if($error$jscomp$0$$){let $msgErrors$$=[];for(let $k$$ in $error$jscomp$0$$.errors)$msgErrors$$.push($error$jscomp$0$$.errors[$k$$].message);
246
- 0==$msgErrors$$.length&&($msgErrors$$=$error$jscomp$0$$.message);$msgErrors$$||($msgErrors$$=JSON.stringify($error$jscomp$0$$));if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,$obj$$,$e$$=>{$e$$&&console.error("onErrorUpdating",$e$$);$callback$$({error:$msgErrors$$,code:ERR_CAN_NOT_UPDATE_CODE})},$current_obj$$);else $callback$$({error:$msgErrors$$,code:ERR_CAN_NOT_UPDATE_CODE})}else $req$$&&$req$$.header&&setImmediate(()=>{log.create({id_app:$user$jscomp$0$$.current_id_app,
247
- id_func:$ctrl$$.name,action:"UPDATE",data:{oldData:$current_obj$$,newData:$data$jscomp$1$$,id:$obj$$._id.toString()}},$user$jscomp$0$$.email,$req$$.header("user-agent"),$req$$)}),postData($obj_created$$,$ctrl$$,function($msgError$$){$msgError$$?setImmediate(()=>{$current_obj$$&&$model$$.findByIdAndUpdate($current_obj$$._id,{$set:$current_obj$$},function($err$$,$restore_data$$){if($err$$||!$restore_data$$)return console.error("can't restore voucher",$err$$||": don't find voucher");console.log("restored data of voucher. posting...");
248
- $model$$.findById($current_obj$$._id,($e$jscomp$0$$,$_d$$)=>{if(!$_d$$)return console.error("Don't find voucher",$current_obj$$._id);postData($_d$$,$ctrl$$,function($e$$){if($e$$)return console.error("can't repost voucher",$e$$);console.log("reposted voucher",$_d$$._id)})})});if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);else $callback$$($msgError$$)}):setImmediate(()=>
249
- {$ctrl$$.emit("saved",$obj_created$$);$ctrl$$.emit("updated",$obj_created$$);$obj_created$$=$obj_created$$.toObject();runWebhooks($ctrl$$,$obj_created$$,"UPDATE",$voucher_options$$);$req$$&&pushNotification($ctrl$$,$obj_created$$,"update",$current_obj$$,null,{exclude_token:$req$$.query.access_token});$ctrl$$.cacheData($obj_created$$);if($req$$&&!1!==$req$$.query.return_data)$ctrl$$.onView($user$jscomp$0$$,[$obj_created$$],function($error$$,$viewValue$$){setImmediate(()=>{if($error$$)return $callback$$($error$$);
250
- $callback$$(null,$viewValue$$[0])})},{req:$req$$});else $callback$$(null,{_id:$obj_created$$._id})})})})},function($obj$$,$callback$$){$ctrl$$.requestApprove($user$jscomp$0$$.current_app_info,$user$jscomp$0$$,$obj$$,$callback$$,$voucher_options$$)},function($obj$jscomp$0$$,$callback$$){void 0!=$obj$jscomp$0$$.trang_thai&&setImmediate(async()=>{Approve.findOne({id_ct:$obj$jscomp$0$$._id.toString(),"update_after_approve.data.trang_thai":$obj$jscomp$0$$.trang_thai.toString()}).lean().exec(($e$$,$rs$$)=>
251
- {!$rs$$||$rs$$.user_approved||$rs$$.user_denied||($rs$$.user_approved=$req$$.user.email,$rs$$.user_approved_name=$req$$.user.name,$rs$$.date_approved=new Date,Approve.updateOne({_id:$rs$$._id},$rs$$).then(()=>{Approve.sendNotifyApproved($rs$$,$req$$.query.access_token)}))})});setImmediate(async()=>{(await permission.getFieldNotRight($obj$jscomp$0$$.id_app,$user$jscomp$0$$.email,$ctrl$$.name)).forEach($f$$=>{delete $obj$jscomp$0$$[$f$$]});$obj$jscomp$0$$.collection_name=$ctrl$$.collection_name;$ctrl$$.updated?
252
- $ctrl$$.updated($user$jscomp$0$$,$obj$jscomp$0$$,function($error$jscomp$0$$,$obj$$){if($error$jscomp$0$$)return console.error("error when saved",$error$jscomp$0$$),$callback$$($error$jscomp$0$$);$ctrl$$.dynamicUpdated?$ctrl$$.dynamicUpdated($user$jscomp$0$$,$obj$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$$)}):$callback$$(null,$obj$$)},$current_obj$$):$ctrl$$.dynamicUpdated?$ctrl$$.dynamicUpdated($user$jscomp$0$$,$obj$jscomp$0$$,function($error$$){if($error$$)return $callback$$($error$$);
253
- $callback$$(null,$obj$jscomp$0$$)}):$callback$$(null,$obj$jscomp$0$$)})}],($e$jscomp$164_name_cached$$,$rs$$)=>{$e$jscomp$164_name_cached$$?(console.error($e$jscomp$164_name_cached$$),$callback$jscomp$1$$($e$jscomp$164_name_cached$$)):($e$jscomp$164_name_cached$$=$model$$.collection.name,$user$jscomp$0$$.current_id_app&&($e$jscomp$164_name_cached$$+=$user$jscomp$0$$.current_id_app),delete global.cacheDatas[$e$jscomp$164_name_cached$$],$callback$jscomp$1$$(null,$rs$$))})}catch($e$$){console.error($e$$),
254
- $callback$jscomp$1$$($e$$)}};
255
- controller.prototype.update=function(){let $ctrl$$=this,$name$$=this.name;this.router.route(this.route_name+"/:id").put(function($req$$,$res$$){let $session$$=$req$$.session;if(!0===$session$$["updating_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["updating_"+$name$$]=!0;let $body$$=$req$$.body;$req$$.files&&underscore.extend($body$$,$req$$.files);let $data$$;try{$data$$=bodyToJson($body$$)}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||
256
- $e$$})}update($req$$.user,$ctrl$$,$req$$.params.id,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{$session$$["updating_"+$name$$]=!1;if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});!1===$req$$.query.return_data?$res$$.send({_id:$rs$$._id.toString()}):$res$$.send($rs$$)})},null,$req$$)})};
235
+ $rs$$)=>{setImmediate(()=>{if($rs$$)return $callback$$("S\u1ed1 ch\u1ee9ng t\u1eeb "+$data$jscomp$0$$.so_ct+" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ch\u1ecdn m\u1ed9t s\u1ed1 ch\u1ee9ng t\u1eeb kh\u00e1c");$callback$$(null,$obj$$)})})}else $callback$$(null,$obj$$)})}):$callback$$(null,$obj$$)},($obj$jscomp$0$$,$callback$jscomp$0$$)=>{(async($obj$$,$callback$$)=>{try{(await permission.getFieldNotRight($obj$$.id_app,$user$jscomp$0$$.email,$ctrl$$.name)).forEach($f$$=>{delete $data$jscomp$0$$[$f$$]})}catch($e$$){console.error("Error get field not right",
236
+ $e$$)}setImmediate(function(){$ctrl$$.updating?$ctrl$$.updating($user$jscomp$0$$,$data$jscomp$0$$,$obj$$,function($error$jscomp$0$$,$_data$jscomp$0$$,$_obj$$){setImmediate(()=>{if($error$jscomp$0$$)return $callback$$($error$jscomp$0$$);if($ctrl$$.dynamicUpdating)$ctrl$$.dynamicUpdating($user$jscomp$0$$,$_data$jscomp$0$$,$_obj$$,function($error$$,$_data$$){if($error$$)return $callback$$($error$$);for(let $f$$ in $_data$$)underscore.has($schema_paths$$,$f$$)&&($data$jscomp$0$$[$f$$]=$_data$$[$f$$]);
237
+ $callback$$(null,$obj$$)});else{for(let $f$$ in $_data$jscomp$0$$)underscore.has($schema_paths$$,$f$$)&&($data$jscomp$0$$[$f$$]=$_data$jscomp$0$$[$f$$]);$callback$$(null,$obj$$)}})}):$ctrl$$.dynamicUpdating?$ctrl$$.dynamicUpdating($req$$.user,$data$jscomp$0$$,$obj$$,function($error$$,$_data$$){if($error$$)return $callback$$($error$$);for(let $f$$ in $_data$$)underscore.has($schema_paths$$,$f$$)&&($data$jscomp$0$$[$f$$]=$_data$$[$f$$]);$callback$$(null,$obj$$)}):$callback$$(null,$obj$$)})})($obj$jscomp$0$$,
238
+ $callback$jscomp$0$$)},function($obj$$,$callback$$){setImmediate(function(){if(!$unique$$||0===$unique$$.length)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));$unique$$.forEach(function($key$$){$c1$$[$key$$]=$obj$$[$key$$];$ctrl$$.model.schema.paths[$key$$]?("number"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()?$c2$$[$key$$]=Number($data$jscomp$0$$[$key$$]):"date"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()?
239
+ $c2$$[$key$$]=new Date($data$jscomp$0$$[$key$$]):"string"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()?$c2$$[$key$$]=($data$jscomp$0$$[$key$$]||"").toString():$c2$$[$key$$]=$data$jscomp$0$$[$key$$],$c2$$[$key$$]||($c2$$[$key$$]=$c1$$[$key$$])):console.error("field",$key$$," is not exist. please check unique of controller")});!0!==underscore.isEqual($c1$$,$c2$$)?isExists($model$$,$unique$$,$c2$$,$ctrl$$.replaceIfExists,function($error$jscomp$0$$,$kq$$){setImmediate(()=>{if($error$jscomp$0$$||
240
+ $kq$$){let $msgError$$=$error$jscomp$0$$||ERR_ALREADY_EXIST;console.error($msgError$$,$c2$$);if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);else $callback$$($msgError$$)}else checkReference($model$$,$obj$$,function($error$$){setImmediate(()=>{if($error$$)return console.error("Keys arise data",$c1$$,$c2$$,$error$$),$callback$$({error:ERR_KEY_ARISE+($error$$.error||
241
+ $error$$.message||$error$$),code:ERR_KEY_ARISE_CODE});$callback$$(null,$obj$$)})},$unique$$)})}):$callback$$(null,$obj$$)})},function($obj$$,$callback$$){let $keys$$=underscore.keys($model$$.referenceKeys).filter($key$$=>"_id"!==$key$$);$unique$$&&($keys$$=$keys$$.filter($key$$=>0>$unique$$.indexOf($key$$).length));if(0===$keys$$.length)return $callback$$(null,$obj$$);checkReference($model$$,$obj$$,function($msgError$$){setImmediate(()=>{if($msgError$$)if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,
242
+ $obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);else $callback$$({error:ERR_ARISE+($msgError$$.error||$msgError$$.message||$msgError$$),code:ERR_ARISE_CODE});else $callback$$(null,$obj$$)})},$keys$$)},function($obj$jscomp$1$$,$callback$$){$ctrl$$.validating||($ctrl$$.validating=($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)});$ctrl$$.validating($user$jscomp$0$$,$obj$jscomp$1$$,($error$$,$obj$jscomp$0$$)=>{if($error$$)return $callback$$($error$$);
243
+ setImmediate(function(){$data$jscomp$0$$.date_updated=new Date;$data$jscomp$0$$.user_updated=$user$jscomp$0$$.email;delete $data$jscomp$0$$.__v;$ctrl$$.options.onUpdateExtending||($ctrl$$.options.onUpdateExtending=function($obj$$,$data$$,$action$$,$fn$$){$fn$$()});$ctrl$$.options.onUpdateExtending($obj$jscomp$0$$,$data$jscomp$0$$,$action$jscomp$0$$,function(){underscore.has($schema_paths$$,"exfields")&&$data$jscomp$0$$.exfields&&($obj$jscomp$0$$.exfields=$data$jscomp$0$$.exfields);delete $data$jscomp$0$$.__v;
244
+ for(let $f$$ in $data$jscomp$0$$)underscore.has($schema_paths$$,$f$$)&&($obj$jscomp$0$$.set($f$$,$data$jscomp$0$$[$f$$]),"exfields"!==$f$$||$obj$jscomp$0$$.exfields||($obj$jscomp$0$$.exfields={}));validate($obj$jscomp$0$$,function($msgError$$){setImmediate(()=>{if($msgError$$)if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);else $callback$$($msgError$$);else $callback$$(null,
245
+ $obj$jscomp$0$$)})})})})})},function($obj$$,$callback$$){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$$]&&underscore.isArray($obj$$[$model_path$$])).forEach($model_path$$=>{$model$$.schema.paths[$model_path$$].schema&&$model$$.schema.paths[$model_path$$].schema.paths&&Object.keys($model$$.schema.paths[$model_path$$].schema.paths).filter($path$$=>
246
+ "line"!==$path$$&&"_id"!==$path$$&&"__v"!==$path$$&&0<=fields_sync_master_detail.indexOf($path$$)).forEach($path$$=>{$obj$$[$path$$]&&$obj$$[$model_path$$].filter($detail$$=>!$detail$$[$path$$]).forEach($detail$$=>{$detail$$[$path$$]=$obj$$[$path$$]})})});await createIdRef($model$$,$obj$$);$ctrl$$.saving&&await $ctrl$$.saving($user$jscomp$0$$,$obj$$);$ctrl$$.emit("saving",$obj$$);let $obj_created$$,$error$jscomp$0$$;$data$jscomp$0$$.$condition&&($$condition_k$$=$data$jscomp$0$$.$condition,$$condition_k$$._id=
247
+ $obj$$._id,await $model$$.findOne($$condition_k$$)||($error$jscomp$0$$=ERR_CAN_NOT_UPDATE),delete $data$jscomp$0$$.$condition);if(!$error$jscomp$0$$)try{delete $obj$$.__v,$obj_created$$=await $obj$$.save()}catch($e$$){$error$jscomp$0$$=$e$$}if($error$jscomp$0$$){let $msgErrors$$=[];for(let $k$$ in $error$jscomp$0$$.errors)$msgErrors$$.push($error$jscomp$0$$.errors[$k$$].message);0==$msgErrors$$.length&&($msgErrors$$=$error$jscomp$0$$.message);$msgErrors$$||($msgErrors$$=JSON.stringify($error$jscomp$0$$));
248
+ if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,$obj$$,$e$$=>{$e$$&&console.error("onErrorUpdating",$e$$);$callback$$({error:$msgErrors$$,code:ERR_CAN_NOT_UPDATE_CODE})},$current_obj$$);else $callback$$({error:$msgErrors$$,code:ERR_CAN_NOT_UPDATE_CODE})}else $req$$&&$req$$.header&&setImmediate(()=>{log.create({id_app:$user$jscomp$0$$.current_id_app,id_func:$ctrl$$.name,action:"UPDATE",data:{oldData:$current_obj$$,newData:$data$jscomp$0$$,id:$obj$$._id.toString()}},
249
+ $user$jscomp$0$$.email,$req$$.header("user-agent"),$req$$)}),postData($obj_created$$,$ctrl$$,function($msgError$$){$msgError$$?setImmediate(()=>{$current_obj$$&&$model$$.findByIdAndUpdate($current_obj$$._id,{$set:$current_obj$$},function($err$$,$restore_data$$){if($err$$||!$restore_data$$)return console.error("can't restore voucher",$err$$||": don't find voucher");console.log("restored data of voucher. posting...");$model$$.findById($current_obj$$._id,($e$jscomp$0$$,$_d$$)=>{if(!$_d$$)return console.error("Don't find voucher",
250
+ $current_obj$$._id);postData($_d$$,$ctrl$$,function($e$$){if($e$$)return console.error("can't repost voucher",$e$$);console.log("reposted voucher",$_d$$._id)})})});if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);else $callback$$($msgError$$)}):setImmediate(()=>{$ctrl$$.emit("saved",$obj_created$$);$ctrl$$.emit("updated",$obj_created$$);$obj_created$$=$obj_created$$.toObject();
251
+ runWebhooks($ctrl$$,$obj_created$$,"UPDATE",$voucher_options$$);$req$$&&pushNotification($ctrl$$,$obj_created$$,"update",$current_obj$$,null,{exclude_token:$req$$.query.access_token});$ctrl$$.cacheData($obj_created$$);if($req$$&&!1!==$req$$.query.return_data)$ctrl$$.onView($user$jscomp$0$$,[$obj_created$$],function($error$$,$viewValue$$){setImmediate(()=>{if($error$$)return $callback$$($error$$);$callback$$(null,$viewValue$$[0])})},{req:$req$$});else $callback$$(null,{_id:$obj_created$$._id})})})})},
252
+ function($obj$$,$callback$$){$ctrl$$.requestApprove($user$jscomp$0$$.current_app_info,$user$jscomp$0$$,$obj$$,$callback$$,$voucher_options$$)},function($obj$jscomp$0$$,$callback$$){void 0!=$obj$jscomp$0$$.trang_thai&&setImmediate(async()=>{Approve.findOne({id_ct:$obj$jscomp$0$$._id.toString(),"update_after_approve.data.trang_thai":$obj$jscomp$0$$.trang_thai.toString()}).lean().exec(($e$$,$rs$$)=>{!$rs$$||$rs$$.user_approved||$rs$$.user_denied||($rs$$.user_approved=$req$$.user.email,$rs$$.user_approved_name=
253
+ $req$$.user.name,$rs$$.date_approved=new Date,Approve.updateOne({_id:$rs$$._id},$rs$$).then(()=>{Approve.sendNotifyApproved($rs$$,$req$$.query.access_token)}))})});setImmediate(async()=>{(await permission.getFieldNotRight($obj$jscomp$0$$.id_app,$user$jscomp$0$$.email,$ctrl$$.name)).forEach($f$$=>{delete $obj$jscomp$0$$[$f$$]});$obj$jscomp$0$$.collection_name=$ctrl$$.collection_name;$ctrl$$.updated?$ctrl$$.updated($user$jscomp$0$$,$obj$jscomp$0$$,function($error$jscomp$0$$,$obj$$){if($error$jscomp$0$$)return console.error("error when saved",
254
+ $error$jscomp$0$$),$callback$$($error$jscomp$0$$);$ctrl$$.dynamicUpdated?$ctrl$$.dynamicUpdated($user$jscomp$0$$,$obj$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$$)}):$callback$$(null,$obj$$)},$current_obj$$):$ctrl$$.dynamicUpdated?$ctrl$$.dynamicUpdated($user$jscomp$0$$,$obj$jscomp$0$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$jscomp$0$$)}):$callback$$(null,$obj$jscomp$0$$)})}],($e$jscomp$164_name_cached$$,$rs$$)=>{$e$jscomp$164_name_cached$$?
255
+ (console.error($e$jscomp$164_name_cached$$),$callback$jscomp$1$$($e$jscomp$164_name_cached$$)):($e$jscomp$164_name_cached$$=$model$$.collection.name,$user$jscomp$0$$.current_id_app&&($e$jscomp$164_name_cached$$+=$user$jscomp$0$$.current_id_app),delete global.cacheDatas[$e$jscomp$164_name_cached$$],$callback$jscomp$1$$(null,$rs$$))})}catch($e$$){console.error($e$$),$callback$jscomp$1$$($e$$)}};
256
+ controller.prototype.update=function(){let $ctrl$$=this,$name$$=this.name;this.router.route(this.route_name+"/:id").put(function($req$$,$res$$){let $session$$=$req$$.session;if(!0===$session$$["updating_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["updating_"+$name$$]=!0;let $body$$=$req$$.body;$req$$.files&&underscore.extend($body$$,$req$$.files);let $data$$;try{$data$$=bodyToJson($body$$)}catch($e$$){return $res$$.status(400).send({error:$e$$.message||
257
+ $e$$.error||$e$$})}update($req$$.user,$ctrl$$,$req$$.params.id,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{$session$$["updating_"+$name$$]=!1;if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});!1===$req$$.query.return_data?$res$$.send({_id:$rs$$._id.toString()}):$res$$.send($rs$$)})},null,$req$$)})};
257
258
  function checkReference($model$jscomp$0$$,$obj$$,$fn$$,$keys$$){$model$jscomp$0$$.referenceKeys?($keys$$||($keys$$=underscore.keys($model$jscomp$0$$.referenceKeys)),async.map($keys$$,function($key$$,$callback$$){setImmediate(()=>{let $ref$$=$model$jscomp$0$$.referenceKeys[$key$$];if(!$ref$$)return $callback$$();let $value$$=$obj$$[$key$$];"_id"===$key$$&&($value$$=$value$$.toString());if(void 0==$value$$||null==$value$$||""==$value$$)return $callback$$();async.map($ref$$,function($r$$,$cb$$){setImmediate(()=>
258
259
  {let $model$$=mongoose.models[$r$$.model];if($model$$){let $query$$={id_app:$obj$$.id_app};var $_w_k$$=$r$$.key;$_w_k$$&&($query$$[$_w_k$$]=$value$$);$r$$.where&&(underscore.isObject($r$$.where)&&($query$$=Object.assign($query$$,$r$$.where)),underscore.isFunction($r$$.where)&&($_w_k$$=$r$$.where($obj$$),$query$$=Object.assign($query$$,$_w_k$$)));$model$$.find($query$$).limit(1).lean().exec(function($error$$,$o$$){setImmediate(()=>{if($error$$)return $cb$$($error$$);if($o$$&&0<$o$$.length){let $msgError$$;
259
260
  $msgError$$=$r$$.error?(new Function("obj","return `"+$r$$.error.replace("{{VALUE}}",$value$$)+"`"))($obj$$):ERR_DATA_GENERATED;return $cb$$({error:$msgError$$,code:ERR_DATA_GENERATED_CODE})}$cb$$()})})}else $cb$$()})},function($e$$){if($e$$)return $callback$$($e$$);$callback$$()})})},$error$$=>{$fn$$($error$$)})):$fn$$()}
@@ -1,5 +1,5 @@
1
- 'use strict';const underscore=require("underscore"),fs=require("fs"),path=require("path"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),textReport=require("../libs/textReport"),excelReport=require("excel-report"),log=global.getModel("log"),rpt=global.getModel("rpt"),reportinfo=global.getModel("reportinfo"),moment=require("moment"),numeral=require("numeral"),{getCacheReport,setCacheReport}=require("../libs/redis-cache"),{evalute,prepareParameters,getParameterData}=
2
- require("../libs/utils"),utils=require("../libs/utils"),_=require("lodash");
1
+ 'use strict';const underscore=require("underscore"),fs=require("fs"),path=require("path"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),textReport=require("../libs/textReport"),excelReport=require("excel-report"),log=global.getModel("log"),rpt=global.getModel("rpt"),reportinfo=global.getModel("reportinfo"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),numeral=require("numeral"),{getCacheReport,setCacheReport}=
2
+ require("../libs/redis-cache"),{evalute,prepareParameters,getParameterData}=require("../libs/utils"),utils=require("../libs/utils"),_=require("lodash");
3
3
  class controllerRPT{constructor($router$$,$rptId$$,$fecthData$$,$options$$={}){let $module$$=this.module=$rptId$$;this.router=$router$$;this.options=$options$$;this.fecthDataFunc=$fecthData$$;this.getDataFunc=()=>$options$$.stream?$fecthData$$:global.reportMainPool?($req$$,$callback$$)=>{global.reportMainPool.exec({req:{user:$req$$.user,query:$req$$.query,params:$req$$.params},module:$rptId$$.toUpperCase(),configs:JSON.parse(JSON.stringify(configs))},$response$$=>{setImmediate(async()=>{if($response$$.error)return $callback$$($response$$.error);
4
4
  let $data$$=$response$$.result;var $func_string$jscomp$1_rptInfo$$=await reportinfo.findOne({code:($req$$.query.report_info_code||$rptId$$).toLowerCase()}).lean();if($func_string$jscomp$1_rptInfo$$&&$func_string$jscomp$1_rptInfo$$.handle_data_expression_server){if(0<=$func_string$jscomp$1_rptInfo$$.handle_data_expression_server.indexOf("async "))return $callback$$("async function is not allow");$func_string$jscomp$1_rptInfo$$=`return (async ()=>{
5
5
  ${$func_string$jscomp$1_rptInfo$$.handle_data_expression_server}
@@ -30,12 +30,12 @@ $rptConfig$$.handle_data_expression.indexOf("async "))return $res$$.status(400).
30
30
  $rptId$$).toLowerCase()}).lean();if($func_string$jscomp$3_rptInfo$jscomp$2_rs$$&&$func_string$jscomp$3_rptInfo$jscomp$2_rs$$.handle_data_expression){if(0<=$func_string$jscomp$3_rptInfo$jscomp$2_rs$$.handle_data_expression.indexOf("async "))return $res$$.status(400).send({error:"async function is not allow"});$func_string$jscomp$3_rptInfo$jscomp$2_rs$$=`return (async ()=>{
31
31
  ${$func_string$jscomp$3_rptInfo$jscomp$2_rs$$.handle_data_expression}
32
32
  })`;try{const $rs$$=await evalute($func_string$jscomp$3_rptInfo$jscomp$2_rs$$,{data:$data$jscomp$3_e$$,moment,user:$req$jscomp$0$$.user,utils,numeral,getData:getParameterData})();$rs$$&&($app$$.detail=$app$$.details=$rs$$)}catch($e$$){return console.error($e$$,$func_string$jscomp$3_rptInfo$jscomp$2_rs$$),$res$$.status(400).send({error:$e$$.message||$e$$})}}else $app$$.detail.forEach($r$$=>{for(let $_key$$ in $r$$){let $_v$$=$r$$[$_key$$];if($_v$$&&0<=$_key$$.indexOf("ngay")||0<=$_key$$.indexOf("date"))try{let $d$$=
33
- moment($_v$$,"YYYY-MM-DD");$d$$.isValid()&&($r$$[`${$_key$$}`]=$d$$.toDate(),$r$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){console.error("Error convert to date",$_v$$,$e$$)}}});$rptConfig$$&&$rptConfig$$.parameters&&await prepareParameters($rptConfig$$.parameters,$app$$,$app$$);if($req$jscomp$0$$.query.json)$res$$.json($app$$);else $options$$.onExport($app$$,function(){setImmediate(()=>{if($req$jscomp$0$$.query.print)htmlReport($html_template$$,$app$$).then($rs$$=>$res$$.send($rs$$),
34
- $error$$=>{$res$$.status(400).send({error:$error$$.message||$error$$.error||$error$$})});else{let $ext$$=$templatePath$$.split(".").pop();"xlsx"===$ext$$?excelReport($templatePath$$,$app$$,function($error$$,$result$$){if($error$$)return console.error("Error export to excel",$error$$),$res$$.status(400).send({error:$error$$.message||$error$$.error||$error$$});$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".xlsx");
35
- $res$$.end($result$$,"binary")}):textReport($templatePath$$,$app$$,function($error$$,$result$$){if($error$$)return console.error("Error export to text",$error$$),$res$$.status(400).send({error:$error$$.message||$error$$.error||$error$$});"docx"===$ext$$?($res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".docx"),$res$$.write($result$$,"binary"),$res$$.end(null,"binary")):
36
- $res$$.send($result$$)})}})})})},$id_rpt$$=$req$jscomp$0$$.query.id_rpt,$dir_root_templates$$=configs.paths.templates||__dirname,$templatePath$$,$rptConfig$$,$html_template$$;(new Promise(($resolve$$,$reject$$)=>{$rptConfig$$=$templatePath$$=void 0;if($id_rpt$$&&global.mongoose.Types.ObjectId.isValid($id_rpt$$))rpt.findOne({_id:$id_rpt$$}).lean().exec(async function($error$$,$r$$){if($error$$||!$r$$)return console.error("Not found excel template",$id_rpt$$,$error$$),$reject$$($error$$||"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu");
37
- if($req$jscomp$0$$.query.print)$html_template$$=$r$$.html_template;else{if(0<$r$$.file_mau_in.indexOf("/file/download")){$error$$=$r$$.file_mau_in.split("/").pop();const $file$$=global.getModel("file");try{const $_fileMauIn$$=await $file$$.findOne({_id:$error$$}).lean();if(!$_fileMauIn$$)return $reject$$("Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu");let $file_name$$=$_fileMauIn$$.file.name,$root$$=configs.paths.uploads;$root$$||($root$$=__dirname,$root$$=path.dirname($root$$),$root$$=path.join($root$$,
38
- "uploads"));$templatePath$$=path.join($root$$,$file_name$$)}catch($e$$){return $reject$$($e$$.message||"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu")}}else $templatePath$$=path.dirname($dir_root_templates$$)+$r$$.file_mau_in;fs.existsSync($templatePath$$)||(console.log("file template not found",$templatePath$$),$templatePath$$=`${path.dirname($dir_root_templates$$)}/templates/excels/reports/${$module$$}.xlsx`);fs.existsSync($templatePath$$)||($templatePath$$=`${path.dirname(__dirname)}/templates/excels/reports/${$module$$}.xlsx`);
33
+ moment($_v$$);$d$$.isValid()&&($r$$[`${$_key$$}`]=$d$$.toDate(),$r$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){console.error("Error convert to date",$_v$$,$e$$)}}});$rptConfig$$&&$rptConfig$$.parameters&&await prepareParameters($rptConfig$$.parameters,$app$$,$app$$);if($req$jscomp$0$$.query.json)$res$$.json($app$$);else $options$$.onExport($app$$,function(){setImmediate(()=>{if($req$jscomp$0$$.query.print)htmlReport($html_template$$,$app$$).then($rs$$=>$res$$.send($rs$$),$error$$=>
34
+ {$res$$.status(400).send({error:$error$$.message||$error$$.error||$error$$})});else{let $ext$$=$templatePath$$.split(".").pop();"xlsx"===$ext$$?excelReport($templatePath$$,$app$$,function($error$$,$result$$){if($error$$)return console.error("Error export to excel",$error$$),$res$$.status(400).send({error:$error$$.message||$error$$.error||$error$$});$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".xlsx");$res$$.end($result$$,
35
+ "binary")},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"}):textReport($templatePath$$,$app$$,function($error$$,$result$$){if($error$$)return console.error("Error export to text",$error$$),$res$$.status(400).send({error:$error$$.message||$error$$.error||$error$$});"docx"===$ext$$?($res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".docx"),$res$$.write($result$$,"binary"),
36
+ $res$$.end(null,"binary")):$res$$.send($result$$)})}})})})},$id_rpt$$=$req$jscomp$0$$.query.id_rpt,$dir_root_templates$$=configs.paths.templates||__dirname,$templatePath$$,$rptConfig$$,$html_template$$;(new Promise(($resolve$$,$reject$$)=>{$rptConfig$$=$templatePath$$=void 0;if($id_rpt$$&&global.mongoose.Types.ObjectId.isValid($id_rpt$$))rpt.findOne({_id:$id_rpt$$}).lean().exec(async function($error$$,$r$$){if($error$$||!$r$$)return console.error("Not found excel template",$id_rpt$$,$error$$),$reject$$($error$$||
37
+ "Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu");if($req$jscomp$0$$.query.print)$html_template$$=$r$$.html_template;else{if(0<$r$$.file_mau_in.indexOf("/file/download")){$error$$=$r$$.file_mau_in.split("/").pop();const $file$$=global.getModel("file");try{const $_fileMauIn$$=await $file$$.findOne({_id:$error$$}).lean();if(!$_fileMauIn$$)return $reject$$("Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu");let $file_name$$=$_fileMauIn$$.file.name,$root$$=configs.paths.uploads;$root$$||($root$$=__dirname,$root$$=path.dirname($root$$),
38
+ $root$$=path.join($root$$,"uploads"));$templatePath$$=path.join($root$$,$file_name$$)}catch($e$$){return $reject$$($e$$.message||"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu")}}else $templatePath$$=path.dirname($dir_root_templates$$)+$r$$.file_mau_in;fs.existsSync($templatePath$$)||(console.log("file template not found",$templatePath$$),$templatePath$$=`${path.dirname($dir_root_templates$$)}/templates/excels/reports/${$module$$}.xlsx`);fs.existsSync($templatePath$$)||($templatePath$$=`${path.dirname(__dirname)}/templates/excels/reports/${$module$$}.xlsx`);
39
39
  if(!fs.existsSync($templatePath$$))return $reject$$("M\u1eabu kh\u00f4ng t\u1ed3n t\u1ea1i")}$rptConfig$$=$r$$;return $resolve$$($templatePath$$,$html_template$$)});else if($templatePath$$=`${path.dirname($dir_root_templates$$)}/templates/excels/reports/${$module$$}.xlsx`,fs.existsSync($templatePath$$)||($templatePath$$=`${path.dirname(__dirname)}/templates/excels/reports/${$module$$}.xlsx`),!fs.existsSync($templatePath$$))return $reject$$("M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i")})).then(()=>
40
40
  {!1===$options$$.require_id_app?$streamData$$({}):permission.hasRight($req$jscomp$0$$.params.id_app,$req$jscomp$0$$.user.email,$module$$,"view",function($error$$,$hr$$,$app$$){$hr$$?$streamData$$({...$app$$}):$res$$.status(403).send({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n xu\u1ea5t excel b\u00e1o c\u00e1o n\u00e0y"})},{notNeedRight:$options$$.notNeedRight})}).catch($e$$=>{console.error($e$$);return $e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$})})}catch($e$$){return $e$$.error?
41
41
  $res$$.status(500).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$})}})}getData($req$$,$callback$$){setImmediate(()=>{try{this.fecthDataFunc($req$$,$callback$$)}catch($e$$){console.error($e$$),$callback$$($e$$.message)}})}createRoute($routeName$$,$callback$$,$_options$$={method:"GET"}){$_options$$.method=$_options$$.method?$_options$$.method.toUpperCase():"GET";const $self$$=this;let $r$$=function($req$$,$res$$){setImmediate(()=>{!1===$self$$.options.require_id_app?$callback$$($req$$,