flexbiz-server 12.0.15 → 12.0.16

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.15",
5
+ "version": "12.0.16",
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"===
@@ -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$$})})};
@@ -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$$)});
@@ -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$$,
@@ -1,7 +1,7 @@
1
1
  'use strict';const right=global.getModel("right"),App=global.getModel("app"),Participant=global.getModel("participant"),UserGroup=global.getModel("usergroup"),underscore=require("underscore"),trangthai=global.getModel("trangthai"),async=require("async");
2
2
  exports.nguoiPhuTrach=async($group_id_app_p$$,$email$$)=>{if(!$group_id_app_p$$)return null;$group_id_app_p$$=await Participant.findOne({email:$email$$,id_app:$group_id_app_p$$},{group_id:1});return $group_id_app_p$$&&$group_id_app_p$$.group_id&&global.mongoose.Types.ObjectId.isValid($group_id_app_p$$.group_id)?($group_id_app_p$$=await UserGroup.findOne({_id:$group_id_app_p$$.group_id},{phu_trach:1}))?$group_id_app_p$$.phu_trach:null:null};
3
3
  exports.dsDangPhuTrach=async($id_app$$,$email$$)=>{if(!$id_app$$)return[];$email$$=(await UserGroup.find({phu_trach:$email$$,id_app:$id_app$$})).map($g$$=>$g$$._id.toString());return(await Participant.find({id_app:$id_app$$,group_id:{$in:$email$$}})).map($p$$=>$p$$.email)};
4
- exports.isAdmin=function($current_id_app$$,$email$$,$callback$$){if(!$current_id_app$$)return $callback$$(null,!0);App.findOne({_id:$current_id_app$$}).lean().exec(async($error$$,$app$$)=>{if($error$$)return $callback$$($error$$,!1);if(!$app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i",!1);if(global.configs.check_expire_date&&$app$$.expire_date&&(new Date($app$$.expire_date)).getTime()<(new Date).getTime())return $callback$$("C\u00f4ng ty n\u00e0y \u0111\u00e3 h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng",
4
+ exports.isAdmin=function($current_id_app$$,$email$$,$callback$$){if(!$current_id_app$$)return $callback$$(null,!0);App.findOne({_id:$current_id_app$$}).lean().exec(async($error$$,$app$$)=>{if($error$$)return $callback$$($error$$,!1);if(!$app$$)return $callback$$("ID app: "+$current_id_app$$+" kh\u00f4ng t\u1ed3n t\u1ea1i",!1);if(global.configs.check_expire_date&&$app$$.expire_date&&(new Date($app$$.expire_date)).getTime()<(new Date).getTime())return $callback$$("C\u00f4ng ty n\u00e0y \u0111\u00e3 h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng",
5
5
  !1);$error$$=await Participant.findOne({id_app:$current_id_app$$,email:$email$$});if(!$error$$)return $callback$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp c\u00f4ng ty n\u00e0y",!1);$callback$$(null,$error$$.admin,$app$$,$error$$)})};
6
6
  exports.hasRight=async function($current_id_app$$,$email$$,$module$$,$action$$,$callback$jscomp$0$$,$options$$={}){if(!$current_id_app$$||$options$$.notNeedRight||global.controllers[$module$$]&&global.controllers[$module$$].model&&global.controllers[$module$$].model.schema&&!underscore.has(global.controllers[$module$$].model.schema.paths,"id_app"))return $callback$jscomp$0$$(null,!0);$options$$.data&&($options$$.data.trang_thai||0==$options$$.data.trang_thai)&&($options$$.data.trang_thai=$options$$.data.trang_thai.toString());
7
7
  $options$$.obj&&($options$$.obj.trang_thai||0==$options$$.obj.trang_thai)&&($options$$.obj.trang_thai=$options$$.obj.trang_thai.toString());var $data_trang_thai$$=$options$$.data||$options$$.obj||{};const $ma_ct$$=(($options$$.obj||{}).ma_ct||($options$$.data||{}).ma_ct||"").toString().toUpperCase(),$ma_trang_thai$$=($data_trang_thai$$.trang_thai||$data_trang_thai$$.progress||"").toString().toUpperCase();if($ma_ct$$&&$ma_trang_thai$$&&($data_trang_thai$$=await trangthai.findOne({ma_trang_thai:$ma_trang_thai$$,
@@ -7,6 +7,7 @@ $_data$$)})},post=function($master$$,$details$$,$prepare$$,$model$$=SocaiModel){
7
7
  post.prototype.runPrepare=async($prepare$$,$details$jscomp$0$$)=>{$details$jscomp$0$$=$details$jscomp$0$$.map($d$$=>{$d$$.toObject&&($d$$=$d$$.toObject());return{...$d$$}});return new Promise($resolve$$=>{$prepare$$?async.map($details$jscomp$0$$,($detail$jscomp$0$$,$callback$$)=>{setImmediate(()=>{$detail$jscomp$0$$.toObject=function(){return Object.assign({},$detail$jscomp$0$$)};$prepare$$($detail$jscomp$0$$,$detail$$=>{$callback$$(null,$detail$$)})})},($e$$,$details$$)=>{$resolve$$($details$$)}):
8
8
  $resolve$$($details$jscomp$0$$)})};
9
9
  post.prototype.run=async function($callback$jscomp$0$$=()=>{}){if(!this.details)return $callback$jscomp$0$$(null,null);const $Socai$$=this.model||SocaiModel;let $master$$=this.master,$details$jscomp$0$$=await this.runPrepare(this.prepare,this.details);$details$jscomp$0$$=$details$jscomp$0$$.filter($d$$=>$d$$.tk_no&&$d$$.tk_co);if(!$master$$.ngay_ct)return $callback$jscomp$0$$("ngay_ct is not null");async.map($details$jscomp$0$$,($detail$jscomp$0$$,$callback$$)=>{setImmediate(()=>{$detail$jscomp$0$$.ma_kh_no||
10
- ($detail$jscomp$0$$.ma_kh_no=$detail$jscomp$0$$.ma_kh||$master$$.ma_kh);$detail$jscomp$0$$.ma_kh_co||($detail$jscomp$0$$.ma_kh_co=$detail$jscomp$0$$.ma_kh||$master$$.ma_kh);checkData($master$$.id_app,$master$$.ngay_ct,$detail$jscomp$0$$,($e$$,$detail$$)=>{$callback$$($e$$,$detail$$)})})},($e$jscomp$0$$,$details$$)=>{if($e$jscomp$0$$)return $callback$jscomp$0$$($e$jscomp$0$$);let $dks$$=$details$$.filter($detail$$=>!(0===$detail$$.tien_nt&&0===$detail$$.tien)).map(($detail$$,$nh_dk$$)=>{for(let $attr$$ in $Socai$$.schema.paths)"id_ct"!=
11
- $attr$$&&"_id"!=$attr$$&&(void 0!=$detail$$[$attr$$]&&null!=$detail$$[$attr$$]&&""!=$detail$$[$attr$$]||void 0==$master$$[$attr$$]||($detail$$[$attr$$]=$master$$[$attr$$]));$detail$$.nh_dk=$nh_dk$$;$detail$$.id_ct=$master$$._id.toString();delete $detail$$.toObject;delete $detail$$._id;delete $detail$$.__v;return $detail$$});$Socai$$.deleteMany({id_ct:$master$$._id.toString()},$error$$=>{if($error$$)return $callback$jscomp$0$$("Don't remove socai \n"+$error$$);$Socai$$.create($dks$$,($e$$,$rs$jscomp$0$$)=>
12
- {if($e$$){console.error("Error save socai",$e$$);let $q_remove$$={id_app:$master$$.id_app,id_ct:$master$$._id.toString()};$Socai$$.deleteMany($q_remove$$,($_e$$,$rs$$)=>{console.error("delete socai because error when posting",$master$$._id.toString(),JSON.stringify($rs$$),$q_remove$$);$callback$jscomp$0$$($e$$)})}else console.log("Posted socai",$master$$._id,$rs$jscomp$0$$),$callback$jscomp$0$$(null,$rs$jscomp$0$$)})})})};module.exports=post;
10
+ ($detail$jscomp$0$$.ma_kh_no=$detail$jscomp$0$$.ma_kh||$master$$.ma_kh);$detail$jscomp$0$$.ma_kh_co||($detail$jscomp$0$$.ma_kh_co=$detail$jscomp$0$$.ma_kh||$master$$.ma_kh);checkData($master$$.id_app,$master$$.ngay_ct,$detail$jscomp$0$$,($e$$,$detail$$)=>{$callback$$($e$$,$detail$$)})})},($but_toan_loi_e$$,$details$$)=>{if($but_toan_loi_e$$)return $callback$jscomp$0$$($but_toan_loi_e$$);$but_toan_loi_e$$=$details$$.filter($detail$$=>isNaN($detail$$.tien_nt)||isNaN($detail$$.tien));0<$but_toan_loi_e$$.length&&
11
+ console.error("Cac but toan khong hop ly",$but_toan_loi_e$$,"cua chung tu",$master$$._id);let $dks$$=$details$$.filter($detail$$=>!(0===$detail$$.tien_nt&&0===$detail$$.tien)&&!isNaN($detail$$.tien_nt)&&!isNaN($detail$$.tien)).map(($detail$$,$nh_dk$$)=>{for(let $attr$$ in $Socai$$.schema.paths)"id_ct"!=$attr$$&&"_id"!=$attr$$&&(void 0!=$detail$$[$attr$$]&&null!=$detail$$[$attr$$]&&""!=$detail$$[$attr$$]||void 0==$master$$[$attr$$]||($detail$$[$attr$$]=$master$$[$attr$$]));$detail$$.nh_dk=$nh_dk$$;
12
+ $detail$$.id_ct=$master$$._id.toString();delete $detail$$.toObject;delete $detail$$._id;delete $detail$$.__v;return $detail$$});$Socai$$.deleteMany({id_ct:$master$$._id.toString()},$error$$=>{if($error$$)return $callback$jscomp$0$$("Don't remove socai \n"+$error$$);$Socai$$.create($dks$$,($e$$,$rs$jscomp$0$$)=>{if($e$$){console.error("Error save socai",$e$$,$master$$);let $q_remove$$={id_app:$master$$.id_app,id_ct:$master$$._id.toString()};$Socai$$.deleteMany($q_remove$$,($_e$$,$rs$$)=>{console.error("delete socai because error when posting",
13
+ $master$$._id.toString(),JSON.stringify($rs$$),$q_remove$$);$callback$jscomp$0$$($e$$)})}else console.log("Posted socai",$master$$._id,$rs$jscomp$0$$),$callback$jscomp$0$$(null,$rs$jscomp$0$$)})})})};module.exports=post;
@@ -1,7 +1,7 @@
1
- 'use strict';const assinvestmentSchema=new Schema({id_app:String,so_hd:{required:!0,type:String,set:function($so_hd$$){this._previous_so_hd=this.so_hd;return $so_hd$$}},ngay_hd:{type:Date,default:Date.now},creator:{type:String,required:!0},id:{type:String},id_product:{type:String},ten_san_pham:{type:String},id_period:{type:String,required:!0},ten_ky_han:{type:String},product_token:{type:String,lowercase:!0},token:{type:String,lowercase:!0},co_phan:Boolean,gia:{type:Number},so_luong:{type:Number,required:!0},
2
- tong_gia_tri:{type:Number},lai_suat_cam_ket:{type:Number},ky_tinh_lai:{type:Number},ngay_phat_hanh:{type:Date},ky_han:{type:Number},ngay_dao_han:{type:Date},cho_phep_rut_von:{type:Boolean},lai_suat_truoc_han:{type:Number},tg_xu_ly_rut_von:{type:Number},cho_phep_chuyen_nhuong:{type:Boolean},denom:{type:String},da_dao_han:{type:Boolean},trang_thai:{type:String,default:"1"},thong_tin_hop_dong:Schema.Types.Mixed,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},
3
- date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});assinvestmentSchema.index({id_app:1});assinvestmentSchema.index({creator:1});assinvestmentSchema.index({id:1});assinvestmentSchema.index({id_product:1});assinvestmentSchema.index({ten_san_pham:1});assinvestmentSchema.index({product_token:1});assinvestmentSchema.index({co_phan:1});assinvestmentSchema.index({id_period:1});assinvestmentSchema.index({ten_ky_han:1});assinvestmentSchema.index({cho_phep_rut_von:1});
4
- assinvestmentSchema.index({cho_phep_chuyen_nhuong:1});assinvestmentSchema.index({da_dao_han:1});assinvestmentSchema.index({denom:1});assinvestmentSchema.index({token:1});assinvestmentSchema.index({status:1});assinvestmentSchema.index({user_created:1});assinvestmentSchema.index({creator:"text",product_token:"text",token:"text",ten_san_pham:"text",ten_ky_han:"text",denom:"text"},{name:"assinvestment_index2"});
1
+ 'use strict';const assinvestmentSchema=new Schema({id_app:String,so_hd:{required:!0,type:String,set:function($so_hd$$){this._previous_so_hd=this.so_hd;return $so_hd$$}},ngay_hd:{type:Date,default:Date.now},creator:{type:String,required:!0},id:{type:String},id_product:{type:String},ten_san_pham:{type:String},id_period:{type:String,required:!0},ten_ky_han:{type:String},product_token:{type:String,lowercase:!0},token:{type:String,lowercase:!0},co_phan:Boolean,lai_da_tra:Number,gia:{type:Number},so_luong:{type:Number,
2
+ required:!0},tong_gia_tri:{type:Number},lai_suat_cam_ket:{type:Number},ky_tinh_lai:{type:Number},ngay_phat_hanh:{type:Date},ky_han:{type:Number},ngay_dao_han:{type:Date},cho_phep_rut_von:{type:Boolean},lai_suat_truoc_han:{type:Number},tg_xu_ly_rut_von:{type:Number},cho_phep_chuyen_nhuong:{type:Boolean},denom:{type:String},da_dao_han:{type:Boolean},trang_thai:{type:String,default:"1"},thong_tin_hop_dong:Schema.Types.Mixed,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,
3
+ default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});assinvestmentSchema.index({id_app:1});assinvestmentSchema.index({creator:1});assinvestmentSchema.index({id:1});assinvestmentSchema.index({id_product:1});assinvestmentSchema.index({ten_san_pham:1});assinvestmentSchema.index({product_token:1});assinvestmentSchema.index({co_phan:1});assinvestmentSchema.index({id_period:1});assinvestmentSchema.index({ten_ky_han:1});
4
+ assinvestmentSchema.index({cho_phep_rut_von:1});assinvestmentSchema.index({cho_phep_chuyen_nhuong:1});assinvestmentSchema.index({da_dao_han:1});assinvestmentSchema.index({denom:1});assinvestmentSchema.index({token:1});assinvestmentSchema.index({status:1});assinvestmentSchema.index({user_created:1});assinvestmentSchema.index({creator:"text",product_token:"text",token:"text",ten_san_pham:"text",ten_ky_han:"text",denom:"text"},{name:"assinvestment_index2"});
5
5
  assinvestmentSchema.pre("save",function($next$$){if(!this.so_hd)return $next$$();const $self$$=this;this.isNew||this.so_hd!=this._previous_so_hd?mongoose.models.customer.countDocuments({id_app:this.id_app,so_hd:this.so_hd},($e$$,$count$$)=>{0<$count$$?$next$$(Error(`S\u1ed1 h\u1ee3p \u0111\u1ed3ng '${$self$$.so_hd}' \u0111\u00e3 t\u1ed3n t\u1ea1i`)):$next$$()}):$next$$()});const model=mongoose.models.assinvestment||mongoose.model("assinvestment",assinvestmentSchema);
6
6
  model.on("index",async function($err$$){$err$$?console.error("AssInvestmnet index error",$err$$):console.info("AssInvestmnet indexing complete")});
7
7
  model.getPercentOfSteps=$steps$$=>{let $owners$$=[];$steps$$.filter($s$$=>"4"==$s$$.trang_thai||"5"==$s$$.trang_thai).sort(($a$$,$b$$)=>$a$$.stt-$b$$.stt).forEach($s$$=>{let $owner$$={code:$s$$.code,name:$s$$.name,sl_slot:$s$$.sl_slot,gt_slot:$s$$.gt_slot,dillution:$s$$.dillution,raise:$s$$.raise,percent:$s$$.dillution||100,investment:$s$$.raise||$s$$.valuation};$owners$$.forEach($o$$=>{$o$$.percent*=1-$s$$.dillution/100});$owners$$.push($owner$$);$owners$$.forEach($o$$=>{$o$$.valuation=Math.round($s$$.valuation*
@@ -7,6 +7,7 @@ const {isSupperAdmin} = require("../libs/utils");
7
7
  const PostBook = require('../libs/post-book');
8
8
  const PostSocai = require('../libs/post-socai');
9
9
  const moment = require("moment");
10
+ const fs = require("fs");
10
11
  const joinModel2 = (arr,id_app, model, joinFields, fn,options={cache:true})=>{
11
12
  return [...arr].joinModel2(id_app, model, joinFields, fn,options);
12
13
  }
@@ -364,6 +365,12 @@ model.createModel = (info)=>{
364
365
  if(!info.create_model) return null;
365
366
  let model_code = info.api_code || info.model_code || info.code;
366
367
  let exModel = global.mongoose.models[model_code]
368
+ if(!exModel){
369
+ let model_path = (((global.configs||{}).paths||{}).models || __dirname) + "/" + model_code + ".js"
370
+ if(fs.existsSync(model_path)){
371
+ exModel = require(model_path);
372
+ }
373
+ }
367
374
  if(!exModel){
368
375
  exModel = global.mongoose.model(model_code, model.createSchema(info));
369
376
  }else{
@@ -525,8 +532,6 @@ const dynamicUpdating = async (listInfo,user,data,obj,next)=>{
525
532
  listInfo[key] = _listInfo[key];
526
533
 
527
534
  }
528
-
529
-
530
535
  const require_id_app = (_listInfo.require_id_app!=false && _listInfo.require_id_app!="false");
531
536
  const supportUsers = configs.supportUsers || [];
532
537
  if (!require_id_app && (_listInfo.input_users||"").toLowerCase().indexOf(user.email.toLowerCase())<0 && !supportUsers.includes(user.email.toLowerCase()) && !isSupperAdmin(user.email.toLowerCase())) {
@@ -2,10 +2,10 @@
2
2
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"asscashwithdraw",{sort:{date_created:-1},notNeedRight:!0,requireOtp:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:($user$$,$items$$,$next$$)=>{async.map($items$$.filter($item$$=>$item$$.id||0===$item$$.id),async $item$$=>{try{let $ivs$$=await bcQuery("cashwithdraw/"+$item$$.id);$item$$.trang_thai=$ivs$$.CashWithdraw.status.toString();$item$$.require_date=new Date(1E3*
3
3
  Number($ivs$$.CashWithdraw.requireDate))}catch($e$$){console.error("view asscashwithdraw",$e$$)}},async()=>{await $items$$.asyncJoinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"ASSCASHWITHDRAW"}),fields:["ten_trang_thai","color"]}]);await $items$$.asyncJoinModel2($user$$.current_id_app,Customer,[{where:$a$$=>({of_user:$a$$.user_created}),fields:["ma_kh","ten_kh"]}]);await $items$$.asyncJoinModel2($user$$.current_id_app,PC1,[{where:$a$$=>({id_asscashwithdraw:$a$$._id}),
4
4
  fields:[{so_ct_pc1:"so_ct",id_pc1:"_id",ngay_ct_pc1:"ngay_ct",ma_ct_pc1:"ma_ct"}]}]);$next$$(null,$items$$)})},onCreating:async($user$$,$obj$$,$next$$)=>{let $app$$=await App.findOne({_id:$user$$.current_id_app});if(!$app$$.wallet_address)return $next$$("Kh\u00f4ng th\u1ec3 y\u00eau c\u1ea7u thanh to\u00e1n. H\u00e3y th\u1eed l\u1ea1i sau");$obj$$.payer=$app$$.wallet_address;createTx($user$$.current_id_app,$user$$.token,{values:{creator:$obj$$.creator,token:$obj$$.token,amount:Number($obj$$.amount),
5
- payer:$obj$$.payer},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateCashWithdraw",from_address:$obj$$.creator,memo:"Y\u00eau c\u1ea7u r\u00fat ti\u1ec1n m\u1eb7t"}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>
6
- "message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;if(void 0!==$id$$){$obj$$.id=$id$$;let $ivs$$=await bcQuery("cashwithdraw/"+$id$$);$obj$$.require_date=new Date(1E3*Number($ivs$$.CashWithdraw.requireDate));$obj$$.trang_thai=$ivs$$.CashWithdraw.status.toString();$next$$(null,$obj$$)}else console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 th\u1ef1c hi\u1ec7n y\u00eau c\u1ea7u n\u00e0y")}catch($e$$){console.error($e$$),$next$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>
7
- {console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created)return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 x\u00f3a y\u00eau c\u1ea7u n\u00e0y");if("5"==$obj$$.trang_thai)return $fn$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n");if("9"==$obj$$.trang_thai)return $fn$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c h\u1ee7y");createTx($user$$.current_id_app,
8
- $user$$.token,{values:{creator:$obj$$.creator,id:Number($obj$$.id)},typeUrl:"/pvtruong.flexzen.flexzen.MsgDeleteCashWithdraw",from_address:$obj$$.creator,memo:"Hu\u1ef7 y\u00eau c\u1ea7u r\u00fat ti\u1ec1n m\u1eb7t"}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $fn$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $fn$$($rs$$.rawLog)}$fn$$(null,$obj$$)}).catch($e$$=>{console.error($e$$);$fn$$($e$$.message||
5
+ payer:$obj$$.payer},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateCashWithdraw",from_address:$obj$$.creator,memo:"Y\u00eau c\u1ea7u r\u00fat ti\u1ec1n m\u1eb7t"}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog||$rs$$)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||
6
+ []).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;if(void 0!==$id$$){$obj$$.id=$id$$;let $ivs$$=await bcQuery("cashwithdraw/"+$id$$);$obj$$.require_date=new Date(1E3*Number($ivs$$.CashWithdraw.requireDate));$obj$$.trang_thai=$ivs$$.CashWithdraw.status.toString();$next$$(null,$obj$$)}else console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 th\u1ef1c hi\u1ec7n y\u00eau c\u1ea7u n\u00e0y")}catch($e$$){console.error($e$$),$next$$($e$$.message||$e$$.error||
7
+ $e$$)}}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created)return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 x\u00f3a y\u00eau c\u1ea7u n\u00e0y");if("5"==$obj$$.trang_thai)return $fn$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n");if("9"==$obj$$.trang_thai)return $fn$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c h\u1ee7y");createTx($user$$.current_id_app,
8
+ $user$$.token,{values:{creator:$obj$$.creator,id:Number($obj$$.id)},typeUrl:"/pvtruong.flexzen.flexzen.MsgDeleteCashWithdraw",from_address:$obj$$.creator,memo:"Hu\u1ef7 y\u00eau c\u1ea7u r\u00fat ti\u1ec1n m\u1eb7t"}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $fn$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $fn$$($rs$$.rawLog||$rs$$)}$fn$$(null,$obj$$)}).catch($e$$=>{console.error($e$$);$fn$$($e$$.message||
9
9
  $e$$.error||$e$$)})};$contr_router$$.updating=async function($user$$,$data$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created)return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");if("5"==$obj$$.trang_thai)return $fn$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n");if("9"==$obj$$.trang_thai)return $fn$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c h\u1ee7y");let $app$$=await App.findOne({_id:$user$$.current_id_app});if($data$$.creator&&
