flexbiz-server 12.0.14 → 12.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/auths/facebook.js +1 -1
- package/server/auths/google.js +1 -1
- package/server/auths/local.js +4 -4
- package/server/controllers/controller.js +71 -70
- package/server/controllers/controllerRPT.js +8 -8
- package/server/libs/blockchainconnect.js +3 -3
- package/server/libs/permission.js +1 -1
- package/server/libs/post-socai.js +4 -3
- package/server/libs/validate.js +2 -2
- package/server/models/assinvestment.js +4 -4
- package/server/models/assperiod.js +5 -4
- package/server/models/listinfo.js +7 -2
- package/server/models/notification.js +2 -2
- package/server/models/ppb.js +1 -1
- package/server/modules/lists/ls-asscashwithdraw.js +5 -5
- package/server/modules/lists/ls-assinvestment.js +24 -24
- package/server/modules/lists/ls-asskey.js +9 -8
- package/server/modules/lists/ls-assneedtobuy.js +3 -3
- package/server/modules/lists/ls-assperiod.js +19 -11
- package/server/modules/lists/ls-assproduct.js +2 -2
- package/server/modules/lists/ls-assprofitsharing.js +2 -2
- package/server/modules/lists/ls-asssell.js +5 -5
- package/server/modules/lists/ls-asswithdraw.js +1 -1
- package/server/modules/lists/ls-financialroadmap.js +2 -3
- package/server/modules/reports/rp-assinterest.js +5 -0
- package/server/modules/systems/sys-app.js +2 -2
- package/server/modules/vouchers/vo-bc1.js +21 -20
- package/server/route.js +3 -3
package/package.json
CHANGED
package/server/auths/facebook.js
CHANGED
|
@@ -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.
|
|
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);
|
package/server/auths/google.js
CHANGED
|
@@ -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.
|
|
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`,
|
package/server/auths/local.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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"),
|
|
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",
|
|
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",
|
|
5
|
-
1600,ERR_ID_INVALID="ERR_ID_INVALID: Id kh\u00f4ng h\u1ee3p l\u1ec7",ERR_ID_INVALID_CODE=1700,ERR_KEY_ARISE="ERR_KEY_ARISE_DATA: ",ERR_KEY_ARISE_CODE=1800,ERR_ARISE="ERR_ARISE_DATA: ",ERR_ARISE_CODE=1900,ERR_VERIFY_OTP=4001,fields_sync_master_detail=["ma_ct","so_ct","ngay_ct"];function bodyToJson($body$$){$body$$.json&&($body$$=JSON.parse($body$$.json));delete $body$$._id;delete $body$$.__v;return $body$$}
|
|
2
|
+
dmqct=global.getModel("dmqct"),counter=global.getModel("counter"),async=require("async"),excel=require("../libs/excel"),permission=require("../libs/permission"),fs=require("fs"),link=global.getModel("link"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),numeral=require("numeral"),Parameter=global.getModel("parameter"),templatevoucher=global.getModel("templatevoucher"),dvcs=global.getModel("dvcs"),{numberToWord,stripHtmlTags,compileHtml,evalute}=
|
|
3
|
+
require("../libs/utils"),redisCache=require("../libs/redis-cache"),path=require("path"),htmlReport=require("../libs/htmlReport"),User=global.getModel("user"),Usergroup=global.getModel("usergroup"),textReport=require("../libs/textReport"),dmqddvt=global.getModel("dmqddvt"),StaticPool=require("../libs/WorkerStaticPool"),ERR_NOT_FOUND="ERR_NOT_FOUND: \u0110\u1ed1i t\u01b0\u1ee3ng n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i",ERR_NOT_FOUND_CODE=1100,ERR_NOT_PERMIT="ERR_NOT_PERMIT: Kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n t\u00e1c v\u1ee5 n\u00e0y",
|
|
4
|
+
ERR_NOT_PERMIT_CODE=1200,ERR_ALREADY_EXIST="ERR_ALREADY_EXIST: \u0110\u1ed1i t\u01b0\u1ee3ng n\u00e0y \u0111\u00e3 th\u1ef1c s\u1ef1 t\u1ed3n t\u1ea1i",ERR_ALREADY_EXIST_CODE=1300,ERR_NOT_HAVE_DATA="ERR_NOT_HAVE_DATA: Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u",ERR_NOT_HAVE_DATA_CODE=1400,ERR_CAN_NOT_UPDATE="ERR_CAN_NOT_UPDATE: Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",ERR_CAN_NOT_UPDATE_CODE=1500,ERR_DATA_GENERATED="ERR_DATA_GENERATED: \u0110\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u li\u00ean quan",
|
|
5
|
+
ERR_DATA_GENERATED_CODE=1600,ERR_ID_INVALID="ERR_ID_INVALID: Id kh\u00f4ng h\u1ee3p l\u1ec7",ERR_ID_INVALID_CODE=1700,ERR_KEY_ARISE="ERR_KEY_ARISE_DATA: ",ERR_KEY_ARISE_CODE=1800,ERR_ARISE="ERR_ARISE_DATA: ",ERR_ARISE_CODE=1900,ERR_VERIFY_OTP=4001,fields_sync_master_detail=["ma_ct","so_ct","ngay_ct"];function bodyToJson($body$$){$body$$.json&&($body$$=JSON.parse($body$$.json));delete $body$$._id;delete $body$$.__v;return $body$$}
|
|
6
6
|
async function asyncBodyToJson($body$$,$ctrl$$,$id_app$$,$voucher_options$$){$voucher_options$$||($voucher_options$$=(await OptionsModel.findOne({id_app:$id_app$$,id_func:$ctrl$$.name},{option:1}).lean()||{}).option);$body$$=bodyToJson($body$$);if($voucher_options$$)for(let $field$$ in $voucher_options$$)!$body$$[$field$$]&&"_id"!==$field$$&&$voucher_options$$[$field$$]&&underscore.has($ctrl$$.model.schema.paths,$field$$)&&($body$$[$field$$]=$voucher_options$$[$field$$]);for(let $key$$ in $body$$)if(Array.isArray($body$$[$key$$])&&
|
|
7
7
|
$body$$[$key$$].forEach($r$$=>{_.isObject($r$$)&&delete $r$$._id}),$body$$[$key$$]&&$body$$[$key$$]instanceof String&&(0==$body$$[$key$$].trim().indexOf("[")||0==$body$$[$key$$].trim().indexOf("{"))&&("mixed"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()||"array"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()))try{$body$$[$key$$]=JSON.parse($body$$[$key$$])}catch($e$$){console.error($e$$)}return $body$$}
|
|
8
8
|
const getData=($id_app$$,$collection$$,$field$$,$condition$$)=>{if("token"===$collection$$||"asskey"===$collection$$)throw`Collection ${$collection$$} is not allow`;"dmkh"===$collection$$&&($collection$$="customer");"dmtk"===$collection$$&&($collection$$="account");let $col$$=mongoose.models[$collection$$];if($col$$){if($col$$.schema.paths.id_app){if(!$id_app$$)throw`Collection ${$collection$$} required id_app`;$condition$$.id_app=$id_app$$}let $fields$$;$field$$&&($fields$$={[$field$$]:1});if("user"===
|
|
@@ -13,8 +13,8 @@ Number($v$$):"date"==$model$$.schema.paths[$key$$].instance.toLowerCase()?$condi
|
|
|
13
13
|
class controller{constructor($router$$,$model$$,$name$$,$options$jscomp$0$$={isVoucher:void 0,sort:void 0,check_stock:void 0,unique:void 0,require_id_app:void 0,notNeedRight:void 0}){this.name=$name$$;this.model=$model$$;this.router=$router$$;this.module=this.name;global.controllers[$name$$.trim().toUpperCase()]=this;$options$jscomp$0$$.findExact||($options$jscomp$0$$.findExact={});this.keyValues=$options$jscomp$0$$.keyValues;this.keyValues||(this.keyValues={});void 0===$options$jscomp$0$$.require_id_app||
|
|
14
14
|
!0===$options$jscomp$0$$.require_id_app?(this.require_id_app=!0,this.route_name=`/:id_app/${this.module}`):(this.require_id_app=!1,this.route_name=`/${this.module}`);this.collection_name=$options$jscomp$0$$.collection_name?$options$jscomp$0$$.collection_name:$name$$;this.sort=$options$jscomp$0$$.sort;this.unique=$options$jscomp$0$$.unique;this.getting=$options$jscomp$0$$.onGetting;this.finding=$options$jscomp$0$$.onFinding;this.found=$options$jscomp$0$$.onFound;this.validating=$options$jscomp$0$$.onValidating;
|
|
15
15
|
this.saving=$options$jscomp$0$$.onSaving;this.creating=$options$jscomp$0$$.onCreating;this.created=$options$jscomp$0$$.onCreated;this.updating=$options$jscomp$0$$.onUpdating;this.updated=$options$jscomp$0$$.onUpdated;this.deleting=$options$jscomp$0$$.onDeleting;this.deleted=$options$jscomp$0$$.onDeleted;this.approveData=$options$jscomp$0$$.approveData;this.view=$options$jscomp$0$$.onView;this.onView=($user$$,$items$$,$next$$,$options$$)=>{let $self$$=this,$schema_paths$$=$model$$.schema.paths;underscore.has($schema_paths$$,
|
|
16
|
-
"exfields")&&$items$$.forEach($item$$=>{$item$$.exfields||($item$$.exfields={})});async.parallel({_user_created:$callback$$=>{$items$$.filter($item$$=>$item$$.user_created).joinModel2(null,User,{where:{user_created:"email"},fields:{name_user_created:"name"}},()=>{$callback$$(null)})},_user_updated:$callback$$=>{$items$$.filter($item$$=>$item$$.user_updated).joinModel2(null,User,{where:{user_updated:"email"},fields:{name_user_updated:"name"}},()=>{$callback$$(null)})},_approve:$callback$$=>
|
|
17
|
-
($item$$,$next$$)=>{setImmediate(()=>{Approve.find({id_ct:$item$$._id.toString()},{title:1,trang_thai:1,user_approved:1,user_approved_name:1,date_approved:1,user_denied:1,user_denied_name:1,date_denied:1}).lean().exec(async($e$$,$rs$$)=>{setImmediate(async()=>{$item$$.approve_data=$rs$$;await $item$$.approve_data.asyncJoinModel2($item$$.id_app,Participant,{where:{user_approved:"email"},fields:{user_approved_name:"name",signature_image:"signature_image"}});await $item$$.approve_data.asyncJoinModel2($item$$.id_app,
|
|
16
|
+
"exfields")&&$items$$.forEach($item$$=>{delete $item$$.__v;$item$$.exfields||($item$$.exfields={})});async.parallel({_user_created:$callback$$=>{$items$$.filter($item$$=>$item$$.user_created).joinModel2(null,User,{where:{user_created:"email"},fields:{name_user_created:"name"}},()=>{$callback$$(null)})},_user_updated:$callback$$=>{$items$$.filter($item$$=>$item$$.user_updated).joinModel2(null,User,{where:{user_updated:"email"},fields:{name_user_updated:"name"}},()=>{$callback$$(null)})},_approve:$callback$$=>
|
|
17
|
+
{async.map($items$$,($item$$,$next$$)=>{setImmediate(()=>{Approve.find({id_ct:$item$$._id.toString()},{title:1,trang_thai:1,user_approved:1,user_approved_name:1,date_approved:1,user_denied:1,user_denied_name:1,date_denied:1}).lean().exec(async($e$$,$rs$$)=>{setImmediate(async()=>{$item$$.approve_data=$rs$$;await $item$$.approve_data.asyncJoinModel2($item$$.id_app,Participant,{where:{user_approved:"email"},fields:{user_approved_name:"name",signature_image:"signature_image"}});await $item$$.approve_data.asyncJoinModel2($item$$.id_app,
|
|
18
18
|
Participant,{where:{user_denied:"email"},fields:{user_denied_name:"name",signature_image:"signature_image"}});$next$$(null)})})})},()=>{$callback$$(null)})},transfer_ct:$callback$$=>{if(underscore.has($schema_paths$$,"id_ct_chuyen")&&$user$$.current_app_info&&$user$$.current_app_info.options&&$user$$.current_app_info.options.id_app_thue)async.map($items$$,($item$$,$next$$)=>{setImmediate(()=>{$model$$.findOne({id_app:$user$$.current_app_info.options.id_app_thue,id_ct_chuyen:$item$$._id.toString()},
|
|
19
19
|
{_id:1}).lean().exec(async($e$$,$rs$$)=>{$rs$$&&($item$$.id_ct_nhan=$rs$$._id);$next$$(null)})})},()=>{$callback$$(null)});else return $callback$$()}},$e$jscomp$0$$=>{if($e$jscomp$0$$)return $next$$($e$jscomp$0$$);setImmediate(()=>{if($self$$.view)try{$self$$.view($user$$,$items$$,function($error$jscomp$0$$,$rs$jscomp$0$$){setImmediate(()=>{if($error$jscomp$0$$)return $next$$($error$jscomp$0$$);$self$$.dynamicView?$self$$.dynamicView($user$$,$rs$jscomp$0$$||$items$$,function($error$$,$rs$$){if($error$$)return $next$$($error$$);
|
|
20
20
|
$next$$(null,$rs$$||$items$$)}):$next$$(null,$rs$jscomp$0$$||$items$$)})},$options$$)}catch($e$$){console.error("Error on view of",$name$$,$e$$),$next$$(null,$items$$)}else $self$$.dynamicView?$self$$.dynamicView($user$$,$items$$,function($error$$,$rs$$){if($error$$)return $next$$($error$$);$next$$(null,$rs$$||$items$$)}):$next$$(null,$items$$)})})};this.mapSql=$options$jscomp$0$$.mapSql;this.mapSql||(this.mapSql=function($data$$,$callback$$){$callback$$()});this.mapWeb=$options$jscomp$0$$.mapWeb;
|
|
@@ -72,10 +72,10 @@ $condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push({id_app:{$in:$i
|
|
|
72
72
|
$condition$$.$nor&&0===$condition$$.$nor.length&&delete $condition$$.$nor;$id_sellers_query$$=null;if($req$$.query.count)$condition$$.$where?(console.log("phai loai bo $where trong condition"),$id_sellers_query$$=$model$$.count($condition$$,function($e$$,$data$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send({rows_number:$data$$})})):$id_sellers_query$$=$model$$.countDocuments($condition$$,function($e$$,
|
|
73
73
|
$data$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send({rows_number:$data$$})});else{let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}var $fields$$=$req$$.query.fields;let $gfields$$={};$fields$$&&(underscore.isArray($fields$$)?$fields$$.forEach($f$$=>{"_id"!==$f$$&&($gfields$$[$f$$]=
|
|
74
74
|
1)}):underscore.isObject($fields$$)?$gfields$$={...$gfields$$,...$fields$$}:$fields$$.split(",").filter($f$$=>$f$$&&0>$field_not_right$$.indexOf($f$$)).forEach($f$$=>{"_id"!==$f$$&&($gfields$$[$f$$]=1)}));$field_not_right$$.forEach($f$$=>{$gfields$$[$f$$]=0});!$fields$$&&(($fields$$=$req$$.query.notfields)&&(underscore.isArray($fields$$)?$fields$$.forEach($f$$=>{$f$$&&"_id"!==$f$$&&($gfields$$[$f$$]=0)}):underscore.isObject($fields$$)?$gfields$$={...$gfields$$,...$fields$$}:$fields$$.split(",").forEach($f$$=>
|
|
75
|
-
{$f$$&&"_id"!==$f$$&&($gfields$$[$f$$]=0)})),$shareRoute$$||"public"===$req$$.user.email)&&($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0);$condition$$.$text&&($gfields$$||($gfields$$={}),$gfields$$.textScore={$meta:"textScore"});if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate)try{$id_sellers_query$$=$model$$.aggregate([{$match:$condition$$}])
|
|
76
|
-
|
|
77
|
-
$id_sellers_query$$.append($aggregate$$)}}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}else $id_sellers_query$$=$model$$.find($condition$$,$gfields$$);!$sort$$&&$gfields$$.textScore?$sort$$={textScore:{$meta:"textScore"}}:$sort$$&&($sort$$._id=1);$sort$$&&$id_sellers_query$$.sort($sort$$);
|
|
78
|
-
|
|
75
|
+
{$f$$&&"_id"!==$f$$&&($gfields$$[$f$$]=0)})),$shareRoute$$||"public"===$req$$.user.email)&&($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0);$condition$$.$text&&($gfields$$||($gfields$$={}),$gfields$$.textScore={$meta:"textScore"});if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate)try{$id_sellers_query$$=$model$$.aggregate([{$match:$condition$$}]);if($req$$.query.group){var $group_page$$=JSON.parse($req$$.query.group);$id_sellers_query$$.group($group_page$$)}if($req$$.query.match){let $match$$=
|
|
76
|
+
JSON.parse($req$$.query.match);$id_sellers_query$$.match($match$$)}if($req$$.query.project){var $limit_project$$=JSON.parse($req$$.query.project);$id_sellers_query$$.project($limit_project$$)}else if($gfields$$&&0<Object.keys($gfields$$).length)$limit_project$$=$gfields$$;else if($limit_project$$={_id:1},$group_page$$)for(let $key$$ in $group_page$$)$limit_project$$[$key$$]=1;$id_sellers_query$$.project($limit_project$$);if($req$$.query.aggregate){let $aggregate$$=JSON.parse($req$$.query.aggregate);
|
|
77
|
+
$id_sellers_query$$.append($aggregate$$)}}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}else $id_sellers_query$$=$model$$.find($condition$$,$gfields$$);!$sort$$&&$gfields$$.textScore?$sort$$={textScore:{$meta:"textScore"}}:$sort$$&&($sort$$._id=1);$sort$$&&$id_sellers_query$$.sort($sort$$);"xlsx"!==$req$$.query.type_data&&($group_page$$=$req$$.query.page,($limit_project$$=$req$$.query.limit)&&($limit_project$$=Number($limit_project$$)),$limit_project$$||($limit_project$$=
|
|
78
|
+
!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name?20:1E5),$limit_project$$&&500<$limit_project$$&&!$req$$.query.print&&!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name&&($limit_project$$=500),$group_page$$?$id_sellers_query$$.skip((Number($group_page$$)-1)*$limit_project$$).limit($limit_project$$):$id_sellers_query$$.limit($limit_project$$));$id_sellers_query$$.lean&&($id_sellers_query$$=$id_sellers_query$$.lean());$id_sellers_query$$.exec(function($e$jscomp$0$$,$obj4view$$){if($e$jscomp$0$$)return console.error($e$jscomp$0$$,
|
|
79
79
|
$condition$$),$res$$.status(400).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});$obj4view$$||($obj4view$$=[]);async.parallel({found:function($callback$$){$ctrl$$.found?$ctrl$$.found($req$$.user,$condition$$,$obj4view$$,function($error$$,$items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,$obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>{$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});
|
|
80
80
|
$callback$$(null)}},function($error$jscomp$0$$,$rs$jscomp$0$$){setImmediate(()=>{if($error$jscomp$0$$)return $res$$.status(400).send({error:$error$jscomp$0$$.error||$error$jscomp$0$$.message||$error$jscomp$0$$});$obj4view$$=$rs$jscomp$0$$.found;async.parallel({e_view:function($callback$$){$ctrl$$.onView($req$$.user,$obj4view$$,($error$$,$viewValue$$)=>{setImmediate(()=>{if($error$$)return console.error("Erron on view:",$error$$),$callback$$($error$$);$callback$$(null,$viewValue$$)})},{req:$req$$,
|
|
81
81
|
shareRoute:$shareRoute$$})}},async function($app$jscomp$1_dir_root_template_e$$,$_groupBy_func_string_rs$$){if($error$jscomp$0$$)return $res$$.status(400).send({error:$error$jscomp$0$$.error||$error$jscomp$0$$.message||$error$jscomp$0$$});if($req$$.query.type_data&&"xlsx"==$req$$.query.type_data){$app$jscomp$1_dir_root_template_e$$=(configs.paths||{}).templates;let $template_id$$,$excelTemplate$$;if($template_id$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($template_id$$))return $res$$.status(400).send({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});
|
|
@@ -85,15 +85,15 @@ $item$$[$_key$$];if(underscore.isObject($_v$$))for(let $__key$$ in $_v$$){let $_
|
|
|
85
85
|
$item$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){console.error("Error convert to date",$_v$$,$e$$)}}});$app$jscomp$1_dir_root_template_e$$.detail=$_groupBy_func_string_rs$$.e_view;if($excelTemplate$$&&$excelTemplate$$.handle_data){$_groupBy_func_string_rs$$=`return (async ()=>{
|
|
86
86
|
${$excelTemplate$$.handle_data}
|
|
87
87
|
})`;try{$app$jscomp$1_dir_root_template_e$$=await evalute($_groupBy_func_string_rs$$,{data:$app$jscomp$1_dir_root_template_e$$,moment,numeral,_,utils})()}catch($e$$){return console.error($e$$,$_groupBy_func_string_rs$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}}excelReport($_rs_msg_templatePath$$,$app$jscomp$1_dir_root_template_e$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||
|
|
88
|
-
$e$$});$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx");$res$$.end($result$$,"binary")})})}else $req$$.query.print&&$req$$.query.id_rpt&&global.mongoose.Types.ObjectId.isValid($req$$.query.id_rpt)?htmlReport($req$$.query.id_rpt,{...$req$$.user.current_app_info,...$req$$.query,company:{...$req$$.user.current_app_info},detail:$_groupBy_func_string_rs$$.e_view,
|
|
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$$))})})})})}})}]
|
|
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($
|
|
96
|
-
|
|
95
|
+
0);$model$$.findById($id$$,$gfields$$,function($err$$,$obj$$){setImmediate(()=>{$callback$$($err$$,$obj$$)})})}})}},async($c_app_e$$,$rs$$)=>{if($c_app_e$$)return console.error($c_app_e$$),$c_app_e$$.error?$res$$.status(400).send($c_app_e$$):$res$$.status(400).send({error:$c_app_e$$.message||$c_app_e$$});let $obj$$=$rs$$.c;if(!$obj$$)return $res$$.status(404).send({error:ERR_NOT_FOUND,code:ERR_NOT_FOUND_CODE});if($shareRoute$$&&$obj$$.shared)underscore.has($model$$.schema.paths,"id_app")&&(($c_app_e$$=
|
|
96
|
+
await app.findById($obj$$.id_app))&&!0===$c_app_e$$.sale_online||$res$$.status(403).send({error:ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE}));else if(!0===underscore.has($model$$.schema.paths,"id_app")&&$req$$.user.current_id_app!=$obj$$.id_app)return $res$$.status(403).send({error:ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE});$ctrl$$.getting?$ctrl$$.getting($req$$.user,$id$$,function($e$$){setImmediate(()=>{if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});
|
|
97
97
|
$req$$.obj=$obj$$;$next$$()})},$obj$$):($req$$.obj=$obj$$,$next$$())})},function($req$$,$res$$,$next$$){let $obj$$=$req$$.obj;if($obj$$&&$obj$$.toObject)$obj$$=$obj$$.toObject();else return $next$$();if($obj$$.shared&&$shareRoute$$)return $next$$();permission.hasRight($obj$$.id_app,$req$$.user.email,$ctrl$$.module,"view",function($error$$,$permission$$){setImmediate(()=>{if($ctrl$$.options.onQuery)$req$$.permission=$permission$$,$ctrl$$.options.onQuery($req$$,$e$$=>{setImmediate(()=>{if($e$$)return $res$$.status(403).send({error:$e$$||
|
|
98
98
|
ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE});if($req$$.permission)$next$$();else return $res$$.status(403).send({error:$error$$||ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE})})});else if($permission$$)$next$$();else return $res$$.status(403).send({error:$error$$||ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE})})},{data:$obj$$,obj:$obj$$,notNeedRight:$ctrl$$.options.notNeedRight})},function($req$$,$res$$){let $obj$$=$req$$.obj;$obj$$&&$obj$$.toObject&&($obj$$=$obj$$.toObject());$obj$$.collection_name=$ctrl$$.collection_name;
|
|
99
99
|
$ctrl$$.onView($req$$.user,[$obj$$],function($e$$,$viewValue$$){setImmediate(()=>{if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});$res$$.send($viewValue$$[0])})},{req:$req$$,shareRoute:$shareRoute$$})})};
|
|
@@ -113,9 +113,9 @@ $condition$jscomp$0$$,function($e$$,$condition$$){if($e$$)return console.error($
|
|
|
113
113
|
$e$$});$req$$.condition=$condition$$;$next$$()},{req:$req$$}):($req$$.condition=$condition$jscomp$1$$,$next$$())},function($req$$,$res$$,$next$$){permission.isAdmin($req$$.user.current_id_app,$req$$.user.email,function($e$$,$admin$$){setImmediate(()=>{if($e$$)return $res$$.status(403).send({error:$e$$});if(!$admin$$)return $res$$.status(403).send({error:"B\u1ea1n ph\u1ea3i c\u00f3 quy\u1ec1n admin \u0111\u1ec3 th\u1ef1c hi\u1ec7n t\u00ednh n\u0103ng n\u00e0y"});$next$$()})})},function($req$$,$res$$){let $condition$$=
|
|
114
114
|
$req$$.condition;underscore.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$$.ma_ct=$ctrl$$.name.toUpperCase());let $query$$=$model$$.find($condition$$);!0===underscore.has($model$$.schema.paths,"ngay_ct")&&$query$$.sort({ngay_ct:1});$query$$.lean().exec(function($e$jscomp$1$$,$obj4view$$){setImmediate(()=>{if($e$jscomp$1$$)return console.error($e$jscomp$1$$),$e$jscomp$1$$.error?$res$$.status(400).send($e$jscomp$1$$):$res$$.status(400).send({error:$e$jscomp$1$$.message||
|
|
115
115
|
$e$jscomp$1$$.error||$e$jscomp$1$$});setImmediate(()=>{log.create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"UPDATE FIELD:"+$field$$,data:{condition:JSON.stringify($condition$$)}},$req$$.user.email,$req$$.header("user-agent"),$req$$)});let $tu_so$$=Number($req$$.query.tu_so);$tu_so$$||($tu_so$$=1);let $den_so$$=$req$$.query.den_so,$tien_to$$=$req$$.query.tien_to,$hau_to$$=$req$$.query.hau_to,$gia_tri$$;for(let $i$$=0;$i$$<$obj4view$$.length;$i$$++)$gia_tri$$=$tu_so$$+$i$$+"",
|
|
116
|
-
$den_so$$&&($gia_tri$$="0000000000000000000".substring(0,$den_so$$.length-$gia_tri$$.length)+$gia_tri$$),$tien_to$$&&($gia_tri$$=$tien_to$$+$gia_tri$$),$hau_to$$&&($gia_tri$$+=$hau_to$$),$obj4view$$[$i$$][$field$$]=$gia_tri$$;async.map($obj4view$$,function($obj$$,$callback$$){setImmediate(()=>{$model$$.findOneAndUpdate({_id:$obj$$._id},$obj$$,function($e$jscomp$0$$,$rs$$){setImmediate(()=>{if($e$jscomp$0$$||!$rs$$)return $callback$$($e$jscomp$0$$);$ctrl$$.cacheData($obj$$);$ctrl$$.post?
|
|
117
|
-
$ctrl$$,function($e$$){if($e$$)return console.error("error post data",$e$$),$callback$$($e$$);$callback$$(null,$rs$$)}):$callback$$(null,$rs$$)})})})},function($e$jscomp$0$$,$rs$$){setImmediate(()=>{if($e$jscomp$0$$)return console.error($e$jscomp$0$$),$e$jscomp$0$$.error?$res$$.status(400).send($e$jscomp$0$$):$res$$.status(400).send({error:$e$jscomp$0$$.message||$e$jscomp$0$$});$ctrl$$.emit("saved",$rs$$);$ctrl$$.emit("updated",$rs$$);pushNotification($ctrl$$,$rs$$,"update",null,!0,
|
|
118
|
-
|
|
116
|
+
$den_so$$&&($gia_tri$$="0000000000000000000".substring(0,$den_so$$.length-$gia_tri$$.length)+$gia_tri$$),$tien_to$$&&($gia_tri$$=$tien_to$$+$gia_tri$$),$hau_to$$&&($gia_tri$$+=$hau_to$$),$obj4view$$[$i$$][$field$$]=$gia_tri$$;async.map($obj4view$$,function($obj$$,$callback$$){setImmediate(()=>{delete $obj$$.__v;$model$$.findOneAndUpdate({_id:$obj$$._id},$obj$$,function($e$jscomp$0$$,$rs$$){setImmediate(()=>{if($e$jscomp$0$$||!$rs$$)return $callback$$($e$jscomp$0$$);$ctrl$$.cacheData($obj$$);$ctrl$$.post?
|
|
117
|
+
postData($obj$$,$ctrl$$,function($e$$){if($e$$)return console.error("error post data",$e$$),$callback$$($e$$);$callback$$(null,$rs$$)}):$callback$$(null,$rs$$)})})})},function($e$jscomp$0$$,$rs$$){setImmediate(()=>{if($e$jscomp$0$$)return console.error($e$jscomp$0$$),$e$jscomp$0$$.error?$res$$.status(400).send($e$jscomp$0$$):$res$$.status(400).send({error:$e$jscomp$0$$.message||$e$jscomp$0$$});$ctrl$$.emit("saved",$rs$$);$ctrl$$.emit("updated",$rs$$);pushNotification($ctrl$$,$rs$$,"update",null,!0,
|
|
118
|
+
{exclude_token:$req$$.query.access_token});$rs$$=$rs$$.map($o$$=>{$o$$.toObject&&($o$$=$o$$.toObject());return $o$$});$ctrl$$.onView($req$$.user,$rs$$,function($e$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})},{req:$req$$})})})})})})};
|
|
119
119
|
const getParameters=($id_app$$,$rps_rpt_ids$$,$callback$$)=>{let $parameters$$=$rps_rpt_ids$$.filter($r$$=>$r$$.parameters).map($r$$=>$r$$.parameters).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);0<$parameters$$.length?$callback$$(null,$parameters$$):($rps_rpt_ids$$=underscore.pluck($rps_rpt_ids$$,"_id"),Parameter.find({id_app:$id_app$$,id_rpt:{$in:$rps_rpt_ids$$}}).lean().exec(function($e$$,$parameters$$){setImmediate(()=>{if($e$$)return $callback$$($e$$);$callback$$(null,$parameters$$)})}))},prepareParameters=
|
|
120
120
|
function($ctrl$$,$parameters$$,$app$$,$obj$$,$callback$jscomp$0$$){async.map($parameters$$,function($p$$,$callback$$){setImmediate(()=>{(async()=>{if("W"===$p$$.type||"EN"===$p$$.type)try{$app$$[$p$$.name]="EN"===$p$$.type?numberToWord($obj$$[$p$$.value],{lang:"en"}):numberToWord($obj$$[$p$$.value])}catch($e$$){console.error($e$$),$app$$[$p$$.name]=$e$$.message}else if("Q"===$p$$.type)try{var $query$jscomp$8_sandbox$$=await evalute("return {"+$p$$.value+"}",{});if($query$jscomp$8_sandbox$$.collection&&
|
|
121
121
|
$query$jscomp$8_sandbox$$.field){"dmkh"==$query$jscomp$8_sandbox$$.collection&&($query$jscomp$8_sandbox$$.collection="customer");"dmtk"==$query$jscomp$8_sandbox$$.collection&&($query$jscomp$8_sandbox$$.collection="account");var $condition$$=$query$jscomp$8_sandbox$$.condition;if($condition$$){$condition$$=JSON.stringify($condition$$);for(let $m$$ in $obj$$)$condition$$=$condition$$.replace(new RegExp("m."+$m$$,"g"),$obj$$[$m$$]);$condition$$=JSON.parse($condition$$)}else $condition$$={};$app$$[$p$$.name]=
|
|
@@ -137,9 +137,9 @@ $e$jscomp$0$$});if($req$$.query.print){console.log("render print page....");if(!
|
|
|
137
137
|
$lien_page$$;$lien_page$$=await htmlReport($rs$jscomp$0$$.html_template,$_data$$);$pages$$.push($lien_page$$)},()=>{$callback$$()})},()=>{$res$$.send($pages$$.join('<p style="page-break-before: always"></p>'))})}catch($e$$){return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$})}}else if($req$$.query.json)$res$$.json($data4export$$);else{if(!$rs$jscomp$0$$.file_mau_in)return $res$$.status(400).send({error:"Ch\u01b0a khai b\u00e1o file excel m\u1eabu"});
|
|
138
138
|
var $dir_root_templates_id_file$$=configs.paths.templates||__dirname;let $templatePath$$;if(0<$rs$jscomp$0$$.file_mau_in.indexOf("/file/download")){$dir_root_templates_id_file$$=$rs$jscomp$0$$.file_mau_in.split("/").pop();const $file$$=global.getModel("file");try{var $_data$jscomp$0$$=await $file$$.findOne({_id:$dir_root_templates_id_file$$});$_data$jscomp$0$$||$res$$.status(400).send({error:"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"});let $file_name$$=$_data$jscomp$0$$.file.name,$root$$=configs.paths.uploads;
|
|
139
139
|
$root$$||($root$$=__dirname,$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$templatePath$$=path.join($root$$,$file_name$$)}catch($e$$){return $res$$.status(400).send({error:$e$$.message||"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"})}}else $templatePath$$=path.dirname($dir_root_templates_id_file$$)+$rs$jscomp$0$$.file_mau_in;if(!$templatePath$$||!fs.existsSync($templatePath$$))return $res$$.status(400).send({error:"File m\u1eabu kh\u00f4ng t\u1ed3n t\u1ea1i"});let $ext$$=$templatePath$$.split(".").pop();
|
|
140
|
-
"xlsx"===$ext$$?excelReport($templatePath$$,$data4export$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx");$res$$.end($result$$,"binary")})}):($_data$jscomp$0$$=$data4export$$[0]
|
|
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+
|
|
142
|
-
"binary")):$res$$.send($result$$)})}))}})})})})})})})};
|
|
140
|
+
"xlsx"===$ext$$?excelReport($templatePath$$,$data4export$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx");$res$$.end($result$$,"binary")})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"}):($_data$jscomp$0$$=$data4export$$[0],
|
|
141
|
+
$_data$jscomp$0$$.datasource={...$_data$jscomp$0$$},$_data$jscomp$0$$.company={...$_app$$},textReport($templatePath$$,$_data$jscomp$0$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});"docx"===$ext$$?($res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+
|
|
142
|
+
".docx"),$res$$.write($result$$,"binary"),$res$$.end(null,"binary")):$res$$.send($result$$)})}))}})})})})})})})};
|
|
143
143
|
controller.prototype.importFromJson=function(){const $name$$=this.name;let $ctrl$$=this;this.router.route(`${this.route_name}/import/json`).post(function($req$$,$res$$,$next$$){let $session$$=$req$$.session;if(!0===$session$$["import_json_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["import_json_"+$name$$]=!0;if($req$$.files&&$req$$.files.json){let $filePath$$=$req$$.files.json.path;try{console.log("read file json..."),$req$$.data=require($filePath$$),
|
|
144
144
|
fs.unlink($filePath$$,function($error$$){$error$$&&console.error("Can't delete file tmp:"+$filePath$$,$error$$)}),$next$$()}catch($e$$){return $session$$["import_json_"+$name$$]=!1,console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$})}}else if($req$$.body){try{$req$$.data=$req$$.body.map($row$jscomp$2_rs$$=>{$row$jscomp$2_rs$$=_.isString($row$jscomp$2_rs$$)?JSON.parse($row$jscomp$2_rs$$):$row$jscomp$2_rs$$;delete $row$jscomp$2_rs$$.id_app;delete $row$jscomp$2_rs$$._id;return $row$jscomp$2_rs$$})}catch($e$$){return console.error($e$$),
|
|
145
145
|
$res$$.status(400).send({error:$e$$.message||$e$$})}$next$$()}else return $session$$["import_json_"+$name$$]=!1,$res$$.status(400).send({error:"Kh\u00f4ng t\u00ecm th\u1ea5y d\u1eef li\u1ec7u c\u1ea7n import"})},function($req$$,$res$$){let $data$$=$req$$.data;console.log("import from json",$ctrl$$.name,$data$$.length,"rows");setImmediate(()=>{log.create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTJSON",data:{data:$data$$}},$req$$.user.email,$req$$.header("user-agent"),$req$$)});
|
|
@@ -196,26 +196,27 @@ $user$jscomp$0$$.current_id_app);const $checkVoucherNumber$$=$callback$$=>{under
|
|
|
196
196
|
$den_ngay$$;switch($rs$jscomp$0$$.option.check_so_ct){case "1":$tu_ngay$$=moment($obj$jscomp$0$$.ngay_ct).startOf("day").toDate();$den_ngay$$=moment($obj$jscomp$0$$.ngay_ct).endOf("day").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "2":$tu_ngay$$=moment($obj$jscomp$0$$.ngay_ct).startOf("month").toDate();$den_ngay$$=moment($obj$jscomp$0$$.ngay_ct).endOf("month").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "3":$tu_ngay$$=moment($obj$jscomp$0$$.ngay_ct).startOf("quarter").toDate();
|
|
197
197
|
$den_ngay$$=moment($obj$jscomp$0$$.ngay_ct).endOf("quarter").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$};break;case "8":$tu_ngay$$=moment($obj$jscomp$0$$.ngay_ct).startOf("year").toDate(),$den_ngay$$=moment($obj$jscomp$0$$.ngay_ct).endOf("year").toDate(),$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$den_ngay$$}}$model$$.findOne($query_check$$,{so_ct:1}).lean().exec(($e$jscomp$0$$,$rs$$)=>{setImmediate(()=>{if($rs$$){let $msgError$$="S\u1ed1 ch\u1ee9ng t\u1eeb "+$obj$jscomp$0$$.so_ct+
|
|
198
198
|
" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ch\u1ecdn m\u1ed9t s\u1ed1 ch\u1ee9ng t\u1eeb kh\u00e1c";if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)});else $callback$$($msgError$$)}else $callback$$()})})}else $callback$$()})}):$callback$$()};let $File$$=global.getModel("file"),$Support$$=global.getModel("support");async.waterfall([function($callback$$){setImmediate(function(){permission.hasRight($obj$jscomp$0$$.id_app,
|
|
199
|
-
$user$jscomp$0$$.email,$ctrl$$.module,"add",function($error
|
|
200
|
-
($obj$$,$callback$$)=>{setImmediate(()=>{var $condition_qct$jscomp$1_ma_ct$$=$ctrl$$.name;$condition_qct$jscomp$1_ma_ct$$={status:!0,id_app:$obj$$.id_app,$and:[{$or:[{ma_ct:"#",ma_ct_khac:{$regex:$condition_qct$jscomp$1_ma_ct$$,$options:"i"}},{cac_ma_ct:$condition_qct$jscomp$1_ma_ct$$.toLowerCase()},
|
|
201
|
-
$rs$jscomp$0$$)=>{setImmediate(()=>{let $qcts$$=($rs$jscomp$0$$||[]).filter($qct$$=>"so_ct"!==$qct$$.field&&!$obj$$[$qct$$.field]&&underscore.has($model$$.schema.paths,$qct$$.field));$qcts$$=$qcts$$.filter($qct$$=>{if($qct$$.dieu_kien&&0<$keys_options$$.length)try{let $str_func
|
|
202
|
-
$e$$.message,$qct$$.dieu_kien),!1}else return!0});async.map($qcts$$,($qct$$,$cb$$)=>{setImmediate(()=>{let $field$$=$qct$$.field,$_options$$={...$_options_qct$$};$_options$$.id_qct=$qct$$._id.toString();getNextSequence($obj$$.id_app
|
|
203
|
-
$obj$jscomp$0$$.so_ct.toUpperCase()!==$ctrl$$.name.toUpperCase())$checkVoucherNumber$$($error$$=>{$callback$jscomp$0$$($error$$)});else{let $count$$=0;async.whilst(function($cb$$){$cb$$(null,10>$count$$)},
|
|
204
|
-
99999,$callback$$())})})},$obj$jscomp$0$$)},function($err$$){$callback$jscomp$0$$($err$$)})}else $callback$jscomp$0$$()})},function($callback$$){setImmediate(async()=>{if(underscore.has($model$$.schema.paths,
|
|
205
|
-
ten_dvcs:"Imported"},$e$$=>{setImmediate(()=>{$e$$&&console.error("Can't import dvcs",$e$$);$callback$$()})})}else $callback$$();else dvcs.findOne({id_app:$obj$jscomp$0$$.id_app,status:!0}).lean().exec(function($e
|
|
206
|
-
$obj$$)=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);setImmediate(()=>{$obj$$.user_created=$user$jscomp$0$$.email;$obj$$.user_updated=$user$jscomp$0$$.email;validate($obj$$,async $error$$=>
|
|
207
|
-
|
|
208
|
-
$obj$jscomp$0$$,$
|
|
209
|
-
|
|
210
|
-
$obj$jscomp$0
|
|
211
|
-
|
|
212
|
-
else if($req$$&&$req$$.header&&setImmediate(()=>{log.create({id_app:$user$jscomp$0$$.current_id_app,id_func:$ctrl$$.name,action:"ADD",data:{id:$obj$jscomp$0$$._id.toString(),
|
|
213
|
-
|
|
214
|
-
$
|
|
215
|
-
{console.error($e$$)})}),delete $obj$$.exfields.
|
|
216
|
-
$rs$$)
|
|
217
|
-
|
|
218
|
-
$user$jscomp$0$$.current_id_app),delete global.cacheDatas[$e$jscomp$145_name_cached$$],$callback$jscomp$1$$(null,$rs$$))})}catch($e$$){console.error($e$$)
|
|
199
|
+
$user$jscomp$0$$.email,$ctrl$$.module,"add",function($error$$,$hr$$,$c_app$$){setImmediate(()=>{if($error$$||!$hr$$)return $callback$$($error$$);$ctrl$$.checkData($c_app$$,$obj$jscomp$0$$,$e$$=>{if($e$$)return $callback$$($e$$);$ctrl$$.creating?$ctrl$$.creating($user$jscomp$0$$,$obj$jscomp$0$$,function($error$jscomp$37_v$$,$_obj$$){if($error$jscomp$37_v$$)return $callback$$($error$jscomp$37_v$$);for(let $f$$ of Object.keys($schema_paths$$))$error$jscomp$37_v$$=$_obj$$.get?$_obj$$.get($f$$):$_obj$$[$f$$],
|
|
200
|
+
$obj$jscomp$0$$.set($f$$,$error$jscomp$37_v$$);$callback$$(null,$obj$jscomp$0$$)},{data:$data$$}):$callback$$(null,$obj$jscomp$0$$)})})},{data:$obj$jscomp$0$$,notNeedRight:$ctrl$$.options.notNeedRight})})},($obj$$,$callback$$)=>{setImmediate(()=>{var $condition_qct$jscomp$1_ma_ct$$=$ctrl$$.name;$condition_qct$jscomp$1_ma_ct$$={status:!0,id_app:$obj$$.id_app,$and:[{$or:[{ma_ct:"#",ma_ct_khac:{$regex:$condition_qct$jscomp$1_ma_ct$$,$options:"i"}},{cac_ma_ct:$condition_qct$jscomp$1_ma_ct$$.toLowerCase()},
|
|
201
|
+
{ma_ct:$condition_qct$jscomp$1_ma_ct$$.toUpperCase()}]}]};let $_options_qct$$;$_options_qct$$=$obj$$.toObject?$obj$$.toObject():{...$obj$$};let $keys_options$$=Object.keys($_options_qct$$);dmqct.find($condition_qct$jscomp$1_ma_ct$$).lean().exec(($e$jscomp$0$$,$rs$jscomp$0$$)=>{setImmediate(()=>{let $qcts$$=($rs$jscomp$0$$||[]).filter($qct$$=>"so_ct"!==$qct$$.field&&!$obj$$[$qct$$.field]&&underscore.has($model$$.schema.paths,$qct$$.field));$qcts$$=$qcts$$.filter($qct$$=>{if($qct$$.dieu_kien&&0<$keys_options$$.length)try{let $str_func$$=
|
|
202
|
+
$qct$$.dieu_kien;0!==$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);return 0<$str_func$$.indexOf("async ")?!1:evalute($str_func$$,{...$_options_qct$$,master:{...$_options_qct$$},moment,numeral})}catch($e$$){return console.error("Error find quyen chung tu",$e$$.message,$qct$$.dieu_kien),!1}else return!0});async.map($qcts$$,($qct$$,$cb$$)=>{setImmediate(()=>{let $field$$=$qct$$.field,$_options$$={...$_options_qct$$};$_options$$.id_qct=$qct$$._id.toString();getNextSequence($obj$$.id_app,
|
|
203
|
+
$ctrl$$.name,$field$$,function($e$$,$rs$$){if($e$$)return $cb$$();$obj$$[$field$$]=$rs$$[$field$$];$cb$$()},$_options$$)})},()=>{setImmediate(()=>{$callback$$()})})})})})},$callback$jscomp$0$$=>{setImmediate(function(){if(!0===underscore.has($model$$.schema.paths,"so_ct"))if($obj$jscomp$0$$.so_ct&&$obj$jscomp$0$$.so_ct.toUpperCase()!==$ctrl$$.name.toUpperCase())$checkVoucherNumber$$($error$$=>{$callback$jscomp$0$$($error$$)});else{let $count$$=0;async.whilst(function($cb$$){$cb$$(null,10>$count$$)},
|
|
204
|
+
function($callback$$){getNextSequence($obj$jscomp$0$$.id_app,$ctrl$$.name,"so_ct",function($e$$,$rs$$){setImmediate(()=>{if($e$$)return $callback$$($e$$);$obj$jscomp$0$$.so_ct=$rs$$.so_ct;$checkVoucherNumber$$($error$$=>{$error$$?9<=$count$$?$callback$$($error$$):($count$$++,$callback$$()):($count$$=99999,$callback$$())})})},$obj$jscomp$0$$)},function($err$$){$callback$jscomp$0$$($err$$)})}else $callback$jscomp$0$$()})},function($callback$$){setImmediate(async()=>{if(underscore.has($model$$.schema.paths,
|
|
205
|
+
"ma_dvcs")&&"dvcs"!==$ctrl$$.name)if($obj$jscomp$0$$.ma_dvcs)if(global.mongoose.Types.ObjectId.isValid($obj$jscomp$0$$.ma_dvcs)){let $_id_dvcs$$=global.mongoose.Types.ObjectId($obj$jscomp$0$$.ma_dvcs);await dvcs.findOne({_id:$_id_dvcs$$})?$callback$$():dvcs.create({_id:$_id_dvcs$$,ma_dvcs:"IMPORTED",ten_dvcs:"Imported"},$e$$=>{setImmediate(()=>{$e$$&&console.error("Can't import dvcs",$e$$);$callback$$()})})}else $callback$$();else dvcs.findOne({id_app:$obj$jscomp$0$$.id_app,status:!0}).lean().exec(function($e$$,
|
|
206
|
+
$rs$$){setImmediate(()=>{$rs$$&&($obj$jscomp$0$$.ma_dvcs=$rs$$._id.toString());$callback$$()})});else $callback$$()})},$callback$$=>{$ctrl$$.validating||($ctrl$$.validating=($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)});$ctrl$$.validating($user$jscomp$0$$,$obj$jscomp$0$$,$e$jscomp$0$$=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);setImmediate(()=>{$obj$jscomp$0$$.user_created=$user$jscomp$0$$.email;$obj$jscomp$0$$.user_updated=$user$jscomp$0$$.email;validate($obj$jscomp$0$$,async $error$$=>
|
|
207
|
+
{setImmediate(async()=>{if($error$$){let $msgError$$=$error$$;if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)});else $callback$$($msgError$$)}else{if($id_be_supply_by_user$$&&global.mongoose.Types.ObjectId.isValid($id_be_supply_by_user$$)){let $_id$$=global.mongoose.Types.ObjectId($id_be_supply_by_user$$);$obj$jscomp$0$$._id=$_id$$;await $model$$.deleteOne({_id:$_id$$})}$callback$$()}})})})})},
|
|
208
|
+
function($callback$$){setImmediate(function(){isExists($model$$,$ctrl$$.unique,$obj$jscomp$0$$,$ctrl$$.replaceIfExists,async($error$jscomp$1$$,$kq$$)=>{setImmediate(async()=>{if($error$jscomp$1$$||$kq$$){let $msgError$$=$error$jscomp$1$$||ERR_ALREADY_EXIST;console.error($msgError$$,$obj$jscomp$0$$);if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$({error:$msgError$$,code:ERR_ALREADY_EXIST_CODE})});
|
|
209
|
+
else $callback$$({error:$msgError$$,code:ERR_ALREADY_EXIST_CODE})}else{for(let $k$$ in $ctrl$$.keyValues)$obj$jscomp$0$$[$k$$]=$ctrl$$.keyValues[$k$$];Object.keys($model$$.schema.paths).filter($model_path$$=>$obj$jscomp$0$$[$model_path$$]&&underscore.isArray($obj$jscomp$0$$[$model_path$$])).forEach($model_path$$=>{$model$$.schema.paths[$model_path$$].schema&&$model$$.schema.paths[$model_path$$].schema.paths&&Object.keys($model$$.schema.paths[$model_path$$].schema.paths).filter($path$$=>"line"!==$path$$&&
|
|
210
|
+
"_id"!==$path$$&&"__v"!==$path$$&&0<=fields_sync_master_detail.indexOf($path$$)).forEach($path$$=>{$obj$jscomp$0$$[$path$$]&&$obj$jscomp$0$$[$model_path$$].filter($detail$$=>!$detail$$[$path$$]).forEach($detail$$=>{$detail$$[$path$$]=$obj$jscomp$0$$[$path$$]})})});await createIdRef($model$$,$obj$jscomp$0$$);$ctrl$$.saving&&await $ctrl$$.saving($user$jscomp$0$$,$obj$jscomp$0$$);$ctrl$$.emit("saving",$obj$jscomp$0$$);$obj$jscomp$0$$.save(function($error$jscomp$0$$,$obj_created$$){setImmediate(()=>{if($error$jscomp$0$$){let $msgErrors$$=
|
|
211
|
+
[];for(let $k$$ in $error$jscomp$0$$.errors)$msgErrors$$.push($error$jscomp$0$$.errors[$k$$].message);0==$msgErrors$$.length&&($msgErrors$$=$error$jscomp$0$$.message);$msgErrors$$||($msgErrors$$=JSON.stringify($error$jscomp$0$$));if($ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&console.error($e$$);$callback$$($msgErrors$$)});else $callback$$($msgErrors$$)}else postData($obj_created$$,$ctrl$$,function($msgErrors$$){setImmediate(()=>{if($msgErrors$$)if($model$$.deleteOne({_id:$obj_created$$._id.toString()},
|
|
212
|
+
$err$$=>{$err$$&&console.error("Error remove obj when has error post data:",$err$$,{_id:$obj_created$$._id.toString()})}),$ctrl$$.options.onErrorCreating)$ctrl$$.options.onErrorCreating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&($msgErrors$$=$msgErrors$$+"\n"+$e$$);$callback$$($msgErrors$$)});else $callback$$($msgErrors$$);else if($req$$&&$req$$.header&&setImmediate(()=>{log.create({id_app:$user$jscomp$0$$.current_id_app,id_func:$ctrl$$.name,action:"ADD",data:{id:$obj$jscomp$0$$._id.toString(),
|
|
213
|
+
data:$obj$jscomp$0$$}},$user$jscomp$0$$.email,$req$$.header("user-agent"),$req$$)}),$ctrl$$.emit("saved",$obj_created$$),$ctrl$$.emit("created",$obj_created$$),$obj_created$$=$obj_created$$.toObject(),runWebhooks($ctrl$$,$obj_created$$,"ADD",$voucher_options$$),$req$$&&pushNotification($ctrl$$,$obj_created$$,"new",null,null,{exclude_token:($req$$.query||{}).access_token}),$ctrl$$.cacheData($obj_created$$),$req$$&&!1!==($req$$.query||{}).return_data)$ctrl$$.onView($user$jscomp$0$$,[$obj_created$$],
|
|
214
|
+
$error$$=>{setImmediate(()=>{if($error$$)return $callback$$($error$$);$callback$$(null,$obj_created$$)})},{req:$req$$});else $callback$$(null,{_id:$obj_created$$._id.toString()})})})})})}})})})},function($obj$$,$callback$$){$ctrl$$.requestApprove($user$jscomp$0$$.current_app_info,$user$jscomp$0$$,$obj$$,$callback$$,$voucher_options$$)},function($obj$$,$callback$$){setImmediate(function(){$obj$$.collection_name=$ctrl$$.collection_name;$obj$$.exfields&&$obj$$.exfields.__files__&&($obj$$.exfields.__files__.forEach($_file$$=>
|
|
215
|
+
{$File$$.findOneAndUpdate({_id:$_file$$._id},{id_link:$obj$$._id.toString(),collection_link:$ctrl$$.collection_name}).lean().exec($e$$=>{$e$$&&console.error($e$$)})}),delete $obj$$.exfields.__files__);$obj$$.exfields&&$obj$$.exfields.__supports__&&($obj$$.exfields.__supports__.forEach($_file$$=>{$Support$$.findOneAndUpdate({_id:$_file$$._id},{id_link:$obj$$._id.toString(),collection_link:$ctrl$$.collection_name}).lean().exec($e$$=>{console.error($e$$)})}),delete $obj$$.exfields.__supports__);if($ctrl$$.created)$ctrl$$.created($user$jscomp$0$$,
|
|
216
|
+
$obj$$,function($error$jscomp$0$$,$rs$$){setImmediate(()=>{if($error$jscomp$0$$)return $callback$$($error$jscomp$0$$);if($ctrl$$.dynamicCreated)$ctrl$$.dynamicCreated($user$jscomp$0$$,$rs$$,function($error$$){if($error$$)return $callback$$($error$$);$req$$&&$req$$.uploadFile?($error$$="<html><title>OK</title><body>"+JSON.stringify($rs$$)+"</body></html>",$callback$$(null,$error$$)):$callback$$(null,$rs$$)});else if($req$$&&$req$$.uploadFile){let $html$$="<html><title>OK</title><body>"+JSON.stringify($rs$$)+
|
|
217
|
+
"</body></html>";$callback$$(null,$html$$)}else $callback$$(null,$rs$$)})});else if($ctrl$$.dynamicCreated)$ctrl$$.dynamicCreated($user$jscomp$0$$,$obj$$,function($error$jscomp$46_html$$){if($error$jscomp$46_html$$)return $callback$$($error$jscomp$46_html$$);$req$$&&$req$$.uploadFile?($error$jscomp$46_html$$="<html><title>OK</title><body>"+JSON.stringify($obj$$)+"</body></html>",$callback$$(null,$error$jscomp$46_html$$)):$callback$$(null,$obj$$)});else if($req$$&&$req$$.uploadFile){let $html$$="<html><title>OK</title><body>"+
|
|
218
|
+
JSON.stringify($obj$$)+"</body></html>";$callback$$(null,$html$$)}else $callback$$(null,$obj$$)})}],($e$jscomp$145_name_cached$$,$rs$$)=>{$e$jscomp$145_name_cached$$?(console.error($e$jscomp$145_name_cached$$),$callback$jscomp$1$$($e$jscomp$145_name_cached$$)):($e$jscomp$145_name_cached$$=$model$$.collection.name,$user$jscomp$0$$.current_id_app&&($e$jscomp$145_name_cached$$+=$user$jscomp$0$$.current_id_app),delete global.cacheDatas[$e$jscomp$145_name_cached$$],$callback$jscomp$1$$(null,$rs$$))})}catch($e$$){console.error($e$$),
|
|
219
|
+
$callback$jscomp$1$$($e$$)}}
|
|
219
220
|
controller.prototype.create=function(){let $name$$=this.name,$ctrl$$=this;this.router.route(this.route_name).post(function($req$$,$res$$){let $session$$=$req$$.session;if(!0===$session$$["creating_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["creating_"+$name$$]=!0;let $body$$=$req$$.body;if(!$body$$)return $res$$.status(411).send({error:"Kh\u00f4ng c\u00f3 n\u1ed9i dung c\u1ea7n l\u01b0u"});$req$$.files&&0<underscore.keys($req$$.files).length&&
|
|
220
221
|
("JSON"!=$body$$.return&&($req$$.uploadFile=!0),underscore.extend($body$$,$req$$.files));create($req$$.user,$ctrl$$,$body$$,($e$$,$rs$$)=>{setImmediate(()=>{$session$$["creating_"+$name$$]=!1;if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});!1===$req$$.query.return_data?$res$$.send({_id:$rs$$._id.toString()}):$res$$.send($rs$$)})},null,$req$$)})};
|
|
221
222
|
controller.prototype.quickCreate=function(){let $model$$=this.model,$name$$=this.name,$ctrl$$=this,$createFromTemplate$$=async($req$$,$res$$,$body$jscomp$4_query$$)=>{let $session$$=$req$$.session;if(!0===$session$$["creating_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["creating_"+$name$$]=!0;if(!$body$jscomp$4_query$$){$body$jscomp$4_query$$=$req$$.params.template_code;if(!$body$jscomp$4_query$$)return $session$$["creating_"+$name$$]=
|
|
@@ -223,37 +224,37 @@ controller.prototype.quickCreate=function(){let $model$$=this.model,$name$$=this
|
|
|
223
224
|
{};delete $body$jscomp$4_query$$.so_ct;delete $body$jscomp$4_query$$.ngay_ct;delete $body$jscomp$4_query$$.user_created;delete $body$jscomp$4_query$$.date_created;delete $body$jscomp$4_query$$.user_updated;delete $body$jscomp$4_query$$.date_updated;delete $body$jscomp$4_query$$._id;delete $body$jscomp$4_query$$.pkey;delete $body$jscomp$4_query$$.__v;let $_data$$=$req$$.query;$req$$.body&&($_data$$=Object.assign($_data$$,$req$$.body));for(let $key$$ in $_data$$)$_data$$[$key$$]&&"access_token"!==$key$$&&
|
|
224
225
|
"token"!==$key$$&&"_id"!==$key$$&&(underscore.has($model$$.schema.paths,$key$$)&&($body$jscomp$4_query$$[$key$$]=$_data$$[$key$$]),$body$jscomp$4_query$$.details&&$body$jscomp$4_query$$.details.forEach($d$$=>{$d$$[$key$$]=$_data$$[$key$$]}));create($req$$.user,$ctrl$$,$body$jscomp$4_query$$,($e$$,$rs$$)=>{setImmediate(()=>{$session$$["creating_"+$name$$]=!1;if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})},
|
|
225
226
|
null,$req$$)};this.router.route(`${this.route_name}/quickcreate/:template_code`).get(function($req$$,$res$$){$createFromTemplate$$($req$$,$res$$)});this.router.route(`${this.route_name}/quickcreate/:template_code`).post(function($req$$,$res$$){$createFromTemplate$$($req$$,$res$$)})};
|
|
226
|
-
const update=async function($user$jscomp$0$$,$ctrl$$,$id$$,$data$jscomp$
|
|
227
|
-
{}).option;let $current_obj$$;if($ctrl$$.options.requireRecaptchaToken){if(!$data$jscomp$
|
|
228
|
-
($requireOtp$$=$requireOtp$$($data$jscomp$
|
|
229
|
-
if(!$obj$$)return $callback$$("Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y");underscore.has($schema_paths$$,"exfields")&&($obj$$.exfields=$obj$$.exfields||{});const $old_obj$$=$obj$$.toObject();$current_obj$$=_.cloneDeep($old_obj$$);const $data_keys$$=Object.keys($data$jscomp$
|
|
230
|
-
$user$jscomp$0$$.email,$module$$,"update",function($error$$,$hr$$,$c_app$$){setImmediate(()=>{if($hr$$)$ctrl$$.checkData($c_app$$,{...$data$jscomp$
|
|
231
|
-
"so_ct")&&$obj$$.ngay_ct&&$data$jscomp$
|
|
227
|
+
const update=async function($user$jscomp$0$$,$ctrl$$,$id$$,$data$jscomp$0$$,$callback$jscomp$1$$,$action$jscomp$0$$,$req$$){delete $data$jscomp$0$$.__v;try{const $model$$=$ctrl$$.model,$unique$$=$ctrl$$.unique,$module$$=$ctrl$$.module,$schema_paths$$=$model$$.schema.paths;underscore.has($schema_paths$$,"ma_ct")&&$ctrl$$.options.isVoucher&&($data$jscomp$0$$.ma_ct=$ctrl$$.name.toUpperCase());const $voucher_options$$=(await OptionsModel.findOne({id_app:$user$jscomp$0$$.current_id_app,id_func:$ctrl$$.name}).lean()||
|
|
228
|
+
{}).option;let $current_obj$$;if($ctrl$$.options.requireRecaptchaToken){if(!$data$jscomp$0$$["g-recaptcha-response"])return $callback$jscomp$1$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u g-recaptcha-response");try{await permission.verifyReCaptcha($data$jscomp$0$$["g-recaptcha-response"])}catch($e$$){return $callback$jscomp$1$$($e$$.message||$e$$.error||$e$$)}}if(0>global.configs.admins.indexOf($user$jscomp$0$$.email)){let $requireOtp$$=$ctrl$$.options.requireOtp;$requireOtp$$&&_.isFunction($requireOtp$$)&&
|
|
229
|
+
($requireOtp$$=$requireOtp$$($data$jscomp$0$$,{action:"update",_id:$id$$,user:$user$jscomp$0$$}));if($requireOtp$$)try{await permission.verifyOTP($user$jscomp$0$$.email,$data$jscomp$0$$["otp-id"],$data$jscomp$0$$["otp-code"])}catch($e$$){return $callback$jscomp$1$$({error:$e$$.message||$e$$.error||$e$$,code:ERR_VERIFY_OTP})}}async.waterfall([function($callback$$){setImmediate(function(){$model$$.findOne({_id:$id$$}).exec(function($error$$,$obj$$){setImmediate(()=>{if($error$$)return $callback$$($error$$);
|
|
230
|
+
if(!$obj$$)return $callback$$("Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y");underscore.has($schema_paths$$,"exfields")&&($obj$$.exfields=$obj$$.exfields||{});const $old_obj$$=$obj$$.toObject();$current_obj$$=_.cloneDeep($old_obj$$);const $data_keys$$=Object.keys($data$jscomp$0$$);for(let $key$$ in $old_obj$$)0>$data_keys$$.indexOf($key$$)&&($data$jscomp$0$$[$key$$]=$old_obj$$[$key$$]);$callback$$(null,$obj$$)})})})},function($obj$$,$callback$$){setImmediate(function(){permission.hasRight($user$jscomp$0$$.current_id_app,
|
|
231
|
+
$user$jscomp$0$$.email,$module$$,"update",function($error$$,$hr$$,$c_app$$){setImmediate(()=>{if($hr$$)$ctrl$$.checkData($c_app$$,{...$data$jscomp$0$$,_id:$obj$$._id.toString()},$e$$=>{if($e$$)return $callback$$($e$$);$callback$$(null,$obj$$)});else return $callback$$({error:$error$$||ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE})})},{data:$data$jscomp$0$$,obj:$obj$$,notNeedRight:$ctrl$$.options.notNeedRight})})},function($obj$$,$callback$$){underscore.has($model$$.schema.paths,"ngay_ct")&&underscore.has($model$$.schema.paths,
|
|
232
|
+
"so_ct")&&$obj$$.ngay_ct&&$data$jscomp$0$$.so_ct&&$obj$$.so_ct!==$data$jscomp$0$$.so_ct?OptionsModel.findOne({id_app:$obj$$.id_app,id_func:$ctrl$$.name},{option:1}).lean().exec(($e$jscomp$0$$,$rs$jscomp$0$$)=>{setImmediate(()=>{if($rs$jscomp$0$$&&$rs$jscomp$0$$.option&&$rs$jscomp$0$$.option.check_so_ct&&"0"!==$rs$jscomp$0$$.option.check_so_ct){let $query_check$$={id_app:$obj$$.id_app,so_ct:$data$jscomp$0$$.so_ct,_id:{$ne:$obj$$._id.toString()}},$tu_ngay$$;var $date_check_den_ngay$$=$data$jscomp$0$$.ngay_ct||
|
|
232
233
|
$obj$$.ngay_ct;switch($rs$jscomp$0$$.option.check_so_ct){case "1":$tu_ngay$$=moment($date_check_den_ngay$$).startOf("date").toDate();$date_check_den_ngay$$=moment($date_check_den_ngay$$).endOf("date").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$date_check_den_ngay$$};break;case "2":$tu_ngay$$=moment($date_check_den_ngay$$).startOf("month").toDate();$date_check_den_ngay$$=moment($date_check_den_ngay$$).endOf("month").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$date_check_den_ngay$$};
|
|
233
234
|
break;case "3":$tu_ngay$$=moment($date_check_den_ngay$$).startOf("quarter").toDate();$date_check_den_ngay$$=moment($date_check_den_ngay$$).endOf("quarter").toDate();$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$date_check_den_ngay$$};break;case "8":$tu_ngay$$=moment($date_check_den_ngay$$).startOf("year").toDate(),$date_check_den_ngay$$=moment($date_check_den_ngay$$).startOf("year").toDate(),$query_check$$.ngay_ct={$gte:$tu_ngay$$,$lte:$date_check_den_ngay$$}}$model$$.findOne($query_check$$,{so_ct:1}).lean().exec(($e$$,
|
|
234
|
-
$rs$$)=>{setImmediate(()=>{if($rs$$)return $callback$$("S\u1ed1 ch\u1ee9ng t\u1eeb "+$data$jscomp$
|
|
235
|
-
$e$$)}setImmediate(function(){$ctrl$$.updating?$ctrl$$.updating($user$jscomp$0$$,$data$jscomp$
|
|
236
|
-
$ctrl$$.dynamicUpdating($req$$.user,$data$jscomp$
|
|
237
|
-
$obj$$
|
|
238
|
-
$key$$," is not exist. please check unique of controller")});!0!==underscore.isEqual($c1$$,$c2$$)?isExists($model$$,$unique$$,$c2$$,$ctrl$$.replaceIfExists,function($error$jscomp$0$$,$kq$$){setImmediate(()=>{if($error$jscomp$0
|
|
239
|
-
else $callback$$($msgError$$)}else checkReference($model$$,$obj$$,function($error$$){setImmediate(()=>{if($error$$)return console.error("Keys arise data",$c1$$,$c2$$,$error$$),$callback$$({error:ERR_KEY_ARISE+($error$$.error
|
|
240
|
-
0>$unique$$.indexOf($key$$).length));if(0===$keys$$.length)return $callback$$(null,$obj$$);checkReference($model$$,$obj$$,function($msgError$$){setImmediate(()=>{if($msgError$$)if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0
|
|
241
|
-
$keys$$)},function($obj$jscomp$1$$,$callback$$){$ctrl$$.validating||($ctrl$$.validating=($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)});$ctrl$$.validating($user$jscomp$0$$,$obj$jscomp$1$$,($error$$,$obj$jscomp$0$$)=>{if($error$$)return $callback$$($error$$);
|
|
242
|
-
$fn$$){$fn$$()});$ctrl$$.options.onUpdateExtending($obj$jscomp$0$$,$data$jscomp$
|
|
243
|
-
$
|
|
244
|
-
{$
|
|
245
|
-
$
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
$
|
|
249
|
-
|
|
250
|
-
$
|
|
251
|
-
{
|
|
252
|
-
$
|
|
253
|
-
$
|
|
254
|
-
$callback$jscomp$1$$($e$$)}};
|
|
255
|
-
controller.prototype.update=function(){let $ctrl$$=this,$name$$=this.name;this.router.route(this.route_name+"/:id").put(function($req$$,$res$$){let $session$$=$req$$.session;if(!0===$session$$["updating_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["updating_"+$name$$]=!0;let $body$$=$req$$.body;$req$$.files&&underscore.extend($body$$,$req$$.files);let $data$$;try{$data$$=bodyToJson($body$$)}catch($e$$){return $res$$.status(400).send({error:$e$$.message
|
|
256
|
-
$e$$})}update($req$$.user,$ctrl$$,$req$$.params.id,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{$session$$["updating_"+$name$$]=!1;if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});!1===$req$$.query.return_data?$res$$.send({_id:$rs$$._id.toString()}):$res$$.send($rs$$)})},null,$req$$)})};
|
|
235
|
+
$rs$$)=>{setImmediate(()=>{if($rs$$)return $callback$$("S\u1ed1 ch\u1ee9ng t\u1eeb "+$data$jscomp$0$$.so_ct+" \u0111\u00e3 t\u1ed3n t\u1ea1i. H\u00e3y ch\u1ecdn m\u1ed9t s\u1ed1 ch\u1ee9ng t\u1eeb kh\u00e1c");$callback$$(null,$obj$$)})})}else $callback$$(null,$obj$$)})}):$callback$$(null,$obj$$)},($obj$jscomp$0$$,$callback$jscomp$0$$)=>{(async($obj$$,$callback$$)=>{try{(await permission.getFieldNotRight($obj$$.id_app,$user$jscomp$0$$.email,$ctrl$$.name)).forEach($f$$=>{delete $data$jscomp$0$$[$f$$]})}catch($e$$){console.error("Error get field not right",
|
|
236
|
+
$e$$)}setImmediate(function(){$ctrl$$.updating?$ctrl$$.updating($user$jscomp$0$$,$data$jscomp$0$$,$obj$$,function($error$jscomp$0$$,$_data$jscomp$0$$,$_obj$$){setImmediate(()=>{if($error$jscomp$0$$)return $callback$$($error$jscomp$0$$);if($ctrl$$.dynamicUpdating)$ctrl$$.dynamicUpdating($user$jscomp$0$$,$_data$jscomp$0$$,$_obj$$,function($error$$,$_data$$){if($error$$)return $callback$$($error$$);for(let $f$$ in $_data$$)underscore.has($schema_paths$$,$f$$)&&($data$jscomp$0$$[$f$$]=$_data$$[$f$$]);
|
|
237
|
+
$callback$$(null,$obj$$)});else{for(let $f$$ in $_data$jscomp$0$$)underscore.has($schema_paths$$,$f$$)&&($data$jscomp$0$$[$f$$]=$_data$jscomp$0$$[$f$$]);$callback$$(null,$obj$$)}})}):$ctrl$$.dynamicUpdating?$ctrl$$.dynamicUpdating($req$$.user,$data$jscomp$0$$,$obj$$,function($error$$,$_data$$){if($error$$)return $callback$$($error$$);for(let $f$$ in $_data$$)underscore.has($schema_paths$$,$f$$)&&($data$jscomp$0$$[$f$$]=$_data$$[$f$$]);$callback$$(null,$obj$$)}):$callback$$(null,$obj$$)})})($obj$jscomp$0$$,
|
|
238
|
+
$callback$jscomp$0$$)},function($obj$$,$callback$$){setImmediate(function(){if(!$unique$$||0===$unique$$.length)return $callback$$(null,$obj$$);let $c1$$={},$c2$$={};$obj$$.id_app&&($c1$$.id_app=$obj$$.id_app,$c2$$.id_app||($c2$$.id_app=$obj$$.id_app));$unique$$.forEach(function($key$$){$c1$$[$key$$]=$obj$$[$key$$];$ctrl$$.model.schema.paths[$key$$]?("number"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()?$c2$$[$key$$]=Number($data$jscomp$0$$[$key$$]):"date"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()?
|
|
239
|
+
$c2$$[$key$$]=new Date($data$jscomp$0$$[$key$$]):"string"==$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase()?$c2$$[$key$$]=($data$jscomp$0$$[$key$$]||"").toString():$c2$$[$key$$]=$data$jscomp$0$$[$key$$],$c2$$[$key$$]||($c2$$[$key$$]=$c1$$[$key$$])):console.error("field",$key$$," is not exist. please check unique of controller")});!0!==underscore.isEqual($c1$$,$c2$$)?isExists($model$$,$unique$$,$c2$$,$ctrl$$.replaceIfExists,function($error$jscomp$0$$,$kq$$){setImmediate(()=>{if($error$jscomp$0$$||
|
|
240
|
+
$kq$$){let $msgError$$=$error$jscomp$0$$||ERR_ALREADY_EXIST;console.error($msgError$$,$c2$$);if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);else $callback$$($msgError$$)}else checkReference($model$$,$obj$$,function($error$$){setImmediate(()=>{if($error$$)return console.error("Keys arise data",$c1$$,$c2$$,$error$$),$callback$$({error:ERR_KEY_ARISE+($error$$.error||
|
|
241
|
+
$error$$.message||$error$$),code:ERR_KEY_ARISE_CODE});$callback$$(null,$obj$$)})},$unique$$)})}):$callback$$(null,$obj$$)})},function($obj$$,$callback$$){let $keys$$=underscore.keys($model$$.referenceKeys).filter($key$$=>"_id"!==$key$$);$unique$$&&($keys$$=$keys$$.filter($key$$=>0>$unique$$.indexOf($key$$).length));if(0===$keys$$.length)return $callback$$(null,$obj$$);checkReference($model$$,$obj$$,function($msgError$$){setImmediate(()=>{if($msgError$$)if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,
|
|
242
|
+
$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);else $callback$$({error:ERR_ARISE+($msgError$$.error||$msgError$$.message||$msgError$$),code:ERR_ARISE_CODE});else $callback$$(null,$obj$$)})},$keys$$)},function($obj$jscomp$1$$,$callback$$){$ctrl$$.validating||($ctrl$$.validating=($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)});$ctrl$$.validating($user$jscomp$0$$,$obj$jscomp$1$$,($error$$,$obj$jscomp$0$$)=>{if($error$$)return $callback$$($error$$);
|
|
243
|
+
setImmediate(function(){$data$jscomp$0$$.date_updated=new Date;$data$jscomp$0$$.user_updated=$user$jscomp$0$$.email;delete $data$jscomp$0$$.__v;$ctrl$$.options.onUpdateExtending||($ctrl$$.options.onUpdateExtending=function($obj$$,$data$$,$action$$,$fn$$){$fn$$()});$ctrl$$.options.onUpdateExtending($obj$jscomp$0$$,$data$jscomp$0$$,$action$jscomp$0$$,function(){underscore.has($schema_paths$$,"exfields")&&$data$jscomp$0$$.exfields&&($obj$jscomp$0$$.exfields=$data$jscomp$0$$.exfields);delete $data$jscomp$0$$.__v;
|
|
244
|
+
for(let $f$$ in $data$jscomp$0$$)underscore.has($schema_paths$$,$f$$)&&($obj$jscomp$0$$.set($f$$,$data$jscomp$0$$[$f$$]),"exfields"!==$f$$||$obj$jscomp$0$$.exfields||($obj$jscomp$0$$.exfields={}));validate($obj$jscomp$0$$,function($msgError$$){setImmediate(()=>{if($msgError$$)if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,$obj$jscomp$0$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);else $callback$$($msgError$$);else $callback$$(null,
|
|
245
|
+
$obj$jscomp$0$$)})})})})})},function($obj$$,$callback$$){setImmediate(async()=>{$obj$$.ngay_ct&&($obj$$.ngay_ct=moment($obj$$.ngay_ct).toDate());for(var $$condition_k$$ in $ctrl$$.keyValues)$obj$$[$$condition_k$$]=$ctrl$$.keyValues[$$condition_k$$];Object.keys($model$$.schema.paths).filter($model_path$$=>$obj$$[$model_path$$]&&underscore.isArray($obj$$[$model_path$$])).forEach($model_path$$=>{$model$$.schema.paths[$model_path$$].schema&&$model$$.schema.paths[$model_path$$].schema.paths&&Object.keys($model$$.schema.paths[$model_path$$].schema.paths).filter($path$$=>
|
|
246
|
+
"line"!==$path$$&&"_id"!==$path$$&&"__v"!==$path$$&&0<=fields_sync_master_detail.indexOf($path$$)).forEach($path$$=>{$obj$$[$path$$]&&$obj$$[$model_path$$].filter($detail$$=>!$detail$$[$path$$]).forEach($detail$$=>{$detail$$[$path$$]=$obj$$[$path$$]})})});await createIdRef($model$$,$obj$$);$ctrl$$.saving&&await $ctrl$$.saving($user$jscomp$0$$,$obj$$);$ctrl$$.emit("saving",$obj$$);let $obj_created$$,$error$jscomp$0$$;$data$jscomp$0$$.$condition&&($$condition_k$$=$data$jscomp$0$$.$condition,$$condition_k$$._id=
|
|
247
|
+
$obj$$._id,await $model$$.findOne($$condition_k$$)||($error$jscomp$0$$=ERR_CAN_NOT_UPDATE),delete $data$jscomp$0$$.$condition);if(!$error$jscomp$0$$)try{delete $obj$$.__v,$obj_created$$=await $obj$$.save()}catch($e$$){$error$jscomp$0$$=$e$$}if($error$jscomp$0$$){let $msgErrors$$=[];for(let $k$$ in $error$jscomp$0$$.errors)$msgErrors$$.push($error$jscomp$0$$.errors[$k$$].message);0==$msgErrors$$.length&&($msgErrors$$=$error$jscomp$0$$.message);$msgErrors$$||($msgErrors$$=JSON.stringify($error$jscomp$0$$));
|
|
248
|
+
if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,$obj$$,$e$$=>{$e$$&&console.error("onErrorUpdating",$e$$);$callback$$({error:$msgErrors$$,code:ERR_CAN_NOT_UPDATE_CODE})},$current_obj$$);else $callback$$({error:$msgErrors$$,code:ERR_CAN_NOT_UPDATE_CODE})}else $req$$&&$req$$.header&&setImmediate(()=>{log.create({id_app:$user$jscomp$0$$.current_id_app,id_func:$ctrl$$.name,action:"UPDATE",data:{oldData:$current_obj$$,newData:$data$jscomp$0$$,id:$obj$$._id.toString()}},
|
|
249
|
+
$user$jscomp$0$$.email,$req$$.header("user-agent"),$req$$)}),postData($obj_created$$,$ctrl$$,function($msgError$$){$msgError$$?setImmediate(()=>{$current_obj$$&&$model$$.findByIdAndUpdate($current_obj$$._id,{$set:$current_obj$$},function($err$$,$restore_data$$){if($err$$||!$restore_data$$)return console.error("can't restore voucher",$err$$||": don't find voucher");console.log("restored data of voucher. posting...");$model$$.findById($current_obj$$._id,($e$jscomp$0$$,$_d$$)=>{if(!$_d$$)return console.error("Don't find voucher",
|
|
250
|
+
$current_obj$$._id);postData($_d$$,$ctrl$$,function($e$$){if($e$$)return console.error("can't repost voucher",$e$$);console.log("reposted voucher",$_d$$._id)})})});if($ctrl$$.options.onErrorUpdating)$ctrl$$.options.onErrorUpdating($user$jscomp$0$$,$obj$$,$e$$=>{$e$$&&($msgError$$=$msgError$$+"\n"+$e$$);$callback$$($msgError$$)},$current_obj$$);else $callback$$($msgError$$)}):setImmediate(()=>{$ctrl$$.emit("saved",$obj_created$$);$ctrl$$.emit("updated",$obj_created$$);$obj_created$$=$obj_created$$.toObject();
|
|
251
|
+
runWebhooks($ctrl$$,$obj_created$$,"UPDATE",$voucher_options$$);$req$$&&pushNotification($ctrl$$,$obj_created$$,"update",$current_obj$$,null,{exclude_token:$req$$.query.access_token});$ctrl$$.cacheData($obj_created$$);if($req$$&&!1!==$req$$.query.return_data)$ctrl$$.onView($user$jscomp$0$$,[$obj_created$$],function($error$$,$viewValue$$){setImmediate(()=>{if($error$$)return $callback$$($error$$);$callback$$(null,$viewValue$$[0])})},{req:$req$$});else $callback$$(null,{_id:$obj_created$$._id})})})})},
|
|
252
|
+
function($obj$$,$callback$$){$ctrl$$.requestApprove($user$jscomp$0$$.current_app_info,$user$jscomp$0$$,$obj$$,$callback$$,$voucher_options$$)},function($obj$jscomp$0$$,$callback$$){void 0!=$obj$jscomp$0$$.trang_thai&&setImmediate(async()=>{Approve.findOne({id_ct:$obj$jscomp$0$$._id.toString(),"update_after_approve.data.trang_thai":$obj$jscomp$0$$.trang_thai.toString()}).lean().exec(($e$$,$rs$$)=>{!$rs$$||$rs$$.user_approved||$rs$$.user_denied||($rs$$.user_approved=$req$$.user.email,$rs$$.user_approved_name=
|
|
253
|
+
$req$$.user.name,$rs$$.date_approved=new Date,Approve.updateOne({_id:$rs$$._id},$rs$$).then(()=>{Approve.sendNotifyApproved($rs$$,$req$$.query.access_token)}))})});setImmediate(async()=>{(await permission.getFieldNotRight($obj$jscomp$0$$.id_app,$user$jscomp$0$$.email,$ctrl$$.name)).forEach($f$$=>{delete $obj$jscomp$0$$[$f$$]});$obj$jscomp$0$$.collection_name=$ctrl$$.collection_name;$ctrl$$.updated?$ctrl$$.updated($user$jscomp$0$$,$obj$jscomp$0$$,function($error$jscomp$0$$,$obj$$){if($error$jscomp$0$$)return console.error("error when saved",
|
|
254
|
+
$error$jscomp$0$$),$callback$$($error$jscomp$0$$);$ctrl$$.dynamicUpdated?$ctrl$$.dynamicUpdated($user$jscomp$0$$,$obj$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$$)}):$callback$$(null,$obj$$)},$current_obj$$):$ctrl$$.dynamicUpdated?$ctrl$$.dynamicUpdated($user$jscomp$0$$,$obj$jscomp$0$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null,$obj$jscomp$0$$)}):$callback$$(null,$obj$jscomp$0$$)})}],($e$jscomp$164_name_cached$$,$rs$$)=>{$e$jscomp$164_name_cached$$?
|
|
255
|
+
(console.error($e$jscomp$164_name_cached$$),$callback$jscomp$1$$($e$jscomp$164_name_cached$$)):($e$jscomp$164_name_cached$$=$model$$.collection.name,$user$jscomp$0$$.current_id_app&&($e$jscomp$164_name_cached$$+=$user$jscomp$0$$.current_id_app),delete global.cacheDatas[$e$jscomp$164_name_cached$$],$callback$jscomp$1$$(null,$rs$$))})}catch($e$$){console.error($e$$),$callback$jscomp$1$$($e$$)}};
|
|
256
|
+
controller.prototype.update=function(){let $ctrl$$=this,$name$$=this.name;this.router.route(this.route_name+"/:id").put(function($req$$,$res$$){let $session$$=$req$$.session;if(!0===$session$$["updating_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["updating_"+$name$$]=!0;let $body$$=$req$$.body;$req$$.files&&underscore.extend($body$$,$req$$.files);let $data$$;try{$data$$=bodyToJson($body$$)}catch($e$$){return $res$$.status(400).send({error:$e$$.message||
|
|
257
|
+
$e$$.error||$e$$})}update($req$$.user,$ctrl$$,$req$$.params.id,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{$session$$["updating_"+$name$$]=!1;if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});!1===$req$$.query.return_data?$res$$.send({_id:$rs$$._id.toString()}):$res$$.send($rs$$)})},null,$req$$)})};
|
|
257
258
|
function checkReference($model$jscomp$0$$,$obj$$,$fn$$,$keys$$){$model$jscomp$0$$.referenceKeys?($keys$$||($keys$$=underscore.keys($model$jscomp$0$$.referenceKeys)),async.map($keys$$,function($key$$,$callback$$){setImmediate(()=>{let $ref$$=$model$jscomp$0$$.referenceKeys[$key$$];if(!$ref$$)return $callback$$();let $value$$=$obj$$[$key$$];"_id"===$key$$&&($value$$=$value$$.toString());if(void 0==$value$$||null==$value$$||""==$value$$)return $callback$$();async.map($ref$$,function($r$$,$cb$$){setImmediate(()=>
|
|
258
259
|
{let $model$$=mongoose.models[$r$$.model];if($model$$){let $query$$={id_app:$obj$$.id_app};var $_w_k$$=$r$$.key;$_w_k$$&&($query$$[$_w_k$$]=$value$$);$r$$.where&&(underscore.isObject($r$$.where)&&($query$$=Object.assign($query$$,$r$$.where)),underscore.isFunction($r$$.where)&&($_w_k$$=$r$$.where($obj$$),$query$$=Object.assign($query$$,$_w_k$$)));$model$$.find($query$$).limit(1).lean().exec(function($error$$,$o$$){setImmediate(()=>{if($error$$)return $cb$$($error$$);if($o$$&&0<$o$$.length){let $msgError$$;
|
|
259
260
|
$msgError$$=$r$$.error?(new Function("obj","return `"+$r$$.error.replace("{{VALUE}}",$value$$)+"`"))($obj$$):ERR_DATA_GENERATED;return $cb$$({error:$msgError$$,code:ERR_DATA_GENERATED_CODE})}$cb$$()})})}else $cb$$()})},function($e$$){if($e$$)return $callback$$($e$$);$callback$$()})})},$error$$=>{$fn$$($error$$)})):$fn$$()}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
'use strict';const underscore=require("underscore"),fs=require("fs"),path=require("path"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),textReport=require("../libs/textReport"),excelReport=require("excel-report"),log=global.getModel("log"),rpt=global.getModel("rpt"),reportinfo=global.getModel("reportinfo"),
|
|
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
|
|
34
|
-
|
|
35
|
-
|
|
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$$||
|
|
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$$)
|
|
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$$,
|