10
10
  $data$$.creator!==$obj$$.creator)return $fn$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eeda \u0111\u1ecba ch\u1ec9 v\u00ed ng\u01b0\u1eddi t\u1ea1o");createTx($user$$.current_id_app,$user$$.token,{values:{creator:$obj$$.creator,id:Number($obj$$.id),token:$obj$$.token,amount:Number($data$$.amount||$obj$$.amount),payer:$app$$.wallet_address||$obj$$.payer,status:Number($data$$.trang_thai||$obj$$.trang_thai)},typeUrl:"/pvtruong.flexzen.flexzen.MsgUpdateCashWithdraw",from_address:$obj$$.creator,memo:"C\u1eadp nh\u1eadt y\u00eau c\u1ea7u r\u00fat ti\u1ec1n m\u1eb7t"}).then(async $rs$$=>
11
- {if($rs$$.code){if(5===$rs$$.code)return $fn$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $fn$$($rs$$.rawLog)}$fn$$(null,$data$$,$obj$$)}).catch($e$$=>{console.error($e$$);$fn$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
11
+ {if($rs$$.code){if(5===$rs$$.code)return $fn$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $fn$$($rs$$.rawLog||$rs$$)}$fn$$(null,$data$$,$obj$$)}).catch($e$$=>{console.error($e$$);$fn$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
@@ -9,25 +9,25 @@ await spend($appInfo$$._id,$appInfo$$.wallet_token,$appInfo$$.wallet_address,$k$
9
9
  global.createNotification("SYSTEM",$usergroup$$.phu_trach,"Hoa h\u1ed3ng cho ng\u01b0\u1eddi qu\u1ea3n l\u00fd nh\u00f3m",$body$jscomp$0$$,$e$$=>{$e$$&&console.error("Error create notification",$e$$)},{introduce_code:$intro$$.introduce_code,be_introduced:$investment$$.user_created,investment:$investment$$._id},!0)}}}}}}else console.log("user nay khong co nguoi gioi thieu",$investment$$.user_created)}catch($e$$){console.error("Khong the tinh hoa hong cho nguoi gioi thieu",$e$$)}};
10
10
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assinvestment",{sort:{date_created:-1},notNeedRight:!0,requireOtp:$data$$=>"0"==$data$$.trang_thai||"2"==$data$$.trang_thai||"7"==$data$$.trang_thai?!1:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:($user$$,$items$$,$next$$)=>{async.map($items$$,async $item$$=>{$item$$.wallet_address=$item$$.creator;try{if("7"!=$item$$.trang_thai){let $ivs$$=await bcQuery("investment/"+
11
11
  $item$$.id);$item$$.da_dao_han=$ivs$$.Investment.daDaoHan;$item$$.token=$ivs$$.Investment.token;$item$$.ngay_dao_han=Number($ivs$$.Investment.ngayDaoHan)?new Date(1E3*Number($ivs$$.Investment.ngayDaoHan)):null;$item$$.ngay_phat_hanh=new Date(1E3*Number($ivs$$.Investment.ngayPhatHanh));$item$$.id_product=$ivs$$.Investment.idProduct;$item$$.product_token=$ivs$$.Investment.productToken;$item$$.gia=Number($ivs$$.Investment.gia);$item$$.so_luong=Number($ivs$$.Investment.soLuong);$item$$.tong_gia_tri=$item$$.gia*
12
- $item$$.so_luong;$item$$.lai_suat_cam_ket=Number($ivs$$.Investment.laiSuatCamKet);$item$$.lai_suat_truoc_han=Number($ivs$$.Investment.laiSuatTruocHan);$item$$.ky_han=Number($ivs$$.Investment.kyHan);$item$$.cho_phep_rut_von=$ivs$$.Investment.choPhepRutVon;$item$$.cho_phep_chuyen_nhuong=$ivs$$.Investment.choPhepChuyenNhuong;$item$$.denom=$ivs$$.Investment.denom;$item$$.da_dao_han=$ivs$$.Investment.daDaoHan;Number($ivs$$.Investment.ngayTinhLaiKyTruoc)&&($item$$.ngay_tinh_lai_ky_truoc=new Date(1E3*Number($ivs$$.Investment.ngayTinhLaiKyTruoc)));
13
- Number($ivs$$.Investment.ngayTinhLaiKyTiepTheo)&&($item$$.ngay_tinh_lai_ky_tiep_theo=new Date(1E3*Number($ivs$$.Investment.ngayTinhLaiKyTiepTheo)));$item$$.trang_thai=$item$$.da_dao_han?"5":"1";$item$$.tg_xu_ly_rut_von=Number($ivs$$.Investment.tgXuLyRutVon);$item$$.co_phan=$ivs$$.Investment.coPhan;$item$$.lai_du_tinh=Math.round($item$$.lai_suat_cam_ket/365/100*$item$$.tong_gia_tri*$item$$.ky_han);$item$$.tong_gia_tri_dao_han=$item$$.tong_gia_tri+$item$$.lai_du_tinh;void 0!=$item$$.id_product&&null!=
14
- $item$$.id_product&&await [$item$$].asyncJoinModel2($user$$.current_id_app,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham",{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},{tong_so_token_phat_hanh:"tong_so_token"}]});void 0!=$item$$.id_period&&null!=$item$$.id_period&&await [$item$$].asyncJoinModel2($user$$.current_id_app,assperiod,{where:{id_period:"id",id_product:"id_product"},fields:["ten_ky_han","id_rpt","ky_tinh_lai","goi_dau_tu"]});let $balance$$=
15
- await bcQuery(`cosmos/bank/v1beta1/balances/${$ivs$$.Investment.creator}/by_denom?denom=${$ivs$$.Investment.token}`);$item$$.con_lai=Number($balance$$.balance.amount);$item$$.da_ban=$item$$.so_luong-$item$$.con_lai}else void 0!=$item$$.id_period&&null!=$item$$.id_period&&await [$item$$].asyncJoinModel2($user$$.current_id_app,assperiod,{where:{id_period:"id"},fields:"ten_ky_han ky_han id_product gia lai_suat_cam_ket lai_suat_truoc_han cho_phep_rut_von cho_phep_chuyen_nhuong denom tg_xu_ly_rut_von co_phan id_rpt ky_tinh_lai goi_dau_tu".split(" ")}),
16
- void 0!=$item$$.id_product&&null!=$item$$.id_product&&await [$item$$].asyncJoinModel2($user$$.current_id_app,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham",{product_token:"token"},{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},{tong_so_token_phat_hanh:"tong_so_token"}]}),$item$$.tong_gia_tri=$item$$.gia*$item$$.so_luong,$item$$.lai_du_tinh=Math.round($item$$.lai_suat_cam_ket/365/100*$item$$.tong_gia_tri*$item$$.ky_han,0),$item$$.tong_gia_tri_dao_han=
17
- $item$$.tong_gia_tri+$item$$.lai_du_tinh;model.updateMany({_id:$item$$._id},$item$$).then($rs$$=>{console.log("update investment",$rs$$)})}catch($e$$){void 0!=$item$$.id_period&&null!=$item$$.id_period&&await [$item$$].asyncJoinModel2($user$$.current_id_app,assperiod,{where:{id_period:"id"},fields:"ten_ky_han ky_han id_product gia lai_suat_cam_ket lai_suat_truoc_han cho_phep_rut_von cho_phep_chuyen_nhuong denom tg_xu_ly_rut_von co_phan id_rpt ky_tinh_lai goi_dau_tu".split(" ")}),void 0!=$item$$.id_product&&
18
- null!=$item$$.id_product&&await [$item$$].asyncJoinModel2($user$$.current_id_app,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham","logo","hinh_anh",{product_token:"token"},{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},{tong_so_token_phat_hanh:"tong_so_token"}]}),$item$$.tong_gia_tri=$item$$.gia*$item$$.so_luong,$item$$.lai_du_tinh=Math.round($item$$.lai_suat_cam_ket/365/100*$item$$.tong_gia_tri*$item$$.ky_han,0),$item$$.tong_gia_tri_dao_han=
19
- $item$$.tong_gia_tri+$item$$.lai_du_tinh,model.updateMany({_id:$item$$._id},$item$$).then($rs$$=>{console.log("update investment",$rs$$)})}try{$item$$.goi_dau_tu&&($item$$.market_value=await model.getInvestmentMarketValue($item$$.id_app,$item$$.token))}catch($e$$){console.error($e$$)}},async()=>{await $items$$.asyncJoinModel2(null,trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"ASSINVESTMENT"}),fields:["ten_trang_thai","color"]}]);await $items$$.asyncJoinModel2($user$$.current_id_app,
20
- customer,[{where:$a$$=>({of_user:$a$$.user_created}),fields:["ma_kh","ten_kh"]}]);await $items$$.asyncJoinModel2($user$$.current_id_app,pt1,[{where:$a$$=>({id_assinvestment:$a$$._id}),fields:[{id_pt1:"_id"},{ma_ct_pt1:"ma_ct"}]}]);$next$$(null,$items$$)})},onCreating:async($user$$,$obj$$,$next$$)=>{const $period$$=await assperiod.findOne({id_app:$user$$.current_id_app,id:$obj$$.id_period}).lean();if(!$period$$)return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 kh\u00f4ng t\u1ed3n t\u1ea1i");if($period$$.goi_dau_tu&&
21
- $period$$.frm_step_code){var $frm_frm_step$$=await global.getModel("financialroadmap").findOne({id_app:$period$$.id_app,code:$period$$.id_product.toString()}).lean();if(!$frm_frm_step$$)return $next$$("L\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh cho g\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$frm_frm_step$$=($frm_frm_step$$.steps||[]).find($s$$=>$s$$.code===$period$$.frm_step_code);if(!$frm_frm_step$$)return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i trong l\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh");
22
- if("5"==$frm_frm_step$$.trang_thai)return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y \u0111\u00e3 ho\u00e0n th\u00e0nh k\u00eau g\u1ecdi v\u1ed1n");if("4"!=$frm_frm_step$$.trang_thai)return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y ch\u01b0a c\u00f3 hi\u1ec7u l\u1ef1c")}if("1"!==$obj$$.trang_thai)return $next$$(null,$obj$$);createTx($user$$.current_id_app,$user$$.token,{values:{creator:$obj$$.creator,idPeriod:Number($obj$$.id_period),soLuong:Number($obj$$.so_luong)},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateInvestment",
23
- from_address:$obj$$.creator,memo:"\u0110\u1ea7u t\u01b0"}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$({error:$rs$$.rawLog||$rs$$})}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;
24
- if(void 0!==$id$$){$obj$$.id=$id$$;let $ivs$$=await bcQuery("investment/"+$id$$);$obj$$.token=$ivs$$.Investment.token;$obj$$.ngay_dao_han=Number($ivs$$.Investment.ngayDaoHan)?new Date(1E3*Number($ivs$$.Investment.ngayDaoHan)):null;$obj$$.ngay_phat_hanh=new Date(1E3*Number($ivs$$.Investment.ngayPhatHanh));$obj$$.id_product=$ivs$$.Investment.idProduct;$obj$$.product_token=$ivs$$.Investment.productToken;$obj$$.gia=Number($ivs$$.Investment.gia);$obj$$.tong_gia_tri=$obj$$.gia*$obj$$.so_luong;$obj$$.lai_suat_cam_ket=
25
- Number($ivs$$.Investment.laiSuatCamKet);$obj$$.lai_suat_truoc_han=Number($ivs$$.Investment.laiSuatTruocHan);$obj$$.ky_han=Number($ivs$$.Investment.kyHan);$obj$$.cho_phep_rut_von=$ivs$$.Investment.choPhepRutVon;$obj$$.cho_phep_chuyen_nhuong=$ivs$$.Investment.choPhepChuyenNhuong;$obj$$.denom=$ivs$$.Investment.denom;$obj$$.da_dao_han=$ivs$$.Investment.daDaoHan;$obj$$.tg_xu_ly_rut_von=Number($ivs$$.Investment.tgXuLyRutVon);$obj$$.co_phan=$ivs$$.Investment.coPhan;tinhHoaHong($obj$$);$next$$(null,$obj$$)}else console.error($tx$$),
26
- $next$$("Kh\u00f4ng th\u1ec3 \u0111\u1ea7u t\u01b0 cho k\u1ef3 h\u1ea1n n\u00e0y")}catch($e$$){console.error($e$$),$next$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 x\u00f3a");$fn$$(null,$obj$$)};$contr_router$$.updating=async function($user$$,$data$$,$obj$$,$fn$$){if($data$$.trang_thai&&
27
- "1"!==$data$$.trang_thai)return $fn$$(null,$data$$,$obj$$);if("1"!==$obj$$.trang_thai&&"1"===$data$$.trang_thai){$data$$.id_period=$data$$.id_period||$obj$$.id_period;const $period$$=await assperiod.findOne({id_app:$user$$.current_id_app,id:$data$$.id_period}).lean();if(!$period$$)return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 kh\u00f4ng t\u1ed3n t\u1ea1i");if($period$$.goi_dau_tu&&$period$$.frm_step_code){var $frm$jscomp$1_frm_step$$=await global.getModel("financialroadmap").findOne({id_app:$period$$.id_app,
28
- code:$period$$.id_product.toString()}).lean();if(!$frm$jscomp$1_frm_step$$)return $fn$$("L\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh cho g\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$frm$jscomp$1_frm_step$$=($frm$jscomp$1_frm_step$$.steps||[]).find($s$$=>$s$$.code===$period$$.frm_step_code);if(!$frm$jscomp$1_frm_step$$)return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i trong l\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh");if("5"==$frm$jscomp$1_frm_step$$.trang_thai)return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y \u0111\u00e3 ho\u00e0n th\u00e0nh k\u00eau g\u1ecdi v\u1ed1n");
29
- if("4"!=$frm$jscomp$1_frm_step$$.trang_thai)return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y ch\u01b0a c\u00f3 hi\u1ec7u l\u1ef1c")}createTx($user$$.current_id_app,$user$$.token,{values:{creator:$data$$.creator||$obj$$.creator,idPeriod:Number($data$$.id_period||$obj$$.id_period),soLuong:Number($data$$.so_luong||$obj$$.so_luong)},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateInvestment",from_address:$data$$.creator||$obj$$.creator,memo:"\u0110\u1ea7u t\u01b0",username:$user$$.email}).then(async $rs$$=>
30
- {if($rs$$.code){if(5===$rs$$.code)return $fn$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $fn$$({error:$rs$$.rawLog})}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;if(void 0!==$id$$){$data$$.id=$id$$;let $ivs$$=await bcQuery("investment/"+$id$$);$data$$.token=
31
- $ivs$$.Investment.token;$data$$.ngay_dao_han=Number($ivs$$.Investment.ngayDaoHan)?new Date(1E3*Number($ivs$$.Investment.ngayDaoHan)):null;$data$$.ngay_phat_hanh=new Date(1E3*Number($ivs$$.Investment.ngayPhatHanh));$data$$.id_product=$ivs$$.Investment.idProduct;$data$$.product_token=$ivs$$.Investment.productToken;$data$$.gia=Number($ivs$$.Investment.gia);$data$$.so_luong=Number($ivs$$.Investment.soLuong);$data$$.tong_gia_tri=$data$$.gia*$data$$.so_luong;$data$$.lai_suat_cam_ket=Number($ivs$$.Investment.laiSuatCamKet);
32
- $data$$.lai_suat_truoc_han=Number($ivs$$.Investment.laiSuatTruocHan);$data$$.key_han=Number($ivs$$.Investment.kyHan);$data$$.cho_phep_rut_von=$ivs$$.Investment.choPhepRutVon;$data$$.cho_phep_chuyen_nhuong=$ivs$$.Investment.choPhepChuyenNhuong;$data$$.denom=$ivs$$.Investment.denom;$data$$.da_dao_han=$ivs$$.Investment.daDaoHan;$data$$.tg_xu_ly_rut_von=Number($ivs$$.Investment.tgXuLyRutVon);$data$$.co_phan=$ivs$$.Investment.coPhan;$obj$$.gia=$data$$.gia;$obj$$.so_luong=$data$$.so_luong;$obj$$.tong_gia_tri=
33
- $data$$.tong_gia_tri;tinhHoaHong($obj$$);$fn$$(null,$data$$,$obj$$)}else console.error($tx$$),$fn$$("Kh\u00f4ng th\u1ec3 \u0111\u1ea7u t\u01b0 cho k\u1ef3 h\u1ea1n n\u00e0y")}catch($e$$){console.error($e$$),$fn$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$fn$$($e$$.message||$e$$.error||$e$$)})}else return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")};$contr_router$$.route()};
12
+ $item$$.so_luong;$item$$.lai_suat_cam_ket=Number($ivs$$.Investment.laiSuatCamKet);$item$$.lai_suat_truoc_han=Number($ivs$$.Investment.laiSuatTruocHan);$item$$.ky_han=Number($ivs$$.Investment.kyHan);$item$$.cho_phep_rut_von=$ivs$$.Investment.choPhepRutVon;$item$$.cho_phep_chuyen_nhuong=$ivs$$.Investment.choPhepChuyenNhuong;$item$$.denom=$ivs$$.Investment.denom;$item$$.da_dao_han=$ivs$$.Investment.daDaoHan;$item$$.lai_da_tra=Number($ivs$$.Investment.laiDaTra);0<$item$$.so_luong&&($item$$.lai_da_tra_1_token=
13
+ Math.round($item$$.lai_da_tra/$item$$.so_luong));Number($ivs$$.Investment.ngayTinhLaiKyTruoc)&&($item$$.ngay_tinh_lai_ky_truoc=new Date(1E3*Number($ivs$$.Investment.ngayTinhLaiKyTruoc)));Number($ivs$$.Investment.ngayTinhLaiKyTiepTheo)&&($item$$.ngay_tinh_lai_ky_tiep_theo=new Date(1E3*Number($ivs$$.Investment.ngayTinhLaiKyTiepTheo)));$item$$.trang_thai=$item$$.da_dao_han?"5":"1";$item$$.tg_xu_ly_rut_von=Number($ivs$$.Investment.tgXuLyRutVon);$item$$.co_phan=$ivs$$.Investment.coPhan;$item$$.lai_du_tinh=
14
+ Math.round($item$$.lai_suat_cam_ket/365/100*$item$$.tong_gia_tri*$item$$.ky_han);$item$$.tong_gia_tri_dao_han=$item$$.tong_gia_tri+$item$$.lai_du_tinh;void 0!=$item$$.id_product&&null!=$item$$.id_product&&await [$item$$].asyncJoinModel2($user$$.current_id_app,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham",{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},{tong_so_token_phat_hanh:"tong_so_token"}]});void 0!=$item$$.id_period&&null!=$item$$.id_period&&
15
+ await [$item$$].asyncJoinModel2($user$$.current_id_app,assperiod,{where:{id_period:"id",id_product:"id_product"},fields:["ten_ky_han","id_rpt","ky_tinh_lai","goi_dau_tu","tru_lai_da_tra"]});let $balance$$=await bcQuery(`cosmos/bank/v1beta1/balances/${$ivs$$.Investment.creator}/by_denom?denom=${$ivs$$.Investment.token}`);$item$$.con_lai=Number($balance$$.balance.amount);$item$$.da_ban=$item$$.so_luong-$item$$.con_lai}else void 0!=$item$$.id_period&&null!=$item$$.id_period&&await [$item$$].asyncJoinModel2($user$$.current_id_app,
16
+ assperiod,{where:{id_period:"id"},fields:"ten_ky_han ky_han id_product gia lai_suat_cam_ket lai_suat_truoc_han cho_phep_rut_von cho_phep_chuyen_nhuong denom tg_xu_ly_rut_von co_phan id_rpt ky_tinh_lai goi_dau_tu tru_lai_da_tra".split(" ")}),void 0!=$item$$.id_product&&null!=$item$$.id_product&&await [$item$$].asyncJoinModel2($user$$.current_id_app,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham",{product_token:"token"},{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},
17
+ {tong_so_token_phat_hanh:"tong_so_token"}]}),$item$$.tong_gia_tri=$item$$.gia*$item$$.so_luong,$item$$.lai_du_tinh=Math.round($item$$.lai_suat_cam_ket/365/100*$item$$.tong_gia_tri*$item$$.ky_han,0),$item$$.tong_gia_tri_dao_han=$item$$.tong_gia_tri+$item$$.lai_du_tinh;model.updateMany({_id:$item$$._id},$item$$).then($rs$$=>{console.log("update investment",$rs$$)})}catch($e$$){void 0!=$item$$.id_period&&null!=$item$$.id_period&&await [$item$$].asyncJoinModel2($user$$.current_id_app,assperiod,{where:{id_period:"id"},
18
+ fields:"ten_ky_han ky_han id_product gia lai_suat_cam_ket lai_suat_truoc_han cho_phep_rut_von cho_phep_chuyen_nhuong denom tg_xu_ly_rut_von co_phan id_rpt ky_tinh_lai goi_dau_tu tru_lai_da_tra".split(" ")}),void 0!=$item$$.id_product&&null!=$item$$.id_product&&await [$item$$].asyncJoinModel2($user$$.current_id_app,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham","logo","hinh_anh",{product_token:"token"},{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},
19
+ {tong_so_token_phat_hanh:"tong_so_token"}]}),$item$$.tong_gia_tri=$item$$.gia*$item$$.so_luong,$item$$.lai_du_tinh=Math.round($item$$.lai_suat_cam_ket/365/100*$item$$.tong_gia_tri*$item$$.ky_han,0),$item$$.tong_gia_tri_dao_han=$item$$.tong_gia_tri+$item$$.lai_du_tinh,model.updateMany({_id:$item$$._id},$item$$).then($rs$$=>{console.log("update investment",$rs$$)})}try{$item$$.goi_dau_tu&&($item$$.market_value=await model.getInvestmentMarketValue($item$$.id_app,$item$$.token))}catch($e$$){console.error($e$$)}},
20
+ async()=>{await $items$$.asyncJoinModel2(null,trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"ASSINVESTMENT"}),fields:["ten_trang_thai","color"]}]);await $items$$.asyncJoinModel2($user$$.current_id_app,customer,[{where:$a$$=>({of_user:$a$$.user_created}),fields:["ma_kh","ten_kh"]}]);await $items$$.asyncJoinModel2($user$$.current_id_app,pt1,[{where:$a$$=>({id_assinvestment:$a$$._id}),fields:[{id_pt1:"_id"},{ma_ct_pt1:"ma_ct"}]}]);$next$$(null,$items$$)})},onCreating:async($user$$,$obj$$,
21
+ $next$$)=>{const $period$$=await assperiod.findOne({id_app:$user$$.current_id_app,id:$obj$$.id_period}).lean();if(!$period$$)return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 kh\u00f4ng t\u1ed3n t\u1ea1i");if($period$$.goi_dau_tu&&$period$$.frm_step_code){var $frm_frm_step$$=await global.getModel("financialroadmap").findOne({id_app:$period$$.id_app,code:$period$$.id_product.toString()}).lean();if(!$frm_frm_step$$)return $next$$("L\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh cho g\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");
22
+ $frm_frm_step$$=($frm_frm_step$$.steps||[]).find($s$$=>$s$$.code===$period$$.frm_step_code);if(!$frm_frm_step$$)return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i trong l\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh");if("5"==$frm_frm_step$$.trang_thai)return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y \u0111\u00e3 ho\u00e0n th\u00e0nh k\u00eau g\u1ecdi v\u1ed1n");if("4"!=$frm_frm_step$$.trang_thai)return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y ch\u01b0a c\u00f3 hi\u1ec7u l\u1ef1c")}if("1"!==
23
+ $obj$$.trang_thai)return $next$$(null,$obj$$);createTx($user$$.current_id_app,$user$$.token,{values:{creator:$obj$$.creator,idPeriod:Number($obj$$.id_period),soLuong:Number($obj$$.so_luong)},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateInvestment",from_address:$obj$$.creator,memo:"\u0110\u1ea7u t\u01b0"}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog||
24
+ $rs$$)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;if(void 0!==$id$$){$obj$$.id=$id$$;let $ivs$$=await bcQuery("investment/"+$id$$);$obj$$.token=$ivs$$.Investment.token;$obj$$.ngay_dao_han=Number($ivs$$.Investment.ngayDaoHan)?new Date(1E3*Number($ivs$$.Investment.ngayDaoHan)):null;$obj$$.ngay_phat_hanh=new Date(1E3*Number($ivs$$.Investment.ngayPhatHanh));
25
+ $obj$$.id_product=$ivs$$.Investment.idProduct;$obj$$.product_token=$ivs$$.Investment.productToken;$obj$$.gia=Number($ivs$$.Investment.gia);$obj$$.tong_gia_tri=$obj$$.gia*$obj$$.so_luong;$obj$$.lai_suat_cam_ket=Number($ivs$$.Investment.laiSuatCamKet);$obj$$.lai_suat_truoc_han=Number($ivs$$.Investment.laiSuatTruocHan);$obj$$.ky_han=Number($ivs$$.Investment.kyHan);$obj$$.cho_phep_rut_von=$ivs$$.Investment.choPhepRutVon;$obj$$.cho_phep_chuyen_nhuong=$ivs$$.Investment.choPhepChuyenNhuong;$obj$$.denom=
26
+ $ivs$$.Investment.denom;$obj$$.da_dao_han=$ivs$$.Investment.daDaoHan;$obj$$.tg_xu_ly_rut_von=Number($ivs$$.Investment.tgXuLyRutVon);$obj$$.co_phan=$ivs$$.Investment.coPhan;tinhHoaHong($obj$$);$next$$(null,$obj$$)}else console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 \u0111\u1ea7u t\u01b0 cho k\u1ef3 h\u1ea1n n\u00e0y")}catch($e$$){console.error($e$$),$next$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})}});$contr_router$$.deleting=function($user$$,
27
+ $obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 x\u00f3a");$fn$$(null,$obj$$)};$contr_router$$.updating=async function($user$$,$data$$,$obj$$,$fn$$){if($data$$.trang_thai&&"1"!==$data$$.trang_thai)return $fn$$(null,$data$$,$obj$$);if("1"!==$obj$$.trang_thai&&"1"===$data$$.trang_thai){$data$$.id_period=$data$$.id_period||$obj$$.id_period;const $period$$=await assperiod.findOne({id_app:$user$$.current_id_app,id:$data$$.id_period}).lean();if(!$period$$)return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 kh\u00f4ng t\u1ed3n t\u1ea1i");
28
+ if($period$$.goi_dau_tu&&$period$$.frm_step_code){var $frm$jscomp$1_frm_step$$=await global.getModel("financialroadmap").findOne({id_app:$period$$.id_app,code:$period$$.id_product.toString()}).lean();if(!$frm$jscomp$1_frm_step$$)return $fn$$("L\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh cho g\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$frm$jscomp$1_frm_step$$=($frm$jscomp$1_frm_step$$.steps||[]).find($s$$=>$s$$.code===$period$$.frm_step_code);if(!$frm$jscomp$1_frm_step$$)return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i trong l\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh");
29
+ if("5"==$frm$jscomp$1_frm_step$$.trang_thai)return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y \u0111\u00e3 ho\u00e0n th\u00e0nh k\u00eau g\u1ecdi v\u1ed1n");if("4"!=$frm$jscomp$1_frm_step$$.trang_thai)return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y ch\u01b0a c\u00f3 hi\u1ec7u l\u1ef1c")}createTx($user$$.current_id_app,$user$$.token,{values:{creator:$data$$.creator||$obj$$.creator,idPeriod:Number($data$$.id_period||$obj$$.id_period),soLuong:Number($data$$.so_luong||$obj$$.so_luong)},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateInvestment",
30
+ from_address:$data$$.creator||$obj$$.creator,memo:"\u0110\u1ea7u t\u01b0",username:$user$$.email}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $fn$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $fn$$($rs$$.rawLog||$rs$$)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>
31
+ "id"===$a$$.key)||{}).value;if(void 0!==$id$$){$data$$.id=$id$$;let $ivs$$=await bcQuery("investment/"+$id$$);$data$$.token=$ivs$$.Investment.token;$data$$.ngay_dao_han=Number($ivs$$.Investment.ngayDaoHan)?new Date(1E3*Number($ivs$$.Investment.ngayDaoHan)):null;$data$$.ngay_phat_hanh=new Date(1E3*Number($ivs$$.Investment.ngayPhatHanh));$data$$.id_product=$ivs$$.Investment.idProduct;$data$$.product_token=$ivs$$.Investment.productToken;$data$$.gia=Number($ivs$$.Investment.gia);$data$$.so_luong=Number($ivs$$.Investment.soLuong);
32
+ $data$$.tong_gia_tri=$data$$.gia*$data$$.so_luong;$data$$.lai_suat_cam_ket=Number($ivs$$.Investment.laiSuatCamKet);$data$$.lai_suat_truoc_han=Number($ivs$$.Investment.laiSuatTruocHan);$data$$.key_han=Number($ivs$$.Investment.kyHan);$data$$.cho_phep_rut_von=$ivs$$.Investment.choPhepRutVon;$data$$.cho_phep_chuyen_nhuong=$ivs$$.Investment.choPhepChuyenNhuong;$data$$.denom=$ivs$$.Investment.denom;$data$$.da_dao_han=$ivs$$.Investment.daDaoHan;$data$$.tg_xu_ly_rut_von=Number($ivs$$.Investment.tgXuLyRutVon);
33
+ $data$$.co_phan=$ivs$$.Investment.coPhan;$obj$$.gia=$data$$.gia;$obj$$.so_luong=$data$$.so_luong;$obj$$.tong_gia_tri=$data$$.tong_gia_tri;tinhHoaHong($obj$$);$fn$$(null,$data$$,$obj$$)}else console.error($tx$$),$fn$$("Kh\u00f4ng th\u1ec3 \u0111\u1ea7u t\u01b0 cho k\u1ef3 h\u1ea1n n\u00e0y")}catch($e$$){console.error($e$$),$fn$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$fn$$($e$$.message||$e$$.error||$e$$)})}else return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")};$contr_router$$.route()};
@@ -8,14 +8,15 @@ $items$$,$next$$)=>{await $items$$.asyncJoinModel2(null,User,{where:{username:"e
8
8
  $wallet$$=await DirectSecp256k1HdWallet.fromMnemonic($obj$$.mnemonic,{prefix:configs.ADDRESS_PREFIX})}else $wallet$$=await DirectSecp256k1HdWallet.generate(24,{prefix:configs.ADDRESS_PREFIX});let $accounts$$=await $wallet$$.getAccounts();$obj$$.address=$accounts$$[0].address;$obj$$.mnemonic=$wallet$$.mnemonic;$next$$(null,$obj$$)}catch($e$$){$next$$($e$$.message||$e$$.error||$e$$)}};$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created&&!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("Can't delete this key");
9
9
  global.client_cosmos=global.client_cosmos||{};delete global.client_cosmos[$obj$$._id.toString()];Receiver.deleteMany({address:$obj$$.address});$fn$$(null,$obj$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){$fn$$("Can't update this wallet")};$contr_router$$.createRoute(":address/balance",async($req$$,$fn$$)=>{let $address$$=$req$$.params.address,$w$$=await model.findOne({address:$address$$}).lean();if(!$w$$||!$w$$.asset||"BTC"!=$w$$.asset&&"ETH"!=$w$$.asset)try{const $bls$$=await bankBalancesGet($address$$);
10
10
  await $bls$$.filter($b$$=>$b$$.denom!==configs.MAIN_DENOM).asyncJoinModel2($req$$.user.current_id_app,assinvestment,{where:{denom:"token"},asyncSetFields:async($item$$,$investment_ref$$,$callback$$)=>{$item$$.price=$investment_ref$$.gia;$investment_ref$$={...$investment_ref$$};await [$investment_ref$$].asyncJoinModel2($req$$.user.current_id_app,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham","logo","hinh_anh",{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},
11
- {tong_so_token_phat_hanh:"tong_so_token"}]});await [$investment_ref$$].asyncJoinModel2($req$$.user.current_id_app,assperiod,{where:{id_period:"id",id_product:"id_product"},fields:"ten_lh_dt ten_ky_han id_rpt ky_han ky_tinh_lai loi_nhuan_duoc_chia goi_dau_tu".split(" ")});$investment_ref$$.wallet_address=$address$$;$investment_ref$$.so_luong=$item$$.amount;$investment_ref$$.con_lai=$item$$.amount;$investment_ref$$.tong_gia_tri=$investment_ref$$.so_luong*$investment_ref$$.gia;$investment_ref$$.lai_du_tinh=
12
- Math.round($investment_ref$$.lai_suat_cam_ket/365/100*$investment_ref$$.tong_gia_tri*$investment_ref$$.ky_han);$investment_ref$$.tong_gia_tri_dao_han=$investment_ref$$.tong_gia_tri+$investment_ref$$.lai_du_tinh;$investment_ref$$.ky_han&&!$investment_ref$$.co_phan?($investment_ref$$.so_ngay_hien_tai=Math.round(((new Date).getTime()-(new Date($investment_ref$$.ngay_phat_hanh)).getTime())/864E5),$investment_ref$$.tien_lai_hien_tai=Math.round(($investment_ref$$.lai_suat_cam_ket||0)/365/100*$investment_ref$$.so_ngay_hien_tai*
13
- $investment_ref$$.tong_gia_tri),$investment_ref$$.tien_lai_truoc_han_hien_tai=Math.round(($investment_ref$$.lai_suat_truoc_han||0)/365/100*$investment_ref$$.so_ngay_hien_tai*$investment_ref$$.tong_gia_tri)):($investment_ref$$.tien_lai_hien_tai=0,$investment_ref$$.so_ngay_hien_tai=0);$investment_ref$$.gia_ban_de_xuat=$investment_ref$$.so_luong?Math.round(($investment_ref$$.tong_gia_tri+$investment_ref$$.tien_lai_hien_tai)/$investment_ref$$.so_luong):0;if($investment_ref$$.goi_dau_tu)try{$investment_ref$$.market_value=
14
- await assinvestment.getInvestmentMarketValue($investment_ref$$.id_app,$investment_ref$$.token)}catch($e$$){console.error($e$$)}$item$$.investment=$investment_ref$$;$callback$$()}});$bls$$.forEach($r$$=>{$r$$.amount=Number($r$$.amount);$r$$.price=$r$$.price||1;$r$$.value=$r$$.price*$r$$.amount;delete $r$$.key});$fn$$(null,$bls$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}else try{let $r$$={amount:await (new (require("send-crypto"))($w$$.private_key)).getBalance($w$$.asset.toUpperCase()),
15
- denom:$w$$.asset.toLowerCase()};const $price$$=await getPrice($w$$.asset.toLowerCase());$r$$.amount=Number($r$$.amount);$r$$.price=$price$$||0;$r$$.value=$r$$.price*$r$$.amount;$fn$$(null,[$r$$])}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});const $handleResult$$=$assreq_data$$=>{$assreq_data$$._id&&($assreq_data$$.trans_id=$assreq_data$$._id.toString());delete $assreq_data$$.trang_thai;delete $assreq_data$$._id;delete $assreq_data$$.__v;
16
- delete $assreq_data$$.transaction;delete $assreq_data$$.id_app;delete $assreq_data$$.exfields;delete $assreq_data$$.status;delete $assreq_data$$.date_created;delete $assreq_data$$.date_updated;delete $assreq_data$$.user_created;delete $assreq_data$$.user_updated;return $assreq_data$$},$permission$$=require("../../libs/permission");$contr_router$$.createRoute("spend",async($req$$,$fn$$)=>{let $data$$=$req$$.body;const $address$$=$data$$.from,$to_address$$=$data$$.to||$data$$.receiver_address;let {denom:$denom$$,
17
- amount:$amount$$,memo:$memo$$}=$data$$;if(!($address$$&&$to_address$$&&$denom$$&&$amount$$))return $fn$$({error:"Data miss 'from' or 'to' or 'denom' or 'amount'"});if($address$$===$to_address$$)return $fn$$({error:"\u0110\u1ecba ch\u1ec9 v\u00ed g\u1eedi v\u00e0 nh\u1eadn ph\u1ea3i kh\u00e1c nhau"});try{await $permission$$.verifyOTP($req$$.user.email,$data$$["otp-id"],$data$$["otp-code"])}catch($e$$){return $fn$$({error:$e$$.message||$e$$.error||$e$$,code:4001})}let $assreq$$;if($data$$.assrequest_id){if(!global.mongoose.Types.ObjectId.isValid($data$$.assrequest_id))return $fn$$({error:"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7"});
18
- $assreq$$=await assrequest.findOne({_id:$data$$.assrequest_id,amount:$amount$$,denom:$denom$$,receiver_address:$to_address$$,request_id:$data$$.request_id,order_id:$data$$.order_id});if(!$assreq$$)return $fn$$({error:"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7"});if("1"===$assreq$$.trang_thai)return $fn$$({error:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n"});if("9"===$assreq$$.trang_thai)return $fn$$({error:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb h\u1ee7y"});
11
+ {tong_so_token_phat_hanh:"tong_so_token"}]});await [$investment_ref$$].asyncJoinModel2($req$$.user.current_id_app,assperiod,{where:{id_period:"id",id_product:"id_product"},fields:"ten_lh_dt ten_ky_han id_rpt ky_han ky_tinh_lai loi_nhuan_duoc_chia goi_dau_tu tru_lai_da_tra".split(" ")});$investment_ref$$.wallet_address=$address$$;let $tong_so_luong$$=$investment_ref$$.so_luong;$investment_ref$$.so_luong=$item$$.amount;$investment_ref$$.con_lai=$item$$.amount;$investment_ref$$.lai_da_tra&&0<$tong_so_luong$$&&
12
+ ($investment_ref$$.lai_da_tra_1_token=Math.round($investment_ref$$.lai_da_tra/$tong_so_luong$$),$investment_ref$$.lai_da_tra=$investment_ref$$.lai_da_tra_1_token*$investment_ref$$.con_lai);$investment_ref$$.tong_gia_tri=$investment_ref$$.so_luong*$investment_ref$$.gia;$investment_ref$$.lai_du_tinh=Math.round($investment_ref$$.lai_suat_cam_ket/365/100*$investment_ref$$.tong_gia_tri*$investment_ref$$.ky_han);$investment_ref$$.tong_gia_tri_dao_han=$investment_ref$$.tong_gia_tri+$investment_ref$$.lai_du_tinh;
13
+ $investment_ref$$.ky_han&&!$investment_ref$$.co_phan?($investment_ref$$.so_ngay_hien_tai=Math.round(((new Date).getTime()-(new Date($investment_ref$$.ngay_phat_hanh)).getTime())/864E5),$investment_ref$$.tien_lai_hien_tai=Math.round(($investment_ref$$.lai_suat_cam_ket||0)/365/100*$investment_ref$$.so_ngay_hien_tai*$investment_ref$$.tong_gia_tri),$investment_ref$$.tien_lai_truoc_han_hien_tai=Math.round(($investment_ref$$.lai_suat_truoc_han||0)/365/100*$investment_ref$$.so_ngay_hien_tai*$investment_ref$$.tong_gia_tri)):
14
+ ($investment_ref$$.tien_lai_hien_tai=0,$investment_ref$$.so_ngay_hien_tai=0);$investment_ref$$.gia_ban_de_xuat=$investment_ref$$.so_luong?Math.round(($investment_ref$$.tong_gia_tri+$investment_ref$$.tien_lai_hien_tai)/$investment_ref$$.so_luong):0;if($investment_ref$$.goi_dau_tu)try{$investment_ref$$.market_value=await assinvestment.getInvestmentMarketValue($investment_ref$$.id_app,$investment_ref$$.token)}catch($e$$){console.error($e$$)}$item$$.investment=$investment_ref$$;$callback$$()}});$bls$$.forEach($r$$=>
15
+ {$r$$.amount=Number($r$$.amount);$r$$.price=$r$$.price||1;$r$$.value=$r$$.price*$r$$.amount;delete $r$$.key});$fn$$(null,$bls$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}else try{let $r$$={amount:await (new (require("send-crypto"))($w$$.private_key)).getBalance($w$$.asset.toUpperCase()),denom:$w$$.asset.toLowerCase()};const $price$$=await getPrice($w$$.asset.toLowerCase());$r$$.amount=Number($r$$.amount);$r$$.price=$price$$||0;$r$$.value=
16
+ $r$$.price*$r$$.amount;$fn$$(null,[$r$$])}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});const $handleResult$$=$assreq_data$$=>{$assreq_data$$._id&&($assreq_data$$.trans_id=$assreq_data$$._id.toString());delete $assreq_data$$.trang_thai;delete $assreq_data$$._id;delete $assreq_data$$.__v;delete $assreq_data$$.transaction;delete $assreq_data$$.id_app;delete $assreq_data$$.exfields;delete $assreq_data$$.status;delete $assreq_data$$.date_created;
17
+ delete $assreq_data$$.date_updated;delete $assreq_data$$.user_created;delete $assreq_data$$.user_updated;return $assreq_data$$},$permission$$=require("../../libs/permission");$contr_router$$.createRoute("spend",async($req$$,$fn$$)=>{let $data$$=$req$$.body;const $address$$=$data$$.from,$to_address$$=$data$$.to||$data$$.receiver_address;let {denom:$denom$$,amount:$amount$$,memo:$memo$$}=$data$$;if(!($address$$&&$to_address$$&&$denom$$&&$amount$$))return $fn$$({error:"Data miss 'from' or 'to' or 'denom' or 'amount'"});
18
+ if($address$$===$to_address$$)return $fn$$({error:"\u0110\u1ecba ch\u1ec9 v\u00ed g\u1eedi v\u00e0 nh\u1eadn ph\u1ea3i kh\u00e1c nhau"});try{await $permission$$.verifyOTP($req$$.user.email,$data$$["otp-id"],$data$$["otp-code"])}catch($e$$){return $fn$$({error:$e$$.message||$e$$.error||$e$$,code:4001})}let $assreq$$;if($data$$.assrequest_id){if(!global.mongoose.Types.ObjectId.isValid($data$$.assrequest_id))return $fn$$({error:"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7"});$assreq$$=
19
+ await assrequest.findOne({_id:$data$$.assrequest_id,amount:$amount$$,denom:$denom$$,receiver_address:$to_address$$,request_id:$data$$.request_id,order_id:$data$$.order_id});if(!$assreq$$)return $fn$$({error:"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7"});if("1"===$assreq$$.trang_thai)return $fn$$({error:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n"});if("9"===$assreq$$.trang_thai)return $fn$$({error:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb h\u1ee7y"});
19
20
  $memo$$=$memo$$||$data$$.order_info}try{const $rs$$=await spend($req$$.user.current_id_app,$req$$.user.token,$address$$,$to_address$$,{denom:$denom$$,amount:$amount$$,memo:$memo$$});if($rs$$.code)return 5===$rs$$.code?$fn$$({error:"B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"}):$fn$$({error:$rs$$.rawLog});let $walletReceiver$$=await model.findOne({id_app:$req$$.user.current_id_app,address:$to_address$$});if($walletReceiver$$){let $_userReceiver$$=
20
21
  await User.findOne({email:$walletReceiver$$.username});Receiver.findOne({id_app:$req$$.user.current_id_app,address:$to_address$$,user_created:$req$$.user.email},($e$$,$rs$$)=>{$rs$$||Receiver.create({id_app:$req$$.user.current_id_app,name:$data$$.name||($_userReceiver$$||{}).name,address:$to_address$$,user_created:$req$$.user.email})})}if($assreq$$){$assreq$$.trang_thai="1";$assreq$$.sender_address=$address$$;$assreq$$.sender_name=$data$$.sender_name||$req$$.user.name;$assreq$$.sender_user=$req$$.user.email;
21
22
  $assreq$$.sender_date=new Date;$assreq$$.transaction=$rs$$;$assreq$$.date_updated=new Date;await $assreq$$.save();controller.pushNotification(global.controllers.ASSREQUEST,$assreq$$);const $assreq_data$$=$assreq$$.toObject();$assreq_data$$.is_success=!0;$assreq_data$$.message="Giao d\u1ecbch th\u00e0nh c\u00f4ng";return $fn$$(null,$handleResult$$($assreq_data$$))}$fn$$(null,$rs$$)}catch($e$$){console.error($e$$),$fn$$({error:$e$$.message||$e$$.error||$e$$})}},{method:"POST"});$contr_router$$.createRoute(":address/info",
@@ -4,9 +4,9 @@ $ivs$$.NeedToBuy.soLuongDaMua;$item$jscomp$0$$.so_luong_con_lai=$ivs$$.NeedToBuy
4
4
  "denom",{gia_goc:"gia"},"lai_suat_cam_ket","lai_suat_truoc_han","ky_han","co_phan","ky_tinh_lai"]});void 0!=$item$jscomp$0$$.id_product&&null!=$item$jscomp$0$$.id_product&&await [$item$jscomp$0$$].asyncJoinModel2($user$$.current_id_app,AssProduct,{where:{id_product:"id"},fields:["ten_san_pham","hinh_anh","logo","ma_loai",{product_token:"token"}]});model.updateMany({_id:$item$jscomp$0$$._id},$item$jscomp$0$$).then($rs$$=>{console.log("update needtobuy",$rs$$)})}catch($e$$){console.error("view assneedtobuy",
5
5
  $e$$),$e$$.message&&"3"==$e$$.message.code&&(model.deleteOne({_id:$item$jscomp$0$$._id}).then(()=>{console.log("deleted needtoby",$item$jscomp$0$$)}),$item$jscomp$0$$.not_found=!0)}},async()=>{$items$$=$items$$.filter($i$$=>!$i$$.not_found);await $items$$.asyncJoinModel2(null,Trangthai,{where:$item$$=>({ma_ct:"ASSNEEDTOBUY",ma_trang_thai:$item$$.trang_thai}),fields:["ten_trang_thai","color"]});$next$$(null,$items$$)})},onCreating:async($user$$,$obj$$,$next$$)=>{var $data_from_address$$=$obj$$.creator;
6
6
  $data_from_address$$={values:{creator:$obj$$.creator,idPeriod:Number($obj$$.id_period),soLuong:Number($obj$$.so_luong),thoiGianConLai:86400*Number($obj$$.thoi_gian_con_lai),giaMua:Number($obj$$.gia_mua),denom:$obj$$.denom,ngayHetHan:(new Date($obj$$.ngay_het_han)).getTime()/1E3},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateNeedToBuy",from_address:$data_from_address$$,memo:"\u0110\u1eb7t l\u1ec7nh mua"};createTx($user$$.current_id_app,$user$$.token,$data_from_address$$).then(async $rs$$=>{if($rs$$.code){if(5===
7
- $rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 token \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;void 0!==$id$$?($obj$$.id=$id$$,$next$$(null,$obj$$)):(console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"))}catch($e$$){console.error($e$$),
7
+ $rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 token \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog||$rs$$)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;void 0!==$id$$?($obj$$.id=$id$$,$next$$(null,$obj$$)):(console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"))}catch($e$$){console.error($e$$),
8
8
  $next$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})}});$contr_router$$.deleting=function($user$$,$obj$$,$next$$){if($user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n x\u00f3a");createTx($user$$.current_id_app,$user$$.token,{values:{creator:$obj$$.creator,id:Number($obj$$.id)},typeUrl:"/pvtruong.flexzen.flexzen.MsgDeleteNeedToBuy",from_address:$obj$$.creator,memo:"Hu\u1ef7 l\u1ec7nh mua"}).then(async $rs$$=>
9
- {if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog)}$next$$(null,$obj$$)}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$next$$){if($user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");if(void 0!=$data$$.id_period&&
9
+ {if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog||$rs$$)}$next$$(null,$obj$$)}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$next$$){if($user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");if(void 0!=$data$$.id_period&&
10
10
  $data$$.id_period!==$obj$$.id_period)return $next$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt g\u00f3i \u0111\u1ea7u t\u01b0");var $data_update$jscomp$1_from_address$$=$data$$.creator;$data_update$jscomp$1_from_address$$={values:{creator:$data$$.creator,id:Number(void 0==$data$$.id?$obj$$.id:$data$$.id),soLuong:Number(void 0==$data$$.so_luong?$obj$$.so_luong:$data$$.so_luong),thoiGianConLai:86400*Number(void 0==$data$$.thoi_gian_con_lai?$obj$$.thoi_gian_con_lai:$data$$.thoi_gian_con_lai),giaMua:Number($data$$.gia_mua||
11
11
  $obj$$.gia_mua),denom:$data$$.denom||$obj$$.denom,ngayHetHan:(new Date($data$$.ngay_het_han||$obj$$.ngay_het_han)).getTime()/1E3},typeUrl:"/pvtruong.flexzen.flexzen.MsgUpdateNeedToBuy",from_address:$data_update$jscomp$1_from_address$$,memo:"C\u1eadp nh\u1eadt l\u1ec7nh mua"};createTx($user$$.current_id_app,$user$$.token,$data_update$jscomp$1_from_address$$).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");
12
- console.error($rs$$);return $next$$($rs$$.rawLog)}$next$$(null,$data$$,$obj$$)}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
12
+ console.error($rs$$);return $next$$($rs$$.rawLog||$rs$$)}$next$$(null,$data$$,$obj$$)}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
@@ -6,7 +6,7 @@ $item$$.frm_step_code&&($frm_ivs$$=await global.getModel("financialroadmap").fin
6
6
  ({ma_trang_thai:$a$$.trang_thai,ma_ct:"ASSPERIOD"}),fields:["ten_trang_thai","color"]}],function(){$next$$(null,$items$$)})})},onCreating:async($user$$,$obj$$,$next$$)=>{if("9"===$obj$$.trang_thai)return $next$$(null,$obj$$);var $data_from_address$$=$obj$$.creator;$data_from_address$$={values:{creator:$obj$$.creator,idProduct:Number($obj$$.id_product),laiSuatCamKet:Number($obj$$.lai_suat_cam_ket),laiSuatTruocHan:Number($obj$$.lai_suat_truoc_han),kyHan:Number($obj$$.ky_han),choPhepRutVon:$obj$$.cho_phep_rut_von,
7
7
  choPhepChuyenNhuong:$obj$$.cho_phep_chuyen_nhuong,hoatDong:$obj$$.hoat_dong,gia:Number($obj$$.gia),denom:$obj$$.denom,tgXuLyRutVon:$obj$$.tg_xu_ly_rut_von||0,tongSoToken:Number($obj$$.tong_so_token||0),kyTinhLai:Number($obj$$.ky_tinh_lai||0),loiNhuanDuocChia:Number($obj$$.loi_nhuan_duoc_chia||0),ngayChiaLoiNhuan:$obj$$.ngay_chia_loi_nhuan?(new Date($obj$$.ngay_chia_loi_nhuan)).getTime()/1E3:0,goiDauTu:$obj$$.goi_dau_tu||!1,laiSuatTangThemSoHuuToken:Number($obj$$.lai_suat_tang_them_so_huu_token||0),
8
8
  tokenSoHuu:$obj$$.token_so_huu||"",soLuongSoHuu:Number($obj$$.so_luong_so_huu||0),soNgayDauTuToiThieu:Number($obj$$.so_ngay_dau_tu_toi_thieu||0),truLaiDaTra:$obj$$.tru_lai_da_tra||!1,laiSuatThoiGianConLai:Number($obj$$.lai_suat_thoi_gian_con_lai||0)},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreatePeriod",from_address:$data_from_address$$};createTx($user$$.current_id_app,$user$$.token,$data_from_address$$).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");
9
- console.error($rs$$);return $next$$({error:$rs$$.rawLog})}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;void 0!==$id$$?($obj$$.id=$id$$,$next$$(null,$obj$$)):(console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 t\u1ea1o k\u1ef3 h\u1ea1n cho s\u1ea3n ph\u1ea9m n\u00e0y"))}catch($e$$){console.error($e$$),$next$$($e$$.message||$e$$.error||
9
+ console.error($rs$$);return $next$$($rs$$.rawLog||$rs$$)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;void 0!==$id$$?($obj$$.id=$id$$,$next$$(null,$obj$$)):(console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 t\u1ea1o k\u1ef3 h\u1ea1n cho s\u1ea3n ph\u1ea9m n\u00e0y"))}catch($e$$){console.error($e$$),$next$$($e$$.message||$e$$.error||
10
10
  $e$$)}}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n x\u00f3a");$fn$$(null,$obj$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created)return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");if($data$$.creator&&$data$$.creator!==$obj$$.creator)return $fn$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eeda \u0111\u1ecba ch\u1ec9 v\u00ed ng\u01b0\u1eddi t\u1ea1o");
11
11
  if("9"==$data$$.trang_thai&&"9"!=$obj$$.trang_thai)return $fn$$("Kh\u00f4ng th\u1ec3 chuy\u1ec3n v\u1ec1 tr\u1ea1ng th\u00e1i ch\u01b0a \u0111\u01b0\u1ee3c ph\u00e1t h\u00e0nh t\u1eeb tr\u1ea1ng th\u00e1i \u0111\u00e3 \u0111\u01b0\u1ee3c ph\u00e1t h\u00e0nh");if("9"==$data$$.trang_thai)return $fn$$(null,$data$$,$obj$$);$data$$.ngay_chia_loi_nhuan=$data$$.ngay_chia_loi_nhuan||$obj$$.ngay_chia_loi_nhuan;void 0==$data$$.lai_suat_tang_them_so_huu_token&&($data$$.lai_suat_tang_them_so_huu_token=$obj$$.lai_suat_tang_them_so_huu_token);
12
12
  void 0==$data$$.token_so_huu&&($data$$.token_so_huu=$obj$$.token_so_huu);void 0==$data$$.so_luong_so_huu&&($data$$.so_luong_so_huu=$obj$$.so_luong_so_huu);void 0==$data$$.tru_lai_da_tra&&($data$$.tru_lai_da_tra=$obj$$.tru_lai_da_tra);void 0==$data$$.laiSuatThoiGianConLai&&($data$$.laiSuatThoiGianConLai=$obj$$.laiSuatThoiGianConLai);let $from_address$$=$obj$$.creator,$typeUrl$$,$values$$;"9"===$obj$$.trang_thai?($typeUrl$$="/pvtruong.flexzen.flexzen.MsgCreatePeriod",$values$$={creator:$obj$$.creator,
@@ -16,4 +16,4 @@ gia:Number($data$$.gia||$obj$$.gia),denom:$data$$.denom||$obj$$.denom,tgXuLyRutV
16
16
  {creator:$obj$$.creator,id:Number($obj$$.id),idProduct:Number($data$$.id_product||$obj$$.id_product),laiSuatCamKet:$data$$.lai_suat_cam_ket||$obj$$.lai_suat_cam_ket,laiSuatTruocHan:$data$$.lai_suat_truoc_han||$obj$$.lai_suat_truoc_han,kyHan:$data$$.ky_han||$obj$$.ky_han,choPhepRutVon:void 0!=$data$$.cho_phep_rut_von?$data$$.cho_phep_rut_von:$obj$$.cho_phep_rut_von,choPhepChuyenNhuong:void 0!=$data$$.cho_phep_chuyen_nhuong?$data$$.cho_phep_chuyen_nhuong:$obj$$.cho_phep_chuyen_nhuong,hoatDong:void 0!=
17
17
  $data$$.hoat_dong?$data$$.hoat_dong:$obj$$.hoat_dong,tgXuLyRutVon:(void 0!=$data$$.tg_xu_ly_rut_von?$data$$.tg_xu_ly_rut_von:$obj$$.tg_xu_ly_rut_von)||0,tongSoToken:(void 0!=$data$$.tong_so_token?$data$$.tong_so_token:$obj$$.tong_so_token)||0,loiNhuanDuocChia:Number(void 0==$data$$.loi_nhuan_duoc_chia?$obj$$.loi_nhuan_duoc_chia:$data$$.loi_nhuan_duoc_chia),ngayChiaLoiNhuan:$data$$.ngay_chia_loi_nhuan?(new Date($data$$.ngay_chia_loi_nhuan)).getTime()/1E3:0,laiSuatTangThemSoHuuToken:Number($data$$.lai_suat_tang_them_so_huu_token||
18
18
  0),tokenSoHuu:$data$$.token_so_huu||"",soLuongSoHuu:Number($data$$.so_luong_so_huu||0),soNgayDauTuToiThieu:Number($data$$.so_ngay_dau_tu_toi_thieu||0),truLaiDaTra:$data$$.tru_lai_da_tra||!1,laiSuatThoiGianConLai:Number($data$$.lai_suat_thoi_gian_con_lai||0)});createTx($user$$.current_id_app,$user$$.token,{values:$values$$,typeUrl:$typeUrl$$,from_address:$from_address$$}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $fn$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");
19
- console.error($rs$$);return $fn$$($rs$$.rawLog)}$fn$$(null,$data$$,$obj$$)}).catch($e$$=>{console.error($e$$);$fn$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
19
+ console.error($rs$$);return $fn$$($rs$$.rawLog||$rs$$)}$fn$$(null,$data$$,$obj$$)}).catch($e$$=>{console.error($e$$);$fn$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
@@ -11,5 +11,5 @@ if($data$$.token&&$data$$.token!==$obj$jscomp$21_values$$.token)return $fn$$("Kh
11
11
  tenSanPham:$data$$.ten_san_pham||$obj$jscomp$21_values$$.ten_san_pham,mieuTa:"",tongDienTich:"",chuDauTu:$data$$.chu_dau_tu||$obj$jscomp$21_values$$.chu_dau_tu,giaTriHienTai:$data$$.gia_tri_hien_tai||$obj$jscomp$21_values$$.gia_tri_hien_tai,diaChi:$data$$.dia_chi||$obj$jscomp$21_values$$.dia_chi,hienTrang:"",viTri:"",thietKe:"",tienNghi:"",hinhAnh:"",video:"",duocChuyenThanhCP:$data$$.duoc_chuyen_thanh_cp||$obj$jscomp$21_values$$.duoc_chuyen_thanh_cp}):($memo$$="Ph\u00e1t h\u00e0nh "+$data$$.ten_san_pham||
12
12
  $obj$jscomp$21_values$$.ten_san_pham,$typeUrl$$="/pvtruong.flexzen.flexzen.MsgCreateProduct",$obj$jscomp$21_values$$={creator:$data$$.creator||$obj$jscomp$21_values$$.creator,tenSanPham:$data$$.ten_san_pham||$obj$jscomp$21_values$$.ten_san_pham,mieuTa:"",tongDienTich:"",chuDauTu:$data$$.chu_dau_tu||$obj$jscomp$21_values$$.chu_dau_tu,giaTriHienTai:$data$$.gia_tri_hien_tai||$obj$jscomp$21_values$$.gia_tri_hien_tai,diaChi:$data$$.dia_chi||$obj$jscomp$21_values$$.dia_chi,hienTrang:"",viTri:"",thietKe:"",
13
13
  tienNghi:"",hinhAnh:"",video:"",duocChuyenThanhCP:void 0==$data$$.duoc_chuyen_thanh_cp?$obj$jscomp$21_values$$.duoc_chuyen_thanh_cp:$data$$.duoc_chuyen_thanh_cp,coPhan:(void 0==$data$$.co_phan?$obj$jscomp$21_values$$.co_phan:$data$$.co_phan)||!1,token:$data$$.token||$obj$jscomp$21_values$$.token,soLuong:Number(void 0==$data$$.so_luong?$obj$jscomp$21_values$$.so_luong:$data$$.so_luong)});createTx($user$$.current_id_app,$user$$.token,{values:$obj$jscomp$21_values$$,typeUrl:$typeUrl$$,from_address:$from_address$$,
14
- memo:$memo$$}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $fn$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $fn$$($rs$$.rawLog)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;void 0!==$id$$?($data$$.id=$id$$,$fn$$(null,$data$$,$_obj$$)):
15
- (console.error($tx$$),$fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt s\u1ea3n ph\u1ea9m n\u00e0y"))}catch($e$$){console.error($e$$),$fn$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$fn$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
14
+ memo:$memo$$}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $fn$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $fn$$($rs$$.rawLog||$rs$$)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;void 0!==$id$$?($data$$.id=$id$$,$fn$$(null,$data$$,
15
+ $_obj$$)):(console.error($tx$$),$fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt s\u1ea3n ph\u1ea9m n\u00e0y"))}catch($e$$){console.error($e$$),$fn$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$fn$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
@@ -3,8 +3,8 @@ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_r
3
3
  $items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,assproduct,{where:{id_product:"id"},fields:["ten_san_pham","hinh_anh","logo","ma_loai",{product_token:"token"},"gia_tri_hien_tai","sl_nhan_vien","nganh_nghe"]});async.map($items$$.filter($item$$=>$item$$.id||0===$item$$.id),async $item$$=>{try{let $ivs$$=await bcQuery("profitsharing/"+$item$$.id);$item$$.da_chia_loi_nhuan=$ivs$$.ProfitSharing.daChiaLoiNhuan;$item$$.trang_thai=$ivs$$.ProfitSharing.status.toString();$item$$.da_chia_loi_nhuan&&
4
4
  ($item$$.trang_thai="5");model.updateMany({_id:$item$$._id},$item$$).then($rs$$=>{console.log("update sharing",$rs$$)})}catch($e$$){console.error("view assprofitsharing",$e$$)}},async()=>{$items$$.joinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"PROFITSHARING"}),fields:["ten_trang_thai","color"]}],function(){$next$$(null,$items$$)})})},onCreating:async($user$$,$obj$$,$next$$)=>{var $data_from_address$$=$obj$$.creator;$data_from_address$$={values:{creator:$obj$$.creator,
5
5
  idProduct:Number($obj$$.id_product),token:$obj$$.token||"",denom:$obj$$.denom,loiNhuanDuocChia:Number($obj$$.loi_nhuan_duoc_chia||0),ngayChiaLoiNhuan:$obj$$.ngay_chia_loi_nhuan?(new Date($obj$$.ngay_chia_loi_nhuan)).getTime()/1E3:0,status:Number($obj$$.trang_thai),idPeriod:Number($obj$$.id_period||0)},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateProfitSharing",from_address:$data_from_address$$};createTx($user$$.current_id_app,$user$$.token,$data_from_address$$).then(async $rs$$=>{if($rs$$.code){if(5===
6
- $rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$({error:$rs$$.rawLog})}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;void 0!==$id$$?($obj$$.id=$id$$,$next$$(null,$obj$$)):(console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 t\u1ea1o k\u1ef3 h\u1ea1n cho s\u1ea3n ph\u1ea9m n\u00e0y"))}catch($e$$){console.error($e$$),
6
+ $rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog||$rs$$)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;void 0!==$id$$?($obj$$.id=$id$$,$next$$(null,$obj$$)):(console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 t\u1ea1o k\u1ef3 h\u1ea1n cho s\u1ea3n ph\u1ea9m n\u00e0y"))}catch($e$$){console.error($e$$),
7
7
  $next$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n x\u00f3a");$fn$$(null,$obj$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created)return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");if($data$$.creator&&
8
8
  $data$$.creator!==$obj$$.creator)return $fn$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eeda \u0111\u1ecba ch\u1ec9 v\u00ed ng\u01b0\u1eddi t\u1ea1o");if($obj$$.da_chia_loi_nhuan)return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt y\u00eau c\u1ea7u n\u00e0y do \u0111\u00e3 \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n");$data$$.ngay_chia_loi_nhuan=$data$$.ngay_chia_loi_nhuan||$obj$$.ngay_chia_loi_nhuan;let $from_address$$=$obj$$.creator,$values$$;$values$$={creator:$obj$$.creator,id:Number($obj$$.id),
9
9
  denom:$data$$.denom||$obj$$.denom,loiNhuanDuocChia:Number(void 0==$data$$.loi_nhuan_duoc_chia?$obj$$.loi_nhuan_duoc_chia:$data$$.loi_nhuan_duoc_chia),ngayChiaLoiNhuan:$data$$.ngay_chia_loi_nhuan?(new Date($data$$.ngay_chia_loi_nhuan)).getTime()/1E3:0,status:Number(void 0==$data$$.trang_thai?$obj$$.trang_thai:$data$$.trang_thai)};createTx($user$$.current_id_app,$user$$.token,{values:$values$$,typeUrl:"/pvtruong.flexzen.flexzen.MsgUpdateProfitSharing",from_address:$from_address$$}).then(async $rs$$=>
10
- {if($rs$$.code){if(5===$rs$$.code)return $fn$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $fn$$($rs$$.rawLog)}$fn$$(null,$data$$,$obj$$)}).catch($e$$=>{console.error($e$$);$fn$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
10
+ {if($rs$$.code){if(5===$rs$$.code)return $fn$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $fn$$($rs$$.rawLog||$rs$$)}$fn$$(null,$data$$,$obj$$)}).catch($e$$=>{console.error($e$$);$fn$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
@@ -7,9 +7,9 @@ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_r
7
7
  {console.log("deleted sell",$item$jscomp$0$$)}),$item$jscomp$0$$.not_found=!0)}},async()=>{$items$$=$items$$.filter($i$$=>!$i$$.not_found);await $items$$.asyncJoinModel2(null,Trangthai,{where:$item$$=>({ma_ct:"ASSSELL",ma_trang_thai:$item$$.trang_thai}),fields:["ten_trang_thai","color"]});await $items$$.asyncJoinModel2($user$$.current_id_app,AssProduct,{where:{id_product:"id"},fields:["ten_san_pham","hinh_anh","logo","ma_loai"]});$next$$(null,$items$$)})},onCreating:async($user$$,$obj$$,$next$$)=>
8
8
  {var $app_values$$=await global.getModel("app").findOne({_id:$user$$.current_id_app}).lean();$obj$$.fee=$app_values$$.exchange_fee;$obj$$.exchange_address=$app_values$$.wallet_address;let $from_address$$=$obj$$.creator,$typeUrl$$;void 0!=$obj$$.id_need_to_buy&&null!=$obj$$.id_need_to_buy?($typeUrl$$="/pvtruong.flexzen.flexzen.MsgCreateDirectSell",$app_values$$={creator:$obj$$.creator,token:$obj$$.token,idNeedToBuy:Number($obj$$.id_need_to_buy),fee:($app_values$$.exchange_fee||0).toString(),exchangeAddress:$app_values$$.wallet_address||
9
9
  ""}):($typeUrl$$="/pvtruong.flexzen.flexzen.MsgCreateSell",$app_values$$={creator:$obj$$.creator,token:$obj$$.token,soLuong:Number($obj$$.so_luong),gia:Number($obj$$.gia_ban),denom:$obj$$.denom,ngayHetHan:(new Date($obj$$.ngay_het_han)).getTime()/1E3,buyer:$obj$$.buyer||"",fee:($app_values$$.exchange_fee||0).toString(),exchangeAddress:$app_values$$.wallet_address||""});createTx($user$$.current_id_app,$user$$.token,{values:$app_values$$,typeUrl:$typeUrl$$,from_address:$from_address$$,memo:"\u0110\u1eb7t l\u1ec7nh b\u00e1n"}).then(async $rs$$=>
10
- {if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 token \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;if(void 0!==$id$$){let $sell$$=await bcQuery("sell/"+$id$$);$obj$$.id=$id$$;$obj$$.denom=$sell$$.Sell.denom;
11
- $obj$$.gia_ban=$sell$$.Sell.gia;$obj$$.so_luong=$sell$$.Sell.soLuong;$obj$$.tong_gia_tri=$obj$$.gia_ban*$obj$$.so_luong;$obj$$.da_ban=$sell$$.Sell.daBan;$obj$$.con_lai=$sell$$.Sell.conLai;$obj$$.trang_thai=$sell$$.Sell.status;$next$$(null,$obj$$)}else console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y")}catch($e$$){console.error($e$$),$next$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})}});
12
- $contr_router$$.deleting=function($user$$,$obj$$,$next$$){if($user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n x\u00f3a");createTx($user$$.current_id_app,$user$$.token,{values:{creator:$obj$$.creator,id:Number($obj$$.id)},typeUrl:"/pvtruong.flexzen.flexzen.MsgDeleteSell",from_address:$obj$$.creator,memo:"Hu\u1ef7 l\u1ec7nh b\u00e1n"}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");
13
- console.error($rs$$);return $next$$($rs$$.rawLog)}$next$$(null,$obj$$)}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.updating=async function($user$$,$data$$,$obj$$,$next$$){if($user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");let $app$$=await global.getModel("app").findOne({_id:$user$$.current_id_app}).lean();var $data_update$jscomp$1_from_address$$=$obj$$.creator;$data_update$jscomp$1_from_address$$=
10
+ {if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 token \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog||$rs$$)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;if(void 0!==$id$$){let $sell$$=await bcQuery("sell/"+$id$$);$obj$$.id=$id$$;$obj$$.denom=
11
+ $sell$$.Sell.denom;$obj$$.gia_ban=$sell$$.Sell.gia;$obj$$.so_luong=$sell$$.Sell.soLuong;$obj$$.tong_gia_tri=$obj$$.gia_ban*$obj$$.so_luong;$obj$$.da_ban=$sell$$.Sell.daBan;$obj$$.con_lai=$sell$$.Sell.conLai;$obj$$.trang_thai=$sell$$.Sell.status;$next$$(null,$obj$$)}else console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y")}catch($e$$){console.error($e$$),$next$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||
12
+ $e$$)})}});$contr_router$$.deleting=function($user$$,$obj$$,$next$$){if($user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n x\u00f3a");createTx($user$$.current_id_app,$user$$.token,{values:{creator:$obj$$.creator,id:Number($obj$$.id)},typeUrl:"/pvtruong.flexzen.flexzen.MsgDeleteSell",from_address:$obj$$.creator,memo:"Hu\u1ef7 l\u1ec7nh b\u00e1n"}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");
13
+ console.error($rs$$);return $next$$($rs$$.rawLog||$rs$$)}$next$$(null,$obj$$)}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.updating=async function($user$$,$data$$,$obj$$,$next$$){if($user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");let $app$$=await global.getModel("app").findOne({_id:$user$$.current_id_app}).lean();var $data_update$jscomp$1_from_address$$=$obj$$.creator;$data_update$jscomp$1_from_address$$=
14
14
  {values:{creator:$obj$$.creator,id:Number($obj$$.id),soLuong:Number(void 0==$data$$.so_luong?$obj$$.so_luong:$data$$.so_luong),gia:Number($data$$.gia_ban||$obj$$.gia_ban),denom:$data$$.denom||$obj$$.denom,ngayHetHan:(new Date($obj$$.ngay_het_han)).getTime()/1E3,buyer:void 0==$data$$.buyer?$obj$$.buyer:$data$$.buyer,fee:($app$$.exchange_fee||0).toString()},typeUrl:"/pvtruong.flexzen.flexzen.MsgUpdateSell",from_address:$data_update$jscomp$1_from_address$$,memo:"C\u1eadp nh\u1eadt l\u1ec7nh b\u00e1n"};
15
- createTx($user$$.current_id_app,$user$$.token,$data_update$jscomp$1_from_address$$).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog)}$data$$.fee=$app$$.exchange_fee;$data$$.exchange_address=$app$$.wallet_address;$next$$(null,$data$$,$obj$$)}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
15
+ createTx($user$$.current_id_app,$user$$.token,$data_update$jscomp$1_from_address$$).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog||$rs$$)}$data$$.fee=$app$$.exchange_fee;$data$$.exchange_address=$app$$.wallet_address;$next$$(null,$data$$,$obj$$)}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
@@ -2,7 +2,7 @@
2
2
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"asswithdraw",{sort:{date_created:-1},notNeedRight:!0,requireOtp:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:($user$$,$items$$,$next$$)=>{async.map($items$$.filter($item$$=>$item$$.id||0===$item$$.id),async $item$$=>{try{let $wd$$=await bcQuery("withdraw/"+$item$$.id);$item$$.trang_thai=$wd$$.Withdraw.status.toString();$item$$.so_luong=Number($wd$$.Withdraw.soLuong);
3
3
  $item$$.gia=Number($wd$$.Withdraw.gia);$item$$.von=Number($wd$$.Withdraw.von);$item$$.lai_cam_ket=Number($wd$$.Withdraw.laiCamKet);$item$$.lai_thuong=Number($wd$$.Withdraw.laiThuong);$item$$.lai_suat_truoc_han=Number($wd$$.Withdraw.laiSuatTruocHan);$item$$.so_ngay_tinh_lai=Number($wd$$.Withdraw.soNgayTinhLai);$item$$.lai_truoc_han=Number($wd$$.Withdraw.laiTruocHan);$item$$.ngay=new Date(1E3*Number($wd$$.Withdraw.ngay));$item$$.denom=$wd$$.Withdraw.denom;model.updateMany({_id:$item$$._id},$item$$).then($rs$$=>
4
4
  {console.log("update withdraw",$rs$$)})}catch($e$$){console.error("view asswithdraw",$e$$)}},async()=>{await $items$$.asyncJoinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"WITHDRAW"}),fields:["ten_trang_thai","color"]}]);await $items$$.asyncJoinModel2($user$$.current_id_app,assinvestment,[{where:$a$$=>({token:$a$$.token}),fields:["ten_san_pham","product_token"]}]);$next$$(null,$items$$)})},onCreating:async($user$$,$obj$$,$next$$)=>{createTx($user$$.current_id_app,$user$$.token,
5
- {values:{creator:$obj$$.creator,token:$obj$$.token,soLuong:Number($obj$$.so_luong)},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateWithdraw",from_address:$obj$$.creator,memo:"Y\u00eau c\u1ea7u r\u00fat v\u1ed1n"}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$({error:$rs$$.rawLog})}try{let $id$$=((((((await getTxStatus($rs$$.transactionHash)).logs.find($l$$=>
5
+ {values:{creator:$obj$$.creator,token:$obj$$.token,soLuong:Number($obj$$.so_luong)},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateWithdraw",from_address:$obj$$.creator,memo:"Y\u00eau c\u1ea7u r\u00fat v\u1ed1n"}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog||$rs$$)}try{let $id$$=((((((await getTxStatus($rs$$.transactionHash)).logs.find($l$$=>
6
6
  $l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;if(void 0!==$id$$){$obj$$.id=$id$$;let $wd$$=await bcQuery("withdraw/"+$id$$);$obj$$.so_luong=Number($wd$$.Withdraw.soLuong);$obj$$.gia=Number($wd$$.Withdraw.gia);$obj$$.von=Number($wd$$.Withdraw.von);$obj$$.lai_cam_ket=Number($wd$$.Withdraw.laiCamKet);$obj$$.lai_thuong=Number($wd$$.Withdraw.laiThuong);$obj$$.ngay=new Date(1E3*Number($wd$$.Withdraw.ngay));$obj$$.denom=$wd$$.Withdraw.denom;
7
7
  $next$$(null,$obj$$)}else $next$$("Kh\u00f4ng th\u1ec3 r\u00fat v\u1ed1n")}catch($e$$){console.error($e$$),$next$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 x\u00f3a");$fn$$(null,$obj$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")};
8
8
  $contr_router$$.route()};
@@ -19,8 +19,8 @@ if(!global.backupPool){let $backupWorkerFile$$=path.dirname(path.dirname(__dirna
19
19
  $response$$.file)})});$contr_router$$.router.route($contr_router$$.route_name+"/restore/:id").post(function($req$$,$res$$){if(!$req$$.files.backup)return $res$$.status(400).send("Kh\u00f4ng t\u00ecm th\u1ea5y file backup");let $fileZip$$=$req$$.files.backup.path;console.log("data path",$fileZip$$);var $email$$=$req$$.user.email;let $id_app$$=$req$$.params.id;if(!global.restorePool){let $restoreWorkerFile$$=path.dirname(path.dirname(__dirname))+"/workers/restoreApp.js";global.restorePool=new StaticPool($restoreWorkerFile$$)}global.restorePool.exec({id:$id_app$$,
20
20
  user:$email$$,file:$fileZip$$,configs:{database:global.configs.database}},$response$$=>{$response$$.error?_Notification.createNotification($email$$,$email$$,$response$$.error,$response$$.error,null,null,!0,$req$$.access_token,!0):_Notification.createNotification($email$$,$email$$,$response$$.result,$response$$.result,null,null,!0,$req$$.access_token,!0)});$res$$.send("Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Xin ch\u1edd trong gi\u00e2y l\u00e1t")});$contr_router$$.router.route($contr_router$$.route_name+
21
21
  "/apps/:email_owner").get(function($query_req$$,$res$$){let $email$$=$query_req$$.params.email_owner;if(!underscore.contains(configs.admins,$query_req$$.user.email)&&!isSupperAdmin($query_req$$.user.email.toLowerCase()))return $res$$.status(403).send("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp t\u00ednh n\u0103ng n\u00e0y");$query_req$$={};"all"!=$email$$.toLowerCase()&&($query_req$$.user_created=$email$$);model.find($query_req$$).lean().exec(function($error$$,$apps$$){if($error$$)return $res$$.status(400).send($error$$);
22
- $apps$$.forEach(function($item$$){calcTimeExpired($item$$)});$res$$.send($apps$$)})});$contr_router$$.router.route($contr_router$$.route_name+"/remove/:id").get(async($app_req$$,$res$$)=>{var $id_app$jscomp$2_p$$=$app_req$$.params.id;let $email$$=$app_req$$.user.email;$app_req$$=await model.findOne({_id:$id_app$jscomp$2_p$$});if(!$app_req$$)return $res$$.status(400).send("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$app_req$$.participants&&($app_req$$.participants=$app_req$$.participants.filter($p$$=>
22
+ $apps$$.forEach(function($item$$){calcTimeExpired($item$$)});$res$$.send($apps$$)})});$contr_router$$.router.route($contr_router$$.route_name+"/remove/:id").get(async($app_req$$,$res$$)=>{var $id_app$jscomp$2_p$$=$app_req$$.params.id;let $email$$=$app_req$$.user.email;$app_req$$=await model.findById($id_app$jscomp$2_p$$);if(!$app_req$$)return $res$$.status(400).send("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$app_req$$.participants&&($app_req$$.participants=$app_req$$.participants.filter($p$$=>
23
23
  $p$$.email!==$email$$),$app_req$$.save(()=>{}));if($id_app$jscomp$2_p$$=await Participant.findOne({id_app:$id_app$jscomp$2_p$$,email:$email$$}))await Participant.deleteOne({_id:$id_app$jscomp$2_p$$._id}),$id_app$jscomp$2_p$$=`${$id_app$jscomp$2_p$$.name} (${$email$$}) \u0111\u00e3 r\u1eddi kh\u1ecfi c\u00f4ng ty ${$app_req$$.name}`,_Notification.createNotification($email$$,$app_req$$.user_created,$id_app$jscomp$2_p$$,$id_app$jscomp$2_p$$);$res$$.send("ok")});$contr_router$$.router.route($contr_router$$.route_name+
24
- "/join/:id/:group").get(async($req$$,$res$$)=>{let $id_app$$=$req$$.params.id,$group_id$$=$req$$.params.group,$email$$=$req$$.user.email,$user$$=$req$$.user,$app$$=await model.findOne({_id:$id_app$$});if(!$app$$)return $res$$.status(400).send("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");if(!await Participant.findOne({id_app:$id_app$$,email:$email$$})&&$group_id$$&&global.mongoose.Types.ObjectId.isValid($group_id$$))try{if(!await UserGroup.findOne({_id:$group_id$$,is_customer_group:!0}))return $res$$.status(400).send("Nh\u00f3m kh\u00e1ch h\u00e0ng kh\u00f4ng t\u1ed3n t\u1ea1i");
24
+ "/join/:id/:group").get(async($req$$,$res$$)=>{let $id_app$$=$req$$.params.id,$group_id$$=$req$$.params.group,$email$$=$req$$.user.email,$user$$=$req$$.user,$app$$=await model.findById($id_app$$);if(!$app$$)return $res$$.status(400).send("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");if(!await Participant.findOne({id_app:$id_app$$,email:$email$$})&&$group_id$$&&global.mongoose.Types.ObjectId.isValid($group_id$$))try{if(!await UserGroup.findOne({_id:$group_id$$,is_customer_group:!0}))return $res$$.status(400).send("Nh\u00f3m kh\u00e1ch h\u00e0ng kh\u00f4ng t\u1ed3n t\u1ea1i");
25
25
  Participant.createParticipant({id_app:$id_app$$,email:$email$$,name:$user$$.name,group_id:$group_id$$,active:!0},$cust$jscomp$1_e$$=>{if($cust$jscomp$1_e$$)return $res$$.status(400).send("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);
26
26
  try{Customer.asyncCreateCustomer($cust$jscomp$1_e$$)}catch($e$$){console.log("Auto create new customer with error:",$e$$.message)}$res$$.send("ok")})}catch($e$$){$res$$.status(400).send($e$$.message)}$res$$.send("ok")})};
package/server/route.js CHANGED
@@ -1,8 +1,8 @@
1
1
  'use strict';const fs=require("fs"),appModel=global.getModel("app"),listinfo=global.getModel("listinfo"),Token=global.getModel("token"),express=require("express"),underscore=require("underscore"),passport=require("passport"),path=require("path"),async=require("async"),gm=require("gm").subClass({imageMagick:!0});
2
2
  module.exports=async function($app$$,$cb$$=()=>{},$limiter$jscomp$2_limiter$$=!1){var $createRateLimiterMiddleware_limiter_others$$=global.createRateLimiterMiddleware;const $router$$=global.routerAPI=express.Router();!0!==$limiter$jscomp$2_limiter$$&&(configs.trust_proxy&&$app$$.enable("trust proxy",!0),require("./auths/google")($app$$,passport),require("./auths/facebook")($app$$,passport),require("./auths/local")($app$$,passport),require("./auths/bearer")(passport),$router$$.use(function($req$$,
3
3
  $res$$,$next$$){for(let $key$$ in $req$$.query)"true"==$req$$.query[$key$$]&&($req$$.query[$key$$]=!0),"false"==$req$$.query[$key$$]&&($req$$.query[$key$$]=!1);let $access_token$$=$req$$.query.access_token;$access_token$$||($access_token$$=$req$$.get("X-Access-Token"));if($access_token$$){$req$$.query.access_token=$access_token$$;const $send$$=$res$$.send;$res$$.send=function($body$$){Token.updateOne({token:$access_token$$},{used:!0}).then(()=>{});$send$$.call(this,$body$$)}}$next$$()}),$router$$.use(passport.authenticate("bearer",
4
- {session:!1})),$router$$.param("id_app",function($req$$,$res$$,$next$$,$id_app$$){if($id_app$$)if(mongoose.Types.ObjectId.isValid($id_app$$))appModel.findOne({_id:$id_app$$}).lean().exec(async($_clientIp_error$$,$appInfo$$)=>{if($_clientIp_error$$)return $next$$($_clientIp_error$$);if($appInfo$$)$req$$.user.current_id_app=$id_app$$,$appInfo$$.options||($appInfo$$.options={}),$req$$.user.current_app_info=$appInfo$$,$req$$.query.id_app=$id_app$$,$_clientIp_error$$=(($req$$.headers["x-forwarded-for"]||
5
- "").split(",").pop()||$req$$.connection.remoteAddress||$req$$.socket.remoteAddress||$req$$.connection.socket.remoteAddress).split(":"),$req$$.user.clientIp=$_clientIp_error$$[$_clientIp_error$$.length-1],$next$$();else return $res$$.status(400).send("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i")});else return $res$$.status(400).send("id_app:'"+$id_app$$+"' is invalid");else $next$$()}),configs.limitRequest.api&&($dynamic_list_limiter_limiter$$=$createRateLimiterMiddleware_limiter_others$$(configs.limitRequest.api,
4
+ {session:!1})),$router$$.param("id_app",function($req$$,$res$$,$next$$,$id_app$$){if($id_app$$)if(mongoose.Types.ObjectId.isValid($id_app$$))appModel.findById($id_app$$).lean().exec(async($_clientIp_error$$,$appInfo$$)=>{if($_clientIp_error$$)return $next$$($_clientIp_error$$);if($appInfo$$)$req$$.user.current_id_app=$id_app$$,$appInfo$$.options||($appInfo$$.options={}),$req$$.user.current_app_info=$appInfo$$,$req$$.query.id_app=$id_app$$,$_clientIp_error$$=(($req$$.headers["x-forwarded-for"]||"").split(",").pop()||
5
+ $req$$.connection.remoteAddress||$req$$.socket.remoteAddress||$req$$.connection.socket.remoteAddress).split(":"),$req$$.user.clientIp=$_clientIp_error$$[$_clientIp_error$$.length-1],$next$$();else return $res$$.status(400).send(`C\u00f4ng ty ${$id_app$$} kh\u00f4ng t\u1ed3n t\u1ea1i`)});else return $res$$.status(400).send("id_app:'"+$id_app$$+"' is invalid");else $next$$()}),configs.limitRequest.api&&($dynamic_list_limiter_limiter$$=$createRateLimiterMiddleware_limiter_others$$(configs.limitRequest.api,
6
6
  "api"),$router$$.use($dynamic_list_limiter_limiter$$)),$app$$.use("/api",$router$$));const $funcs_inited$$={};configs.paths.modules&&fs.existsSync(configs.paths.modules+"/lists")&&fs.readdirSync(configs.paths.modules+"/lists").forEach(function($file$$){".js"==$file$$.substr(-3)&&(require(configs.paths.modules+"/lists/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});fs.existsSync(__dirname+"/modules/lists")&&fs.readdirSync(__dirname+"/modules/lists").filter($file$$=>!$funcs_inited$$[$file$$]).forEach(function($file$$){".js"==
7
7
  $file$$.substr(-3)&&(require("./modules/lists/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});configs.paths.modules&&fs.existsSync(configs.paths.modules+"/vouchers")&&fs.readdirSync(configs.paths.modules+"/vouchers").forEach(function($file$$){".js"==$file$$.substr(-3)&&(require(configs.paths.modules+"/vouchers/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});fs.existsSync(__dirname+"/modules/vouchers")&&fs.readdirSync(__dirname+"/modules/vouchers").filter($file$$=>!$funcs_inited$$[$file$$]).forEach(function($file$$){".js"==
8
8
  $file$$.substr(-3)&&(require("./modules/vouchers/"+$file$$)($router$$),$funcs_inited$$[$file$$]=$file$$)});var $dynamic_list_limiter_limiter$$=await listinfo.find({status:!0,create_model:!0}).lean().exec();console.log("Creating dynamic APIs...",$dynamic_list_limiter_limiter$$.length);$dynamic_list_limiter_limiter$$.forEach($r$$=>{listinfo.createController(global.routerAPI,$r$$)});configs.paths.modules&&fs.existsSync(configs.paths.modules+"/reports")&&fs.readdirSync(configs.paths.modules+"/reports").forEach(function($file$$){".js"==
@@ -13,7 +13,7 @@ $file$$.substr(-3)&&(require("./modules/systems/"+$file$$)($sys_router$$),$funcs
13
13
  $id_app$jscomp$1_next$$=$req$$.params.id_app;$modelName_user$$=$req$$.params.model;let $action$$=$req$$.params.action,$query$$={};if($req$$.query.q)try{$query$$=eval("("+$req$$.query.q+")")}catch($e$$){return $res$$.status(400).send($e$$.message)}try{let $model$$=global.mongoose.models[$modelName_user$$];underscore.has($model$$.schema.paths,"id_app")&&($query$$.id_app=$id_app$jscomp$1_next$$);switch($action$$){case "find":let $limit$$=$req$$.query.limit||1E3,$fields$$;$req$$.query.fields&&($fields$$=
14
14
  {},$req$$.query.fields.split(",").forEach($field$$=>{$fields$$[$field$$]=1}));try{$limit$$=Number($limit$$)}catch($e$$){return $res$$.status(400).send($e$$.message)}$limit$$||($limit$$=1E3);$model$$.find($query$$,$fields$$).limit($limit$$).lean().exec(($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)});break;case "update":let $data$$=$req$$.query.fields;if(!$data$$)return $res$$.status(400).send("Data to update is empty");try{$data$$=JSON.parse($data$$),$model$$.updateMany($query$$,
15
15
  $data$$,($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)})}catch($e$$){$res$$.status(400).send($e$$.message)}break;case "remove":$model$$.deleteMany($query$$,($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)});break;default:$res$$.status(400).send(`Action ${$action$$} is not support`)}}catch($e$$){$res$$.status(400).send($e$$.message)}});const $Menu$$=require(configs.paths.menu||"./menu");$router$$.route("/modules").get(function($req$$,$res$$){$Menu$$.getMenu($menu_modules_o_rs$$=>
16
- {$menu_modules_o_rs$$=JSON.parse(JSON.stringify($menu_modules_o_rs$$));$menu_modules_o_rs$$=$Menu$$.getModules($menu_modules_o_rs$$);let $modules_a$$=[];for(let $key$$ in $menu_modules_o_rs$$)$modules_a$$.push($menu_modules_o_rs$$[$key$$].command);$res$$.send($modules_a$$)})});const $permission$$=require("./libs/permission");$router$$.route("/:id_app/menu").get(function($req$$,$res$$){$Menu$$.getMenu($Menu_menu$$=>{const $id_app$$=$req$$.params.id_app,$user$$=$req$$.user;appModel.findOne({_id:$id_app$$}).lean().exec(function($e$jscomp$1$$,
16
+ {$menu_modules_o_rs$$=JSON.parse(JSON.stringify($menu_modules_o_rs$$));$menu_modules_o_rs$$=$Menu$$.getModules($menu_modules_o_rs$$);let $modules_a$$=[];for(let $key$$ in $menu_modules_o_rs$$)$modules_a$$.push($menu_modules_o_rs$$[$key$$].command);$res$$.send($modules_a$$)})});const $permission$$=require("./libs/permission");$router$$.route("/:id_app/menu").get(function($req$$,$res$$){$Menu$$.getMenu($Menu_menu$$=>{const $id_app$$=$req$$.params.id_app,$user$$=$req$$.user;appModel.findById($id_app$$).lean().exec(function($e$jscomp$1$$,
17
17
  $app$$){if($e$jscomp$1$$||!$app$$)return $res$$.status(400).send("Kh\u00f4ng th\u1ec3 l\u1ea5y th\u00f4ng tin c\u1ee7a c\u00f4ng ty n\u00e0y.\n");$permission$$.isAdmin($id_app$$,$user$$.email,function($e$jscomp$0$$,$admin$$){if($e$jscomp$0$$)return $res$$.status(403).send({error:$e$jscomp$0$$});const $menu$$={menu:JSON.parse(JSON.stringify($Menu_menu$$))};let $_menu$$=$menu$$.menu=$menu$$.menu.filter($m$$=>!$m$$.appAllow||0===$m$$.appAllow.length||0<=$m$$.appAllow.indexOf($id_app$$));$menu$$.modules=
18
18
  $Menu$$.getModules($_menu$$);$admin$$?$res$$.send($menu$$):async.map(underscore.values($menu$$.modules),function($module$$,$callback$$){var $m$$=$module$$.command;$permission$$.hasRight($id_app$$,$user$$.email,$m$$.module?$m$$.module:$m$$.path,"view",function($e$$,$right$$){$m$$.visible=$right$$;$callback$$()})},function($e$$){if($e$$)return $res$$.status(400).send($e$$);$_menu$$.forEach(function($child_menu$$){$child_menu$$.visible=!1;if("1"==$child_menu$$.type)for(let $i$$ of $child_menu$$.input)if($i$$.items)for(let $_i$$ of $i$$.items){if($_i$$.visible){$i$$.visible=
19
19
  !0;$child_menu$$.visible=!0;break}}else if($i$$.visible){$child_menu$$.visible=!0;break}"2"==$child_menu$$.type&&$child_menu$$.input.forEach(function($module$$){$module$$.visible=!1;$module$$.items.forEach(function($item$$){$item$$.visible&&($module$$.visible=!0,$child_menu$$.visible=!0)})});"3"==$child_menu$$.type&&$child_menu$$.input.forEach(function($module$$){$module$$.visible=!1;$module$$.items.forEach(function($group$$){$group$$.visible=!1;$group$$.items.forEach(function($item$$){$item$$.visible&&