flexbiz-server 12.1.27 → 12.1.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flexbiz-server",
3
3
  "main": "./server/app.js",
4
4
  "description": "Flexible Server",
5
- "version": "12.1.27",
5
+ "version": "12.1.28",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -1,10 +1,10 @@
1
1
  'use strict';const EventEmitter=require("events").EventEmitter,underscore=require("underscore"),_=require("lodash"),excelReport=require("excel-report"),validate=require("../libs/validate"),ckvt=require("../libs/ckvt"),vsocai=global.getModel("vsocai"),Socai=global.getModel("socai"),OptionsModel=global.getModel("options"),Approve=global.getModel("approve"),rpt=global.getModel("rpt"),log=global.getModel("log"),trangthai=global.getModel("trangthai"),app=global.getModel("app"),Participant=global.getModel("participant"),
2
- dmqct=global.getModel("dmqct"),counter=global.getModel("counter"),async=require("async"),excel=require("../libs/excel"),permission=require("../libs/permission"),fs=require("fs"),link=global.getModel("link"),Moment=require("moment-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",
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
+ JSONParser}=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
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,BOOK_LOCK=4444,fields_sync_master_detail=["ma_ct","so_ct","ngay_ct"],validator=require("../libs/validator");function bodyToJson($body$$){$body$$.json&&($body$$=JSON.parse($body$$.json));delete $body$$._id;delete $body$$.__v;return $body$$}
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,BOOK_LOCK=4444,fields_sync_master_detail=["ma_ct","so_ct","ngay_ct"],validator=require("../libs/validator");function bodyToJson($body$$){$body$$.json&&($body$$=JSONParser($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
- $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$$}
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$$]=JSONParser($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"===
9
9
  $collection$$||"participant"===$collection$$)$fields$$={name:1};"app"===$collection$$&&($fields$$||($fields$$={}),$fields$$={...$fields$$,viettel_user:0,viettel_password:0,viettel_url_service:0,sip_uri:0,sip_password:0,sip_websocket:0,voiip_access_token:0,voiip_webhook:0,wallet_address:0,wallet_token:0,owner:0,default_password:0,email_host:0,email_port:0,email_secure:0,email_authMethod:0,email_user:0,email_pass:0,email_name:0,exfields:0,ssl_key:0,ssl_cert:0,ssl_ca:0});return $col$$.findOne($condition$$,
10
10
  $fields$$).lean().exec()}throw`Collection ${$collection$$} is not exists`;},isExists=function($model$$,$unique$$,$obj$$,$replaceIfExists$$,$fn$$){if(!$unique$$||0===$unique$$.length)return $fn$$(null,!1);let $condition$$;$condition$$=$obj$$.id_app?{id_app:$obj$$.id_app}:{};for(let $i$$=0;$i$$<$unique$$.length;$i$$++){let $key$$=$unique$$[$i$$],$v$$=$obj$$[$key$$];void 0!=$v$$&&$model$$.schema.paths[$key$$]&&(null!==$v$$?"number"==$model$$.schema.paths[$key$$].instance.toLowerCase()?$condition$$[$key$$]=
@@ -13,33 +13,33 @@ 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.asyncView=async($user$$,$items$$,$options$$)=>{const $self$$=this;return new Promise($resolve$$=>{$self$$.onView($user$$,
16
- $items$$,($error$$,$rs$$)=>{if($error$$)return console.error($error$$),$resolve$$($items$$);$resolve$$($rs$$)},$options$$)})};this.onView=($user$$,$items$$,$next$$,$options$$)=>{let $self$$=this,$schema_paths$$=$model$$.schema.paths;underscore.has($schema_paths$$,"exfields")&&$items$$.forEach($item$$=>{delete $item$$.__v;$item$$.exfields||($item$$.exfields={})});async.series({_user_created:$callback$$=>{$items$$.filter($item$$=>$item$$.user_created).joinModel2(null,User,{where:{user_created:"email"},
17
- fields:{name_user_created:"name"}},()=>{$callback$$(null)})},_user_updated:$callback$$=>{$items$$.filter($item$$=>$item$$.user_updated).joinModel2(null,User,{where:{user_updated:"email"},fields:{name_user_updated:"name"}},()=>{$callback$$(null)})},_approve:$callback$$=>{async.mapSeries($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$$,
18
- $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,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$$,
19
- "id_ct_chuyen")&&$user$$.current_app_info&&$user$$.current_app_info.options&&$user$$.current_app_info.options.id_app_thue)async.mapSeries($items$$,($item$$,$next$$)=>{setImmediate(()=>{$model$$.findOne({id_app:$user$$.current_app_info.options.id_app_thue,id_ct_chuyen:$item$$._id.toString()},{_id:1}).lean().exec(async($e$$,$rs$$)=>{$rs$$&&($item$$.id_ct_nhan=$rs$$._id);$next$$(null)})})},()=>{$callback$$(null)});else return $callback$$()},posted:$callback$$=>{$options$$&&$options$$.req&&($options$$.req.query.show_posted_book||
20
- $options$$.req.query.show_not_post_book)?async.mapSeries($items$$,($item$$,$next$$)=>{setImmediate(async()=>{let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book,$exists$$=await global.getModel($book$$).findOne({id_ct:$item$$._id.toString()},{_id:1});$item$$[`${$book$$}_posted`]=!!$exists$$;$next$$()})},()=>{$callback$$(null)}):$callback$$()}},$e$jscomp$0$$=>{if($e$jscomp$0$$)return $next$$($e$jscomp$0$$);if($options$$&&$options$$.req&&($options$$.req.query.show_posted_book||
21
- $options$$.req.query.show_not_post_book)){let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book;$items$$=$items$$.filter($r$$=>$options$$.req.query.show_posted_book?$r$$[`${$book$$}_posted`]:!$r$$[`${$book$$}_posted`])}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$$||
22
- $items$$,function($error$$,$rs$$){if($error$$)return $next$$($error$$);$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.excelParse=$options$jscomp$0$$.onExcelParse;this.options=$options$jscomp$0$$;
23
- this.replaceIfExists=$options$jscomp$0$$.replaceIfExists;this.notNeedRight=$options$jscomp$0$$.notNeedRight}getProperty($name$$){return this[$name$$]}getNextId(){let $ma_ct$$=this.name;this.router.route(`${this.route_name}/next/:field`).get(($field$$,$res$$)=>{let $id_app$$=$field$$.user.current_id_app;$field$$=$field$$.params.field;"so_ct"===$field$$?$res$$.send({[$field$$]:$ma_ct$$}):getNextSequence($id_app$$,$ma_ct$$,$field$$,($e$$,$rs$$)=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):
24
- $res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})})}async checkData($appInfo$$,$data$$,$fn$$){const $options$$=this.options;if($data$$.trang_thai&&$data$$.ma_ct){let $tt$$=await trangthai.findOne({ma_ct:$data$$.ma_ct,ma_trang_thai:$data$$.trang_thai},{check_data:1}).lean();if($tt$$&&0==$tt$$.check_data)return $fn$$()}async.series({checkTonKho:$callback$jscomp$0$$=>{$data$$.details&&$appInfo$$&&$appInfo$$.options&&$appInfo$$.options.khong_xuat_kho_am&&0!=$options$$.check_stock?
25
- (async()=>{let $details$$=$data$$.details.filter($d$$=>$d$$.ma_vt&&$d$$.sl_xuat);await $details$$.asyncJoinModel2($appInfo$$._id,dmvt,{where:{ma_vt:"ma_vt"},fields:["tg_tk","kg_kiem_tra_ton_kho","kg_kiem_tra_ton_kho_tt","combo","ten_vt"]});$details$$=$details$$.filter($d$$=>$d$$.tg_tk&&!$d$$.kg_kiem_tra_ton_kho||0<($d$$.combo||[]).length);$details$$=$details$$.map($detail$$=>$detail$$.combo&&0<$detail$$.combo.length?$detail$$.combo.map($c$$=>{$c$$=$c$$.toObject?$c$$.toObject():{...$c$$};$c$$.sl_xuat*=
26
- $detail$$.sl_xuat;$c$$.ma_kho=$detail$$.ma_kho;return $c$$}):[$detail$$]).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);await $details$$.asyncJoinModel2($appInfo$$._id,dmqddvt,{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:"ty_le_qd"});let $data_sokho$$=[];$data$$._id&&($data_sokho$$=await Sokho.find({id_ct:$data$$._id.toString()}).lean());$details$$.forEach($d$$=>{$d$$.he_so_qd=$d$$.ty_le_qd||1;$d$$.sl_xuat_qd=$d$$.he_so_qd*$d$$.sl_xuat});$details$$=await $details$$.asyncGroupBy(["ma_vt","ma_kho","ten_vt"],
27
- ["sl_xuat_qd"]);async.mapSeries($details$$,($d$$,$callback$$)=>{let $ma_kho$$=$d$$.ma_kho||$data$$.ma_kho||$data$$.ma_kho_x,$query$$={ma_vt:$d$$.ma_vt,ma_kho:$ma_kho$$,ngay:new Date,id_app:$appInfo$$._id};$d$$.kg_kiem_tra_ton_kho_tt||($d$$.ma_lo&&($query$$.ma_lo=$d$$.ma_lo),$d$$.han_sd&&($query$$.han_sd=$d$$.han_sd),$d$$.ma_tt1&&($query$$.ma_tt1=$d$$.ma_tt1),$d$$.ma_tt2&&($query$$.ma_tt2=$d$$.ma_tt2),$d$$.ma_tt3&&($query$$.ma_tt3=$d$$.ma_tt3));ckvt($query$$,function($e$$,$rs$$){if($e$$)return $callback$$($e$$);
28
- $rs$$?($e$$=$rs$$.csum("ton"),$rs$$=$data_sokho$$.filter($s$$=>$s$$.ma_vt===$d$$.ma_vt&&$s$$.ma_kho===$ma_kho$$).reduce(($a$$,$b$$)=>($a$$.sl_xuat_qd||0)+($b$$.sl_xuat_qd||0),0),$d$$.sl_xuat_qd>utils.round($e$$+$rs$$,2)?$callback$$(`S\u1ea3n ph\u1ea9m ${$d$$.ma_vt} - ${$d$$.ten_vt} c\u00f3 s\u1ed1 l\u01b0\u1ee3ng xu\u1ea5t quy \u0111\u1ed5i (${$d$$.sl_xuat_qd}) l\u1edbn h\u01a1n s\u1ed1 l\u01b0\u1ee3ng t\u1ed3n quy \u0111\u1ed5i (${$e$$+$rs$$})`):$callback$$()):$callback$$()})},$e$$=>{$callback$jscomp$0$$($e$$)})})():
29
- $callback$jscomp$0$$()}},$e$$=>{$fn$$($e$$)})}cacheData($obj$$,$callback$$){$obj$$&&$obj$$.toObject&&($obj$$=$obj$$.toObject());redisCache.set(this.model.collection.name.substring(0,this.model.collection.name.length-1),$obj$$,$callback$$)}deleteData($obj$$,$callback$$){$obj$$&&$obj$$.toObject&&($obj$$=$obj$$.toObject());redisCache.remove(this.model.collection.name.substring(0,this.model.collection.name.length-1),$obj$$,$callback$$)}createRoute($routeName_url$$,$callback$$,$_options$$={method:"GET"}){let $self$$=
30
- this;$_options$$.method=$_options$$.method?$_options$$.method.toUpperCase():"GET";let $r$$=function($req$$,$res$$){!1===$self$$.require_id_app?$callback$$($req$$,function($e$$,$rs$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)},$res$$):permission.hasRight($req$$.params.id_app,$req$$.user.email,$self$$.module,"view",function($error$$,$hr$$){$hr$$?$callback$$($req$$,function($e$$,$rs$$){if($e$$)return console.error($e$$),
31
- $e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)},$res$$):$res$$.status(403).send({error:$error$$||ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE})},{notNeedRight:$self$$.notNeedRight||$_options$$.notNeedRight})};$routeName_url$$=`${this.route_name}/${$routeName_url$$}`;let $router$$=this.router;"DELETE"==$_options$$.method?$router$$.route($routeName_url$$).delete($r$$):"POST"==$_options$$.method?$router$$.route($routeName_url$$).post($r$$):
32
- "PUT"==$_options$$.method?$router$$.route($routeName_url$$).put($r$$):$router$$.route($routeName_url$$).get($r$$)}async requestApprove($app_info$$,$user_request$$,$obj_request$$,$next$$,$voucher_options$$){let $ctrl$$=this;if(!$app_info$$)return $next$$(null,$obj_request$$);let $obj$$;$obj$$=$obj_request$$.toObject?$obj_request$$.toObject():_.cloneDeep($obj_request$$);$obj$$.ma_ct=$obj$$.ma_ct||$ctrl$$.name;let $approveDatas$$=[];$voucher_options$$||($voucher_options$$=(await OptionsModel.findOne({id_app:$obj$$.id_app,
33
- id_func:$ctrl$$.name},{option:1}).lean()||{}).option);$voucher_options$$&&$voucher_options$$.custom_approve_user&&$voucher_options$$.custom_approve_user.forEach($trang_thai_approve$$=>{let $update_after_approve$$,$update_after_deny$$;if($trang_thai_approve$$.update_after_approve)try{let $str_func$$=$trang_thai_approve$$.update_after_approve;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$update_after_approve$$=evalute($str_func$$)}catch($e$$){console.error($e$$),$update_after_approve$$=
34
- {}}else $update_after_approve$$={};$trang_thai_approve$$.update_after_approve={module:$ctrl$$.name,data:{trang_thai:$trang_thai_approve$$.trang_thai2,...($update_after_approve$$.data||{})}};if($trang_thai_approve$$.update_after_deny)try{let $str_func$$=$trang_thai_approve$$.update_after_deny;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$update_after_deny$$=evalute($str_func$$)}catch($e$$){console.error($e$$)}if($update_after_deny$$||$trang_thai_approve$$.trang_thai3)$trang_thai_approve$$.update_after_deny=
35
- {module:$ctrl$$.name,data:{trang_thai:$trang_thai_approve$$.trang_thai3,...(($update_after_deny$$||{}).data||{})}};$approveDatas$$.push($trang_thai_approve$$)});$approveDatas$$=$approveDatas$$.filter($approveData_condition$$=>{$approveData_condition$$=$approveData_condition$$.condition;if(!$approveData_condition$$)return!0;$approveData_condition$$.indexOf(!1)&&($approveData_condition$$=`return ${$approveData_condition$$}`);try{return evalute($approveData_condition$$,{master:$obj$$,data:$obj$$})}catch($e$$){return console.error("check condition approve",
36
- $e$$,$approveData_condition$$),!1}});$approveDatas$$.filter($a$$=>$a$$.approve_users).forEach($approveData$$=>{setImmediate(()=>{let $title$$=$approveData$$.title||"Y\u00eau c\u1ea7u duy\u1ec7t";if(0<=$title$$.indexOf("return ")){var $ds_nguoi_duyet_str_func$$=$title$$;try{$title$$=evalute($ds_nguoi_duyet_str_func$$,{master:$obj$$,data:$obj$$})}catch($e$$){console.error($e$$,$ds_nguoi_duyet_str_func$$)}}$ds_nguoi_duyet_str_func$$=$approveData$$.approve_users;let $update_after_approve$$=$approveData$$.update_after_approve,
37
- $update_after_deny$$=$approveData$$.update_after_deny;if(_.isString($ds_nguoi_duyet_str_func$$))try{let $str_func$$=$ds_nguoi_duyet_str_func$$;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$ds_nguoi_duyet_str_func$$=evalute($str_func$$,{master:$obj$$,data:$obj$$});if(!_.isArray($ds_nguoi_duyet_str_func$$)){console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng, hi\u1ec7n t\u1ea1i \u0111ang l\u00e0",$ds_nguoi_duyet_str_func$$);return}}catch($e$$){console.error($e$$,
38
- $ds_nguoi_duyet_str_func$$);return}if($approveData$$.approve_users_custom)try{let $str_func$$=$approveData$$.approve_users_custom;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);let $ds_nguoi_duyet_custom$$=evalute($str_func$$,{master:$obj$$,data:$obj$$});$ds_nguoi_duyet_custom$$&&(_.isArray($ds_nguoi_duyet_custom$$)?$ds_nguoi_duyet_str_func$$=[...$ds_nguoi_duyet_str_func$$,...$ds_nguoi_duyet_custom$$]:console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng, hi\u1ec7n t\u1ea1i \u0111ang l\u00e0",
16
+ $items$$,($error$$,$rs$$)=>{if($error$$)return console.error($error$$),$resolve$$($items$$);$resolve$$($rs$$)},$options$$)})};this.onView=($user$$,$items$$,$next$$,$options$$)=>{let $self$$=this,$fields_load$$="";$options$$&&$options$$.req&&$options$$.req.query&&$options$$.req.query.fields&&($fields_load$$=$options$$.req.query.fields);let $schema_paths$$=$model$$.schema.paths;underscore.has($schema_paths$$,"exfields")&&$items$$.forEach($item$$=>{delete $item$$.__v;$item$$.exfields||($item$$.exfields=
17
+ {})});async.series({_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$$=>{!$fields_load$$||0<=$fields_load$$.indexOf("approve_data")?async.mapSeries($items$$,
18
+ ($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,
19
+ Participant,{where:{user_denied:"email"},fields:{user_denied_name:"name",signature_image:"signature_image"}});$next$$(null)})})})},()=>{$callback$$(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.mapSeries($items$$,($item$$,$next$$)=>{setImmediate(()=>{$model$$.findOne({id_app:$user$$.current_app_info.options.id_app_thue,id_ct_chuyen:$item$$._id.toString()},
20
+ {_id:1}).lean().exec(async($e$$,$rs$$)=>{$rs$$&&($item$$.id_ct_nhan=$rs$$._id);$next$$(null)})})},()=>{$callback$$(null)});else return $callback$$()},posted:$callback$$=>{$options$$&&$options$$.req&&($options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book)?async.mapSeries($items$$,($item$$,$next$$)=>{setImmediate(async()=>{let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book,$exists$$=await global.getModel($book$$).findOne({id_ct:$item$$._id.toString()},
21
+ {_id:1});$item$$[`${$book$$}_posted`]=!!$exists$$;$next$$()})},()=>{$callback$$(null)}):$callback$$()}},$e$jscomp$0$$=>{if($e$jscomp$0$$)return $next$$($e$jscomp$0$$);if($options$$&&$options$$.req&&($options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book)){let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book;$items$$=$items$$.filter($r$$=>$options$$.req.query.show_posted_book?$r$$[`${$book$$}_posted`]:!$r$$[`${$book$$}_posted`])}setImmediate(()=>
22
+ {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$$);$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$$,
23
+ $items$$,function($error$$,$rs$$){if($error$$)return $next$$($error$$);$next$$(null,$rs$$||$items$$)}):$next$$(null,$items$$)})})};this.excelParse=$options$jscomp$0$$.onExcelParse;this.options=$options$jscomp$0$$;this.replaceIfExists=$options$jscomp$0$$.replaceIfExists;this.notNeedRight=$options$jscomp$0$$.notNeedRight}getProperty($name$$){return this[$name$$]}getNextId(){let $ma_ct$$=this.name;this.router.route(`${this.route_name}/next/:field`).get(($field$$,$res$$)=>{let $id_app$$=$field$$.user.current_id_app;
24
+ $field$$=$field$$.params.field;"so_ct"===$field$$?$res$$.send({[$field$$]:$ma_ct$$}):getNextSequence($id_app$$,$ma_ct$$,$field$$,($e$$,$rs$$)=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})})}async checkData($appInfo$$,$data$$,$fn$$){const $options$$=this.options;if($data$$.trang_thai&&$data$$.ma_ct){let $tt$$=await trangthai.findOne({ma_ct:$data$$.ma_ct,ma_trang_thai:$data$$.trang_thai},{check_data:1}).lean();
25
+ if($tt$$&&0==$tt$$.check_data)return $fn$$()}async.series({checkTonKho:$callback$jscomp$0$$=>{$data$$.details&&$appInfo$$&&$appInfo$$.options&&$appInfo$$.options.khong_xuat_kho_am&&0!=$options$$.check_stock?(async()=>{let $details$$=$data$$.details.filter($d$$=>$d$$.ma_vt&&$d$$.sl_xuat);await $details$$.asyncJoinModel2($appInfo$$._id,dmvt,{where:{ma_vt:"ma_vt"},fields:["tg_tk","kg_kiem_tra_ton_kho","kg_kiem_tra_ton_kho_tt","combo","ten_vt"]});$details$$=$details$$.filter($d$$=>$d$$.tg_tk&&!$d$$.kg_kiem_tra_ton_kho||
26
+ 0<($d$$.combo||[]).length);$details$$=$details$$.map($detail$$=>$detail$$.combo&&0<$detail$$.combo.length?$detail$$.combo.map($c$$=>{$c$$=$c$$.toObject?$c$$.toObject():{...$c$$};$c$$.sl_xuat*=$detail$$.sl_xuat;$c$$.ma_kho=$detail$$.ma_kho;return $c$$}):[$detail$$]).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);await $details$$.asyncJoinModel2($appInfo$$._id,dmqddvt,{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:"ty_le_qd"});let $data_sokho$$=[];$data$$._id&&($data_sokho$$=await Sokho.find({id_ct:$data$$._id.toString()}).lean());
27
+ $details$$.forEach($d$$=>{$d$$.he_so_qd=$d$$.ty_le_qd||1;$d$$.sl_xuat_qd=$d$$.he_so_qd*$d$$.sl_xuat});$details$$=await $details$$.asyncGroupBy(["ma_vt","ma_kho","ten_vt"],["sl_xuat_qd"]);async.mapSeries($details$$,($d$$,$callback$$)=>{let $ma_kho$$=$d$$.ma_kho||$data$$.ma_kho||$data$$.ma_kho_x,$query$$={ma_vt:$d$$.ma_vt,ma_kho:$ma_kho$$,ngay:new Date,id_app:$appInfo$$._id};$d$$.kg_kiem_tra_ton_kho_tt||($d$$.ma_lo&&($query$$.ma_lo=$d$$.ma_lo),$d$$.han_sd&&($query$$.han_sd=$d$$.han_sd),$d$$.ma_tt1&&
28
+ ($query$$.ma_tt1=$d$$.ma_tt1),$d$$.ma_tt2&&($query$$.ma_tt2=$d$$.ma_tt2),$d$$.ma_tt3&&($query$$.ma_tt3=$d$$.ma_tt3));ckvt($query$$,function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$rs$$?($e$$=$rs$$.csum("ton"),$rs$$=$data_sokho$$.filter($s$$=>$s$$.ma_vt===$d$$.ma_vt&&$s$$.ma_kho===$ma_kho$$).reduce(($a$$,$b$$)=>($a$$.sl_xuat_qd||0)+($b$$.sl_xuat_qd||0),0),$d$$.sl_xuat_qd>utils.round($e$$+$rs$$,2)?$callback$$(`S\u1ea3n ph\u1ea9m ${$d$$.ma_vt} - ${$d$$.ten_vt} c\u00f3 s\u1ed1 l\u01b0\u1ee3ng xu\u1ea5t quy \u0111\u1ed5i (${$d$$.sl_xuat_qd}) l\u1edbn h\u01a1n s\u1ed1 l\u01b0\u1ee3ng t\u1ed3n quy \u0111\u1ed5i (${$e$$+
29
+ $rs$$})`):$callback$$()):$callback$$()})},$e$$=>{$callback$jscomp$0$$($e$$)})})():$callback$jscomp$0$$()}},$e$$=>{$fn$$($e$$)})}cacheData($obj$$,$callback$$){$obj$$&&$obj$$.toObject&&($obj$$=$obj$$.toObject());redisCache.set(this.model.collection.name.substring(0,this.model.collection.name.length-1),$obj$$,$callback$$)}deleteData($obj$$,$callback$$){$obj$$&&$obj$$.toObject&&($obj$$=$obj$$.toObject());redisCache.remove(this.model.collection.name.substring(0,this.model.collection.name.length-1),$obj$$,
30
+ $callback$$)}createRoute($routeName_url$$,$callback$$,$_options$$={method:"GET"}){let $self$$=this;$_options$$.method=$_options$$.method?$_options$$.method.toUpperCase():"GET";let $r$$=function($req$$,$res$$){!1===$self$$.require_id_app?$callback$$($req$$,function($e$$,$rs$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)},$res$$):permission.hasRight($req$$.params.id_app,$req$$.user.email,$self$$.module,
31
+ "view",function($error$$,$hr$$){$hr$$?$callback$$($req$$,function($e$$,$rs$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)},$res$$):$res$$.status(403).send({error:$error$$||ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE})},{notNeedRight:$self$$.notNeedRight||$_options$$.notNeedRight})};$routeName_url$$=`${this.route_name}/${$routeName_url$$}`;let $router$$=this.router;"DELETE"==$_options$$.method?$router$$.route($routeName_url$$).delete($r$$):
32
+ "POST"==$_options$$.method?$router$$.route($routeName_url$$).post($r$$):"PUT"==$_options$$.method?$router$$.route($routeName_url$$).put($r$$):$router$$.route($routeName_url$$).get($r$$)}async requestApprove($app_info$$,$user_request$$,$obj_request$$,$next$$,$voucher_options$$){let $ctrl$$=this;if(!$app_info$$)return $next$$(null,$obj_request$$);let $obj$$;$obj$$=$obj_request$$.toObject?$obj_request$$.toObject():_.cloneDeep($obj_request$$);$obj$$.ma_ct=$obj$$.ma_ct||$ctrl$$.name;let $approveDatas$$=
33
+ [];$voucher_options$$||($voucher_options$$=(await OptionsModel.findOne({id_app:$obj$$.id_app,id_func:$ctrl$$.name},{option:1}).lean()||{}).option);$voucher_options$$&&$voucher_options$$.custom_approve_user&&$voucher_options$$.custom_approve_user.forEach($trang_thai_approve$$=>{let $update_after_approve$$,$update_after_deny$$;if($trang_thai_approve$$.update_after_approve)try{let $str_func$$=$trang_thai_approve$$.update_after_approve;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);
34
+ $update_after_approve$$=evalute($str_func$$)}catch($e$$){console.error($e$$),$update_after_approve$$={}}else $update_after_approve$$={};$trang_thai_approve$$.update_after_approve={module:$ctrl$$.name,data:{trang_thai:$trang_thai_approve$$.trang_thai2,...($update_after_approve$$.data||{})}};if($trang_thai_approve$$.update_after_deny)try{let $str_func$$=$trang_thai_approve$$.update_after_deny;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$update_after_deny$$=evalute($str_func$$)}catch($e$$){console.error($e$$)}if($update_after_deny$$||
35
+ $trang_thai_approve$$.trang_thai3)$trang_thai_approve$$.update_after_deny={module:$ctrl$$.name,data:{trang_thai:$trang_thai_approve$$.trang_thai3,...(($update_after_deny$$||{}).data||{})}};$approveDatas$$.push($trang_thai_approve$$)});$approveDatas$$=$approveDatas$$.filter($approveData_condition$$=>{$approveData_condition$$=$approveData_condition$$.condition;if(!$approveData_condition$$)return!0;$approveData_condition$$.indexOf(!1)&&($approveData_condition$$=`return ${$approveData_condition$$}`);
36
+ try{return evalute($approveData_condition$$,{master:$obj$$,data:$obj$$})}catch($e$$){return console.error("check condition approve",$e$$,$approveData_condition$$),!1}});$approveDatas$$.filter($a$$=>$a$$.approve_users).forEach($approveData$$=>{setImmediate(()=>{let $title$$=$approveData$$.title||"Y\u00eau c\u1ea7u duy\u1ec7t";if(0<=$title$$.indexOf("return ")){var $ds_nguoi_duyet_str_func$$=$title$$;try{$title$$=evalute($ds_nguoi_duyet_str_func$$,{master:$obj$$,data:$obj$$})}catch($e$$){console.error($e$$,
37
+ $ds_nguoi_duyet_str_func$$)}}$ds_nguoi_duyet_str_func$$=$approveData$$.approve_users;let $update_after_approve$$=$approveData$$.update_after_approve,$update_after_deny$$=$approveData$$.update_after_deny;if(_.isString($ds_nguoi_duyet_str_func$$))try{let $str_func$$=$ds_nguoi_duyet_str_func$$;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$ds_nguoi_duyet_str_func$$=evalute($str_func$$,{master:$obj$$,data:$obj$$});if(!_.isArray($ds_nguoi_duyet_str_func$$)){console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng, hi\u1ec7n t\u1ea1i \u0111ang l\u00e0",
38
+ $ds_nguoi_duyet_str_func$$);return}}catch($e$$){console.error($e$$,$ds_nguoi_duyet_str_func$$);return}if($approveData$$.approve_users_custom)try{let $str_func$$=$approveData$$.approve_users_custom;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);let $ds_nguoi_duyet_custom$$=evalute($str_func$$,{master:$obj$$,data:$obj$$});$ds_nguoi_duyet_custom$$&&(_.isArray($ds_nguoi_duyet_custom$$)?$ds_nguoi_duyet_str_func$$=[...$ds_nguoi_duyet_str_func$$,...$ds_nguoi_duyet_custom$$]:console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng, hi\u1ec7n t\u1ea1i \u0111ang l\u00e0",
39
39
  $ds_nguoi_duyet_custom$$))}catch($e$$){console.error($e$$,$approveData$$.approve_users_custom)}if($ds_nguoi_duyet_str_func$$&&0!==$ds_nguoi_duyet_str_func$$.length&&($ds_nguoi_duyet_str_func$$=[...(new Set($ds_nguoi_duyet_str_func$$))],$obj$$.trang_thai==$approveData$$.trang_thai)){let $user_approves$$=$ds_nguoi_duyet_str_func$$.map($nguoi_duyet$$=>({email:$nguoi_duyet$$,name:$nguoi_duyet$$}));$user_approves$$.joinModel2($obj$$.id_app,Participant,{where:"email",fields:"name"},()=>{Approve.request($user_request$$,
40
40
  $user_approves$$,$title$$,$obj$$,$e$$=>{$e$$&&console.error("error create request approve",$e$$.message)},$update_after_approve$$,$approveData$$.template_content,$update_after_deny$$)})}})});$next$$(null,$obj$$)}async import($user$$,$id_app$$,$data$$,$callback$jscomp$0$$,$options$$={replace:!0,req:null}){const $ctrl$$=this;let $replace$$=$options$$.replace,$rows_error$$=[];const $listInfo$$=global.getModel("listinfo");let $info$$=await $listInfo$$.findOne({code:$ctrl$$.name.toLowerCase()}).lean();
41
41
  $info$$&&await $listInfo$$.updateModel($info$$,$ctrl$$.model);$data$$=$data$$.filter($row$$=>{let $has_data$$=!1;for(let $key$$ in $row$$)if($row$$[$key$$]){$has_data$$=!0;break}return $has_data$$});$data$$.forEach($r$$=>{delete $r$$.ten_dvcs});await $data$$.filter($r$$=>$r$$.ma_dvcs).asyncJoinModel2($id_app$$,global.getModel("dvcs"),{where:{ma_dvcs:"_id"},fields:"ten_dvcs"});async.mapSeries($data$$,function($row$$,$callback$$){const $row_keys$$=Object.keys($row$$);$row_keys$$.filter($key$$=>$ctrl$$.model.schema.paths[$key$$]).forEach($key$$=>
42
- {let $data_type$$=$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase(),$data_value$$=$row$$[$key$$];if($data_value$$&&_.isString($data_value$$)&&("mixed"==$data_type$$||"array"==$data_type$$)&&($data_value$$=$data_value$$.trim(),0==$data_value$$.indexOf("[")||0==$data_value$$.indexOf("{")))try{$row$$[$key$$]=JSON.parse($data_value$$)}catch($e$$){delete $row$$[$key$$],console.error("Error parse data",$e$$)}});setImmediate(()=>{delete $row$$.__v;$row$$.ma_dvcs&&!$row$$.ten_dvcs&&delete $row$$.ma_dvcs;
42
+ {let $data_type$$=$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase(),$data_value$$=$row$$[$key$$];if($data_value$$&&_.isString($data_value$$)&&("mixed"==$data_type$$||"array"==$data_type$$)&&($data_value$$=$data_value$$.trim(),0==$data_value$$.indexOf("[")||0==$data_value$$.indexOf("{")))try{$row$$[$key$$]=JSONParser($data_value$$)}catch($e$$){delete $row$$[$key$$],console.error("Error parse data",$e$$)}});setImmediate(()=>{delete $row$$.__v;$row$$.ma_dvcs&&!$row$$.ten_dvcs&&delete $row$$.ma_dvcs;
43
43
  $row$$.id_app&&$id_app$$!=$row$$.id_app&&delete $row$$._id;delete $row$$.id_app;if($replace$$&&($ctrl$$.unique&&0<$ctrl$$.unique.length||$row$$._id)){let $query$$={};$row$$._id?$query$$._id=$row$$._id:(0!=$ctrl$$.require_id_app&&($query$$.id_app=$id_app$$),$ctrl$$.options.unique_imp&&$row$$[$ctrl$$.options.unique_imp]?$query$$[$ctrl$$.options.unique_imp]=$row$$[$ctrl$$.options.unique_imp]:$ctrl$$.unique.forEach(function($k$$){0<=$row_keys$$.indexOf($k$$)&&($query$$[$k$$]=$row$$[$k$$])}));$ctrl$$.model.find($query$$).lean().exec(function($error$$,
44
44
  $rss$$){if(1<$rss$$.length)return $callback$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u1ed1i t\u01b0\u1ee3ng:"+Object.values($query$$).join("-"));setImmediate(()=>{if($error$$)return $callback$$($error$$);if(1===$rss$$.length){let $rs$$=$rss$$[0];$row$$.id_app=$rs$$.id_app;$row$$._id=$rs$$._id.toString();$ctrl$$.unique.forEach(function($k$$){$row$$[$k$$]=$rs$$[$k$$]});update($user$$,$ctrl$$,$rs$$._id,$row$$,function($e$$){if($e$$){let $_e$$=$e$$;underscore.isArray($_e$$)||($_e$$=[$e$$]);$rows_error$$.push({row:$row$$,
45
45
  error:"Error update data:"+$_e$$})}$callback$$()},"import",$options$$.req)}else create($user$$,$ctrl$$,$row$$,function($e$$){if($e$$){let $_e$$=$e$$;underscore.isArray($_e$$)||($_e$$=[$e$$]);$rows_error$$.push({row:$row$$,error:$_e$$})}$callback$$()},$row$$._id,$options$$.req)})})}else create($user$$,$ctrl$$,$row$$,function($e$$){setImmediate(()=>{if($e$$){let $_e$$=$e$$;underscore.isArray($_e$$)||($_e$$=[$e$$]);$rows_error$$.push({row:$row$$,error:$_e$$})}$callback$$()})},$row$$._id,$options$$.req)})},
@@ -57,8 +57,8 @@ controller.prototype.getVsocai=function(){this.router.route("/:id_app/vsocai/:id
57
57
  tien:$r$$.tien,tien_nt:$r$$.tien_nt})});$res$$.send($dks$$)})})})};controller.prototype.getSokho=function(){this.router.route(`${this.route_name}/sokho/:id_ct`).get(function($req$$,$res$$){Sokho.find({id_ct:$req$$.params.id_ct}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});$rs$$.joinModel2($req$$.user.current_id_app,dmvt,{where:"ma_vt",fields:"ten_vt"},function(){$res$$.send($rs$$)})})})})};
58
58
  controller.prototype.find=function($_route_name_route_name$$,$shareRoute$$=!1,$method$$="GET"){let $sort$$,$model$$=this.model,$ctrl$$=this;const $findRoute$$=[function($req$$,$res$$,$next$$){setImmediate(()=>{var $body$jscomp$2_query$$={};underscore.isObject($req$$.body)&&($body$jscomp$2_query$$=$req$$.body);$body$jscomp$2_query$$={...$req$$.query,...$body$jscomp$2_query$$};var $condition$jscomp$1$$={...$body$jscomp$2_query$$};delete $condition$jscomp$1$$.access_token;$req$$.user&&!$body$jscomp$2_query$$.count&&
59
59
  "log"!==$ctrl$$.name&&"labelinfo"!==$ctrl$$.name&&"listinfo"!==$ctrl$$.name&&"reportinfo"!==$ctrl$$.name&&"moduleinfo"!==$ctrl$$.name&&"options"!==$ctrl$$.name&&log.create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"QUERY",data:{condition:JSON.stringify($condition$jscomp$1$$)}},$req$$.user.email,$req$$.header("user-agent"),$req$$);$req$$.query=$body$jscomp$2_query$$;if($body$jscomp$2_query$$.sort)if(underscore.isObject($body$jscomp$2_query$$.sort))$sort$$=$body$jscomp$2_query$$.sort;
60
- else try{$sort$$=JSON.parse($body$jscomp$2_query$$.sort)}catch($e$$){console.error("error parse json",$e$$,$body$jscomp$2_query$$.sort)}!$sort$$&&$ctrl$$.sort&&($sort$$=Object.assign({},$ctrl$$.sort));$condition$jscomp$1$$={};let $or$$=[];for(let $k$$ in $body$jscomp$2_query$$)if("id_app"!==$k$$&&"access_token"!==$k$$)if("_id"===$k$$&&global.mongoose.Types.ObjectId.isValid($body$jscomp$2_query$$._id))try{let $id$$=global.mongoose.Types.ObjectId($body$jscomp$2_query$$._id);$or$$.push({_id:$id$$})}catch($error$$){console.error($error$$)}else{if("q"===
61
- $k$$&&$body$jscomp$2_query$$[$k$$])try{let $q$$=underscore.isObject($body$jscomp$2_query$$[$k$$])?$body$jscomp$2_query$$[$k$$]:JSON.parse($body$jscomp$2_query$$[$k$$]);if(Object.keys($q$$).includes("_id"))if(!$q$$._id)delete $q$$._id;else if("object"!==typeof $q$$._id&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return console.error("Condition is not valid",$q$$),$res$$.status(400).send({error:"Condition is not valid"});($condition$jscomp$1$$=$q$$)||($condition$jscomp$1$$={});if($condition$jscomp$1$$.sync_from_date){let $sync_date$$=
60
+ else try{$sort$$=JSONParser($body$jscomp$2_query$$.sort)}catch($e$$){console.error("error parse json",$e$$,$body$jscomp$2_query$$.sort)}!$sort$$&&$ctrl$$.sort&&($sort$$=Object.assign({},$ctrl$$.sort));$condition$jscomp$1$$={};let $or$$=[];for(let $k$$ in $body$jscomp$2_query$$)if("id_app"!==$k$$&&"access_token"!==$k$$)if("_id"===$k$$&&global.mongoose.Types.ObjectId.isValid($body$jscomp$2_query$$._id))try{let $id$$=global.mongoose.Types.ObjectId($body$jscomp$2_query$$._id);$or$$.push({_id:$id$$})}catch($error$$){console.error($error$$)}else{if("q"===
61
+ $k$$&&$body$jscomp$2_query$$[$k$$])try{let $q$$=underscore.isObject($body$jscomp$2_query$$[$k$$])?$body$jscomp$2_query$$[$k$$]:JSONParser($body$jscomp$2_query$$[$k$$]);if(Object.keys($q$$).includes("_id"))if(!$q$$._id)delete $q$$._id;else if("object"!==typeof $q$$._id&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return console.error("Condition is not valid",$q$$),$res$$.status(400).send({error:"Condition is not valid"});($condition$jscomp$1$$=$q$$)||($condition$jscomp$1$$={});if($condition$jscomp$1$$.sync_from_date){let $sync_date$$=
62
62
  moment(new Date($condition$jscomp$1$$.sync_from_date)).startOf("date").toDate();$condition$jscomp$1$$.date_updated={$gte:$sync_date$$};delete $condition$jscomp$1$$.sync_from_date}continue}catch($e$$){return console.error($e$$,$body$jscomp$2_query$$[$k$$]),$res$$.status(400).send({error:"Condition is not valid"})}if("fields"!==$k$$&&underscore.has($model$$.schema.paths,$k$$))if($ctrl$$.options.findExact[$k$$])$condition$jscomp$1$$[$k$$]=$body$jscomp$2_query$$[$k$$];else{let $item$$={};"number"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?
63
63
  $item$$[$k$$]=Number($body$jscomp$2_query$$[$k$$]):"date"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]=new Date($body$jscomp$2_query$$[$k$$]):"string"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]={$regex:$body$jscomp$2_query$$[$k$$],$options:"i"}:$item$$[$k$$]=$body$jscomp$2_query$$[$k$$];$or$$.push($item$$)}else"$text"===$k$$&&$or$$.push({$text:{$search:$body$jscomp$2_query$$[$k$$]}})}0!==$or$$.length&&("$and"===$body$jscomp$2_query$$.cType?$condition$jscomp$1$$.$and=
64
64
  $or$$:$condition$jscomp$1$$.$or=$or$$);$shareRoute$$||0==$ctrl$$.require_id_app||($condition$jscomp$1$$.id_app=$req$$.user.current_id_app);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition$jscomp$1$$,function($error$$,$condition$jscomp$0$$){setImmediate(()=>{if($error$$)return $res$$.status(400).send({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$0$$,function($e$$,$condition$$){if($e$$)return console.error($e$$),
@@ -78,17 +78,18 @@ $condition$$.id_app&&$condition$$.$and.push({id_app:$condition$$.id_app})}else u
78
78
  delete $condition$$.$or;$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$$,
79
79
  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$$})});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$$]=
80
80
  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$$=>
81
- {$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$$=
82
- 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);
83
- $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&&"1"!=$req$$.query.rpt&&($group_page$$=$req$$.query.page,($limit_project$$=$req$$.query.limit)&&($limit_project$$=Number($limit_project$$)),$limit_project$$||
84
- ($limit_project$$=!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$$,
85
- $condition$$),$res$$.status(400).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});$obj4view$$||($obj4view$$=[]);async.series({found:function($callback$$){$ctrl$$.found?$ctrl$$.found($req$$.user,$condition$$,$obj4view$$,function($error$$,$items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,$obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>{$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});$callback$$(null)}},
86
- 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.series({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$$,shareRoute:$shareRoute$$})}},
87
- 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"});
88
- $excelTemplate$$=await global.getModel("exportexceltemplate").findById($template_id$$);if(!$excelTemplate$$||!$excelTemplate$$.file)return $res$$.status(400).send({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});var $_rs_msg_templatePath$$=$app$jscomp$1_dir_root_template_e$$?`${path.dirname($app$jscomp$1_dir_root_template_e$$)}${$excelTemplate$$.file}`:`${path.dirname(__dirname)}${$excelTemplate$$.file}`}else $app$jscomp$1_dir_root_template_e$$&&($_rs_msg_templatePath$$=`${$app$jscomp$1_dir_root_template_e$$}/excels/lists/${$ctrl$$.name}.xlsx`),
89
- $_rs_msg_templatePath$$&&fs.existsSync($_rs_msg_templatePath$$)||($_rs_msg_templatePath$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($_rs_msg_templatePath$$))return $_rs_msg_templatePath$$="File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$_rs_msg_templatePath$$+"'",$res$$.status(400).send({error:$_rs_msg_templatePath$$});$app$jscomp$1_dir_root_template_e$$={};$_groupBy_func_string_rs$$.e_view.forEach($item$$=>{for(let $_key$$ in $item$$){let $_v$$=
90
- $item$$[$_key$$];if(underscore.isObject($_v$$))for(let $__key$$ in $_v$$){let $__v$$=$_v$$[$__key$$];if(!underscore.isFunction($__v$$))if(0<=$__key$$.indexOf("ngay")||0<=$__key$$.indexOf("date"))try{$item$$[`${$_key$$}_${$__key$$}`]=new Date($__v$$)}catch($e$$){$item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else $item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else if($_v$$&&0<=$_key$$.indexOf("ngay")||0<=$_key$$.indexOf("date"))try{let $d$$=moment($_v$$,"YYYY-MM-DD");$d$$.isValid()&&($item$$[`${$_key$$}`]=$d$$.toDate(),
91
- $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 ()=>{
81
+ {$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$$=JSONParser($req$$.query.group);$id_sellers_query$$.group($group_page$$)}if($req$$.query.match){let $match$$=
82
+ JSONParser($req$$.query.match);$id_sellers_query$$.match($match$$)}if($req$$.query.project){var $limit_project$$=JSONParser($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$$=JSONParser($req$$.query.aggregate);
83
+ $id_sellers_query$$.append($aggregate$$)}}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}else underscore.has($model$$.schema.paths,"id_app")&&0<Object.keys($gfields$$).length&&($gfields$$.id_app=1),$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&&"1"!=$req$$.query.rpt&&($group_page$$=
84
+ $req$$.query.page,($limit_project$$=$req$$.query.limit)&&($limit_project$$=Number($limit_project$$)),$limit_project$$||($limit_project$$=!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&&
85
+ ($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$$,$condition$$),$res$$.status(400).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});$obj4view$$||($obj4view$$=[]);async.series({found:function($callback$$){$ctrl$$.found?$ctrl$$.found($req$$.user,$condition$$,$obj4view$$,function($error$$,$items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,
86
+ $obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>{$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});$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.series({e_view:function($callback$$){$ctrl$$.onView($req$$.user,$obj4view$$,($error$$,$viewValue$$)=>
87
+ {setImmediate(()=>{if($error$$)return console.error("Erron on view:",$error$$),$callback$$($error$$);$callback$$(null,$viewValue$$)})},{req:$req$$,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;
88
+ 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"});$excelTemplate$$=await global.getModel("exportexceltemplate").findById($template_id$$);if(!$excelTemplate$$||!$excelTemplate$$.file)return $res$$.status(400).send({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});var $_rs_msg_templatePath$$=$app$jscomp$1_dir_root_template_e$$?
89
+ `${path.dirname($app$jscomp$1_dir_root_template_e$$)}${$excelTemplate$$.file}`:`${path.dirname(__dirname)}${$excelTemplate$$.file}`}else $app$jscomp$1_dir_root_template_e$$&&($_rs_msg_templatePath$$=`${$app$jscomp$1_dir_root_template_e$$}/excels/lists/${$ctrl$$.name}.xlsx`),$_rs_msg_templatePath$$&&fs.existsSync($_rs_msg_templatePath$$)||($_rs_msg_templatePath$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($_rs_msg_templatePath$$))return $_rs_msg_templatePath$$=
90
+ "File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$_rs_msg_templatePath$$+"'",$res$$.status(400).send({error:$_rs_msg_templatePath$$});$app$jscomp$1_dir_root_template_e$$={};$_groupBy_func_string_rs$$.e_view.forEach($item$$=>{for(let $_key$$ in $item$$){let $_v$$=$item$$[$_key$$];if(underscore.isObject($_v$$))for(let $__key$$ in $_v$$){let $__v$$=$_v$$[$__key$$];if(!underscore.isFunction($__v$$))if(0<=$__key$$.indexOf("ngay")||0<=$__key$$.indexOf("date"))try{$item$$[`${$_key$$}_${$__key$$}`]=
91
+ new Date($__v$$)}catch($e$$){$item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else $item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else if($_v$$&&0<=$_key$$.indexOf("ngay")||0<=$_key$$.indexOf("date"))try{let $d$$=moment($_v$$,"YYYY-MM-DD");$d$$.isValid()&&($item$$[`${$_key$$}`]=$d$$.toDate(),$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$$=
92
+ `return (async ()=>{
92
93
  try{
93
94
  ${$excelTemplate$$.handle_data}
94
95
  }catch(e){
@@ -101,16 +102,16 @@ $_groupBy_func_string_rs$$),$res$$.status(400).send({error:$e$$.message||$e$$.er
101
102
  ($_groupBy_func_string_rs$$=$req$$.query.groupBy.split(","),$_rs_msg_templatePath$$.groupBy($_groupBy_func_string_rs$$,[],($e$$,$_items$$)=>{if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});$res$$.send($_items$$)})):$res$$.send($_rs_msg_templatePath$$))})})})})}})}];$_route_name_route_name$$=$_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$$+
102
103
  "/excel").get(...$findRoute$$)):(this.router.route($_route_name_route_name$$).post(...$findRoute$$),this.router.route($_route_name_route_name$$+"/excel").post(...$findRoute$$))};
103
104
  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.series({c:$callback$$=>{global.clientRedis.get("stp:"+$id$$,async($err_fields$jscomp$2_notfields$$,$obj$jscomp$0$$)=>{if(!$err_fields$jscomp$2_notfields$$&&
104
- $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$$=>
105
+ $obj$jscomp$0$$&&$obj$jscomp$0$$._id===$id$$)$callback$$(null,JSONParser($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$$=>
105
106
  {"_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$$&&
106
107
  (($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=
107
- 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$$=
108
- 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$$});
109
- $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$$||
110
- 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;
111
- $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$$})})};
108
+ 0);underscore.has($model$$.schema.paths,"id_app")&&0<Object.keys($gfields$$).length&&($gfields$$.id_app=1);$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});
109
+ if($shareRoute$$&&$obj$$.shared)underscore.has($model$$.schema.paths,"id_app")&&(($c_app_e$$=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$$),
110
+ $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});$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$$,
111
+ $e$$=>{setImmediate(()=>{if($e$$)return $res$$.status(403).send({error:$e$$||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$$&&
112
+ $obj$$.toObject&&($obj$$=$obj$$.toObject());$obj$$.collection_name=$ctrl$$.collection_name;$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$$})})};
112
113
  controller.prototype.postAgain=function(){let $model$$=this.model,$ctrl$$=this;this.router.route(`${this.route_name}/action/postagain`).get(function($req$$,$res$$,$next$$){console.log("reposting...",$ctrl$$.name,$req$$.query);if(!$ctrl$$.post)return $res$$.send({message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 th\u1ef1c hi\u1ec7n xong"});let $condition$jscomp$1$$={};for(let $k$$ in $req$$.query)if("id_app"!=$k$$&&"access_token"!=$k$$)if("_id"==$k$$&&global.mongoose.Types.ObjectId.isValid($req$$.query._id))try{let $id$$=
113
- global.mongoose.Types.ObjectId($req$$.query._id);$condition$jscomp$1$$._id=$id$$}catch($error$$){console.error($error$$)}else{if("q"==$k$$&&$req$$.query[$k$$])try{$condition$jscomp$1$$=JSON.parse($req$$.query[$k$$]);continue}catch($e$$){return console.error($e$$),$res$$.status(400).send($e$$)}if("tu_ngay"==$k$$&&!0===underscore.has($model$$.schema.paths,"ngay_ct")){var $val_val$$=moment($req$$.query.tu_ngay).startOf("date").toDate();$condition$jscomp$1$$.ngay_ct?$condition$jscomp$1$$.ngay_ct.$gte=
114
+ global.mongoose.Types.ObjectId($req$$.query._id);$condition$jscomp$1$$._id=$id$$}catch($error$$){console.error($error$$)}else{if("q"==$k$$&&$req$$.query[$k$$])try{$condition$jscomp$1$$=JSONParser($req$$.query[$k$$]);continue}catch($e$$){return console.error($e$$),$res$$.status(400).send($e$$)}if("tu_ngay"==$k$$&&!0===underscore.has($model$$.schema.paths,"ngay_ct")){var $val_val$$=moment($req$$.query.tu_ngay).startOf("date").toDate();$condition$jscomp$1$$.ngay_ct?$condition$jscomp$1$$.ngay_ct.$gte=
114
115
  $val_val$$:$condition$jscomp$1$$.ngay_ct={$gte:$val_val$$}}else"den_ngay"==$k$$&&!0===underscore.has($model$$.schema.paths,"ngay_ct")?($val_val$$=moment($req$$.query.den_ngay).endOf("date").toDate(),$condition$jscomp$1$$.ngay_ct?$condition$jscomp$1$$.ngay_ct.$lte=$val_val$$:$condition$jscomp$1$$.ngay_ct={$lte:$val_val$$}):!0===underscore.has($model$$.schema.paths,$k$$)&&($condition$jscomp$1$$[$k$$]=$req$$.query[$k$$])}!0===underscore.has($model$$.schema.paths,"id_app")&&($condition$jscomp$1$$.id_app=
115
116
  $req$$.user.current_id_app);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition$jscomp$1$$,function($e$jscomp$0$$,$condition$jscomp$0$$){setImmediate(()=>{if($e$jscomp$0$$)return console.error($e$jscomp$0$$),$res$$.status(400).send({error:$e$jscomp$0$$.message||$e$jscomp$0$$.error||$e$jscomp$0$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$0$$,function($e$$,$condition$$){if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||
116
117
  $e$$});$req$$.condition=$condition$$;$next$$()},{req:$req$$}):($req$$.condition=$condition$jscomp$0$$,$next$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$1$$,function($e$$,$condition$$){if($e$$)return console.error($e$$),$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});$req$$.condition=$condition$$;$next$$()},{req:$req$$}):($req$$.condition=$condition$jscomp$1$$,$next$$())},function($req$$,$res$$,$next$$){permission.isAdmin($req$$.user.current_id_app,
@@ -131,7 +132,7 @@ $data_type$$&&$_ref_model$$.updateMany({[`${$key$$}.${$field$$}`]:$old_value$$,i
131
132
  id_app:$id_app$$},{[$field$$]:$new_value$$},"error",$e$$)});if("object"==$data_type$$||"mixed"==$data_type$$)console.log("update gia tri moi cho subdocument",$key$$,"type",$data_type$$,"cac model",$_ref_model$$.collection.name,{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$}),$_ref_model$$.updateMany({[`${$key$$}.${$field$$}`]:$old_value$$,id_app:$id_app$$},{[`${$key$$}.${$field$$}`]:$new_value$$}).then($rs$$=>{console.log("update gia tri moi cho subdocument",$key$$,"type",$data_type$$,
132
133
  "cac model",$_ref_model$$.collection.name,{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$},"result",$rs$$)}).catch($e$$=>{console.error("update gia tri moi cho subdocument",$key$$,"type",$data_type$$,"cac model",$_ref_model$$.collection.name,{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$},"error",$e$$)})}});$res$$.send({message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 th\u1ef1c hi\u1ec7n xong"})})})})};
133
134
  controller.prototype.updateField=function(){let $model$$=this.model,$ctrl$$=this,$field$$;this.router.route(`${this.route_name}/update/:field`).get(function($req$$,$res$$,$next$$){$field$$=$req$$.params.field;if(!underscore.has($model$$.schema.paths,$field$$))return $res$$.status(400).send({error:"Field "+$field$$+" kh\u00f4ng t\u1ed3n t\u1ea1i"});var $condition$jscomp$1$$=$model$$.collection.name;$req$$.user.current_id_app&&($condition$jscomp$1$$+=$req$$.user.current_id_app);delete global.cacheDatas[$condition$jscomp$1$$];
134
- $condition$jscomp$1$$={};for(let $k$$ in $req$$.query)if("id_app"!=$k$$&&"access_token"!=$k$$)if("_id"==$k$$&&mongoose.Types.ObjectId.isValid($req$$.query._id))try{let $id$$=global.mongoose.Types.ObjectId($req$$.query._id);$condition$jscomp$1$$._id=$id$$}catch($error$$){console.error($error$$)}else if("q"==$k$$&&$req$$.query[$k$$])$condition$jscomp$1$$=JSON.parse($req$$.query[$k$$]);else if("tu_ngay"==$k$$&&!0===underscore.has($model$$.schema.paths,"ngay_ct")){var $val$jscomp$2_val$$=moment($req$$.query.tu_ngay).startOf("date").toDate();
135
+ $condition$jscomp$1$$={};for(let $k$$ in $req$$.query)if("id_app"!=$k$$&&"access_token"!=$k$$)if("_id"==$k$$&&mongoose.Types.ObjectId.isValid($req$$.query._id))try{let $id$$=global.mongoose.Types.ObjectId($req$$.query._id);$condition$jscomp$1$$._id=$id$$}catch($error$$){console.error($error$$)}else if("q"==$k$$&&$req$$.query[$k$$])$condition$jscomp$1$$=JSONParser($req$$.query[$k$$]);else if("tu_ngay"==$k$$&&!0===underscore.has($model$$.schema.paths,"ngay_ct")){var $val$jscomp$2_val$$=moment($req$$.query.tu_ngay).startOf("date").toDate();
135
136
  $condition$jscomp$1$$.ngay_ct?$condition$jscomp$1$$.ngay_ct.$gte=$val$jscomp$2_val$$:$condition$jscomp$1$$.ngay_ct={$gte:$val$jscomp$2_val$$}}else"den_ngay"==$k$$&&!0===underscore.has($model$$.schema.paths,"ngay_ct")?($val$jscomp$2_val$$=moment($req$$.query.den_ngay).endOf("date").toDate(),$condition$jscomp$1$$.ngay_ct?$condition$jscomp$1$$.ngay_ct.$lte=$val$jscomp$2_val$$:$condition$jscomp$1$$.ngay_ct={$lte:$val$jscomp$2_val$$}):!0===underscore.has($model$$.schema.paths,$k$$)&&($condition$jscomp$1$$[$k$$]=
136
137
  $req$$.query[$k$$]);!0===underscore.has($model$$.schema.paths,"id_app")&&($condition$jscomp$1$$.id_app=$req$$.user.current_id_app);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition$jscomp$1$$,function($e$jscomp$0$$,$condition$jscomp$0$$){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$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,
137
138
  $condition$jscomp$0$$,function($e$$,$condition$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$next$$()},{req:$req$$}):($req$$.condition=$condition$jscomp$0$$,$next$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$1$$,function($e$$,$condition$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||
@@ -143,7 +144,7 @@ $ctrl$$.post?postData($obj$$,$ctrl$$,function($e$$){if($e$$)return console.error
143
144
  {$o$$.toObject&&($o$$=$o$$.toObject());return $o$$});$ctrl$$.onView($req$$.user,$rs$$,function($e$$,$viewValue$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$req$$&&$viewValue$$.forEach($r$$=>{pushNotification($ctrl$$,$r$$,"update",null,!0,{exclude_token:$req$$.query.access_token})});$res$$.send($rs$$)})},{req:$req$$})})})})})})};
144
145
  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=
145
146
  function($ctrl$$,$parameters$$,$app$$,$obj$$,$callback$jscomp$0$$){async.mapSeries($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&&
146
- $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]=
147
+ $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$$=JSONParser($condition$$)}else $condition$$={};$app$$[$p$$.name]=
147
148
  await getData($app$$.id_app,$query$jscomp$8_sandbox$$.collection,$query$jscomp$8_sandbox$$.field,$condition$$)}}catch($e$$){$app$$[$p$$.name]=$e$$}else if("E"===$p$$.type&&$p$$.value){$condition$$=$p$$.value;0>$condition$$.indexOf("return ")&&($condition$$=`return ${$condition$$}`);if(0<=$condition$$.indexOf("async "))return $app$$[$p$$.name]="async function is not allow";$condition$$=`return (async ()=>{
148
149
  ${$condition$$}
149
150
  })`;$query$jscomp$8_sandbox$$={m:$obj$$,master:$obj$$,data:$obj$$,Moment:moment,Numeral:numeral,numberToWord,getData};try{$app$$[$p$$.name]=await evalute($condition$$,$query$jscomp$8_sandbox$$)()}catch($e$$){$app$$[$p$$.name]=$e$$.message}}else $app$$[$p$$.name]=$p$$.value})().then(()=>{$callback$$()}).catch(()=>{$callback$$()})})},function($e$jscomp$89_v$$){if($e$jscomp$89_v$$)return $callback$jscomp$0$$($e$jscomp$89_v$$);underscore.extend($app$$,$obj$$);if($ctrl$$.getData4Export)$ctrl$$.getData4Export($app$$,
@@ -166,9 +167,9 @@ $data4export$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console
166
167
  $_data$jscomp$0$$.company={...$_app$$},textReport($templatePath$$,$_data$jscomp$0$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});"docx"===$ext$$?($res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".docx"),$res$$.write($result$$,"binary"),$res$$.end(null,
167
168
  "binary")):$res$$.send($result$$)})}))}})})})})})})})};
168
169
  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$$),
169
- 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$$),
170
+ 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$$)?JSONParser($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$$),
170
171
  $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$$)});
171
- let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSON.parse($values$$)}catch($e$$){console.error($e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error("import from json",$ctrl$$.name,$data$$.length,"rows with error:",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$res$$.status(400).send($e$$)):$res$$.status(400).send({error:$e$$.error||
172
+ let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error($e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error("import from json",$ctrl$$.name,$data$$.length,"rows with error:",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$res$$.status(400).send($e$$)):$res$$.status(400).send({error:$e$$.error||
172
173
  $e$$.message||$e$$,message:$e$$.message||$e$$.error});if(0===$rs$$.rows_error.length)console.log("import from json",$ctrl$$.name,$data$$.length,"rows successfull"),$res$$.send($rs$$);else{let $msg$$=$rs$$.rows_error.map($r$$=>$r$$.error).join(", ");console.error("import from json",$ctrl$$.name,$data$$.length,"rows with error:",$msg$$);$res$$.status(400).send({error:$rs$$.error||$rs$$,message:$msg$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})})};
173
174
  controller.prototype.importFromExcel=function(){let $name$$=this.name,$ctrl$$=this;this.router.route(`${this.route_name}/import/excel`).post(async function($req$$,$res$$,$next$$){let $session$$=$req$$.session;if(!0===$session$$["import_"+$name$$])return $res$$.status(400).send({error:"\u0110ang x\u1eed l\u00fd d\u1eef li\u1ec7u"});$session$$["import_"+$name$$]=!0;if(!$req$$.files.xlsx)return $session$$["import_"+$name$$]=!1,$res$$.status(400).send({error:"Kh\u00f4ng t\u00ecm th\u1ea5y file xlsx"});
174
175
  let $parseOptions$$={},$map_root$$=configs.paths.maps,$map_file$$;$map_root$$&&($map_file$$=$map_root$$+"/"+$name$$+".js");$map_file$$&&fs.existsSync($map_file$$)||($map_file$$=path.dirname(__dirname)+"/maps/"+$name$$+".js");fs.existsSync($map_file$$)&&($parseOptions$$=await new Promise($resolve$$=>{setImmediate(()=>{$resolve$$(require($map_file$$))})}));if($ctrl$$.options.onPreExcelParse){const $onPreExcelParse$$=$ctrl$$.options.onPreExcelParse;await new Promise($resolve$$=>{setImmediate(()=>{$onPreExcelParse$$($parseOptions$$);
@@ -180,8 +181,8 @@ $res$$.status(400).send({error:$e$$.message||$e$$});$req$$.data=$data$$;$req$$.c
180
181
  $column_name$$.indexOf("$")?($detail_yn$$=!0,$columns$$=$column_name$$.split("$")[0],$detail_col$$=$column_name$$.split("$")[1],$details$$[$columns$$]||($details$$[$columns$$]={},$details$$[$columns$$].columns=[]),$details$$[$columns$$].columns.push($detail_col$$)):$master_columns$$.push($column_name$$);if(!$detail_yn$$)return $next$$();let $data_new$$=[],$row_master$$,$row_master_exists$$;async.mapSeries($data$jscomp$6_res$$,($row$$,$cb$$)=>{setImmediate(()=>{$row_master$$={exfields:{}};$row_master_exists$$=
181
182
  null;$master_columns$$.forEach(function($column$$){if(0===$column$$.indexOf("exfields.")){let $_c$$=$column$$.replace("exfields.","");$row_master$$.exfields[$_c$$]=$row$$[$column$$]}else $row_master$$[$column$$]=$row$$[$column$$]});for(let $i$$=0;$i$$<$data_new$$.length;$i$$++){let $m$$=$data_new$$[$i$$],$is_eq$$=!0;$master_columns$$.forEach(function($column$$){underscore.isEqual($m$$[$column$$],$row_master$$[$column$$])||($is_eq$$=!1)});$is_eq$$&&($row_master_exists$$=$m$$)}$row_master_exists$$?
182
183
  $row_master$$=$row_master_exists$$:$data_new$$.push($row_master$$);let $row_detail$$;for(let $detail_name$$ in $details$$)$row_detail$$={},$details$$[$detail_name$$].columns.forEach(function($column$$){$row$$[$detail_name$$+"$"+$column$$]&&($row_detail$$[$column$$]=$row$$[$detail_name$$+"$"+$column$$])}),$row_master$$[$detail_name$$]||($row_master$$[$detail_name$$]=[]),0<underscore.keys($row_detail$$).length&&$row_master$$[$detail_name$$].push($row_detail$$);$cb$$()})},()=>{$req$$.data=$data_new$$;
183
- setImmediate(()=>{$next$$()})})},function($req$$,$res$$){let $data$$=$req$$.data||[],$columns$$=$req$$.columns;for(let $row$$ of $data$$){let $_first$$=$row$$._first;$_first$$&&0<$_first$$.length&&underscore.extend($row$$,$_first$$[0])}setImmediate(()=>{log.create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTEXCEL",data:{data:$data$$,columns:$columns$$}},$req$$.user.email,$req$$.header("user-agent"),$req$$)});let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSON.parse($values$$)}catch($e$$){console.error($e$$)}$values$$&&
184
- $data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}global.importDataMainPool?global.importDataMainPool.exec({user:$req$$.user,id_app:$req$$.user.current_id_app,module:$name$$.toUpperCase(),data:$data$$,configs:JSON.parse(JSON.stringify(configs)),replace:!0===$req$$.query.update||"true"==$req$$.query.update},$response$$=>{setImmediate(()=>{if($response$$.error)return $res$$.status(400).send({error:$response$$.error,message:$response$$.message||$response$$.error});
184
+ setImmediate(()=>{$next$$()})})},function($req$$,$res$$){let $data$$=$req$$.data||[],$columns$$=$req$$.columns;for(let $row$$ of $data$$){let $_first$$=$row$$._first;$_first$$&&0<$_first$$.length&&underscore.extend($row$$,$_first$$[0])}setImmediate(()=>{log.create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTEXCEL",data:{data:$data$$,columns:$columns$$}},$req$$.user.email,$req$$.header("user-agent"),$req$$)});let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error($e$$)}$values$$&&
185
+ $data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}global.importDataMainPool?global.importDataMainPool.exec({user:$req$$.user,id_app:$req$$.user.current_id_app,module:$name$$.toUpperCase(),data:$data$$,configs:JSONParser(JSON.stringify(configs)),replace:!0===$req$$.query.update||"true"==$req$$.query.update},$response$$=>{setImmediate(()=>{if($response$$.error)return $res$$.status(400).send({error:$response$$.error,message:$response$$.message||$response$$.error});
185
186
  if(0===$response$$.result.rows_error.length)return $res$$.send($response$$.result);let $msg$$=$response$$.result.rows_error.map($r$$=>$r$$.error).join(", ");return $res$$.status(400).send({error:$response$$.result,message:$msg$$})})}):$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$res$$.status(400).send($e$$)):$res$$.status(400).send({error:$e$$.message||$e$$,message:$e$$.message||
186
187
  $e$$});if(0===$rs$$.rows_error.length)$res$$.send($rs$$);else{let $msg$$=$rs$$.rows_error.map($r$$=>$r$$.error).join(", ");$res$$.status(400).send({message:$msg$$,error:$rs$$.error||$rs$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})})};
187
188
  const PostBook=require("../libs/post-book"),utils=require("../libs/utils"),Sokho=global.getModel("sokho"),Sokhott=global.getModel("sokhott"),Sokhokhongton=global.getModel("sokhokhongton"),dmvt=global.getModel("dmvt"),Tdttno=global.getModel("tdttno"),Tdttno_tt=global.getModel("tdttno_tt"),Tdttco_tt=global.getModel("tdttco_tt"),Tdttco=global.getModel("tdttco"),Vatra=global.getModel("vatra"),Vatvao=global.getModel("vatvao"),deletePost=function($user$$,$obj$$,$callback$jscomp$1$$){$obj$$.toObject&&($obj$$=
@@ -5,7 +5,8 @@ exports.isAdmin=function($current_id_app$$,$email$$,$callback$$){if(!$current_id
5
5
  !1);$error$$=await Participant.findOne({id_app:$current_id_app$$,email:$email$$});if(!$error$$)return $callback$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp c\u00f4ng ty n\u00e0y",!1);$callback$$(null,$error$$.admin,$app$$,$error$$)})};
6
6
  exports.hasRight=async function($current_id_app$$,$email$$,$module$$,$action$$,$callback$jscomp$0$$,$options$$={}){if(!$current_id_app$$||$options$$.notNeedRight||global.controllers[$module$$]&&global.controllers[$module$$].model&&global.controllers[$module$$].model.schema&&!underscore.has(global.controllers[$module$$].model.schema.paths,"id_app"))return $callback$jscomp$0$$(null,!0);$options$$.data&&($options$$.data.trang_thai||0==$options$$.data.trang_thai)&&($options$$.data.trang_thai=$options$$.data.trang_thai.toString());
7
7
  $options$$.obj&&($options$$.obj.trang_thai||0==$options$$.obj.trang_thai)&&($options$$.obj.trang_thai=$options$$.obj.trang_thai.toString());var $data_trang_thai$$=$options$$.data||$options$$.obj||{};const $ma_ct$$=(($options$$.obj||{}).ma_ct||($options$$.data||{}).ma_ct||"").toString().toUpperCase();let $ma_trang_thai$$=($data_trang_thai$$.trang_thai||$data_trang_thai$$.progress||"").toString().toUpperCase();!$ma_trang_thai$$&&$options$$.obj&&($ma_trang_thai$$=($options$$.obj.trang_thai||$options$$.obj.progress||
8
- "").toString().toUpperCase());if($ma_ct$$&&$ma_trang_thai$$)if($data_trang_thai$$=await trangthai.findOne({ma_trang_thai:$ma_trang_thai$$,ma_ct:$ma_ct$$}).lean()){if($data_trang_thai$$.not_need_right)return $callback$jscomp$0$$(null,!0)}else console.log("Khong tim thay trang thai cho chuc nang nay",{ma_ct:$ma_ct$$,ma_trang_thai:$ma_trang_thai$$,trang_thai:$data_trang_thai$$,action:$action$$});exports.isAdmin($current_id_app$$,$email$$,async($e$$,$admin$$,$app$$,$participant$$)=>{if($e$$)return $callback$jscomp$0$$($e$$,
8
+ "").toString().toUpperCase());if($ma_ct$$&&$ma_trang_thai$$)if($data_trang_thai$$=await trangthai.findOne({ma_trang_thai:$ma_trang_thai$$,ma_ct:$ma_ct$$}).lean()){if($data_trang_thai$$.not_need_right)return $callback$jscomp$0$$(null,!0)}else console.log("Khong tim thay trang thai cho chuc nang nay",{ma_ct:$ma_ct$$,ma_trang_thai:$ma_trang_thai$$,trang_thai:$data_trang_thai$$,action:$action$$});exports.isAdmin($current_id_app$$,$email$$,async($e_ms$$,$admin$$,$app$$,$participant$$)=>{if($e_ms$$)return $callback$jscomp$0$$($e_ms$$,
9
+ !1);if($app$$&&$app$$.allow_modules&&0<$app$$.allow_modules.length&&($e_ms$$=await global.getModel("moduleinfo").find({"items.code":{$regex:"^"+$module$$+"$",$options:"i"}}),0<$e_ms$$.length&&0==$e_ms$$.filter($m$$=>0<=$app$$.allow_modules.indexOf($m$$.code)&&(!$m$$.not_for_companies||0>$m$$.not_for_companies.indexOf($app$$._id.toString()))&&(!$m$$.only_for_companies||0<=$m$$.only_for_companies.indexOf($app$$._id.toString()))).length))return $callback$jscomp$0$$('API "'+$module$$+'" ch\u01b0a \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t cho c\u00f4ng ty n\u00e0y',
9
10
  !1);if($options$$.data&&$options$$.data.id_app){if($options$$.data.id_app!=$current_id_app$$)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);if($options$$.obj&&$options$$.data.id_app!=$options$$.obj.id_app)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1)}if($options$$.obj&&$options$$.obj.id_app&&$options$$.obj.id_app!=$current_id_app$$)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",
10
11
  !1);if($options$$.notNeedRight)return $callback$jscomp$0$$(null,!0,$app$$);if($options$$.obj&&!$admin$$)if(2===$options$$.obj.visible_to){if(!underscore.contains($options$$.obj.visible_to_users,$email$$)&&$options$$.obj.of_user!==$email$$.toLowerCase()&&$options$$.obj.user_created&&$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase())return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1)}else if(1===$options$$.obj.visible_to&&
11
12
  $options$$.obj.of_user!==$email$$.toLowerCase()&&$options$$.obj.user_created&&$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase()&&await exports.nguoiPhuTrach($options$$.obj.id_app,$options$$.obj.user_created)!=$email$$.toLowerCase()&&$options$$.obj.phu_trach!=$email$$.toLowerCase()&&0>($options$$.obj.attends||[]).indexOf($email$$))return $callback$jscomp$0$$("Ch\u1ec9 ng\u01b0\u1eddi t\u1ea1o, ph\u1ee5 tr\u00e1ch, h\u1ed7 tr\u1ee3 v\u00e0 admin m\u1edbi c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",
@@ -1,4 +1,5 @@
1
1
  'use strict';const _=require("underscore"),StaticPool=require("./WorkerStaticPool"),path=require("path"),writtenNumber=require("written-number"),async=require("async"),{VM}=require("vm2"),numeral=require("numeral"),moment=require("moment");function evalute($code$$,$sandbox$$={},$timeout$$=2E3){$sandbox$$.Promise=function(){};return(new VM({timeout:$timeout$$,sandbox:$sandbox$$})).run(`(()=>{${$code$$}})()`)}
2
+ function JSONParser($str_func$$){0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);return evalute($str_func$$)}
2
3
  function numberToWord($fractionText_number$$,$options$$){if(void 0===$fractionText_number$$||null===$fractionText_number$$)return"";if($options$$&&$options$$.lang&&"vn"!==$options$$.lang){var $kq_sign$$=writtenNumber($fractionText_number$$,{lang:$options$$.lang});return 0<$kq_sign$$.length?$kq_sign$$.substring(0,1).toUpperCase()+$kq_sign$$.substring(1):""}$kq_sign$$="";0>$fractionText_number$$&&($kq_sign$$="\u00e2m ",$fractionText_number$$=-$fractionText_number$$);$options$$=_.extend({thousand:"ng\u00e0n",
3
4
  decimal:"ph\u1ea9y"},$options$$);$fractionText_number$$=Number($fractionText_number$$.toFixed(2));var $integerPart_integerText$$=Math.floor($fractionText_number$$),$fractionPart$$=$fractionText_number$$%1;$fractionText_number$$="";$fractionPart$$&&($fractionText_number$$=convertFractionPart($fractionPart$$),$fractionText_number$$=" "+$options$$.decimal+" "+$fractionText_number$$);var $digitGroups$$=breakDownNumber($integerPart_integerText$$).reverse();$integerPart_integerText$$=_.chain($digitGroups$$).map(function($convertedGroup_group$$,
4
5
  $index$$){$convertedGroup_group$$=convertGroup($convertedGroup_group$$,$index$$===$digitGroups$$.length-1?!1:!0);var $unit$$=unitAt($index$$,$options$$.thousand);$convertedGroup_group$$||0===$index$$%3||($unit$$="");$convertedGroup_group$$&&$unit$$&&($unit$$=" "+$unit$$);return $convertedGroup_group$$+$unit$$}).compact().reverse().join(" ");$kq_sign$$=$kq_sign$$+$integerPart_integerText$$+$fractionText_number$$;return 0<$kq_sign$$.length?$kq_sign$$.substring(0,1).toUpperCase()+$kq_sign$$.substring(1):
@@ -29,4 +30,4 @@ $e$$}else if("E"===$p$$.type&&$p$$.value){$condition$$=$p$$.value;0>$condition$$
29
30
  })`;$query$jscomp$2_sandbox$$={m:$obj$$,master:$obj$$,data:$obj$$,Moment:moment,Numeral:numeral,numberToWord,getData:getParameterData};try{$app$$[$p$$.name]=await evalute($condition$$,$query$jscomp$2_sandbox$$)()}catch($e$$){console.error($e$$,$condition$$),$app$$[$p$$.name]=$e$$.message}}else $app$$[$p$$.name]=$p$$.value})().then(()=>{$callback$$()}).catch(()=>{$callback$$()})})},function($e$$){if($e$$)return $reject$$($e$$);$resole$$()})})},groupBy=($arr$$,$fieldkey$$,$fieldsums$$,$options$$)=>
30
31
  [...$arr$$].asyncGroupBy($fieldkey$$,$fieldsums$$,$options$$),joinModel2=($arr$$,$id_app$$,$modelName$$,$where$$,$fields$$)=>[...$arr$$].asyncJoinModel2($id_app$$,$modelName$$,{where:$where$$,fields:$fields$$}),query=async($model_name_q$$,$condition$$,$options$jscomp$5_rs$$={})=>{if($options$jscomp$5_rs$$.action&&"find"!=$options$jscomp$5_rs$$.action){if(global.getModel($model_name_q$$)[$options$jscomp$5_rs$$.action]&&0<=["getCoinBalance","getInvestBalance","getOwners"].indexOf($options$jscomp$5_rs$$.action))return global.getModel($model_name_q$$)[$options$jscomp$5_rs$$.action]($condition$$,
31
32
  $options$jscomp$5_rs$$);throw`${$options$jscomp$5_rs$$.action} is not valid`;}if(!$condition$$.id_app)throw"condition missed id_app param";let $fields$$=$options$jscomp$5_rs$$.fields;$fields$$&&($fields$$.mnemonic=-1,$fields$$.private_key=-1);$model_name_q$$=global.getModel($model_name_q$$).find($condition$$,$fields$$);$options$jscomp$5_rs$$.sort&&($model_name_q$$=$model_name_q$$.sort($options$jscomp$5_rs$$.sort));$options$jscomp$5_rs$$.limit&&($model_name_q$$=$model_name_q$$.limit($options$jscomp$5_rs$$.limit));
32
- $options$jscomp$5_rs$$=await $model_name_q$$.lean();$options$jscomp$5_rs$$.forEach($r$$=>{delete $r$$.mnemonic;delete $r$$.private_key;delete $r$$.password;delete $r$$.token});return $options$jscomp$5_rs$$},getLib=$lib_name$$=>global.getLib($lib_name$$);module.exports={evalute,getParameterData,prepareParameters,advMapSeries,numberToWord,round,getInfoFromQuery,stripHtmlTags:strip_html_tags,unescapeHtml,compileHtml,isSupperAdmin,calcGrid,query,groupBy,joinModel2,getLib};
33
+ $options$jscomp$5_rs$$=await $model_name_q$$.lean();$options$jscomp$5_rs$$.forEach($r$$=>{delete $r$$.mnemonic;delete $r$$.private_key;delete $r$$.password;delete $r$$.token});return $options$jscomp$5_rs$$},getLib=$lib_name$$=>global.getLib($lib_name$$);module.exports={evalute,JSONParser,getParameterData,prepareParameters,advMapSeries,numberToWord,round,getInfoFromQuery,stripHtmlTags:strip_html_tags,unescapeHtml,compileHtml,isSupperAdmin,calcGrid,query,groupBy,joinModel2,getLib};
@@ -1,11 +1,11 @@
1
- 'use strict';const User=require("./user"),Participant=require("./participant"),underscore=require("underscore"),_=require("lodash"),appScheam=new global.Schema({name:{type:String,required:!0,maxlength:1024},name_en:{type:String,maxlength:1024},short_name:{type:String,maxlength:1024},address:{type:String,maxlength:1024},address_en:{type:String,maxlength:1024},city:{type:String,maxlength:1024},province:{type:String,maxlength:1024},country:{type:String,maxlength:1024},phone:{type:String,maxlength:1024},
2
- fax:{type:String,maxlength:1024},email:{type:String,maxlength:1024},website:{type:String,maxlength:1024},sale_online:{type:Boolean,default:!1},facebook:{type:String,maxlength:2024},zalo:{type:String,maxlength:2024},messager:{type:String,maxlength:2024},bao_hanh:{type:String},van_chuyen:{type:String},dieu_khoan_su_dung:{type:String},dieu_khoan_su_dung_en:{type:String},dieu_khoan_kygui:{type:String},dieu_khoan_kygui_en:{type:String},dieu_khoan_congtacvien:{type:String},dieu_khoan_congtacvien_en:{type:String},
3
- chinh_sach_dau_tu:{type:String},chinh_sach_dau_tu_en:{type:String},gioi_thieu:{type:String},nganh_nghe:{type:String},keywords:{type:String},site_name:{type:String},ngay_dn:{type:Date,required:!0},ngay_ks:{type:Date,required:!0},nam_bd:{type:Number,required:!0},ngay_ky1:{type:Date,required:!0},ma_so_thue:{type:String,maxlength:1024},nguoi_nop_thue:{type:String,maxlength:1024},giam_doc:{type:String,maxlength:1024},ke_toan_truong:{type:String,maxlength:1024},viettel_version:{type:String,maxlength:1024},
4
- viettel_user:{type:String,maxlength:1024},viettel_password:{type:String,maxlength:1024},viettel_token:{type:String},viettel_url_service:{type:String,maxlength:1024},viettel_direct_issue:Boolean,ma_hoa_don:String,ky_hieu_hoa_don:String,sip_uri:String,sip_password:String,sip_websocket:String,voiip_access_token:String,voiip_webhook:String,wallet_address:{type:String,maxlength:2024},wallet_token:{type:String,maxlength:2024},exchange_fee:Number,wallet_network:{type:String,maxlength:2024},tang_duoc_gioi_thieu:Number,
5
- tang_gioi_thieu:Number,ty_le_hoa_hong:Number,tang_gioi_thieu_denom:String,tai_khoan_ngan_hang:String,ten_ngan_hang:String,chi_nhanh_ngan_hang:String,so_ngay_lam_mot_thang:{type:Number,default:24},logo:{type:String,maxlength:1024},logo_watermark:{type:String,maxlength:1024},gio_mo_cua:{type:Number,default:8},gio_dong_cua:{type:Number,default:22},partner:String,server:String,owner:String,default_password:String,email_host:String,email_port:Number,email_secure:{type:Boolean,default:!0},email_authMethod:{type:String,
6
- default:"LOGIN"},email_user:String,email_pass:String,email_name:String,exfields:global.Schema.Types.Mixed,domain:String,ssl_key:String,ssl_cert:String,ssl_ca:String,account_types_accept:[],options:{},allow_modules:[String],expire_date:Date,trang_thai:{type:String,default:"0"},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});appScheam.index({name:1,province:1});
7
- appScheam.index({trang_thai:1});appScheam.index({sale_online:1});appScheam.index({user_created:"text"},{name:"app_index_created"});appScheam.index({name:"text",province:"text",name_en:"text",address:"text",phone:"text",email:"text",ma_so_thue:"text"},{name:"app_index"});const App=global.mongoose.models.app||global.mongoose.model("app",appScheam);
8
- App.participants=async $app$$=>{underscore.isString($app$$)&&($app$$=await App.getInfo($app$$));let $participants$$=await Participant.ofApp($app$$._id);$app$$.participants&&($app$$.participants.forEach($p$$=>{$p$$.id_app=$app$$.id_app}),$participants$$=$participants$$.concat($app$$.participants));if($app$$.user_created&&!$participants$$.find($p$$=>$p$$.email===$app$$.user_created)){let $_p$$={email:$app$$.user_created,name:$app$$.user_created.split("@")[0],admin:!0,active:!0,cancel:!1,id_app:$app$$._id};
9
- $participants$$.push($_p$$);Participant.createParticipant($_p$$,$e$$=>{$e$$&&console.log("create participant for user owner",$e$$.message)})}return $participants$$};App.getInfo=async function($id_app$$,$field$$){return new Promise(($resolve$$,$reject$$)=>{App.findOne({_id:$id_app$$}).lean().exec(($e$$,$rs$$)=>{if($e$$||!$rs$$)return $reject$$(Error($e$$?$e$$.message:"App is not exists"));$resolve$$($field$$?$rs$$[$field$$]:$rs$$)})})};
1
+ 'use strict';const User=require("./user"),Participant=require("./participant"),_=require("lodash"),appScheam=new global.Schema({name:{type:String,required:!0,maxlength:1024},name_en:{type:String,maxlength:1024},short_name:{type:String,maxlength:1024},address:{type:String,maxlength:1024},address_en:{type:String,maxlength:1024},city:{type:String,maxlength:1024},province:{type:String,maxlength:1024},country:{type:String,maxlength:1024},phone:{type:String,maxlength:1024},fax:{type:String,maxlength:1024},
2
+ email:{type:String,maxlength:1024},website:{type:String,maxlength:1024},sale_online:{type:Boolean,default:!1},facebook:{type:String,maxlength:2024},zalo:{type:String,maxlength:2024},messager:{type:String,maxlength:2024},bao_hanh:{type:String},van_chuyen:{type:String},dieu_khoan_su_dung:{type:String},dieu_khoan_su_dung_en:{type:String},dieu_khoan_kygui:{type:String},dieu_khoan_kygui_en:{type:String},dieu_khoan_congtacvien:{type:String},dieu_khoan_congtacvien_en:{type:String},chinh_sach_dau_tu:{type:String},
3
+ chinh_sach_dau_tu_en:{type:String},gioi_thieu:{type:String},nganh_nghe:{type:String},keywords:{type:String},site_name:{type:String},ngay_dn:{type:Date,required:!0},ngay_ks:{type:Date,required:!0},nam_bd:{type:Number,required:!0},ngay_ky1:{type:Date,required:!0},ma_so_thue:{type:String,maxlength:1024},nguoi_nop_thue:{type:String,maxlength:1024},giam_doc:{type:String,maxlength:1024},ke_toan_truong:{type:String,maxlength:1024},viettel_version:{type:String,maxlength:1024},viettel_user:{type:String,maxlength:1024},
4
+ viettel_password:{type:String,maxlength:1024},viettel_token:{type:String},viettel_url_service:{type:String,maxlength:1024},viettel_direct_issue:Boolean,ma_hoa_don:String,ky_hieu_hoa_don:String,sip_uri:String,sip_password:String,sip_websocket:String,voiip_access_token:String,voiip_webhook:String,wallet_address:{type:String,maxlength:2024},wallet_token:{type:String,maxlength:2024},exchange_fee:Number,wallet_network:{type:String,maxlength:2024},tang_duoc_gioi_thieu:Number,tang_gioi_thieu:Number,ty_le_hoa_hong:Number,
5
+ tang_gioi_thieu_denom:String,tai_khoan_ngan_hang:String,ten_ngan_hang:String,chi_nhanh_ngan_hang:String,so_ngay_lam_mot_thang:{type:Number,default:24},logo:{type:String,maxlength:1024},logo_watermark:{type:String,maxlength:1024},gio_mo_cua:{type:Number,default:8},gio_dong_cua:{type:Number,default:22},partner:String,server:String,owner:String,default_password:String,email_host:String,email_port:Number,email_secure:{type:Boolean,default:!0},email_authMethod:{type:String,default:"LOGIN"},email_user:String,
6
+ email_pass:String,email_name:String,exfields:global.Schema.Types.Mixed,domain:String,ssl_key:String,ssl_cert:String,ssl_ca:String,account_types_accept:[],options:{},allow_modules:[String],expire_date:Date,trang_thai:{type:String,default:"0"},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});appScheam.index({name:1,province:1});appScheam.index({trang_thai:1});
7
+ appScheam.index({sale_online:1});appScheam.index({user_created:"text"},{name:"app_index_created"});appScheam.index({name:"text",province:"text",name_en:"text",address:"text",phone:"text",email:"text",ma_so_thue:"text"},{name:"app_index"});const App=global.mongoose.models.app||global.mongoose.model("app",appScheam);
8
+ App.participants=async $app$$=>{_.isString($app$$)&&($app$$=await App.getInfo($app$$));let $participants$$=await Participant.ofApp($app$$._id);$app$$.participants&&($app$$.participants.forEach($p$$=>{$p$$.id_app=$app$$.id_app}),$participants$$=$participants$$.concat($app$$.participants));if($app$$.user_created&&!$participants$$.find($p$$=>$p$$.email===$app$$.user_created)){let $_p$$={email:$app$$.user_created,name:$app$$.user_created.split("@")[0],admin:!0,active:!0,cancel:!1,id_app:$app$$._id};$participants$$.push($_p$$);
9
+ Participant.createParticipant($_p$$,$e$$=>{$e$$&&console.log("create participant for user owner",$e$$.message)})}return $participants$$};App.getInfo=async function($id_app$$,$field$$){return new Promise(($resolve$$,$reject$$)=>{App.findOne({_id:$id_app$$}).lean().exec(($e$$,$rs$$)=>{if($e$$||!$rs$$)return $reject$$(Error($e$$?$e$$.message:"App is not exists"));$resolve$$($field$$?$rs$$[$field$$]:$rs$$)})})};
10
10
  App.emitEvent=function($id_app$$,$event$$,$_data$$,$c_token$$=null,$users$$=null,$_createNotify$$=!1,$_push$$=!0){App.findOne({_id:$id_app$$}).lean().exec(async($e$jscomp$0$$,$app$$)=>{$app$$&&($_data$$.company=$app$$.name,$_data$$.app_info=$app$$,$_data$$.id_app=$id_app$$,$users$$?$users$$=$users$$.map($u$$=>({email:$u$$,name:$u$$})):($users$$=await App.participants($app$$),$users$$.find($u$$=>$app$$.user_created===$u$$.email)||$users$$.push({email:$app$$.user_created,name:$app$$.user_created})),
11
11
  $users$$.forEach(function($user$$){let $data$$=_.cloneDeep($_data$$);!$data$$.title||!$_createNotify$$&&$event$$?$event$$&&User.emitEvent($user$$.email,$event$$,$data$$,$_push$$,$c_token$$):global.createNotification($data$$.user_updated||"SYSTEM",$user$$.email,$data$$.title,$data$$.body,$e$$=>{$e$$?console.error($e$$):$event$$&&User.emitEvent($user$$.email,$event$$,$data$$,$_push$$,$c_token$$)},$data$$,!$event$$,$c_token$$)}))})};module.exports=App;
@@ -30,12 +30,12 @@ approveSchema.index({user_approved:1});approveSchema.index({user_denied:1});appr
30
30
  `;
31
31
  model.request=function($user_request$$,$user_approve$$,$title$$,$_c_data_request$$,$callback$$,$update_after_approve$$,$template_content$$,$update_after_deny$$){let $user_approves$$=$user_approve$$;underscore.isArray($user_approves$$)||($user_approves$$=[$user_approve$$]);let $data$$;$data$$=$_c_data_request$$.toObject?$_c_data_request$$.toObject():_.cloneDeep($_c_data_request$$);$data$$._id=($data$$._id||"").toString();$_c_data_request$$={id_ct:$data$$._id};Object.keys($data$$).includes("trang_thai")&&($_c_data_request$$.trang_thai=
32
32
  $data$$.trang_thai);model.deleteOne($_c_data_request$$,async()=>{const $m$$={id_app:$data$$.id_app,id_ct:$data$$._id,ma_ct:$data$$.ma_ct,trang_thai:$data$$.trang_thai,user_request:$user_request$$.email,user_request_name:$user_request$$.name,user_approves:$user_approves$$,update_after_approve:$update_after_approve$$,update_after_deny:$update_after_deny$$,title:$title$$,template_content:$template_content$$,visible_to_users:$user_approves$$.map($u$$=>$u$$.email)};let $app_info$$=await App.findOne({_id:$data$$.id_app}).lean();
33
- if($app_info$$){var $details_option_template_gen$$;$data$$.ma_ct&&($details_option_template_gen$$=await Options.findOne({id_app:$data$$.id_app,id_func:{$regex:$data$$.ma_ct,$options:"i"}}).lean());var $ngEnviorment$$=new ngcompile([]),$template$$;if($details_option_template_gen$$&&($template$$=($template_content$$||$details_option_template_gen$$.option.system.templateEmail||$details_option_template_gen$$.option.system.templateRpt||"").split("<em>").join("").split("</em>").join(""))){$details_option_template_gen$$=
34
- `<h3>${$title$$}</h3>
35
- <div>Ng\u01b0\u1eddi y\u00eau c\u1ea7u: {{user_request.name}}</div>
36
- <div>Ng\u00e0y y\u00eau c\u1ea7u: {{datasource.date_created|date:'dd/MM/yyyy HH:mm:ss'}}</div>
37
- <div>N\u1ed9i dung:</div><hr/>${$template$$}<hr/>
38
- `;let $_data$$={user_request:$user_request$$,user_approve:$user_approve$$,datasource:_.cloneDeep($data$$),company:$app_info$$,app_info:$app_info$$,doc_so:utils.numberToWord};try{$m$$.request_content=$ngEnviorment$$.$compile($details_option_template_gen$$)($_data$$)}catch($e$$){console.error($e$$)}}$m$$.data=_.cloneDeep($data$$);delete $m$$.data.$$hashKey;$m$$.data.details&&($details_option_template_gen$$=$m$$.data.details.map($d$$=>{$d$$.toObject&&($d$$=$d$$.toObject());delete $d$$.$$hashKey;
33
+ if($app_info$$){var $details_option_template_gen$$;$data$$.ma_ct&&($details_option_template_gen$$=await Options.findOne({id_app:$data$$.id_app,id_func:{$regex:"^"+$data$$.ma_ct+"$",$options:"i"}}).lean());var $ngEnviorment$$=new ngcompile([]),$template$$=$template_content$$;!$template$$&&$details_option_template_gen$$&&$details_option_template_gen$$.option&&$details_option_template_gen$$.option.system&&($template$$=((($details_option_template_gen$$.option||{}).system||{}).templateEmail||(($details_option_template_gen$$.option||
34
+ {}).system||{}).templateRpt||"").split("<em>").join("").split("</em>").join(""));if($template$$){$details_option_template_gen$$=`<h3>${$title$$}</h3>
35
+ <div>Ng\u01b0\u1eddi y\u00eau c\u1ea7u: {{user_request.name}}</div>
36
+ <div>Ng\u00e0y y\u00eau c\u1ea7u: {{datasource.date_created|date:'dd/MM/yyyy HH:mm:ss'}}</div>
37
+ <div>N\u1ed9i dung:</div><hr/>${$template$$}<hr/>
38
+ `;let $_data$$={user_request:$user_request$$,user_approve:$user_approve$$,datasource:_.cloneDeep($data$$),company:$app_info$$,app_info:$app_info$$,doc_so:utils.numberToWord};try{$m$$.request_content=$ngEnviorment$$.$compile($details_option_template_gen$$)($_data$$)}catch($e$$){console.error($e$$)}}$m$$.data=_.cloneDeep($data$$);delete $m$$.data.$$hashKey;$m$$.data.details&&($details_option_template_gen$$=$m$$.data.details.map($d$$=>{$d$$.toObject&&($d$$=$d$$.toObject());delete $d$$.$$hashKey;
39
39
  delete $d$$._id;return{...$d$$}}),$m$$.data.details=$details_option_template_gen$$);model.create($m$$,($e$jscomp$0$$,$rs$$)=>{if($e$jscomp$0$$)return console.error("error create approve request",$e$jscomp$0$$,$m$$.data),$callback$$($e$jscomp$0$$);$user_approves$$.forEach(async $user_approve$$=>{$user_approve$$.id_request=$rs$$._id.toString();void 0!==$rs$$.trang_thai&&null!==$rs$$.trang_thai&&($user_approve$$.trang_thai=$rs$$.trang_thai);var $cipher_approve_rq_approve$$=crypto.createCipher("aes192",
40
40
  configs.cryptoPassword||"PVT@1"),$_data$$=$cipher_approve_rq_approve$$.update(JSON.stringify($user_approve$$),"utf8","hex");$_data$$+=$cipher_approve_rq_approve$$.final("hex");$cipher_approve_rq_approve$$=$rs$$.toObject();$cipher_approve_rq_approve$$.url_approve=$_data$$;$cipher_approve_rq_approve$$.url_deny=$_data$$;if($template$$){var $requests$$=await model.find({id_ct:$data$$._id}).sort({trang_thai:-1}).lean();await $requests$$.asyncJoinModel2($data$$.id_app,participant,{where:{user_approved:"email"},
41
41
  fields:{user_approved_name:"name"}});await $requests$$.asyncJoinModel2($data$$.id_app,participant,{where:{user_denied:"email"},fields:{user_denied_name:"name"}});$requests$$=`<h3>${$title$$}</h3>
@@ -50,9 +50,9 @@ fields:{user_approved_name:"name"}});await $requests$$.asyncJoinModel2($data$$.i
50
50
  ${footerEmailTemplate($requests$$.filter($r$$=>$r$$.user_approved||$r$$.user_denied))}
51
51
  `;$_data$$={user_request:$user_request$$,user_approve:$user_approve$$,datasource:$data$$,url_approve:(configs.api_url||configs.domain)+"/public/approve/"+$_data$$,url_deny:(configs.api_url||configs.domain)+"/public/deny-approve/"+$_data$$,company:$app_info$$,app_info:$app_info$$,doc_so:utils.numberToWord};try{let $email_content$$=$ngEnviorment$$.$compile($requests$$)($_data$$);const $atts$$=await File.find({id_link:$data$$._id}).lean();App.emitEvent($user_request$$.current_id_app,"request_approve",
52
52
  {_id:$data$$._id,id_app:$data$$.id_app,title:$title$$,body:$title$$,rq_approve:$cipher_approve_rq_approve$$,code:$data$$.ma_ct,email_content:$email_content$$,allow_unsubcribe:!1,attachments:$atts$$},null,[$user_approve$$.email],!0,!0)}catch($e$$){console.log("Error send the request approve",$e$$.message)}}else console.log("don't find template or report template to send notify to approve user")});$callback$$(null,$rs$$)})}})};
53
- model.sendNotifyApproved=function($rq$$){if($rq$$.ma_ct){var $title$$=`[\u0110\u00e3 duy\u1ec7t] ${$rq$$.title}`;Options.findOne({id_app:$rq$$.id_app,id_func:{$regex:$rq$$.ma_ct,$options:"i"}}).lean().exec(async($e$jscomp$0$$,$option$$)=>{$rq$$.template_content||$option$$&&$option$$.option&&$option$$.option.system&&($option$$.option.system.templateEmail||$option$$.option.system.templateRpt)?App.findOne({_id:$rq$$.id_app}).lean().exec(async($e$jscomp$4_requests$$,$_data$jscomp$2_app_info$$)=>{if($e$jscomp$4_requests$$||
54
- !$_data$jscomp$2_app_info$$)return console.log("khong the tim thay thong tin cong ty nay");$e$jscomp$4_requests$$=await model.find({id_ct:$rq$$.data._id}).sort({trang_thai:-1}).lean();await $e$jscomp$4_requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_approved:"email"},fields:{user_approved_name:"name"}});await $e$jscomp$4_requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_denied:"email"},fields:{user_denied_name:"name"}});let $template$$=($rq$$.template_content||$option$$.option.system.templateEmail||
55
- $option$$.option.system.templateRpt).split("<em>").join("").split("</em>").join("");$template$$=`
53
+ model.sendNotifyApproved=function($rq$$){if($rq$$.ma_ct){var $title$$=`[\u0110\u00e3 duy\u1ec7t] ${$rq$$.title}`;Options.findOne({id_app:$rq$$.id_app,id_func:{$regex:"^"+$rq$$.ma_ct+"$",$options:"i"}}).lean().exec(async($e$jscomp$0$$,$option$$)=>{$rq$$.template_content||$option$$&&$option$$.option&&$option$$.option.system&&($option$$.option.system.templateEmail||$option$$.option.system.templateRpt)?App.findOne({_id:$rq$$.id_app}).lean().exec(async($e$jscomp$4_requests$$,$_data$jscomp$2_app_info$$)=>
54
+ {if($e$jscomp$4_requests$$||!$_data$jscomp$2_app_info$$)return console.log("khong the tim thay thong tin cong ty nay");$e$jscomp$4_requests$$=await model.find({id_ct:$rq$$.data._id}).sort({trang_thai:-1}).lean();await $e$jscomp$4_requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_approved:"email"},fields:{user_approved_name:"name"}});await $e$jscomp$4_requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_denied:"email"},fields:{user_denied_name:"name"}});let $template$$=($rq$$.template_content||
55
+ (($option$$.option||{}).system||{}).templateEmail||(($option$$.option||{}).system||{}).templateRpt).split("<em>").join("").split("</em>").join("");$template$$=`
56
56
  <div>
57
57
  <h3>Y\u00eau c\u1ea7u d\u01b0\u1edbi \u0111\u00e2y \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t b\u1edfi ${$rq$$.user_approved_name||$rq$$.user_approved} </h3>
58
58
  <div>Ng\u01b0\u1eddi y\u00eau c\u1ea7u: {{user_request.name}}</div>
@@ -73,9 +73,9 @@ model.deny=function($_c$jscomp$2_encrypted$$,$callback$$,$token$$,$options$$={re
73
73
  $decipher$$.update($_c$jscomp$2_encrypted$$,"hex","utf8");$decrypted$$+=$decipher$$.final("utf8");$key_data$$=JSON.parse($decrypted$$);$_id$$=$key_data$$.id_request;$user_denied$$=$key_data$$.email;$user_denied_name$$=$key_data$$.name;$trang_thai$$=$key_data$$.trang_thai}catch($e$$){return $callback$$("Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb")}if(!$_id$$||!$user_denied$$)return $callback$$("request id and deny user are required");if(!global.mongoose.Types.ObjectId.isValid($_id$$))return $callback$$("request id '"+
74
74
  $_id$$+"' is not valid");$_c$jscomp$2_encrypted$$={_id:$_id$$};void 0!==$trang_thai$$&&null!==$trang_thai$$&&($_c$jscomp$2_encrypted$$.trang_thai=$trang_thai$$);model.findOne($_c$jscomp$2_encrypted$$,($e$jscomp$2$$,$rq$$)=>{if($e$jscomp$2$$||!$rq$$||!$rq$$.ma_ct)return $callback$$($e$jscomp$2$$||"Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");if($rq$$.date_approved)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t b\u1edfi "+$rq$$.user_approved_name);
75
75
  if($rq$$.date_denied)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb t\u1eeb ch\u1ed1i duy\u1ec7t b\u1edfi "+$rq$$.user_denied_name);$rq$$.date_denied=new Date;$rq$$.user_denied=$user_denied$$;$rq$$.user_denied_name=$user_denied_name$$;$rq$$.denied_reason=$options$$.reason||"";if(!$rq$$.user_approves||!$rq$$.user_approves.find($u$$=>0<=$u$$.email.indexOf($user_denied$$)))return $callback$$("User n\u00e0y kh\u00f4ng c\u00f3 quy\u1ec1n duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y");$rq$$.save(($e$jscomp$1$$,
76
- $approve$$)=>{if($e$jscomp$1$$)return $callback$$($e$jscomp$1$$);let $title$$=`[B\u1ecb t\u1eeb ch\u1ed1i] ${$rq$$.title}`;Options.findOne({id_app:$rq$$.id_app,id_func:{$regex:$rq$$.ma_ct,$options:"i"}}).lean().exec(($e$jscomp$0$$,$option$$)=>{$rq$$.template_content||$option$$&&$option$$.option&&$option$$.option.system&&($option$$.option.system.templateEmail||$option$$.option.system.templateRpt)?App.findOne({_id:$rq$$.id_app}).lean().exec(async($e$jscomp$19_requests$$,$_data$jscomp$3_app_info$$)=>
76
+ $approve$$)=>{if($e$jscomp$1$$)return $callback$$($e$jscomp$1$$);let $title$$=`[B\u1ecb t\u1eeb ch\u1ed1i] ${$rq$$.title}`;Options.findOne({id_app:$rq$$.id_app,id_func:{$regex:"^"+$rq$$.ma_ct+"$",$options:"i"}}).lean().exec(($e$jscomp$0$$,$option$$)=>{$rq$$.template_content||$option$$&&$option$$.option&&$option$$.option.system&&($option$$.option.system.templateEmail||$option$$.option.system.templateRpt)?App.findOne({_id:$rq$$.id_app}).lean().exec(async($e$jscomp$19_requests$$,$_data$jscomp$3_app_info$$)=>
77
77
  {if($e$jscomp$19_requests$$||!$_data$jscomp$3_app_info$$)return console.log("khong the tim thay thong tin cong ty nay");$e$jscomp$19_requests$$=await model.find({id_ct:$rq$$.data._id}).sort({trang_thai:-1}).lean();await $e$jscomp$19_requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_approved:"email"},fields:{user_approved_name:"name"}});await $e$jscomp$19_requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_denied:"email"},fields:{user_denied_name:"name"}});let $template$$=
78
- ($rq$$.template_content||$option$$.option.system.templateEmail||$option$$.option.system.templateRpt).split("<em>").join("").split("</em>").join("");$template$$=`
78
+ ($rq$$.template_content||(($option$$.option||{}).system||{}).templateEmail||(($option$$.option||{}).system||{}).templateRpt).split("<em>").join("").split("</em>").join("");$template$$=`
79
79
  <div>
80
80
  <h3>Y\u00eau c\u1ea7u d\u01b0\u1edbi \u0111\u00e2y \u0111\u00e3 b\u1ecb t\u1eeb ch\u1ed1i duy\u1ec7t b\u1edfi ${$rq$$.user_denied_name} </h3>
81
81
  <div style='color:red'>L\u00fd do t\u1eeb ch\u1ed1i: ${$rq$$.denied_reason} </div>
@@ -1,13 +1,13 @@
1
1
  'use strict';const validAccount=require("../libs/validator-account"),validator=require("../libs/validator"),unidecode=require("unidecode"),dmvtSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_vt:{type:String,required:"M\u00e3 v\u1eadt t\u01b0 kh\u00f4ng \u0111\u01b0\u1ee3c tr\u1ed1ng",uppercase:!0,trim:!0,maxlength:1024},ma_vt2:{type:String,maxlength:1024,uppercase:!0,trim:!0},ma_can:{type:String,maxlength:1024,uppercase:!0,trim:!0},ten_vt:{type:String,required:"T\u00ean v\u1eadt t\u01b0 kh\u00f4ng \u0111\u01b0\u1ee3c tr\u1ed1ng",
2
- maxlength:1024},ten_vt_kd:String,ma_dvt:{type:String,required:"M\u00e3 \u0111\u01a1n v\u1ecb t\u00ednh kh\u00f4ng \u0111\u01b0\u1ee3c tr\u1ed1ng",maxlength:32,trim:!0},ma_lvt:{type:String,required:!1,maxlength:32,trim:!0},ma_nvt:{type:String,required:!1,maxlength:1024,trim:!0},ten_nvt:String,ma_nvt2:{type:String,required:!1,maxlength:1024,trim:!0},ma_nvt3:{type:String,required:!1,maxlength:1024,trim:!0},ma_nvt4:{type:String,required:!1,maxlength:1024,trim:!0},ma_ncc:{type:String,required:!1,maxlength:32,
3
- trim:!0},ten_ncc:String,tg_tk:{type:Boolean,default:!0},kg_kiem_tra_ton_kho:{type:Boolean,default:!1},kg_kiem_tra_ton_kho_tt:{type:Boolean,default:!1},gia_xuat:{type:String,default:"1",maxlength:32},tk_vt:{type:String,default:"1561",maxlength:32},tk_dt:{type:String,maxlength:32},tk_gv:{type:String,maxlength:32},tk_dl:{type:String,maxlength:32},tk_tl:{type:String,maxlength:32},gia_ban_le0:{type:Number,default:0},gia_ban_buon0:{type:Number,default:0},gia_ban_le:{type:Number,default:0},gia_ban_buon:{type:Number,
4
- default:0},ban_theo_tg:{type:Boolean,default:!1},sp_yeu_cau_che_bien:{type:Boolean,default:!1},sp_yeu_cau_pha_che:{type:Boolean,default:!1},gia_mua:{type:Number,default:0},ty_le_ck0:{type:Number,default:0},tien_ck0:{type:Number,default:0},thue_suat_nk0:{type:Number,default:0},ton_kho_mac_dinh:{type:Number,default:0},ton_kho_online_hien_tai:{type:Number,default:0},thue_suat_nk:{type:Number,default:0},ma_thue:{type:String,maxlength:32},picture_slide:{type:String,maxlength:1024},picture:{type:String,
5
- maxlength:1024},picture2:{type:String,maxlength:1024},picture3:{type:String,maxlength:1024},picture4:{type:String,maxlength:1024},picture5:{type:String,maxlength:1024},picture6:{type:String,maxlength:1024},mieu_ta:{type:String},mieu_ta_chi_tiet:{type:String},khuyen_mai:{type:String},bao_hang:{type:String},xuat_xu:{type:String},nhan_hieu:{type:String},hot:{type:Boolean},bestseller:{type:Boolean},banner_large:{type:Boolean},banner_small:{type:Boolean},tinh_trang:{type:String,maxlength:1024},exfields:Schema.Types.Mixed,
6
- labels:[String],ma_lo_yn:Boolean,ma_tt1_yn:Boolean,ma_tt2_yn:Boolean,ma_tt3_yn:Boolean,thuoc_tinh:Schema.Types.Mixed,cong_doan_sx:[Schema.Types.Mixed],is_service:{type:Boolean,default:!1},is_digital:{type:Boolean,default:!1},is_coin:Boolean,is_point:Boolean,file_digital:String,combo:[],shared:{type:Boolean,default:!0},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,
7
- default:""},visible_to:{type:Number,default:0},visible_to_users:[String]},{toJSON:{virtuals:!0}});
2
+ maxlength:1024},ten_vt_kd:String,ten_vt_eng:String,ma_dvt:{type:String,required:"M\u00e3 \u0111\u01a1n v\u1ecb t\u00ednh kh\u00f4ng \u0111\u01b0\u1ee3c tr\u1ed1ng",maxlength:32,trim:!0},ma_lvt:{type:String,required:!1,maxlength:32,trim:!0},ma_nvt:{type:String,required:!1,maxlength:1024,trim:!0},ten_nvt:String,ma_nvt2:{type:String,required:!1,maxlength:1024,trim:!0},ma_nvt3:{type:String,required:!1,maxlength:1024,trim:!0},ma_nvt4:{type:String,required:!1,maxlength:1024,trim:!0},ma_ncc:{type:String,
3
+ required:!1,maxlength:32,trim:!0},ten_ncc:String,tg_tk:{type:Boolean,default:!0},kg_kiem_tra_ton_kho:{type:Boolean,default:!1},kg_kiem_tra_ton_kho_tt:{type:Boolean,default:!1},gia_xuat:{type:String,default:"1",maxlength:32},tk_vt:{type:String,default:"1561",maxlength:32},tk_dt:{type:String,maxlength:32},tk_gv:{type:String,maxlength:32},tk_dl:{type:String,maxlength:32},tk_tl:{type:String,maxlength:32},gia_ban_le0:{type:Number,default:0},gia_ban_buon0:{type:Number,default:0},gia_ban_le:{type:Number,
4
+ default:0},gia_ban_buon:{type:Number,default:0},ban_theo_tg:{type:Boolean,default:!1},sp_yeu_cau_che_bien:{type:Boolean,default:!1},sp_yeu_cau_pha_che:{type:Boolean,default:!1},gia_mua:{type:Number,default:0},ty_le_ck0:{type:Number,default:0},tien_ck0:{type:Number,default:0},thue_suat_nk0:{type:Number,default:0},ton_kho_mac_dinh:{type:Number,default:0},ton_kho_online_hien_tai:{type:Number,default:0},thue_suat_nk:{type:Number,default:0},ma_thue:{type:String,maxlength:32},picture_slide:{type:String,
5
+ maxlength:1024},picture:{type:String,maxlength:1024},picture2:{type:String,maxlength:1024},picture3:{type:String,maxlength:1024},picture4:{type:String,maxlength:1024},picture5:{type:String,maxlength:1024},picture6:{type:String,maxlength:1024},mieu_ta:{type:String},mieu_ta_chi_tiet:{type:String},khuyen_mai:{type:String},bao_hang:{type:String},xuat_xu:{type:String},nhan_hieu:{type:String},hot:{type:Boolean},bestseller:{type:Boolean},banner_large:{type:Boolean},banner_small:{type:Boolean},tinh_trang:{type:String,
6
+ maxlength:1024},exfields:Schema.Types.Mixed,labels:[String],ma_lo_yn:Boolean,ma_tt1_yn:Boolean,ma_tt2_yn:Boolean,ma_tt3_yn:Boolean,thuoc_tinh:Schema.Types.Mixed,cong_doan_sx:[Schema.Types.Mixed],is_service:{type:Boolean,default:!1},is_digital:{type:Boolean,default:!1},is_coin:Boolean,is_point:Boolean,file_digital:String,combo:[],shared:{type:Boolean,default:!0},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,
7
+ default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String]},{toJSON:{virtuals:!0}});
8
8
  dmvtSchema.validate={tk_vt:validAccount.existsTk,ma_dvt:validator.existsDvt,ma_thue:validator.existsVat,gia_xuat:[function($id_app$$,$gx$$,$callback$$){"1"!=$gx$$&&"2"!=$gx$$&&"3"!=$gx$$?$callback$$(!1):$callback$$(!0)},"Ph\u01b0\u01a1ng ph\u00e1p t\u00ednh gi\u00e1 xu\u1ea5t: 1- Trung b\u00ecnh th\u00e1ng, 2- Nh\u1eadp tr\u01b0\u1edbc xu\u1ea5t tr\u01b0\u1edbc, 3- \u0110\u00edch danh"],tinh_trang:[function($id_app$$,$gx$$,$callback$$){"1"!=$gx$$&&"2"!=$gx$$&&"3"!=$gx$$?$callback$$(!1):$callback$$(!0)},
9
9
  "T\u00ecnh tr\u1ea1ng: 1- \u0110ang c\u00f3 h\u00e0ng, 2- S\u1eafp c\u00f3 h\u00e0ng, 3- H\u1ebft h\u00e0ng"]};dmvtSchema.index({id_app:1});dmvtSchema.index({ma_nvt:1});dmvtSchema.index({is_service:1});dmvtSchema.index({is_digital:1});dmvtSchema.index({date_updated:-1});dmvtSchema.index({date_created:-1});dmvtSchema.index({user_created:1});dmvtSchema.index({ton_kho_online_hien_tai:1});dmvtSchema.index({ten_vt_kd:1});
10
- dmvtSchema.index({ten_vt:"text",mieu_ta:"text",ma_vt:"text",ma_vt2:"text",ma_can:"text",nhan_hieu:"text",xuat_xu:"text",ma_nvt:"text",ten_nvt:"text",ma_ncc:"text",ten_ncc:"text",labels:"text"},{name:"product_index"});dmvtSchema.index({id_app:1,ma_vt:1},{unique:!0});dmvtSchema.index({ma_vt2:1});dmvtSchema.index({ma_can:1});dmvtSchema.index({ten_vt:1});dmvtSchema.index({ma_dvt:1});dmvtSchema.index({ma_lvt:1});dmvtSchema.index({ma_nvt:1});dmvtSchema.index({ten_nvt:1});dmvtSchema.index({ma_ncc:1});dmvtSchema.index({ten_ncc:1});
11
- dmvtSchema.index({nhan_hieu:1});dmvtSchema.index({xuat_xu:1});dmvtSchema.index({labels:1});dmvtSchema.index({mieu_ta:1});dmvtSchema.index({status:1});dmvtSchema.index({user_created:1,visible_to:1,visible_to_users:1});dmvtSchema.pre("save",function($next$$){const $self$$=this;$self$$.ten_vt?setImmediate(()=>{const $ten_vt_kd$$=unidecode($self$$.ten_vt);$self$$.ten_vt_kd=`${$ten_vt_kd$$}`;$next$$()}):$next$$()});const model=mongoose.models.dmvt||mongoose.model("dmvt",dmvtSchema);
12
- model.on("index",async function($err$$){$err$$?(console.error("Product index error",$err$$),(await model.aggregate([{$group:{_id:{id_app:"$id_app",ma_vt:"$ma_vt"},count:{$sum:1},ids:{$push:"$_id"}}},{$match:{count:{$gt:1}}}])).forEach($d$$=>{console.info("product duplication",$d$$._id,$d$$.ids);$d$$.ids.forEach(($id$$,$index$$)=>{0<$index$$&&console.info("you should delete product",$id$$)})})):console.info("Product indexing complete")});
10
+ dmvtSchema.index({ten_vt:"text",mieu_ta:"text",ma_vt:"text",ma_vt2:"text",ma_can:"text",nhan_hieu:"text",xuat_xu:"text",ma_nvt:"text",ten_nvt:"text",ma_ncc:"text",ten_ncc:"text",labels:"text",ten_vt_eng:"text"},{name:"product_index"});dmvtSchema.index({id_app:1,ma_vt:1},{unique:!0});dmvtSchema.index({ma_vt2:1});dmvtSchema.index({ma_can:1});dmvtSchema.index({ten_vt:1});dmvtSchema.index({ten_vt_eng:1});dmvtSchema.index({ma_dvt:1});dmvtSchema.index({ma_lvt:1});dmvtSchema.index({ma_nvt:1});dmvtSchema.index({ten_nvt:1});
11
+ dmvtSchema.index({ma_ncc:1});dmvtSchema.index({ten_ncc:1});dmvtSchema.index({nhan_hieu:1});dmvtSchema.index({xuat_xu:1});dmvtSchema.index({labels:1});dmvtSchema.index({mieu_ta:1});dmvtSchema.index({status:1});dmvtSchema.index({user_created:1,visible_to:1,visible_to_users:1});dmvtSchema.pre("save",function($next$$){const $self$$=this;$self$$.ten_vt?setImmediate(()=>{const $ten_vt_kd$$=unidecode($self$$.ten_vt);$self$$.ten_vt_kd=`${$ten_vt_kd$$}`;$next$$()}):$next$$()});
12
+ const model=mongoose.models.dmvt||mongoose.model("dmvt",dmvtSchema);model.on("index",async function($err$$){$err$$?(console.error("Product index error",$err$$),(await model.aggregate([{$group:{_id:{id_app:"$id_app",ma_vt:"$ma_vt"},count:{$sum:1},ids:{$push:"$_id"}}},{$match:{count:{$gt:1}}}])).forEach($d$$=>{console.info("product duplication",$d$$._id,$d$$.ids);$d$$.ids.forEach(($id$$,$index$$)=>{0<$index$$&&console.info("you should delete product",$id$$)})})):console.info("Product indexing complete")});
13
13
  model.referenceKeys={ma_vt:[{model:"sokho",key:"ma_vt",error:"V\u1eadt t\u01b0 ${obj.ten_vt} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong s\u1ed5 kho"},{model:"cdvt",key:"ma_vt",error:"V\u1eadt t\u01b0 ${obj.ten_vt} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong c\u00e2n \u0111\u1ed1i v\u1eadt t\u01b0"}]};module.exports=model;
@@ -1 +1 @@
1
- 'use strict';const endpointSchema=new global.Schema({ep_id:{type:String,required:!0},endpoint:{type:String,required:!0,maxlength:1024},user:{type:String,required:!0,lowercase:!0,maxlength:1024},userPublicKey:String,userAuth:String,date_create:{type:Date,default:Date.now}});endpointSchema.index({user:1});const model=global.mongoose.models.endpoint||global.mongoose.model("endpoint",endpointSchema);module.exports=model;
1
+ 'use strict';const endpointSchema=new global.Schema({ep_id:{type:String,required:!0},id_app:String,endpoint:{type:String,required:!0,maxlength:1024},user:{type:String,required:!0,lowercase:!0,maxlength:1024},userPublicKey:String,userAuth:String,date_create:{type:Date,default:Date.now}});endpointSchema.index({user:1});endpointSchema.index({id_app:1});const model=global.mongoose.models.endpoint||global.mongoose.model("endpoint",endpointSchema);module.exports=model;
@@ -1,3 +1,3 @@
1
1
  'use strict';const itemSchema=new Schema({code:{type:String,required:!0,maxlength:1024,trim:!0},title:{type:String,required:!0,maxlength:1024},path:{type:String,maxlength:3024,trim:!0},href:{type:String,maxlength:3024,trim:!0},rights:[String],type:{type:String,maxlength:32,trim:!0},dashboard:{type:String,maxlength:1024},horizontal:Boolean,stt:Number,visible:{type:Boolean,default:!0},line:{type:Number,default:0}}),moduleinfoSchema=new Schema({app:{type:String,required:!0,maxlength:1024,uppercase:!0,
2
2
  trim:!0},code:{type:String,required:!0,maxlength:1024,uppercase:!0,trim:!0},title:{type:String,required:!0,maxlength:1024},mother_module:{type:String,maxlength:1024,trim:!0},name_mother_module:{type:String,maxlength:2024},items:[itemSchema],stt:Number,visible:{type:Boolean,default:!0},only_for_companies:[String],not_for_companies:[String],active_require:{type:Boolean,default:!0},allow_users:{type:String},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,
3
- default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});moduleinfoSchema.index({app:1,code:1,moduleinfo:1,mother_module:1});moduleinfoSchema.index({title:"text"});moduleinfoSchema.index({title:1});moduleinfoSchema.index({status:1});moduleinfoSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.menu||mongoose.model("moduleinfo",moduleinfoSchema);module.exports=model;
3
+ default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});moduleinfoSchema.index({app:1,code:1,moduleinfo:1,mother_module:1});moduleinfoSchema.index({title:"text"});moduleinfoSchema.index({title:1});moduleinfoSchema.index({"items.code":1});moduleinfoSchema.index({status:1});moduleinfoSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.menu||mongoose.model("moduleinfo",moduleinfoSchema);module.exports=model;
@@ -1,6 +1,5 @@
1
1
  'use strict';const OnePayConfig=new Schema({vpc_url_payment:{type:String},vpc_merchant:{type:String},vpc_accessCode:{type:String},vpc_querydr_url:String,vpc_user:{type:String},vpc_password:{type:String},secure_secret:{type:String},result_url:{type:String},error_url:{type:String},domestic:{type:Boolean,default:!0}}),MomoConfig=new Schema({endpoint:{type:String},endpoint_query:{type:String},partnercode:{type:String},accesskey:{type:String},serectkey:{type:String}}),ptthanhtoanSchema=new Schema({id_app:{type:String,
2
2
  required:!0},stt:{type:Number,default:0},ten:{type:String,required:!0,maxlength:1024},ds_ma_kho:[String],chi_su_dung_cho_ct:{type:String,uppercase:!0},khong_su_dung_cho_ct:{type:String,uppercase:!0},ngan_hang:{type:String,maxlength:1024},tai_khoan_nh:{type:String,maxlength:1024},chu_tai_khoan:{type:String,maxlength:1024},tk_tien_dc:{type:String,uppercase:!0,maxlength:32},tk_tien:{type:String,uppercase:!0,maxlength:32},tk_dt:{type:String,uppercase:!0,maxlength:32},tk_dt_vc:{type:String,uppercase:!0,
3
- maxlength:32},tk_tl:{type:String,uppercase:!0,maxlength:32},tk_ck:{type:String,uppercase:!0,maxlength:32},tk_gv:{type:String,uppercase:!0,maxlength:32},tk_cn:{type:String,uppercase:!0,maxlength:32},ma_kh:{type:String,uppercase:!0,maxlength:32},hinh_thuc:Number,tra_truoc:Boolean,payment_service:{type:String,enum:["onepay","momo","zalo","assrequest"]},onepay_configs:OnePayConfig,momo_configs:MomoConfig,zalo_configs:Schema.Types.Mixed,wallet_configs:Schema.Types.Mixed,thanh_toan_bang_diem:{type:Boolean,
4
- default:!1},thanh_toan_bang_tien:{type:Boolean,default:!1},loai_tien:{type:String},visible_to:{type:Number,default:0},visible_to_users:[String],status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});ptthanhtoanSchema.index({id_app:1,ten:1});ptthanhtoanSchema.index({ten:"text"});ptthanhtoanSchema.index({ds_ma_kho:1});ptthanhtoanSchema.index({status:1});
5
- ptthanhtoanSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.ptthanhtoan||mongoose.model("ptthanhtoan",ptthanhtoanSchema);
6
- model.getInfo=async($id_app$$,$condition$$,$fields$$)=>{$condition$$.id_app=$id_app$$;return new Promise(($resolve$$,$reject$$)=>{model.findOne($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$||!$rs$$)return $reject$$(Error($e$$?$e$$.message:`Can't find payment method info. Query ${JSON.stringify($condition$$)}`));$resolve$$($fields$$?$rs$$[$fields$$]:$rs$$)})})};module.exports=model;
3
+ maxlength:32},tk_tl:{type:String,uppercase:!0,maxlength:32},tk_ck:{type:String,uppercase:!0,maxlength:32},tk_gv:{type:String,uppercase:!0,maxlength:32},tk_cn:{type:String,uppercase:!0,maxlength:32},ma_kh:{type:String,uppercase:!0,maxlength:32},hinh_thuc:Number,tra_truoc:Boolean,payment_service:{type:String},onepay_configs:OnePayConfig,momo_configs:MomoConfig,zalo_configs:Schema.Types.Mixed,wallet_configs:Schema.Types.Mixed,thanh_toan_bang_diem:{type:Boolean,default:!1},thanh_toan_bang_tien:{type:Boolean,
4
+ default:!1},loai_tien:{type:String},visible_to:{type:Number,default:0},visible_to_users:[String],status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});ptthanhtoanSchema.index({id_app:1,ten:1});ptthanhtoanSchema.index({ten:"text"});ptthanhtoanSchema.index({ds_ma_kho:1});ptthanhtoanSchema.index({status:1});ptthanhtoanSchema.index({user_created:1,visible_to:1,visible_to_users:1});
5
+ const model=mongoose.models.ptthanhtoan||mongoose.model("ptthanhtoan",ptthanhtoanSchema);model.getInfo=async($id_app$$,$condition$$,$fields$$)=>{$condition$$.id_app=$id_app$$;return new Promise(($resolve$$,$reject$$)=>{model.findOne($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$||!$rs$$)return $reject$$(Error($e$$?$e$$.message:`Can't find payment method info. Query ${JSON.stringify($condition$$)}`));$resolve$$($fields$$?$rs$$[$fields$$]:$rs$$)})})};module.exports=model;
@@ -18,9 +18,9 @@ User.initSocket=$redisAdapter_server$$=>{global.socketContainer.socketIO=require
18
18
  if($_token$$){$socket$$.join($_token$$.email);let $clientIO$$=await global.socketContainer.loadConnectionId();$clientIO$$[$socket$$.id]={token:$msg$jscomp$0$$.token,email:$_token$$.email};global.socketContainer.saveConnectionId($clientIO$$);global.alertNotification($_token$$.email);global.alertMessage($_token$$.email);global.socketContainer.socketIO.to($socket$$.id).emit("login",{user:$_token$$.email,success:!0});$socket$$.on("offer",function($msg$$){$msg$$.from=$_token$$.email;User.socketSendTo($msg$$.to,
19
19
  "offer",$msg$$)});$socket$$.on("answer",function($msg$$){$msg$$.from=$_token$$.email;User.socketSendTo($msg$$.to,"answer",$msg$$)});$socket$$.on("candidate",function($msg$$){$msg$$.from=$_token$$.email;User.socketSendTo($msg$$.to,"candidate",$msg$$)});$socket$$.on("leave",function($msg$$){$msg$$.from=$_token$$.email;User.socketSendTo($msg$$.to,"leave",$msg$$)})}else global.socketContainer.socketIO.to($socket$$.id).emit("login",{user:$msg$jscomp$0$$.email,success:!1,message:"Token is not exists"})}});
20
20
  $socket$$.on("disconnect",async function(){let $clientIO$$=await global.socketContainer.loadConnectionId(),$client$$=$clientIO$$[$socket$$.id];$client$$&&$socket$$.leave($client$$.email);delete $clientIO$$[$socket$$.id];global.socketContainer.saveConnectionId($clientIO$$)})})};User.teststrengthPassword=$pwString$$=>5<$pwString$$.length&&/[A-Z]+/.test($pwString$$)&&/[a-z]+/.test($pwString$$)&&/[0-9]+/.test($pwString$$);User.teststrengthPin=$pin$$=>4===$pin$$.length&&/^-?\d+$/.test($pin$$);
21
- User.emitEvent=async function($email$$,$event$$,$_data_obj_send$$,$push$$,$exclude_token$$){if($email$$){if("object"===typeof $_data_obj_send$$){var $data$$=Object.assign({},$_data_obj_send$$);$data$$.__event=$event$$}else $data$$=$_data_obj_send$$;if($data$$.body&&0<=$data$$.body.indexOf("{")&&0<=$data$$.body.indexOf("}"))try{var $cipher_unsub_file_link_unsub$$=JSON.parse($data$$.body);$cipher_unsub_file_link_unsub$$.data&&(0<=$cipher_unsub_file_link_unsub$$.data.indexOf("data:image")?$data$$.body=
22
- "Image":$data$$.body="File")}catch($e$$){console.log($e$$)}if($data$$.email_content&&!$data$$.not_send_email&&$data$$.title){var $encrypted_unsub_unsub$$;0!=$data$$.allow_unsubcribe&&$data$$.id_app&&($encrypted_unsub_unsub$$=await global.getModel("subscribe").findOne({id_app:$data$$.id_app,email:$email$$,unsubcribe:!0}).lean());$encrypted_unsub_unsub$$||($_data_obj_send$$={...$data$$},$_data_obj_send$$.id_app&&($cipher_unsub_file_link_unsub$$=crypto.createCipher("aes192",configs.cryptoPassword||"PVT@1"),
23
- $encrypted_unsub_unsub$$=$cipher_unsub_file_link_unsub$$.update(JSON.stringify({id_app:$data$$.id_app,email:$email$$}),"utf8","hex"),$encrypted_unsub_unsub$$+=$cipher_unsub_file_link_unsub$$.final("hex"),$cipher_unsub_file_link_unsub$$=`${configs.api_url}/public/unsubscribe/${$encrypted_unsub_unsub$$}`,0!=$data$$.allow_unsubcribe&&($_data_obj_send$$.email_content=`${$_data_obj_send$$.email_content}
21
+ User.emitEvent=async function($email$$,$event$$,$_data_obj_send$$,$push$$,$exclude_token$$){console.log("emit event",$email$$,$event$$,$_data_obj_send$$);if($email$$){if("object"===typeof $_data_obj_send$$){var $data$$=Object.assign({},$_data_obj_send$$);$data$$.__event=$event$$}else $data$$=$_data_obj_send$$;if($data$$.body&&0<=$data$$.body.indexOf("{")&&0<=$data$$.body.indexOf("}"))try{var $cipher_unsub_file_link_unsub$$=JSON.parse($data$$.body);$cipher_unsub_file_link_unsub$$.data&&(0<=$cipher_unsub_file_link_unsub$$.data.indexOf("data:image")?
22
+ $data$$.body="Image":$data$$.body="File")}catch($e$$){console.error($e$$)}if($data$$.email_content&&!$data$$.not_send_email&&$data$$.title){var $encrypted_unsub_unsub$$;0!=$data$$.allow_unsubcribe&&$data$$.id_app&&($encrypted_unsub_unsub$$=await global.getModel("subscribe").findOne({id_app:$data$$.id_app,email:$email$$,unsubcribe:!0}).lean());$encrypted_unsub_unsub$$||($_data_obj_send$$={...$data$$},$_data_obj_send$$.id_app&&($cipher_unsub_file_link_unsub$$=crypto.createCipher("aes192",configs.cryptoPassword||
23
+ "PVT@1"),$encrypted_unsub_unsub$$=$cipher_unsub_file_link_unsub$$.update(JSON.stringify({id_app:$data$$.id_app,email:$email$$}),"utf8","hex"),$encrypted_unsub_unsub$$+=$cipher_unsub_file_link_unsub$$.final("hex"),$cipher_unsub_file_link_unsub$$=`${configs.api_url}/public/unsubscribe/${$encrypted_unsub_unsub$$}`,0!=$data$$.allow_unsubcribe&&($_data_obj_send$$.email_content=`${$_data_obj_send$$.email_content}
24
24
  <p style="text-align:center;margin-top:15px">
25
25
  <div>\u0110\u00e2y l\u00e0 th\u01b0 t\u1ef1 \u0111\u1ed9ng \u0111\u01b0\u1ee3c t\u1ea1o t\u1eeb danh s\u00e1ch \u0111\u0103ng k\u00fd c\u1ee7a ch\u00fang t\u00f4i. Do \u0111\u00f3, xin \u0111\u1eebng tr\u1ea3 l\u1eddi th\u01b0 n\u00e0y.</div>
26
26
  <div>N\u1ebfu qu\u00fd kh\u00e1ch mu\u1ed1n h\u1ee7y \u0111\u0103ng k\u00fd, <a href="${$cipher_unsub_file_link_unsub$$}">vui l\u00f2ng b\u1ea5m v\u00e0o \u0111\u00e2y</a>.</div>
@@ -1,7 +1,7 @@
1
1
  'use strict';const model=global.getModel("cart"),User=global.getModel("user"),App=global.getModel("app"),controller=require("../../controllers/controller"),Dmvt=global.getModel("dmvt"),underscore=require("underscore"),getGiaBan=require("../../libs/getGiaban"),utils=require("../../libs/utils"),ckvt=require("../../libs/ckvt"),async=require("async"),moment=require("moment"),cart=function($router$$){(new controller($router$$,model,"cart",{requireRecaptchaToken:!1,notNeedRight:!0,sort:{stt:1,user:1},onFinding:($user$$,
2
2
  $condition$$,$next$$,$options$$={})=>{$options$$.req&&"public"===$user$$.email?$condition$$.session_created=($options$$.req.cookies||{}).uid:$condition$$.user_created=$user$$.email;$next$$(null,$condition$$)},onView:($user$$,$result$$,$fn$$)=>{async.series({app:$callback$$=>{$result$$.joinModel2(null,App,{where:{id_app_vt:"_id"},fields:[{name_app_vt:"name"}]},function($kq$$){$callback$$(null,$kq$$)})},user:$callback$$=>{$result$$.joinModel2(null,User,{where:{user:"email"},fields:[{user_name:"name"},
3
- {partner:"partner"}]},function($kq$$){$callback$$(null,$kq$$)})},vt:$callback$jscomp$0$$=>{$result$$.joinModel2(null,Dmvt,{where:{ma_vt:"ma_vt",id_app_vt:"id_app"},fields:["ten_vt","picture_thumb","picture","ma_danh_muc",{gia_ban_le0:"gia_ban_le0"},"chieu_cao","chieu_rong","chieu_sau","trong_luong","kg_kiem_tra_ton_kho_tt","tg_tk","kg_kiem_tra_ton_kho","ton_kho_online_hien_tai"]},function($kq$$){setImmediate(async()=>{async.mapSeries($result$$.filter($item$$=>$item$$.ton_kho_online_hien_tai),($item$$,
4
- $callback$$)=>{setImmediate(async()=>{if($item$$.kg_kiem_tra_ton_kho_tt){if($item$$.ma_dvt){var $ds_kho_online_dvtqd$$=await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean();$ds_kho_online_dvtqd$$&&($item$$.ton=$ds_kho_online_dvtqd$$.tu&&$ds_kho_online_dvtqd$$.mau?utils.round($item$$.ton_kho_online_hien_tai*$ds_kho_online_dvtqd$$.mau/$ds_kho_online_dvtqd$$.tu,4):utils.round($item$$.ton_kho_online_hien_tai/($ds_kho_online_dvtqd$$.ty_le_qd||
3
+ {partner:"partner"}]},function($kq$$){$callback$$(null,$kq$$)})},vt:$callback$jscomp$0$$=>{$result$$.joinModel2(null,Dmvt,{where:{ma_vt:"ma_vt",id_app_vt:"id_app"},fields:["ten_vt","ten_vt_eng","picture_thumb","picture","ma_danh_muc",{gia_ban_le0:"gia_ban_le0"},"chieu_cao","chieu_rong","chieu_sau","trong_luong","kg_kiem_tra_ton_kho_tt","tg_tk","kg_kiem_tra_ton_kho","ton_kho_online_hien_tai"]},function($kq$$){setImmediate(async()=>{async.mapSeries($result$$.filter($item$$=>$item$$.ton_kho_online_hien_tai),
4
+ ($item$$,$callback$$)=>{setImmediate(async()=>{if($item$$.kg_kiem_tra_ton_kho_tt){if($item$$.ma_dvt){var $ds_kho_online_dvtqd$$=await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean();$ds_kho_online_dvtqd$$&&($item$$.ton=$ds_kho_online_dvtqd$$.tu&&$ds_kho_online_dvtqd$$.mau?utils.round($item$$.ton_kho_online_hien_tai*$ds_kho_online_dvtqd$$.mau/$ds_kho_online_dvtqd$$.tu,4):utils.round($item$$.ton_kho_online_hien_tai/($ds_kho_online_dvtqd$$.ty_le_qd||
5
5
  1),4))}$callback$$()}else{$ds_kho_online_dvtqd$$=(await global.getModel("dmkho").find({id_app:$item$$.id_app_vt,la_kho_online:!0},{ma_kho:1}).lean()).map($k$$=>$k$$.ma_kho);let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app_vt};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);$item$$.ma_tt2&&($condition$$.ma_tt2=$item$$.ma_tt2);$item$$.ma_tt3&&($condition$$.ma_tt3=$item$$.ma_tt3);$condition$$.groupBy=["ma_vt"];$condition$$.ngay=new Date;$condition$$.ma_kho={$in:$ds_kho_online_dvtqd$$};
6
6
  ckvt($condition$$,async function($dvtqd$$,$rs$$){$item$$.ton=$rs$$.map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.ma_dvt&&($dvtqd$$=await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean())&&($item$$.ton=$dvtqd$$.tu&&$dvtqd$$.mau?utils.round($item$$.ton*$dvtqd$$.mau/$dvtqd$$.tu,4):utils.round($item$$.ton/($dvtqd$$.ty_le_qd||1),4));$callback$$()})}})},()=>{$callback$jscomp$0$$(null,$kq$$)})})})},giaban:$callback$jscomp$0$$=>
7
7
  {async.mapSeries($result$$,($item$$,$callback$$)=>{setImmediate(()=>{if($item$$.km_yn_for&&"SO1"===$item$$.km_yn_for.toUpperCase())return $callback$$();let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app_vt};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);$item$$.ma_tt2&&($condition$$.ma_tt2=$item$$.ma_tt2);$item$$.ma_tt3&&($condition$$.ma_tt3=$item$$.ma_tt3);$condition$$.sl_xuat=$item$$.sl_xuat;$condition$$.online=!0;getGiaBan($condition$$,async($e$$,$gia$$)=>{$e$$&&console.log("error when get gia_ban on cart",
@@ -1,10 +1,10 @@
1
- 'use strict';const model=global.getModel("dmvt"),controller=require("../../controllers/controller"),Dmtk=global.getModel("account"),Dmdvt=global.getModel("dmdvt"),Dmnvt=global.getModel("dmnvt"),Dmtt=global.getModel("dmtt"),ckvt=require("../../libs/ckvt"),Dmqddvt=global.getModel("dmqddvt"),Dmchietkhau=global.getModel("dmchietkhau"),Dmkh=global.getModel("customer"),So1=global.getModel("so1"),async=require("async"),underscore=require("underscore"),getGiaBan=require("../../libs/getGiaban"),counter=global.getModel("counter"),
2
- moment=require("moment"),_=require("lodash"),utils=require("../../libs/utils"),getAllChildrenGroup=async $chil_ma_nvt_nh_vt_cons$$=>{let $rs$$=[$chil_ma_nvt_nh_vt_cons$$];$chil_ma_nvt_nh_vt_cons$$=(await Dmnvt.find({nh_me:$chil_ma_nvt_nh_vt_cons$$,status:!0},{_id:1,nh_me:1}).lean()).filter($n$$=>$n$$._id.toString()!=$n$$.nh_me).map($d$$=>$d$$._id);0<$chil_ma_nvt_nh_vt_cons$$.length&&($chil_ma_nvt_nh_vt_cons$$=await Promise.all($chil_ma_nvt_nh_vt_cons$$.map($nh$$=>getAllChildrenGroup($nh$$))),$chil_ma_nvt_nh_vt_cons$$=
3
- $chil_ma_nvt_nh_vt_cons$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]),$rs$$=[...$chil_ma_nvt_nh_vt_cons$$,...$rs$$]);return $rs$$},getAllEcomcategories=async $chil$jscomp$1_ma_danh_muc_nh_vt_cons$$=>{let $rs$$=[$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$];$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$=(await global.getModel("ecomcategories").find({danh_muc_me:$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$,status:!0},{ma_danh_muc:1,danh_muc_me:1}).lean()).filter($n$$=>$n$$.ma_danh_muc!=$n$$.danh_muc_me).map($d$$=>$d$$.ma_danh_muc);
4
- 0<$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$.length&&($chil$jscomp$1_ma_danh_muc_nh_vt_cons$$=await Promise.all($chil$jscomp$1_ma_danh_muc_nh_vt_cons$$.map($nh$$=>getAllEcomcategories($nh$$))),$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$=$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]),$rs$$=[...$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$,...$rs$$]);return $rs$$},TinhGiaBan=($item$$,$callback$jscomp$0$$,$options$$,$user$$)=>{let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app,
5
- vt:$item$$};$item$$.ma_tt&&($condition$$[`ma_tt${$item$$.loai_tt||1}`]=$item$$.ma_tt);$options$$&&$options$$.req&&$options$$.req.query&&($options$$.req.query.ma_kho&&($condition$$.ma_kho=$options$$.req.query.ma_kho),$options$$.req.query.ma_ban&&($condition$$.ma_ban=$options$$.req.query.ma_ban),$options$$.req.query.ma_kh&&($condition$$.ma_kh=$options$$.req.query.ma_kh),$options$$.req.query.nh_kh&&($condition$$.nh_kh=$options$$.req.query.nh_kh),$options$$.req.query.by_user&&($condition$$.user=$user$$),
6
- $options$$.req.query.online&&($condition$$.online=$options$$.req.query.online));setImmediate(()=>{getGiaBan($condition$$,($e$$,$gia$$)=>{if($e$$)return console.error("error when get gia_ban on dmvt",$e$$,$condition$$),$callback$jscomp$0$$(null);$gia$$?(delete $gia$$._id,delete $gia$$.ma_vt,delete $gia$$.ten_vt,underscore.extend($item$$,$gia$$),$gia$$.promotion&&0<$gia$$.promotion.length?async.mapSeries($gia$$.promotion,($p$$,$callback$$)=>{($p$$.details_km||[]).joinModel2($item$$.id_app,model,{where:"ma_vt",
7
- fields:["ma_dvt","chieu_cao","chieu_rong","chieu_sau","trong_luong"]},function($rs$$){$p$$.details_km.forEach($r$$=>{$r$$.km_yn_for=`${$item$$.id_app}-${$item$$.ma_vt}`});$callback$$(null,$rs$$)})},()=>{$callback$jscomp$0$$(null)}):$callback$jscomp$0$$(null)):$callback$jscomp$0$$(null)})})};
1
+ 'use strict';const model=global.getModel("dmvt"),controller=require("../../controllers/controller"),Dmdvt=global.getModel("dmdvt"),Dmnvt=global.getModel("dmnvt"),Dmtt=global.getModel("dmtt"),ckvt=require("../../libs/ckvt"),Dmqddvt=global.getModel("dmqddvt"),Dmchietkhau=global.getModel("dmchietkhau"),Dmkh=global.getModel("customer"),async=require("async"),underscore=require("underscore"),getGiaBan=require("../../libs/getGiaban"),counter=global.getModel("counter"),moment=require("moment"),_=require("lodash"),
2
+ utils=require("../../libs/utils"),getAllChildrenGroup=async $chil_ma_nvt_nh_vt_cons$$=>{let $rs$$=[$chil_ma_nvt_nh_vt_cons$$];$chil_ma_nvt_nh_vt_cons$$=(await Dmnvt.find({nh_me:$chil_ma_nvt_nh_vt_cons$$,status:!0},{_id:1,nh_me:1}).lean()).filter($n$$=>$n$$._id.toString()!=$n$$.nh_me).map($d$$=>$d$$._id);0<$chil_ma_nvt_nh_vt_cons$$.length&&($chil_ma_nvt_nh_vt_cons$$=await Promise.all($chil_ma_nvt_nh_vt_cons$$.map($nh$$=>getAllChildrenGroup($nh$$))),$chil_ma_nvt_nh_vt_cons$$=$chil_ma_nvt_nh_vt_cons$$.reduce(($a$$,
3
+ $b$$)=>$a$$.concat($b$$),[]),$rs$$=[...$chil_ma_nvt_nh_vt_cons$$,...$rs$$]);return $rs$$},getAllEcomcategories=async $chil$jscomp$1_ma_danh_muc_nh_vt_cons$$=>{let $rs$$=[$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$];$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$=(await global.getModel("ecomcategories").find({danh_muc_me:$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$,status:!0},{ma_danh_muc:1,danh_muc_me:1}).lean()).filter($n$$=>$n$$.ma_danh_muc!=$n$$.danh_muc_me).map($d$$=>$d$$.ma_danh_muc);0<$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$.length&&
4
+ ($chil$jscomp$1_ma_danh_muc_nh_vt_cons$$=await Promise.all($chil$jscomp$1_ma_danh_muc_nh_vt_cons$$.map($nh$$=>getAllEcomcategories($nh$$))),$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$=$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]),$rs$$=[...$chil$jscomp$1_ma_danh_muc_nh_vt_cons$$,...$rs$$]);return $rs$$},TinhGiaBan=($item$$,$callback$jscomp$0$$,$options$$,$user$$)=>{let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app,vt:$item$$};$item$$.ma_tt&&($condition$$[`ma_tt${$item$$.loai_tt||
5
+ 1}`]=$item$$.ma_tt);$options$$&&$options$$.req&&$options$$.req.query&&($options$$.req.query.ma_kho&&($condition$$.ma_kho=$options$$.req.query.ma_kho),$options$$.req.query.ma_ban&&($condition$$.ma_ban=$options$$.req.query.ma_ban),$options$$.req.query.ma_kh&&($condition$$.ma_kh=$options$$.req.query.ma_kh),$options$$.req.query.nh_kh&&($condition$$.nh_kh=$options$$.req.query.nh_kh),$options$$.req.query.by_user&&($condition$$.user=$user$$),$options$$.req.query.online&&($condition$$.online=$options$$.req.query.online));
6
+ setImmediate(()=>{getGiaBan($condition$$,($e$$,$gia$$)=>{if($e$$)return console.error("error when get gia_ban on dmvt",$e$$,$condition$$),$callback$jscomp$0$$(null);$gia$$?(delete $gia$$._id,delete $gia$$.ma_vt,delete $gia$$.ten_vt,underscore.extend($item$$,$gia$$),$gia$$.promotion&&0<$gia$$.promotion.length?async.mapSeries($gia$$.promotion,($p$$,$callback$$)=>{($p$$.details_km||[]).joinModel2($item$$.id_app,model,{where:"ma_vt",fields:["ma_dvt","chieu_cao","chieu_rong","chieu_sau","trong_luong"]},
7
+ function($rs$$){$p$$.details_km.forEach($r$$=>{$r$$.km_yn_for=`${$item$$.id_app}-${$item$$.ma_vt}`});$callback$$(null,$rs$$)})},()=>{$callback$jscomp$0$$(null)}):$callback$jscomp$0$$(null)):$callback$jscomp$0$$(null)})})};
8
8
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"dmvt",{sort:{ma_vt:1},unique:["ma_vt"],onFinding:($user$$,$condition$$,$next$$,$options$$)=>{$options$$.req.query.show_properties||($options$$.req.query.show_properties=$condition$$.show_properties);$options$$.req.query.by_user||($options$$.req.query.by_user=$condition$$.by_user);$options$$.req.query.online||($options$$.req.query.online=$condition$$.online);$options$$.req.query.show_quantity_in_stock||($options$$.req.query.show_quantity_in_stock=
9
9
  $condition$$.show_quantity_in_stock);$options$$.req.query.ma_kho||($options$$.req.query.ma_kho=$condition$$.ma_kho);delete $condition$$.show_properties;delete $condition$$.by_user;delete $condition$$.show_quantity_in_stock;delete $condition$$.online;delete $condition$$.ma_kho;async.series({barcode:$callback$jscomp$0$$=>{if($condition$$.ma_vt2&&!$condition$$.ma_vt&&$options$$&&$options$$.req&&$options$$.req.query&&$options$$.req.query.show_properties){if(underscore.isArray($condition$$.ma_vt2)&&0===
10
10
  $condition$$.ma_vt2.length)return $callback$jscomp$0$$();async.series({tt:$callback$$=>{Dmtt.find({ma_tt2:$condition$$.ma_vt2,id_app:$condition$$.id_app},{ma_vt:1}).lean().exec(($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);$callback$$(null,$rs$$.map($r$$=>$r$$.ma_vt))})},vt:$callback$$=>{model.find({ma_vt2:$condition$$.ma_vt2,id_app:$condition$$.id_app},{ma_vt:1}).lean().exec(($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);$callback$$(null,$rs$$.map($r$$=>$r$$.ma_vt))})}},($e$$,$rs$$)=>{if($e$$)return $callback$jscomp$0$$($e$$);
@@ -15,18 +15,16 @@ $e$$=>{if($e$$)return $next$$($e$$);delete $condition$$.has_discount;$next$$(nul
15
15
  $obj$$,$next$$){$obj$$.combo&&0<$obj$$.combo.length&&($obj$$.tg_tk=!1);if($obj$$.ma_can&&await model.findOne({ma_can:$obj$$.ma_can,id_app:$user$$.current_id_app},{_id:1}))return $next$$("M\u00e3 c\u00e2n \u0111\u00e3 t\u1ed3n t\u1ea1i");if($obj$$.ma_vt2&&await model.findOne({ma_vt2:$obj$$.ma_vt2,id_app:$user$$.current_id_app},{_id:1}))return $next$$("M\u00e3 v\u1eadt t\u01b0 2 \u0111\u00e3 t\u1ed3n t\u1ea1i");$next$$(null,$obj$$)};$contr_router$$.updating=async function($check_arise_user$$,$data$$,
16
16
  $obj$$,$next$$){$data$$.combo&&0<$data$$.combo.length&&($data$$.tg_tk=!1);if(($check_arise_user$$=await global.getModel("sokho").findOne({ma_vt:$obj$$.ma_vt,id_app:$obj$$.id_app},{_id:1}))&&$data$$.ma_vt&&$data$$.ma_vt!==$obj$$.ma_vt)return $next$$("V\u1eadt t\u01b0 n\u00e0y \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u n\u00ean kh\u00f4ng th\u1ec3 thay \u0111\u1ed5i m\u00e3 v\u1eadt t\u01b0");if($check_arise_user$$&&$data$$.ma_dvt&&$data$$.ma_dvt!==$obj$$.ma_dvt)return $next$$("V\u1eadt t\u01b0 n\u00e0y \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u n\u00ean kh\u00f4ng th\u1ec3 thay \u0111\u1ed5i \u0111\u01a1n v\u1ecb t\u00ednh");
17
17
  $data$$.ma_vt=$data$$.ma_vt||$obj$$.ma_vt;if($data$$.ma_can&&$data$$.ma_can!==$obj$$.ma_can&&await model.findOne({ma_can:$data$$.ma_can,id_app:$obj$$.id_app},{_id:1}))return $next$$("M\u00e3 c\u00e2n \u0111\u00e3 t\u1ed3n t\u1ea1i");if($data$$.ma_vt2&&$data$$.ma_vt2!==$obj$$.ma_vt2&&await model.findOne({ma_vt2:$data$$.ma_vt2,id_app:$obj$$.id_app},{_id:1}))return $next$$("M\u00e3 v\u1eadt t\u01b0 2 \u0111\u00e3 t\u1ed3n t\u1ea1i");$next$$(null,$data$$,$obj$$)};$contr_router$$.view=function($user$$,
18
- $items$$,$fn$$,$options$$){async.series([function($callback$$){$items$$.filter($item$$=>$item$$.tk_vt).joinModel2(null,Dmtk,[{where:{id_app:"id_app",tk_vt:"tk"},fields:[{name:"ten_tk_vt",value:"ten_tk"}]},{where:{id_app:"id_app",tk_dt:"tk"},fields:[{name:"ten_tk_dt",value:"ten_tk"}]},{where:{id_app:"id_app",tk_gv:"tk"},fields:[{name:"ten_tk_gv",value:"ten_tk"}]},{where:{id_app:"id_app",tk_tl:"tk"},fields:[{name:"ten_tk_tl",value:"ten_tk"}]},{where:{id_app:"id_app",tk_dl:"tk"},fields:[{name:"ten_tk_dl",
19
- value:"ten_tk"}]}],function($rs$$){$callback$$(null,$rs$$)})},function($callback$$){$items$$.filter($i$$=>$i$$.ma_nvt).joinModel2(null,Dmnvt,[{akey:"ma_nvt",bkey:"_id",fields:[{name:"ten_nvt",value:"ten_nvt"}]}],function($rs$$){$callback$$(null,$rs$$)})},function($callback$$){$items$$.filter($i$$=>$i$$.ma_ncc).joinModel2(null,Dmkh,[{where:{id_app:"id_app",ma_ncc:"ma_kh"},fields:[{name:"ten_ncc",value:"ten_kh"}]}],function($rs$$){$callback$$(null,$rs$$)})},function($callback$$){Promise.all($items$$.filter($i$$=>
20
- $i$$.id_app&&$i$$.ma_dvt).map($item$$=>(async()=>{let $dvtqd$$=await Dmqddvt.findOne({id_app:$item$$.id_app,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt});$dvtqd$$?$dvtqd$$.tu||$dvtqd$$.mau||($dvtqd$$.tu=1,$dvtqd$$.mau=1):$dvtqd$$=await Dmqddvt.create({id_app:$item$$.id_app,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt,ty_le_qd:1,tu:1,mau:1});return $dvtqd$$})())).then(()=>{$callback$$(null,$items$$)}).catch($e$$=>{console.error("Error create qddvt",$e$$.message);$callback$$(null,$items$$)})},function($callback$$){try{let $freeshipModel$$=
18
+ $items$$,$fn$$,$options$$){async.series([function($callback$$){$items$$.filter($i$$=>$i$$.ma_nvt).joinModel2(null,Dmnvt,[{akey:"ma_nvt",bkey:"_id",fields:[{name:"ten_nvt",value:"ten_nvt"}]}],function($rs$$){$callback$$(null,$rs$$)})},function($callback$$){$items$$.filter($i$$=>$i$$.ma_ncc).joinModel2(null,Dmkh,[{where:{id_app:"id_app",ma_ncc:"ma_kh"},fields:[{name:"ten_ncc",value:"ten_kh"}]}],function($rs$$){$callback$$(null,$rs$$)})},function($callback$$){Promise.all($items$$.filter($i$$=>$i$$.id_app&&
19
+ $i$$.ma_dvt).map($item$$=>(async()=>{let $dvtqd$$=await Dmqddvt.findOne({id_app:$item$$.id_app,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt});$dvtqd$$?$dvtqd$$.tu||$dvtqd$$.mau||($dvtqd$$.tu=1,$dvtqd$$.mau=1):$dvtqd$$=await Dmqddvt.create({id_app:$item$$.id_app,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt,ty_le_qd:1,tu:1,mau:1});return $dvtqd$$})())).then(()=>{$callback$$(null,$items$$)}).catch($e$$=>{console.error("Error create qddvt",$e$$.message);$callback$$(null,$items$$)})},function($callback$$){try{let $freeshipModel$$=
21
20
  global.getModel("ecompromotion_freeships"),$tu_ngay$$=moment().startOf("date").toDate(),$hieu_luc_tu$$={$lte:moment().endOf("date").toDate()},$hieu_luc_den$$={$gte:$tu_ngay$$};Promise.all($items$$.filter($i$$=>$i$$.id_app).map($item$$=>(async()=>{let $freeship$$=await $freeshipModel$$.find({id_app:$item$$.id_app,hieu_luc_tu:$hieu_luc_tu$$,hieu_luc_den:$hieu_luc_den$$,shared:!0,trang_thai:"1",$or:[{"details.0":{$exists:!1}},{"details.ma_danh_muc":{$in:[$item$$.ma_danh_muc,null,void 0,""]},"details.ma_vt":{$in:[$item$$.ma_vt,
22
21
  "",null,void 0]}}]}).lean();$item$$.freeship=$freeship$$})())).then(()=>{$callback$$(null,$items$$)}).catch($e$$=>{console.error($e$$);$callback$$(null,$items$$)})}catch($e$$){console.error($e$$),$callback$$(null,$items$$)}},function($callback$$){try{let $flashsale$$=global.getModel("ecompromotion_flashsales"),$tu_ngay$$=moment().startOf("date").toDate(),$hieu_luc_tu$$={$lte:moment().endOf("date").toDate()},$hieu_luc_den$$={$gte:$tu_ngay$$};Promise.all($items$$.filter($i$$=>$i$$.id_app).map($item$$=>
23
- (async()=>{let $fs$$=await $flashsale$$.find({id_app:$item$$.id_app,tu_ngay:$hieu_luc_tu$$,den_ngay:$hieu_luc_den$$,shared:!0,trang_thai:"1",$or:[{"details.0":{$exists:!1}},{"details.ma_danh_muc":{$in:[$item$$.ma_danh_muc,null,void 0,""]},"details.ma_vt":{$in:[$item$$.ma_vt,"",null,void 0]}}]}).lean();$item$$.flashsales=$fs$$})())).then(()=>{$callback$$(null,$items$$)}).catch($e$$=>{console.error($e$$);$callback$$(null,$items$$)})}catch($e$$){console.error($e$$),$callback$$(null,$items$$)}},function($callback$$){Promise.all($items$$.filter($item$$=>
24
- $item$$.is_digital).map($item$$=>(async()=>{var $kh_so1$$=await Dmkh.findOne({of_user:$user$$.email,id_app:$item$$.id_app});if($kh_so1$$){if($kh_so1$$=await So1.findOne({id_app:$item$$.id_app,details:{$elemMatch:{ma_vt:$item$$.ma_vt}},ma_kh:$kh_so1$$.ma_kh,trang_thai:"5"}))$item$$.owned=!0;return $kh_so1$$}})())).then(()=>{$callback$$(null,$items$$)}).catch(()=>{$callback$$(null,$items$$)})},function($callback$$){$options$$&&$options$$.req&&$options$$.req.query&&$options$$.req.query.show_properties?
25
- async.mapSeries($items$$,async $item$$=>{$item$$.ds_thuoc_tinh=await Dmtt.find({id_app:$item$$.id_app,ma_vt:$item$$.ma_vt,status:!0}).lean();return $item$$},()=>{$callback$$()}):$callback$$()},function($callback$$){$items$$.forEach(function($r$$){$r$$.picture&&($r$$.picture_thumb=$r$$.picture);$r$$.picture2&&($r$$.picture2_thumb=$r$$.picture2);$r$$.picture3&&($r$$.picture3_thumb=$r$$.picture3);$r$$.picture4&&($r$$.picture4_thumb=$r$$.picture4);$r$$.picture5&&($r$$.picture5_thumb=$r$$.picture5)});
26
- $items$$.filter($i$$=>$i$$.ma_dvt).joinModel2(null,Dmdvt,[{where:{id_app:"id_app",ma_dvt:"ma_dvt"},fields:[{name:"ten_dvt",value:"ten_dvt"}]}],function($rs$$){$callback$$(null,$rs$$)})}],function(){let $result$$=$items$$.map($item$$=>{if($item$$.ds_thuoc_tinh&&0<$item$$.ds_thuoc_tinh.length){let $_new_items$$=$item$$.ds_thuoc_tinh.map($tt$$=>{let $_new_item$$={...$item$$};$_new_item$$.ma_tt=$tt$$.ma_tt;$_new_item$$.ten_tt=$tt$$.ten_tt;$_new_item$$.loai_tt=$tt$$.loai_tt;$_new_item$$[`ma_tt${$tt$$.loai_tt}`]=
27
- $tt$$.ma_tt;$_new_item$$.nh_tt=$tt$$.nh_tt;$_new_item$$.ma_dvt=$tt$$.ma_dvt||$_new_item$$.ma_dvt;$_new_item$$.ma_can=$tt$$.ma_can||$_new_item$$.ma_can;$_new_item$$.ma_vt2=$tt$$.ma_tt2||$_new_item$$.ma_vt2;$_new_item$$.gia_ban_le=$tt$$.gia_ban_le||$_new_item$$.gia_ban_le;delete $_new_item$$.ds_thuoc_tinh;return $_new_item$$}).sort(($a$$,$b$$)=>$a$$.gia_ban_le-$b$$.gia_ban_le);if($options$$.req.query.online){let $ds_thuoc_tinh$$=_.cloneDeep($_new_items$$);$_new_items$$.forEach($r$$=>{$r$$.ds_thuoc_tinh=
28
- $ds_thuoc_tinh$$});return[$_new_items$$[0]]}return $_new_items$$}return[$item$$]}).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);async.mapSeries($result$$,($item$jscomp$0$$,$callback$jscomp$1$$)=>{$item$jscomp$0$$.ty_le_ck=0;$item$jscomp$0$$.tien_ck=0;$item$jscomp$0$$.id_app?async.series({giaban:$callback$$=>{TinhGiaBan($item$jscomp$0$$,$callback$$,$options$$,$user$$)},gia_ban_thuoc_tinh:$callback$jscomp$0$$=>{$item$jscomp$0$$.ds_thuoc_tinh&&0<$item$jscomp$0$$.ds_thuoc_tinh.length?async.mapSeries($item$jscomp$0$$.ds_thuoc_tinh,
29
- ($item$$,$callback$$)=>{TinhGiaBan($item$$,$callback$$,$options$$,$user$$)},()=>{$callback$jscomp$0$$()}):$callback$jscomp$0$$()},ton_dvt:$callback$$=>{$item$jscomp$0$$.ton_kho_online_hien_tai&&$item$jscomp$0$$.ma_dvt?setImmediate(async()=>{let $dvtqd$$=await Dmqddvt.findOne({id_app:$item$jscomp$0$$.id_app,ma_vt:$item$jscomp$0$$.ma_vt,ma_dvt:$item$jscomp$0$$.ma_dvt});$dvtqd$$&&($item$jscomp$0$$.ton_kho_online_hien_tai_dvt=$dvtqd$$.tu&&$dvtqd$$.mau?utils.round($item$jscomp$0$$.ton_kho_online_hien_tai*
22
+ (async()=>{let $fs$$=await $flashsale$$.find({id_app:$item$$.id_app,tu_ngay:$hieu_luc_tu$$,den_ngay:$hieu_luc_den$$,shared:!0,trang_thai:"1",$or:[{"details.0":{$exists:!1}},{"details.ma_danh_muc":{$in:[$item$$.ma_danh_muc,null,void 0,""]},"details.ma_vt":{$in:[$item$$.ma_vt,"",null,void 0]}}]}).lean();$item$$.flashsales=$fs$$})())).then(()=>{$callback$$(null,$items$$)}).catch($e$$=>{console.error($e$$);$callback$$(null,$items$$)})}catch($e$$){console.error($e$$),$callback$$(null,$items$$)}},function($callback$$){async.mapSeries($items$$,
23
+ async $item$$=>{$item$$.ds_thuoc_tinh=await Dmtt.find({id_app:$item$$.id_app,ma_vt:$item$$.ma_vt,status:!0}).lean();return $item$$},()=>{$callback$$()})},function($callback$$){$items$$.forEach(function($r$$){$r$$.picture&&($r$$.picture_thumb=$r$$.picture);$r$$.picture2&&($r$$.picture2_thumb=$r$$.picture2);$r$$.picture3&&($r$$.picture3_thumb=$r$$.picture3);$r$$.picture4&&($r$$.picture4_thumb=$r$$.picture4);$r$$.picture5&&($r$$.picture5_thumb=$r$$.picture5)});$items$$.filter($i$$=>$i$$.ma_dvt).joinModel2(null,
24
+ Dmdvt,[{where:{id_app:"id_app",ma_dvt:"ma_dvt"},fields:[{name:"ten_dvt",value:"ten_dvt"}]}],function($rs$$){$callback$$(null,$rs$$)})}],function(){let $result$$=$items$$.map($item$$=>{if($options$$&&$options$$.req&&$options$$.req.query&&$options$$.req.query.show_properties&&$item$$.ds_thuoc_tinh&&0<$item$$.ds_thuoc_tinh.length){let $_new_items$$=$item$$.ds_thuoc_tinh.map($tt$$=>{let $_new_item$$={...$item$$};$_new_item$$.ma_tt=$tt$$.ma_tt;$_new_item$$.ten_tt=$tt$$.ten_tt;$_new_item$$.loai_tt=$tt$$.loai_tt;
25
+ $_new_item$$[`ma_tt${$tt$$.loai_tt}`]=$tt$$.ma_tt;$_new_item$$.nh_tt=$tt$$.nh_tt;$_new_item$$.ma_dvt=$tt$$.ma_dvt||$_new_item$$.ma_dvt;$_new_item$$.ma_can=$tt$$.ma_can||$_new_item$$.ma_can;$_new_item$$.ma_vt2=$tt$$.ma_tt2||$_new_item$$.ma_vt2;$_new_item$$.gia_ban_le=$tt$$.gia_ban_le||$_new_item$$.gia_ban_le;delete $_new_item$$.ds_thuoc_tinh;return $_new_item$$}).sort(($a$$,$b$$)=>$a$$.gia_ban_le-$b$$.gia_ban_le);if($options$$.req.query.online){let $ds_thuoc_tinh$$=_.cloneDeep($_new_items$$);$_new_items$$.forEach($r$$=>
26
+ {$r$$.ds_thuoc_tinh=$ds_thuoc_tinh$$});return[$_new_items$$[0]]}return $_new_items$$}return[$item$$]}).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);async.mapSeries($result$$,($item$jscomp$0$$,$callback$jscomp$1$$)=>{$item$jscomp$0$$.ty_le_ck=0;$item$jscomp$0$$.tien_ck=0;$item$jscomp$0$$.id_app?async.series({giaban:$callback$$=>{TinhGiaBan($item$jscomp$0$$,$callback$$,$options$$,$user$$)},gia_ban_thuoc_tinh:$callback$jscomp$0$$=>{$item$jscomp$0$$.ds_thuoc_tinh&&0<$item$jscomp$0$$.ds_thuoc_tinh.length?
27
+ async.mapSeries($item$jscomp$0$$.ds_thuoc_tinh,($item$$,$callback$$)=>{TinhGiaBan($item$$,$callback$$,$options$$,$user$$)},()=>{$callback$jscomp$0$$()}):$callback$jscomp$0$$()},ton_dvt:$callback$$=>{$item$jscomp$0$$.ton_kho_online_hien_tai&&$item$jscomp$0$$.ma_dvt?setImmediate(async()=>{let $dvtqd$$=await Dmqddvt.findOne({id_app:$item$jscomp$0$$.id_app,ma_vt:$item$jscomp$0$$.ma_vt,ma_dvt:$item$jscomp$0$$.ma_dvt});$dvtqd$$&&($item$jscomp$0$$.ton_kho_online_hien_tai_dvt=$dvtqd$$.tu&&$dvtqd$$.mau?utils.round($item$jscomp$0$$.ton_kho_online_hien_tai*
30
28
  $dvtqd$$.mau/$dvtqd$$.tu,4):utils.round($item$jscomp$0$$.ton_kho_online_hien_tai/($dvtqd$$.ty_le_qd||1),4));$callback$$()}):$callback$$()},ton_tt:$callback$jscomp$0$$=>{$item$jscomp$0$$.ds_thuoc_tinh?setImmediate(async()=>{let $ds_kho_online$$=(await global.getModel("dmkho").find({id_app:$item$jscomp$0$$.id_app,la_kho_online:!0},{ma_kho:1}).lean()).map($k$$=>$k$$.ma_kho);async.mapSeries($item$jscomp$0$$.ds_thuoc_tinh.filter($item$$=>$item$$.ma_vt&&$item$$.ton_kho_online_hien_tai),($item$$,$callback$$)=>
31
29
  {setImmediate(async()=>{if($item$$.kg_kiem_tra_ton_kho_tt){if($item$$.ma_dvt){var $condition$jscomp$4_dvtqd$$=await Dmqddvt.findOne({id_app:$item$$.id_app,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean();$condition$jscomp$4_dvtqd$$&&($item$$.ton_kho_online_hien_tai_dvt=$condition$jscomp$4_dvtqd$$.tu&&$condition$jscomp$4_dvtqd$$.mau?utils.round($item$$.ton_kho_online_hien_tai*$condition$jscomp$4_dvtqd$$.mau/$condition$jscomp$4_dvtqd$$.tu,4):utils.round($item$$.ton_kho_online_hien_tai/($condition$jscomp$4_dvtqd$$.ty_le_qd||
32
30
  1),4))}$callback$$()}else $condition$jscomp$4_dvtqd$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app},$item$$.ma_tt&&($condition$jscomp$4_dvtqd$$[`ma_tt${$item$$.loai_tt||1}`]=$item$$.ma_tt),$condition$jscomp$4_dvtqd$$.groupBy=["ma_vt"],$condition$jscomp$4_dvtqd$$.ngay=new Date,$condition$jscomp$4_dvtqd$$.ma_kho={$in:$ds_kho_online$$},ckvt($condition$jscomp$4_dvtqd$$,async function($dvtqd$jscomp$3_e$$,$rs$$){$item$$.ton_kho_online_hien_tai_dvt=$rs$$.map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,
@@ -1,24 +1,28 @@
1
1
  'use strict';const model=global.getModel("file"),app=global.getModel("app"),path=require("path"),fs=require("fs"),controller=require("../../controllers/controller"),ffmpeg=require("fluent-ffmpeg"),ffmpegInstaller=require("@ffmpeg-installer/ffmpeg");ffmpeg.setFfmpegPath(ffmpegInstaller.path);
2
- const sharp=require("sharp"),watermark=require("dynamic-watermark"),deleteFolderRecursive=function($_pathDir$$){fs.existsSync($_pathDir$$)&&(fs.readdirSync($_pathDir$$).forEach($curPath_file$$=>{$curPath_file$$=path.join($_pathDir$$,$curPath_file$$);fs.lstatSync($curPath_file$$).isDirectory()?deleteFolderRecursive($curPath_file$$):fs.unlinkSync($curPath_file$$)}),fs.rmdirSync($_pathDir$$))},convertVideo=async($fileInput$$,$fileOutput$$)=>new Promise(($resolve$$,$reject$$)=>{ffmpeg($fileInput$$,{timeout:432E3}).addOptions("-profile:v baseline;-level 3.0;-start_number 0;-hls_time 10;-hls_list_size 0;-f hls".split(";")).output($fileOutput$$).on("error",
3
- function($err$$){$reject$$($err$$.message)}).on("end",()=>{$resolve$$($fileOutput$$)}).run()}),setWaterMark4Image=async($app_info$$,$file_name$$,$extension_root$$,$recache$$)=>{let $file_name_watermark$$=`${$file_name$$}.watermark.${$extension_root$$}.webp`;if(!$app_info$$.logo_watermark)return $file_name$$;if(!$recache$$&&fs.existsSync($file_name_watermark$$))return $file_name_watermark$$;$extension_root$$=configs.paths.images;$extension_root$$||($extension_root$$=__dirname,$extension_root$$=path.dirname($extension_root$$),
4
- $extension_root$$=path.dirname($extension_root$$),$extension_root$$=path.join($extension_root$$,"images"));let $file_logo$$=path.join($extension_root$$,$app_info$$.logo_watermark.split("getfile/")[1]);return fs.existsSync($file_logo$$)?new Promise($resolve$$=>{sharp($file_name$$,{failOnError:!1}).metadata().then($value$$=>{const $watermark_size$$=10*$value$$.width/100;watermark.embed({type:"image",source:$file_name$$,logo:$file_logo$$,destination:$file_name_watermark$$,position:{logoX:$value$$.width-
5
- $watermark_size$$-10,logoY:10,logoHeight:$watermark_size$$,logoWidth:$watermark_size$$}},function($status$$){1===$status$$.status?$resolve$$($file_name_watermark$$):(console.log("status set watermark",$status$$),$resolve$$($file_name$$))})}).catch($error$$=>{console.log($error$$);return $resolve$$($file_name$$)})}):(console.log("file logo watermark is not exists",$file_logo$$),$file_name$$)},configResizeImage=async($_size_file_name_resize$$,$file_name$$,$extension$$,$recache$$)=>{let $size$$,$cache$$;
6
- if($_size_file_name_resize$$)switch($_size_file_name_resize$$.toString().toUpperCase()){case "64":case "X":$size$$=64;$cache$$=!0;break;case "256":$size$$=256;$cache$$=!0;break;case "S":case "320":$size$$=320;$cache$$=!0;break;case "512":case "M":$size$$=512;$cache$$=!0;break;case "1024":case "L":$size$$=1024;$cache$$=!0;break;case "1080":case "FULLHD":$size$$=1080;$cache$$=!0;break;case "1440":case "2K":$size$$=1440;$cache$$=!0;break;default:try{$size$$=Number($_size_file_name_resize$$)}catch($e$$){console.log("size param must be X or S or M or L or 2K or FULLHD or a number")}}return $size$$?
7
- ($_size_file_name_resize$$=`${$file_name$$}.${$size$$}.${$extension$$}.webp`,!$recache$$&&fs.existsSync($_size_file_name_resize$$)?{file_name_resize:$_size_file_name_resize$$,exist:!0}:{cache:$cache$$,size:$size$$,file_name_resize:$_size_file_name_resize$$}):{file_name_resize:$file_name$$}};
8
- module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"file",{sort:{ten_file:1},onView:($user$$,$items$$,$next$$)=>{$items$$.forEach($item$$=>{$item$$.file&&(delete $item$$.file.encoding,delete $item$$.file.mimetype,delete $item$$.file.path,$item$$.id_app&&configs.api_url&&($item$$.download_link=`${configs.api_url||""}/api/${$item$$.id_app}/file/download/${$item$$._id.toString()}`))});$next$$(null,$items$$)}});$contr_router$$.creating=async function($file_name$jscomp$2_input_user$$,
9
- $obj$$,$fn$$){if($obj$$.file&&$obj$$.read_image){$file_name$jscomp$2_input_user$$=$obj$$.file.name;var $extension$jscomp$2_root$$=$obj$$.file.extension.toLowerCase();if(0<=["png","jpg"].indexOf($extension$jscomp$2_root$$)&&($extension$jscomp$2_root$$=configs.paths.uploads,$extension$jscomp$2_root$$||($extension$jscomp$2_root$$=__dirname,$extension$jscomp$2_root$$=path.dirname($extension$jscomp$2_root$$),$extension$jscomp$2_root$$=path.dirname($extension$jscomp$2_root$$),$extension$jscomp$2_root$$=
10
- path.join($extension$jscomp$2_root$$,"uploads")),$file_name$jscomp$2_input_user$$=path.join($extension$jscomp$2_root$$,$file_name$jscomp$2_input_user$$),fs.existsSync($file_name$jscomp$2_input_user$$))){$extension$jscomp$2_root$$=require("node-tesseract-ocr");const $config$$={lang:"vie+eng"};try{const $text$$=await $extension$jscomp$2_root$$.recognize($file_name$jscomp$2_input_user$$,$config$$);$obj$$.text_from_image=$text$$}catch($error$$){return console.error($error$$),$fn$$($error$$.message)}}}$fn$$(null,
11
- $obj$$)};$contr_router$$.created=function($file_name$jscomp$3_user$$,$obj$$,$fn$$){if($obj$$.file){$file_name$jscomp$3_user$$=$obj$$.file.name;var $extension$jscomp$3_input$jscomp$1_root$$=$obj$$.file.extension.toLowerCase();if(0<=["mp4","mov","avi"].indexOf($extension$jscomp$3_input$jscomp$1_root$$)){$extension$jscomp$3_input$jscomp$1_root$$=configs.paths.uploads;$extension$jscomp$3_input$jscomp$1_root$$||($extension$jscomp$3_input$jscomp$1_root$$=__dirname,$extension$jscomp$3_input$jscomp$1_root$$=
12
- path.dirname($extension$jscomp$3_input$jscomp$1_root$$),$extension$jscomp$3_input$jscomp$1_root$$=path.dirname($extension$jscomp$3_input$jscomp$1_root$$),$extension$jscomp$3_input$jscomp$1_root$$=path.join($extension$jscomp$3_input$jscomp$1_root$$,"uploads"));$extension$jscomp$3_input$jscomp$1_root$$=path.join($extension$jscomp$3_input$jscomp$1_root$$,$file_name$jscomp$3_user$$);let $output$$=configs.paths.videos;$output$$||($output$$=__dirname,$output$$=path.dirname($output$$),$output$$=path.dirname($output$$),
13
- $output$$=path.join($output$$,"videos"));fs.existsSync($output$$)||fs.mkdirSync($output$$);$output$$=path.join($output$$,$obj$$._id.toString());fs.existsSync($output$$)||fs.mkdirSync($output$$);$output$$=path.join($output$$,$file_name$jscomp$3_user$$);convertVideo($extension$jscomp$3_input$jscomp$1_root$$,$output$$).catch($e$$=>{console.error("Can't convert video. Error:",$e$$)})}}else console.log("file not exists",$obj$$);$fn$$(null,$obj$$)};$contr_router$$.deleted=function($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$,
14
- $rs$$,$next$$){if($rs$$.file){$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=$rs$$.file.name;let $root$$=configs.paths.uploads;$root$$||($root$$=__dirname,$root$$=path.dirname($root$$),$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=path.join($root$$,$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$);fs.existsSync($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$)&&fs.unlink($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$,
15
- function($e$$){$e$$&&console.error($e$$)});$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=$rs$$.file.extension.toLowerCase();0<=["mp4","mov","avi"].indexOf($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$)&&($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=configs.paths.videos,$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$||($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=__dirname,$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=
16
- path.dirname($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$),$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=path.dirname($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$),$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=path.join($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$,"videos")),$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=path.join($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$,$rs$$._id.toString()),
17
- fs.existsSync($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$)&&deleteFolderRecursive($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$))}else console.log("file not exists",$rs$$);$next$$(null,$rs$$)};$contr_router$$.route(function($router$$){$router$$.route("/:id_app/file/download/:id").get(function($req$$,$res$$){let $id$$=$req$$.params.id,$size$$=$req$$.query.size||$req$$.query.resize||"FULLHD";app.findOne({_id:$req$$.user.current_id_app}).lean().exec(function($e$$,$app_info$$){if($e$$||
18
- !$app_info$$)return $res$$.status(400).send("Kh\u00f4ng th\u1ec3 t\u1ea3i file n\u00e0y");model.findOne({_id:$id$$}).lean().exec(async($e$jscomp$4_extension$$,$_new_file_orgin_file_size_rs$$)=>{if($e$jscomp$4_extension$$)return $res$$.status(400).send($e$jscomp$4_extension$$);if($_new_file_orgin_file_size_rs$$){let $file_name$$=$_new_file_orgin_file_size_rs$$.file.name;$e$jscomp$4_extension$$=$_new_file_orgin_file_size_rs$$.file.extension;let $root$$=configs.paths.uploads;$root$$||($root$$=__dirname,
19
- $root$$=path.dirname($root$$),$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$file_name$$=path.join($root$$,$file_name$$);if(fs.existsSync($file_name$$))if(0<=["png","jpg","jpeg","webp"].indexOf($e$jscomp$4_extension$$)){$_new_file_orgin_file_size_rs$$=await setWaterMark4Image($app_info$$,$file_name$$,$e$jscomp$4_extension$$,$req$$.query.recache);let $_resize_conf$$=await configResizeImage($size$$,$_new_file_orgin_file_size_rs$$,$e$jscomp$4_extension$$,$req$$.query.recache);if($_resize_conf$$.exist)return sharp($_resize_conf$$.file_name_resize,
20
- {failOnError:!1}).pipe($res$$);let $_gm$$=sharp($_new_file_orgin_file_size_rs$$,{failOnError:!1});($_new_file_orgin_file_size_rs$$=await $_gm$$.metadata())&&$_resize_conf$$.size&&$_resize_conf$$.size<$_new_file_orgin_file_size_rs$$.width&&$_resize_conf$$.size<$_new_file_orgin_file_size_rs$$.height&&($_gm$$=$_gm$$.resize({width:$_resize_conf$$.size}));"webp"!=$_gm$$.format&&($_gm$$=$_gm$$.webp({lossless:!1,quality:80,nearLossless:!0}));$_resize_conf$$.cache&&setImmediate(()=>{$_gm$$.toFile($_resize_conf$$.file_name_resize,
21
- $error$$=>{if($error$$)return console.error("save resize image:",$error$$.message);console.log("cache file",$_resize_conf$$.file_name_resize)})});$_gm$$.pipe($res$$)}else $res$$.download($file_name$$,$_new_file_orgin_file_size_rs$$.file.originalname);else $res$$.status(400).send("File n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i")}else $res$$.status(400).send("Kh\u00f4ng t\u00ecm th\u1ea5y file n\u00e0y")})})});$router$$.route("/:id_app/file/stream/:id/:file").get(function($req$$,$res$$){let $id$$=$req$$.params.id;
22
- app.findOne({_id:$req$$.user.current_id_app}).lean().exec(function($e$$,$app_info$$){if($e$$||!$app_info$$)return $res$$.status(400).send("Kh\u00f4ng th\u1ec3 stream file n\u00e0y");model.findOne({_id:$id$$}).lean().exec(async($e$jscomp$6_file_name$$,$output$jscomp$2_rs$$)=>{if($e$jscomp$6_file_name$$)return $res$$.status(400).send($e$jscomp$6_file_name$$);if($output$jscomp$2_rs$$){$e$jscomp$6_file_name$$=$output$jscomp$2_rs$$.file.name;var $file$jscomp$1_root$$=$req$$.params.file;".ts"==$file$jscomp$1_root$$.substr(-3)&&
23
- ($e$jscomp$6_file_name$$=$file$jscomp$1_root$$);$file$jscomp$1_root$$=configs.paths.videos;$file$jscomp$1_root$$||($file$jscomp$1_root$$=__dirname,$file$jscomp$1_root$$=path.dirname($file$jscomp$1_root$$),$file$jscomp$1_root$$=path.dirname($file$jscomp$1_root$$),$file$jscomp$1_root$$=path.join($file$jscomp$1_root$$,"videos"));$output$jscomp$2_rs$$=path.join($file$jscomp$1_root$$,$output$jscomp$2_rs$$._id.toString(),$e$jscomp$6_file_name$$);if(fs.existsSync($output$jscomp$2_rs$$)){const $readStream$$=
24
- fs.createReadStream($output$jscomp$2_rs$$);$readStream$$.on("open",function(){$readStream$$.pipe($res$$)});$readStream$$.on("error",function($err$$){$res$$.end($err$$)})}else $res$$.status(400).send("File n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i")}else $res$$.status(400).send("Kh\u00f4ng t\u00ecm th\u1ea5y file n\u00e0y")})})})})};
2
+ const sharp=require("sharp"),watermark=require("dynamic-watermark"),permission=require("../../libs/permission"),deleteFolderRecursive=function($_pathDir$$){fs.existsSync($_pathDir$$)&&(fs.readdirSync($_pathDir$$).forEach($curPath_file$$=>{$curPath_file$$=path.join($_pathDir$$,$curPath_file$$);fs.lstatSync($curPath_file$$).isDirectory()?deleteFolderRecursive($curPath_file$$):fs.unlinkSync($curPath_file$$)}),fs.rmdirSync($_pathDir$$))},convertVideo=async($fileInput$$,$fileOutput$$)=>new Promise(($resolve$$,
3
+ $reject$$)=>{ffmpeg($fileInput$$,{timeout:432E3}).addOptions("-profile:v baseline;-level 3.0;-start_number 0;-hls_time 10;-hls_list_size 0;-f hls".split(";")).output($fileOutput$$).on("error",function($err$$){$reject$$($err$$.message)}).on("end",()=>{$resolve$$($fileOutput$$)}).run()}),setWaterMark4Image=async($app_info$$,$file_name$$,$extension_root$$,$recache$$)=>{let $file_name_watermark$$=`${$file_name$$}.watermark.${$extension_root$$}.webp`;if(!$app_info$$.logo_watermark)return $file_name$$;
4
+ if(!$recache$$&&fs.existsSync($file_name_watermark$$))return $file_name_watermark$$;$extension_root$$=configs.paths.images;$extension_root$$||($extension_root$$=__dirname,$extension_root$$=path.dirname($extension_root$$),$extension_root$$=path.dirname($extension_root$$),$extension_root$$=path.join($extension_root$$,"images"));let $file_logo$$=path.join($extension_root$$,$app_info$$.logo_watermark.split("getfile/")[1]);return fs.existsSync($file_logo$$)?new Promise($resolve$$=>{sharp($file_name$$,
5
+ {failOnError:!1}).metadata().then($value$$=>{const $watermark_size$$=10*$value$$.width/100;watermark.embed({type:"image",source:$file_name$$,logo:$file_logo$$,destination:$file_name_watermark$$,position:{logoX:$value$$.width-$watermark_size$$-10,logoY:10,logoHeight:$watermark_size$$,logoWidth:$watermark_size$$}},function($status$$){1===$status$$.status?$resolve$$($file_name_watermark$$):(console.log("status set watermark",$status$$),$resolve$$($file_name$$))})}).catch($error$$=>{console.log($error$$);
6
+ return $resolve$$($file_name$$)})}):(console.log("file logo watermark is not exists",$file_logo$$),$file_name$$)},configResizeImage=async($_size_file_name_resize$$,$file_name$$,$extension$$,$recache$$)=>{let $size$$,$cache$$;if($_size_file_name_resize$$)switch($_size_file_name_resize$$.toString().toUpperCase()){case "64":case "X":$size$$=64;$cache$$=!0;break;case "256":$size$$=256;$cache$$=!0;break;case "S":case "320":$size$$=320;$cache$$=!0;break;case "512":case "M":$size$$=512;$cache$$=!0;break;
7
+ case "1024":case "L":$size$$=1024;$cache$$=!0;break;case "1080":case "FULLHD":$size$$=1080;$cache$$=!0;break;case "1440":case "2K":$size$$=1440;$cache$$=!0;break;default:try{$size$$=Number($_size_file_name_resize$$)}catch($e$$){console.log("size param must be X or S or M or L or 2K or FULLHD or a number")}}return $size$$?($_size_file_name_resize$$=`${$file_name$$}.${$size$$}.${$extension$$}.webp`,!$recache$$&&fs.existsSync($_size_file_name_resize$$)?{file_name_resize:$_size_file_name_resize$$,exist:!0}:
8
+ {cache:$cache$$,size:$size$$,file_name_resize:$_size_file_name_resize$$}):{file_name_resize:$file_name$$}};
9
+ module.exports=function($router$$){const $contr$$=new controller($router$$,model,"file",{sort:{ten_file:1},onView:($user$$,$items$$,$next$$)=>{$items$$.forEach($item$$=>{$item$$.file&&(delete $item$$.file.encoding,delete $item$$.file.mimetype,delete $item$$.file.path,$item$$.id_app&&configs.api_url&&($item$$.download_link=`${configs.api_url||""}/api/${$item$$.id_app}/file/download/${$item$$._id.toString()}`))});$next$$(null,$items$$)}});$contr$$.creating=async function($file_name$jscomp$2_input_user$$,
10
+ $obj$$,$fn$$){if($obj$$.file&&$obj$$.read_image&&$obj$$.file.name&&$obj$$.file.extension&&!$obj$$.file.url){$file_name$jscomp$2_input_user$$=$obj$$.file.name;var $extension$jscomp$2_root$$=$obj$$.file.extension.toLowerCase();if(0<=["png","jpg"].indexOf($extension$jscomp$2_root$$)&&($extension$jscomp$2_root$$=configs.paths.uploads,$extension$jscomp$2_root$$||($extension$jscomp$2_root$$=__dirname,$extension$jscomp$2_root$$=path.dirname($extension$jscomp$2_root$$),$extension$jscomp$2_root$$=path.dirname($extension$jscomp$2_root$$),
11
+ $extension$jscomp$2_root$$=path.join($extension$jscomp$2_root$$,"uploads")),$file_name$jscomp$2_input_user$$=path.join($extension$jscomp$2_root$$,$file_name$jscomp$2_input_user$$),fs.existsSync($file_name$jscomp$2_input_user$$))){$extension$jscomp$2_root$$=require("node-tesseract-ocr");const $config$$={lang:"vie+eng"};try{const $text$$=await $extension$jscomp$2_root$$.recognize($file_name$jscomp$2_input_user$$,$config$$);$obj$$.text_from_image=$text$$}catch($error$$){return console.error($error$$),
12
+ $fn$$($error$$.message)}}}$fn$$(null,$obj$$)};$contr$$.created=function($file_name$jscomp$3_user$$,$obj$$,$fn$$){if($obj$$.file&&$obj$$.file.name&&$obj$$.file.extension){$file_name$jscomp$3_user$$=$obj$$.file.name;var $extension$jscomp$3_input$jscomp$1_root$$=$obj$$.file.extension.toLowerCase();if(0<=["mp4","mov","avi"].indexOf($extension$jscomp$3_input$jscomp$1_root$$)){$extension$jscomp$3_input$jscomp$1_root$$=configs.paths.uploads;$extension$jscomp$3_input$jscomp$1_root$$||($extension$jscomp$3_input$jscomp$1_root$$=
13
+ __dirname,$extension$jscomp$3_input$jscomp$1_root$$=path.dirname($extension$jscomp$3_input$jscomp$1_root$$),$extension$jscomp$3_input$jscomp$1_root$$=path.dirname($extension$jscomp$3_input$jscomp$1_root$$),$extension$jscomp$3_input$jscomp$1_root$$=path.join($extension$jscomp$3_input$jscomp$1_root$$,"uploads"));$extension$jscomp$3_input$jscomp$1_root$$=path.join($extension$jscomp$3_input$jscomp$1_root$$,$file_name$jscomp$3_user$$);let $output$$=configs.paths.videos;$output$$||($output$$=__dirname,
14
+ $output$$=path.dirname($output$$),$output$$=path.dirname($output$$),$output$$=path.join($output$$,"videos"));fs.existsSync($output$$)||fs.mkdirSync($output$$);$output$$=path.join($output$$,$obj$$._id.toString());fs.existsSync($output$$)||fs.mkdirSync($output$$);$output$$=path.join($output$$,$file_name$jscomp$3_user$$);convertVideo($extension$jscomp$3_input$jscomp$1_root$$,$output$$).catch($e$$=>{console.error("Can't convert video. Error:",$e$$)})}}else console.log("file not exists",$obj$$);$fn$$(null,
15
+ $obj$$)};$contr$$.deleted=function($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$,$rs$$,$next$$){if($rs$$.file&&$rs$$.file.extension&&$rs$$.file.name){$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=$rs$$.file.name;let $root$$=configs.paths.uploads;$root$$||($root$$=__dirname,$root$$=path.dirname($root$$),$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=path.join($root$$,$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$);
16
+ fs.existsSync($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$)&&fs.unlink($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$,function($e$$){$e$$&&console.error($e$$)});$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=$rs$$.file.extension.toLowerCase();0<=["mp4","mov","avi"].indexOf($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$)&&($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=configs.paths.videos,$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$||
17
+ ($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=__dirname,$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=path.dirname($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$),$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=path.dirname($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$),$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=path.join($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$,"videos")),$extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$=
18
+ path.join($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$,$rs$$._id.toString()),fs.existsSync($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$)&&deleteFolderRecursive($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$))}else console.log("file not exists",$rs$$);$next$$(null,$rs$$)};$contr$$.route(function($router$$){$router$$.route("/:id_app/file/download/:id").get(function($req$$,$res$$){let $id$$=$req$$.params.id,$size$$=$req$$.query.size||$req$$.query.resize||
19
+ "FULLHD";app.findOne({_id:$req$$.user.current_id_app}).lean().exec(function($e$jscomp$0$$,$app_info$$){if($e$jscomp$0$$||!$app_info$$)return $res$$.status(400).send("Kh\u00f4ng th\u1ec3 t\u1ea3i file n\u00e0y");model.findOne({_id:$id$$}).lean().exec(async($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$rs$$&&$rs$$.file?permission.hasRight($rs$$.id_app,$req$$.user.email,$contr$$.module,"view",async function($error$jscomp$3_extension$$,$_new_file_file_name$jscomp$5_permission$$){if(!$_new_file_file_name$jscomp$5_permission$$)return $res$$.status(403).send({error:$error$jscomp$3_extension$$||
20
+ "B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp file n\u00e0y"});if($rs$$.file.url)return $res$$.redirect($rs$$.file.url);$_new_file_file_name$jscomp$5_permission$$=$rs$$.file.name;$error$jscomp$3_extension$$=$rs$$.file.extension;let $root$$=configs.paths.uploads;$root$$||($root$$=__dirname,$root$$=path.dirname($root$$),$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$_new_file_file_name$jscomp$5_permission$$=path.join($root$$,$_new_file_file_name$jscomp$5_permission$$);
21
+ if(fs.existsSync($_new_file_file_name$jscomp$5_permission$$))if(0<=["png","jpg","jpeg","webp"].indexOf($error$jscomp$3_extension$$)){$_new_file_file_name$jscomp$5_permission$$=await setWaterMark4Image($app_info$$,$_new_file_file_name$jscomp$5_permission$$,$error$jscomp$3_extension$$,$req$$.query.recache);let $_resize_conf$$=await configResizeImage($size$$,$_new_file_file_name$jscomp$5_permission$$,$error$jscomp$3_extension$$,$req$$.query.recache);if($_resize_conf$$.exist)return sharp($_resize_conf$$.file_name_resize,
22
+ {failOnError:!1}).pipe($res$$);let $_gm$$=sharp($_new_file_file_name$jscomp$5_permission$$,{failOnError:!1});($error$jscomp$3_extension$$=await $_gm$$.metadata())&&$_resize_conf$$.size&&$_resize_conf$$.size<$error$jscomp$3_extension$$.width&&$_resize_conf$$.size<$error$jscomp$3_extension$$.height&&($_gm$$=$_gm$$.resize({width:$_resize_conf$$.size}));"webp"!=$_gm$$.format&&($_gm$$=$_gm$$.webp({lossless:!1,quality:80,nearLossless:!0}));$_resize_conf$$.cache&&setImmediate(()=>{$_gm$$.toFile($_resize_conf$$.file_name_resize,
23
+ $error$$=>{if($error$$)return console.error("save resize image:",$error$$.message);console.log("cache file",$_resize_conf$$.file_name_resize)})});$_gm$$.pipe($res$$)}else $res$$.download($_new_file_file_name$jscomp$5_permission$$,$rs$$.file.originalname);else $res$$.status(400).send({error:"File n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i"})},{data:$rs$$,obj:$rs$$,notNeedRight:!$rs$$.id_link&&!$rs$$.id_folder||$rs$$.shared}):$res$$.status(400).send({error:"Kh\u00f4ng t\u00ecm th\u1ea5y file n\u00e0y"})})})});
24
+ $router$$.route("/:id_app/file/stream/:id/:file").get(function($req$$,$res$$){let $id$$=$req$$.params.id;app.findOne({_id:$req$$.user.current_id_app}).lean().exec(function($e$jscomp$0$$,$app_info$$){if($e$jscomp$0$$||!$app_info$$)return $res$$.status(400).send("Kh\u00f4ng th\u1ec3 stream file n\u00e0y");model.findOne({_id:$id$$}).lean().exec(async($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$rs$$&&$rs$$.file?permission.hasRight($rs$$.id_app,$req$$.user.email,$contr$$.module,"view",
25
+ async function($error$jscomp$5_file_name$jscomp$6_output$$,$file$jscomp$1_permission$jscomp$2_root$$){if(!$file$jscomp$1_permission$jscomp$2_root$$)return $res$$.status(403).send({error:$error$jscomp$5_file_name$jscomp$6_output$$||"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp file n\u00e0y"});if($rs$$.file.url)return $res$$.redirect($rs$$.file.url);$error$jscomp$5_file_name$jscomp$6_output$$=$rs$$.file.name;$file$jscomp$1_permission$jscomp$2_root$$=$req$$.params.file;".ts"==$file$jscomp$1_permission$jscomp$2_root$$.substr(-3)&&
26
+ ($error$jscomp$5_file_name$jscomp$6_output$$=$file$jscomp$1_permission$jscomp$2_root$$);$file$jscomp$1_permission$jscomp$2_root$$=configs.paths.videos;$file$jscomp$1_permission$jscomp$2_root$$||($file$jscomp$1_permission$jscomp$2_root$$=__dirname,$file$jscomp$1_permission$jscomp$2_root$$=path.dirname($file$jscomp$1_permission$jscomp$2_root$$),$file$jscomp$1_permission$jscomp$2_root$$=path.dirname($file$jscomp$1_permission$jscomp$2_root$$),$file$jscomp$1_permission$jscomp$2_root$$=path.join($file$jscomp$1_permission$jscomp$2_root$$,
27
+ "videos"));$error$jscomp$5_file_name$jscomp$6_output$$=path.join($file$jscomp$1_permission$jscomp$2_root$$,$rs$$._id.toString(),$error$jscomp$5_file_name$jscomp$6_output$$);if(fs.existsSync($error$jscomp$5_file_name$jscomp$6_output$$)){const $readStream$$=fs.createReadStream($error$jscomp$5_file_name$jscomp$6_output$$);$readStream$$.on("open",function(){$readStream$$.pipe($res$$)});$readStream$$.on("error",function($err$$){$res$$.end($err$$)})}else $res$$.status(400).send("File n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i")},
28
+ {data:$rs$$,obj:$rs$$,notNeedRight:!$rs$$.id_link&&!$rs$$.id_folder||$rs$$.shared}):$res$$.status(400).send("Kh\u00f4ng t\u00ecm th\u1ea5y file n\u00e0y")})})})})};
@@ -5,7 +5,7 @@ $watermark_size$$-10,logoY:10,logoHeight:$watermark_size$$,logoWidth:$watermark_
5
5
  if($_size_file_name_resize$$)switch($_size_file_name_resize$$.toString().toUpperCase()){case "64":case "X":$size$$=64;$cache$$=!0;break;case "256":$size$$=256;$cache$$=!0;break;case "S":case "320":$size$$=320;$cache$$=!0;break;case "512":case "M":$size$$=512;$cache$$=!0;break;case "1024":case "L":$size$$=1024;$cache$$=!0;break;case "1080":case "FULLHD":$size$$=1080;$cache$$=!0;break;case "1440":case "2K":$size$$=1440;$cache$$=!0;break;default:try{$size$$=Number($_size_file_name_resize$$)}catch($e$$){console.log("size param must be X or S or M or L or a number")}}return $size$$?
6
6
  ($_size_file_name_resize$$=`${$file_name$$}.${$size$$}.${$extension$$}.webp`,!$recache$$&&fs.existsSync($_size_file_name_resize$$)?{file_name_resize:$_size_file_name_resize$$,exist:!0}:{cache:$cache$$,size:$size$$,file_name_resize:$_size_file_name_resize$$}):{file_name_resize:$file_name$$}};
7
7
  module.exports=function($router$$){$router$$.route("/file/shared/:id").get(($req$$,$res$$)=>{let $id$$=$req$$.params.id,$size$$=$req$$.query.size||$req$$.query.resize||"FULLHD";if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(400).send({error:"Kh\u00f4ng t\u00ecm th\u1ea5y file n\u00e0y"});global.getModel("file").findOne({_id:$id$$}).lean().exec(async($e$jscomp$1_extension$$,$_new_file_orgin_file_size_rs$$)=>{if($e$jscomp$1_extension$$)return $res$$.status(400).send($e$jscomp$1_extension$$);
8
- if($_new_file_orgin_file_size_rs$$){if(!$_new_file_orgin_file_size_rs$$.shared)return $res$$.status(403).send({error:"Kh\u00f4ng th\u1ec3 truy c\u1eadp file n\u00e0y"});let $app_info$$=await global.getModel("app").findOne({_id:$_new_file_orgin_file_size_rs$$.id_app}).lean();$app_info$$||($app_info$$={});let $file_name$$=$_new_file_orgin_file_size_rs$$.file.name;$e$jscomp$1_extension$$=$_new_file_orgin_file_size_rs$$.file.extension;let $root$$=configs.paths.uploads;$root$$||($root$$=__dirname,$root$$=
9
- path.dirname($root$$),$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$file_name$$=path.join($root$$,$file_name$$);if(fs.existsSync($file_name$$))if(0<=["png","jpg","jpeg","webp"].indexOf($e$jscomp$1_extension$$)){$_new_file_orgin_file_size_rs$$=await setWaterMark4Image($app_info$$,$file_name$$,$e$jscomp$1_extension$$,$req$$.query.recache);let $_resize_conf$$=await configResizeImage($size$$,$_new_file_orgin_file_size_rs$$,$e$jscomp$1_extension$$,$req$$.query.recache);if($_resize_conf$$.exist)return sharp($_resize_conf$$.file_name_resize,
10
- {failOnError:!1}).pipe($res$$);let $_gm$$=sharp($_new_file_orgin_file_size_rs$$,{failOnError:!1});($_new_file_orgin_file_size_rs$$=await $_gm$$.metadata())&&$_resize_conf$$.size&&$_resize_conf$$.size<$_new_file_orgin_file_size_rs$$.width&&$_resize_conf$$.size<$_new_file_orgin_file_size_rs$$.height&&($_gm$$=$_gm$$.resize({width:$_resize_conf$$.size}));"webp"!=$_gm$$.format&&($_gm$$=$_gm$$.webp({lossless:!1}));$_resize_conf$$.cache&&setImmediate(()=>{$_gm$$.toFile($_resize_conf$$.file_name_resize,$error$$=>
11
- {if($error$$)return console.error("save cache image:",$error$$.message);console.log("cache file",$_resize_conf$$.file_name_resize)})});$_gm$$.pipe($res$$)}else $res$$.download($file_name$$,$_new_file_orgin_file_size_rs$$.file.originalname);else $res$$.status(400).send({error:"File n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i"})}else $res$$.status(400).send({error:"Kh\u00f4ng t\u00ecm th\u1ea5y file n\u00e0y"})})})};
8
+ if($_new_file_orgin_file_size_rs$$){if(!$_new_file_orgin_file_size_rs$$.shared)return $res$$.status(403).send({error:"Kh\u00f4ng th\u1ec3 truy c\u1eadp file n\u00e0y"});let $app_info$$=await global.getModel("app").findOne({_id:$_new_file_orgin_file_size_rs$$.id_app}).lean();$app_info$$||($app_info$$={});if($_new_file_orgin_file_size_rs$$.file.url)return $res$$.redirect($_new_file_orgin_file_size_rs$$.file.url);let $file_name$$=$_new_file_orgin_file_size_rs$$.file.name;$e$jscomp$1_extension$$=$_new_file_orgin_file_size_rs$$.file.extension;
9
+ let $root$$=configs.paths.uploads;$root$$||($root$$=__dirname,$root$$=path.dirname($root$$),$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$file_name$$=path.join($root$$,$file_name$$);if(fs.existsSync($file_name$$))if(0<=["png","jpg","jpeg","webp"].indexOf($e$jscomp$1_extension$$)){$_new_file_orgin_file_size_rs$$=await setWaterMark4Image($app_info$$,$file_name$$,$e$jscomp$1_extension$$,$req$$.query.recache);let $_resize_conf$$=await configResizeImage($size$$,$_new_file_orgin_file_size_rs$$,
10
+ $e$jscomp$1_extension$$,$req$$.query.recache);if($_resize_conf$$.exist)return sharp($_resize_conf$$.file_name_resize,{failOnError:!1}).pipe($res$$);let $_gm$$=sharp($_new_file_orgin_file_size_rs$$,{failOnError:!1});($_new_file_orgin_file_size_rs$$=await $_gm$$.metadata())&&$_resize_conf$$.size&&$_resize_conf$$.size<$_new_file_orgin_file_size_rs$$.width&&$_resize_conf$$.size<$_new_file_orgin_file_size_rs$$.height&&($_gm$$=$_gm$$.resize({width:$_resize_conf$$.size}));"webp"!=$_gm$$.format&&($_gm$$=
11
+ $_gm$$.webp({lossless:!1}));$_resize_conf$$.cache&&setImmediate(()=>{$_gm$$.toFile($_resize_conf$$.file_name_resize,$error$$=>{if($error$$)return console.error("save cache image:",$error$$.message);console.log("cache file",$_resize_conf$$.file_name_resize)})});$_gm$$.pipe($res$$)}else $res$$.download($file_name$$,$_new_file_orgin_file_size_rs$$.file.originalname);else $res$$.status(400).send({error:"File n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i"})}else $res$$.status(400).send({error:"Kh\u00f4ng t\u00ecm th\u1ea5y file n\u00e0y"})})})};
@@ -50,7 +50,7 @@ log.create({id_app:"CHANGEPIN",id_func:"CHANGEPIN",action:"CHANGEPIN"},$user$$.e
50
50
  $req$$.query.access_token;findByToken($access_token$$,$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,function($error$$,$user$$){if($error$$)return $res$$.status(400).send({error:$error$$.message||$error$$.error||$error$$});Token.deleteMany({token:$access_token$$},async function($clientIO_error$$){if($clientIO_error$$)return $res$$.status(400).send($clientIO_error$$);if(global.socketContainer.socketIO){var $client_sockets$$=[...(await global.socketContainer.socketIO.in($user$$.email).allSockets())];
51
51
  $clientIO_error$$=await global.socketContainer.loadConnectionId();for($ep_id_id$$ of $client_sockets$$)($client_sockets$$=$clientIO_error$$[$ep_id_id$$])&&$client_sockets$$.token==$access_token$$&&global.socketContainer.socketIO.in($ep_id_id$$).fetchSockets().then($sockets$$=>{for(const $socket$$ of $sockets$$)$socket$$.disconnect()});global.socketContainer.saveConnectionId($clientIO_error$$)}log.create({id_app:"LOGOUT",id_func:"LOGOUT",action:"LOGOUT"},$user$$.email,$req$$.header("user-agent"),$req$$);
52
52
  if($req$$.query.ep){var $ep_id_id$$=(new Buffer($req$$.query.ep)).toString("base64");Endpoint.deleteMany({ep_id:$ep_id_id$$},function($e$$){$e$$&&console.log("error when log out endpoint",$e$$)})}$res$$.send({message:$user$$.email+" logged out"})})})});$router$$.route("/notifies").get(function($req$$,$res$$){getNotifies($req$$.user.email,function($error$$,$notifies$$){if($error$$)return $res$$.status(400).send({error:$error$$.message||$error$$.error||$error$$});$res$$.send($notifies$$)})});$router$$.route("/register-endpoint").get(function($req$$,
53
- $res$$){const $endpoint$$=$req$$.query.ep;if($endpoint$$){const $ep_id$$=(new Buffer($endpoint$$)).toString("base64");Endpoint.findOne({ep_id:$ep_id$$},function($e$jscomp$0$$,$ep$$){if($e$jscomp$0$$)return $res$$.status(400).send($e$jscomp$0$$);$ep$$?($ep$$.user=$req$$.user.email,$ep$$.userAuth=$req$$.query.userAuth,$ep$$.userPublicKey=$req$$.query.userPublicKey):$ep$$=new Endpoint({ep_id:$ep_id$$,user:$req$$.user.email,endpoint:$endpoint$$,userAuth:$req$$.query.userAuth,userPublicKey:$req$$.query.userPublicKey});
54
- $ep$$.save(function($e$$,$rs$$){if($e$$)return $res$$.status(400).send($e$$);console.log("register successful endpoint",$endpoint$$,$req$$.user.email);$res$$.send($rs$$)})})}else $res$$.status(400).send({error:"H\u00e0m register-endpoint y\u00eau c\u1ea7u tham s\u1ed1 'ep'"})});$router$$.route("/remove-endpoint").get(function($req$$,$res$$){Endpoint.deleteMany({endpoint:$req$$.query.ep},$e$$=>{if($e$$)return console.error($e$$);$res$$.send("success!")})});let $wallet$$=global.getModel("wallet");$router$$.route("/sign").post(function($req$$,
55
- $res$$){let $access_token$$=$req$$.query.access_token,$dataToSign$$=$req$$.body,$id_app$$=$dataToSign$$.id_app;if(!$id_app$$)return $res$$.status(400).send("Data for sign miss id_app");findByToken($access_token$$,$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,async function($error$$,$user$$){if($error$$)return $res$$.status(400).send($error$$);if($user$$)try{let $signature$$=await $wallet$$.sign($id_app$$,$user$$.email,$dataToSign$$);$res$$.send({signature:$signature$$})}catch($e$$){$res$$.status(400).send({error:$e$$.message||
56
- $e$$.error||$e$$})}else $res$$.status(400).send({error:"Not found user"})})})};
53
+ $res$$){const $endpoint$$=$req$$.query.ep,$id_app$$=$req$$.query.id_app;if($endpoint$$){const $ep_id$$=(new Buffer($endpoint$$)).toString("base64");Endpoint.findOne({ep_id:$ep_id$$},function($e$jscomp$0$$,$ep$$){if($e$jscomp$0$$)return $res$$.status(400).send($e$jscomp$0$$);$ep$$?($ep$$.user=$req$$.user.email,$ep$$.userAuth=$req$$.query.userAuth,$ep$$.userPublicKey=$req$$.query.userPublicKey,$ep$$.id_app=$id_app$$):$ep$$=new Endpoint({ep_id:$ep_id$$,user:$req$$.user.email,endpoint:$endpoint$$,id_app:$id_app$$,
54
+ userAuth:$req$$.query.userAuth,userPublicKey:$req$$.query.userPublicKey});$ep$$.save(function($e$$,$rs$$){if($e$$)return $res$$.status(400).send($e$$);console.log("register successful endpoint",$endpoint$$,$req$$.user.email);$res$$.send($rs$$)})})}else $res$$.status(400).send({error:"H\u00e0m register-endpoint y\u00eau c\u1ea7u tham s\u1ed1 'ep'"})});$router$$.route("/remove-endpoint").get(function($req$$,$res$$){Endpoint.deleteMany({endpoint:$req$$.query.ep},$e$$=>{if($e$$)return console.error($e$$);
55
+ $res$$.send("success!")})});let $wallet$$=global.getModel("wallet");$router$$.route("/sign").post(function($req$$,$res$$){let $access_token$$=$req$$.query.access_token,$dataToSign$$=$req$$.body,$id_app$$=$dataToSign$$.id_app;if(!$id_app$$)return $res$$.status(400).send("Data for sign miss id_app");findByToken($access_token$$,$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,async function($error$$,$user$$){if($error$$)return $res$$.status(400).send($error$$);if($user$$)try{let $signature$$=
56
+ await $wallet$$.sign($id_app$$,$user$$.email,$dataToSign$$);$res$$.send({signature:$signature$$})}catch($e$$){$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}else $res$$.status(400).send({error:"Not found user"})})})};
@@ -48,8 +48,8 @@ $_e$$.so_tien;$_e$$.ty_le&&($date_created_so_tien_giam$$=Math.roundBy($gt_don_ha
48
48
  $id_ct$$)=>{if($evoucher_code$$){$id_ct$$=$id_ct$$.toString();var $e$jscomp$2_rs$$=await Evoucher.findOne({id_app:$id_app$jscomp$2_id_ct_useds$$,ma:$evoucher_code$$});$e$jscomp$2_rs$$&&($id_app$jscomp$2_id_ct_useds$$=($e$jscomp$2_rs$$.id_ct_useds||[]).filter($ct$$=>$ct$$!==$id_ct$$),$e$jscomp$2_rs$$=await Evoucher.findOneAndUpdate({_id:$e$jscomp$2_rs$$._id},{id_ct_useds:$id_app$jscomp$2_id_ct_useds$$}),console.log("update id_ct_useds",$evoucher_code$$,$id_app$jscomp$2_id_ct_useds$$,$e$jscomp$2_rs$$))}},
49
49
  validOnline=async function($user$$,$obj$$,$_opt_pre_obj_t_tien_evoucher$$){$_opt_pre_obj_t_tien_evoucher$$&&($obj$$.tinh_thanh=$obj$$.tinh_thanh||$_opt_pre_obj_t_tien_evoucher$$.tinh_thanh,$obj$$.quan_huyen=$obj$$.quan_huyen||$_opt_pre_obj_t_tien_evoucher$$.quan_huyen,$obj$$.xa_phuong=$obj$$.xa_phuong||$_opt_pre_obj_t_tien_evoucher$$.xa_phuong,$obj$$.ma_freeship=void 0!==$obj$$.ma_freeship?$obj$$.ma_freeship:$_opt_pre_obj_t_tien_evoucher$$.ma_freeship,$obj$$.tien_freeship=void 0!==$obj$$.tien_freeship?
50
50
  $obj$$.tien_freeship:$_opt_pre_obj_t_tien_evoucher$$.ma_freeship);await ($obj$$.details||[]).filter($d$$=>!$d$$.ma_dvt&&$d$$.ma_tt1).asyncJoinModel2($user$$.current_id_app,dmtt,{where:{ma_vt:"ma_vt",ma_tt1:"ma_tt"},fields:"ma_dvt"});await ($obj$$.details||[]).filter($d$$=>!$d$$.ma_dvt&&$d$$.ma_tt2).asyncJoinModel2($user$$.current_id_app,dmtt,{where:{ma_vt:"ma_vt",ma_tt2:"ma_tt"},fields:"ma_dvt"});await ($obj$$.details||[]).filter($d$$=>!$d$$.ma_dvt&&$d$$.ma_tt3).asyncJoinModel2($user$$.current_id_app,
51
- dmtt,{where:{ma_vt:"ma_vt",ma_tt3:"ma_tt"},fields:"ma_dvt"});await ($obj$$.details||[]).filter($d$$=>!$d$$.ma_dvt).asyncJoinModel2($user$$.current_id_app,dmvt,{where:"ma_vt",fields:"ma_dvt"});await ($obj$$.details||[]).asyncJoinModel2($user$$.current_id_app,dmvt,{where:$item$$=>({ma_vt:$item$$.ma_vt}),fields:["ma_danh_muc","khu_vuc_kd","ten_vt"]});var $details_dvgh_t_tien_nt$$=$obj$$.details.filter($d$$=>$d$$.khu_vuc_kd&&0<$d$$.khu_vuc_kd.length);for(var $freeship_i$$=0;$freeship_i$$<$details_dvgh_t_tien_nt$$.length;$freeship_i$$++){var $detail$jscomp$0$$=
52
- $details_dvgh_t_tien_nt$$[$freeship_i$$],$i$$=$detail$jscomp$0$$.khu_vuc_kd.find($k$$=>$k$$.tinh_thanh===$obj$$.tinh_thanh);if(!$i$$)throw Error(`Kh\u00f4ng th\u1ec3 giao m\u1eb7t h\u00e0ng ${$detail$jscomp$0$$.ten_vt} t\u1edbi ${$obj$$.tinh_thanh}`);if($i$$.quan_huyen&&0<$i$$.quan_huyen.length){$i$$=$i$$.quan_huyen.find($q$$=>$q$$.quan_huyen===$obj$$.quan_huyen);if(!$i$$)throw Error(`Kh\u00f4ng th\u1ec3 giao m\u1eb7t h\u00e0ng ${$detail$jscomp$0$$.ten_vt} t\u1edbi ${$obj$$.tinh_thanh}-${$obj$$.quan_huyen}`);
51
+ dmtt,{where:{ma_vt:"ma_vt",ma_tt3:"ma_tt"},fields:"ma_dvt"});await ($obj$$.details||[]).filter($d$$=>!$d$$.ma_dvt).asyncJoinModel2($user$$.current_id_app,dmvt,{where:"ma_vt",fields:"ma_dvt"});await ($obj$$.details||[]).asyncJoinModel2($user$$.current_id_app,dmvt,{where:$item$$=>({ma_vt:$item$$.ma_vt}),fields:["ma_danh_muc","khu_vuc_kd","ten_vt","ten_vt_eng"]});var $details_dvgh_t_tien_nt$$=$obj$$.details.filter($d$$=>$d$$.khu_vuc_kd&&0<$d$$.khu_vuc_kd.length);for(var $freeship_i$$=0;$freeship_i$$<
52
+ $details_dvgh_t_tien_nt$$.length;$freeship_i$$++){var $detail$jscomp$0$$=$details_dvgh_t_tien_nt$$[$freeship_i$$],$i$$=$detail$jscomp$0$$.khu_vuc_kd.find($k$$=>$k$$.tinh_thanh===$obj$$.tinh_thanh);if(!$i$$)throw Error(`Kh\u00f4ng th\u1ec3 giao m\u1eb7t h\u00e0ng ${$detail$jscomp$0$$.ten_vt} t\u1edbi ${$obj$$.tinh_thanh}`);if($i$$.quan_huyen&&0<$i$$.quan_huyen.length){$i$$=$i$$.quan_huyen.find($q$$=>$q$$.quan_huyen===$obj$$.quan_huyen);if(!$i$$)throw Error(`Kh\u00f4ng th\u1ec3 giao m\u1eb7t h\u00e0ng ${$detail$jscomp$0$$.ten_vt} t\u1edbi ${$obj$$.tinh_thanh}-${$obj$$.quan_huyen}`);
53
53
  if($i$$.xa_phuong&&0<$i$$.xa_phuong.length&&!$i$$.xa_phuong.find($q$$=>$q$$.xa_phuong===$obj$$.xa_phuong))throw Error(`Kh\u00f4ng th\u1ec3 giao m\u1eb7t h\u00e0ng ${$detail$jscomp$0$$.ten_vt} t\u1edbi ${$obj$$.tinh_thanh}-${$obj$$.quan_huyen} - ${$obj$$.xa_phuong}`);}}const $t_gt_hd$$=$obj$$.details.filter($d$$=>!$d$$.km_yn_for).map($a$$=>$a$$.tien_hang_nt||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);try{await Promise.all($obj$$.details.map($item$$=>(async()=>{if($item$$.km_yn_for&&"SO1"!=$item$$.km_yn_for.toUpperCase())$item$$.gia_ban=
54
54
  $item$$.gia_ban_nt=0,$item$$.tien_ck=$item$$.tien_ck_nt=0,$item$$.tien_hang=$item$$.tien_hang_nt=0,$item$$.tien=$item$$.tien_nt=0;else if(!$item$$.km_yn_for||"SO1"==$item$$.km_yn_for.toUpperCase()){if($item$$.km_yn_for&&"SO1"==$item$$.km_yn_for.toUpperCase()&&!$item$$.id_cs)throw Error("S\u1ea3n ph\u1ea9m mua th\u00eam theo ch\u00ednh s\u00e1ch chi\u1ebft kh\u1ea5u thi\u1ebfu id_cs");var $condition$$={ma_vt:$item$$.ma_vt,id_app:$user$$.current_id_app};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);
55
55
  $item$$.ma_tt2&&($condition$$.ma_tt2=$item$$.ma_tt2);$item$$.ma_tt3&&($condition$$.ma_tt3=$item$$.ma_tt3);$condition$$.sl_xuat=$item$$.sl_xuat;$condition$$.online=!0;$condition$$.t_gt_hd=$t_gt_hd$$;if($condition$$=await getGiaBan($condition$$)){if($item$$.gia_ban_nt!=$condition$$.gia_ban_le)throw Error("Gi\u00e1 b\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7");if($item$$.km_yn_for&&"SO1"==$item$$.km_yn_for.toUpperCase()){let $dc$$=($condition$$.discount||[]).find($r$$=>$r$$._id===$item$$.id_cs&&$r$$.mua_them&&
@@ -102,24 +102,24 @@ $obj$$.ma_kh_hoa_hong,$rs$jscomp$6_t_tt_tt_tt$jscomp$1_tt$jscomp$2_tt$jscomp$3_t
102
102
  $details$$,null,Socaitmp)).run(function($e$$,$rs$$){console.log("post result",$rs$$);$callback$$($e$$,$rs$$)})})})}},function($e$$,$rs$$){$fn$$($e$$,$rs$$)})};$contr_router$$.creating=async function($user$$,$obj$$,$next$$){$obj$$.details||($obj$$.details=[]);if(!$obj$$.ma_kh){let $kh$$=await customer.findOne({id_app:$obj$$.id_app||$user$$.current_id_app,of_user:$user$$.email},{ma_kh:-1});$kh$$&&($obj$$.ma_kh=$kh$$.ma_kh)}delete $obj$$.virtual_payment_client_url;await $obj$$.details.asyncJoinModel2($user$$.current_id_app,
103
103
  dmvt,{where:"ma_vt",fields:["combo"]});$obj$$.details.forEach($detail$$=>{$detail$$.combo&&0<$detail$$.combo.length&&($detail$$.combo=$detail$$.combo.map($item$$=>{$item$$=$item$$.toObject?$item$$.toObject():{...$item$$};$item$$.sl_xuat*=$detail$$.sl_xuat;$item$$.tien_xuat=$item$$.tien_xuat_nt=$item$$.sl_xuat*($item$$.gia_von_nt||0);$item$$.tien_hang=$item$$.tien_hang_nt=$item$$.sl_xuat*($item$$.gia_ban_nt||0);$item$$.tien_ck=$item$$.tien_ck_nt=$item$$.sl_xuat*($item$$.tien_ck_nt||0);$item$$.tien=
104
104
  $item$$.tien_nt=$item$$.tien_hang_nt-($item$$.tien_ck_nt||0);return $item$$}))});valid($user$$,$obj$$,async $error$$=>{if($error$$)return $next$$($error$$);if(!$obj$$.paymentByPoints)return $next$$(null,$obj$$);try{if(await getPointBalance($user$$.current_id_app,$obj$$.of_user||$user$$.email)<$obj$$.paymentByPoints)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 \u0111\u1ee7 \u0111i\u1ec3m \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y.");$next$$(null,$obj$$)}catch($e$$){$next$$($e$$.message)}})};
105
- $contr_router$$.created=async function($user$$,$obj$$,$next$$){if($obj$$.pt_thanh_toan&&global.mongoose.Types.ObjectId.isValid($obj$$.pt_thanh_toan))try{const $pt_thanh_toan$$=await global.getModel("ptthanhtoan").findOne({_id:$obj$$.pt_thanh_toan});if($pt_thanh_toan$$.payment_service){let $paymentServiceModel$$=global.getModel($pt_thanh_toan$$.payment_service);$obj$$.amount=$obj$$.t_tt_nt-($obj$$.tien_paymentByPoints||0);if($obj$$.amount){let $virtual_payment_client_url$$=await $paymentServiceModel$$.createVirtualPaymentClientURL($obj$$,
106
- $user$$.clientIp,$pt_thanh_toan$$);$obj$$.virtual_payment_client_url=$virtual_payment_client_url$$;$obj$$.payment_service=$pt_thanh_toan$$.payment_service;$obj$$.payment_id=((await $paymentServiceModel$$.findOne({$or:[{id_ct:$obj$$._id.toString(),order_id:$obj$$._id.toString()}]})||{})._id||"").toString()}else $obj$$.virtual_payment_client_url="",$obj$$.payment_service="",$obj$$.payment_id=""}else $obj$$.virtual_payment_client_url=""}catch($e$$){return console.error($e$$),$next$$("Kh\u00f4ng tao li\u00ean k\u1ebft thanh to\u00e1n:"+
107
- ($e$$.message||$e$$.error||$e$$))}else console.log("Chua nhap phuong thuc thanh toan"),$obj$$.virtual_payment_client_url="";model.findOneAndUpdate({_id:$obj$$._id},{virtual_payment_client_url:$obj$$.virtual_payment_client_url},$e$$=>{$e$$&&(console.error($e$$),console.log("error create Virtual Payment ClientURL",$e$$.message))});await createTransactionPayment($obj$$);await createTransactionBonus($obj$$);$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>updateEvoucher($e$$.id_app,$e$$.ma,
108
- $obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.updating=async($user$$,$data$$,$obj$$,$next$$)=>{$data$$.details||($data$$.details=$obj$$.details);await $data$$.details.asyncJoinModel2($user$$.current_id_app,dmvt,{where:"ma_vt",fields:["combo"]});$obj$$.details.forEach($detail$$=>{$detail$$.combo&&0<$detail$$.combo.length&&($detail$$.combo=$detail$$.combo.map($item$$=>{$item$$=$item$$.toObject?$item$$.toObject():{...$item$$};$item$$.sl_xuat*=$detail$$.sl_xuat;$item$$.tien_xuat=$item$$.tien_xuat_nt=
109
- $item$$.sl_xuat*($item$$.gia_von_nt||0);$item$$.tien_hang=$item$$.tien_hang_nt=$item$$.sl_xuat*($item$$.gia_ban_nt||0);$item$$.tien_ck=$item$$.tien_ck_nt=$item$$.sl_xuat*($item$$.tien_ck_nt||0);$item$$.tien=$item$$.tien_nt=$item$$.tien_hang_nt-($item$$.tien_ck_nt||0);return $item$$}))});$data$$.pt_thanh_toan&&$data$$.pt_thanh_toan!=$obj$$.pt_thanh_toan&&($data$$.virtual_payment_client_url="",$data$$.payment_service="",$data$$.payment_id="");$data$$.evouchers=$data$$.evouchers||$obj$$.evouchers||[];
110
- valid($user$$,$data$$,async $error$$=>{if($error$$)return $next$$($error$$);if(($obj$$.paymentByPoints||0)!==($data$$.paymentByPoints||0))return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt s\u1ed1 \u0111i\u1ec3m thanh to\u00e1n.");await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"});$next$$(null,$data$$,$obj$$)},$obj$$)};$contr_router$$.updated=async function($evouchers_user$$,$obj$$,$next$$){if(!$obj$$.virtual_payment_client_url&&("1"===$obj$$.trang_thai||"0"===$obj$$.trang_thai)){if($obj$$.pt_thanh_toan&&
111
- global.mongoose.Types.ObjectId.isValid($obj$$.pt_thanh_toan))try{const $pt_thanh_toan$$=await global.getModel("ptthanhtoan").findOne({_id:$obj$$.pt_thanh_toan});if($pt_thanh_toan$$.payment_service){let $paymentServiceModel$$=global.getModel($pt_thanh_toan$$.payment_service);$obj$$.amount=$obj$$.t_tt_nt-($obj$$.tien_paymentByPoints||0);if($obj$$.amount){let $virtual_payment_client_url$$=await $paymentServiceModel$$.createVirtualPaymentClientURL($obj$$,$evouchers_user$$.clientIp,$pt_thanh_toan$$);$obj$$.virtual_payment_client_url=
112
- $virtual_payment_client_url$$;$obj$$.payment_service=$pt_thanh_toan$$.payment_service;$obj$$.payment_id=((await $paymentServiceModel$$.findOne({$or:[{id_ct:$obj$$._id.toString()},{order_id:$obj$$._id.toString()}]})||{})._id||"").toString()}else $obj$$.virtual_payment_client_url="",$obj$$.payment_service="",$obj$$.payment_id=""}else $obj$$.virtual_payment_client_url=""}catch($e$$){return console.error($e$$),$next$$("Error create Virtual Payment ClientURL:"+($e$$.message||$e$$.error||$e$$))}else $obj$$.virtual_payment_client_url=
113
- "";model.findOneAndUpdate({_id:$obj$$._id},{virtual_payment_client_url:$obj$$.virtual_payment_client_url},$e$$=>{$e$$&&console.log("error create Virtual Payment ClientURL",$e$$.message)})}"9"===$obj$$.trang_thai?(await transaction.deleteTrans({id_ct:$obj$$._id.toString()}),await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng"),await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"})):(await createTransactionPayment($obj$$),
114
- createTransactionBonus($obj$$));await Evoucher.updateMany({id_ct_used:$obj$$._id.toString()},{id_ct_used:null});$evouchers_user$$=await Evoucher.find({id_ct_useds:$obj$$._id.toString()});await Promise.all($evouchers_user$$.map($e$$=>deleteEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>updateEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.deleting=function($user$$,$obj$$,$next$$){$next$$(null,$obj$$)};$contr_router$$.deleted=
115
- async function($user$$,$obj$$,$next$$){await transaction.deleteTrans({id_ct:$obj$$._id.toString()});await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng");await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"});$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>deleteEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.view=function($user$$,$items$$,$fn$$){async.series({app:function($callback$$){$items$$.filter($item$$=>
116
- $item$$.id_app).joinModel2(null,App,[{where:{id_app:"_id"},fields:{name_app:"name"}}],function(){$callback$$()})},kh:function($callback$$){$items$$.filter($item$$=>$item$$.ma_kh).joinModel2(null,customer,[{where:$item$$=>({id_app:$item$$.id_app,ma_kh:$item$$.ma_kh}),fields:"ten_kh"}],function(){$callback$$()})},nhan_vien_giao_hang:function($callback$$){$items$$.filter($item$$=>$item$$.nhan_vien_giao_hang).joinModel2(null,customer,[{where:{nhan_vien_giao_hang:"ma_kh"},fields:[{ten_nhan_vien_giao_hang:"ten_kh"}]}],
117
- function(){$callback$$()})},nv_giao_hang:function($callback$$){$items$$.filter($item$$=>$item$$.user_nv_giao_hang).joinModel2(null,User,{where:{user_nv_giao_hang:"email"},fields:{ten_nv_giao_hang:"name"}},function(){$callback$$()})},kho:function($callback$$){$items$$.filter($item$$=>$item$$.ma_kho).joinModel2(null,dmkho,[{where:$item$$=>({id_app:$item$$.id_app,ma_kho:$item$$.ma_kho}),fields:["ten_kho",{tk_cn_kho:"tk_cn"}]}],function(){$callback$$()})},trangthai:function($callback$$){$items$$.filter($item$$=>
118
- $item$$.trang_thai).joinModel2(null,trangthai,[{where:{trang_thai:"ma_trang_thai",ma_ct:"ma_ct"},fields:["ten_trang_thai","color"]}],function(){$callback$$()})},ptthanhtoan:function($callback$$){$items$$.filter($item$$=>$item$$.pt_thanh_toan).joinModel2(null,ptthanhtoan,[{where:$item$$=>({_id:$item$$.pt_thanh_toan,id_app:$item$$.id_app}),fields:[{ten_pt_thanh_toan:"ten"},{tk_cn_thanhtoan:"tk_cn"}]}],function(){$callback$$()})},pt1:function($callback$$){$items$$.joinModel2(null,pt1,[{where:$item$$=>
119
- ({id_app:$item$$.id_app,id_so1:"_id"}),fields:[{id_pt1:"_id"},{so_ct_pt1:"so_ct"},{ma_ct_pt1:"ma_ct"},{ngay_ct_pt1:"ngay_ct"}]}],function(){$callback$$()})},t_tien:function($callback$$){$items$$.filter($item$$=>$item$$.details).forEach(function($r$$){$r$$.tien_phi_vc=$r$$.tien_phi_vc||0;$r$$.tien_freeship=$r$$.tien_freeship||0;$r$$.details?($r$$.t_sl=$r$$.details.csum("sl_xuat"),$r$$.t_tien_hang=$r$$.details.csum("tien_hang"),$r$$.t_tien_hang_nt=$r$$.details.csum("tien_hang_nt"),$r$$.t_tien=$r$$.t_tien_hang-
120
- $r$$.details.csum("tien_ck"),$r$$.t_tien_nt=$r$$.t_tien_hang_nt-$r$$.details.csum("tien_ck_nt"),$r$$.t_ck_nt=$r$$.t_ck=$r$$.tien_ck_hd+($r$$.tien_evoucher||0)):($r$$.t_sl=0,$r$$.t_tien_hang=0,$r$$.t_tien_hang_nt=0,$r$$.t_ck=0,$r$$.t_ck_nt=0,$r$$.t_tien=$r$$.t_tien_hang,$r$$.t_tien_nt=$r$$.t_tien_hang_nt);$r$$.ctcpbhs?($r$$.t_cp_cpb_nt=$r$$.ctcpbhs.csum("tien_cp_nt"),$r$$.t_cp_cpb=$r$$.ctcpbhs.csum("tien_cp")):($r$$.t_cp_cpb_nt=0,$r$$.t_cp_cpb=0);$r$$.t_tt=$r$$.t_tt_nt=Math.max(0,$r$$.t_tien_nt+$r$$.t_cp_cpb_nt-
121
- $r$$.t_ck_nt-($r$$.tt_tien_thuong||0)+($r$$.tien_phi_vc||0)-($r$$.tien_freeship||0))});$callback$$()},details_vt:function($callback$$){async.each($items$$,function($r$$,$callback1$$){const $details$$=$r$$.details;if(!$details$$)return $callback1$$();$details$$.joinModel2(null,dmvt,[{where:$item$$=>({id_app:$r$$.id_app,ma_vt:$item$$.ma_vt}),fields:"ten_vt picture chieu_cao chieu_rong chieu_sau trong_luong".split(" ")}],function(){$callback1$$()})},function(){$callback$$()})},details_tt1:function($callback$$){async.mapSeries($items$$,
122
- function($r$$,$callback1$$){$r$$.details.filter($item$$=>$item$$.ma_tt1).joinModel2(null,dmtt,[{where:$item$$=>({id_app:$r$$.id_app,ma_vt:$item$$.ma_vt,ma_tt1:$item$$.ma_tt1}),setFields:($item$$,$ref$$)=>{$item$$.ten_vt=$item$$.ten_vt+" - "+$ref$$.ten_tt}}],function(){$callback1$$()})},function(){$callback$$()})},details_dt:function($callback$$){async.mapSeries($items$$,function($r$$,$callback1$$){const $details$$=$r$$.details;if(!$details$$)return $callback1$$();$details$$.filter($item$$=>$item$$.ma_dt).joinModel2(null,
123
- dmdt,[{where:$item$$=>({id_app:$r$$.id_app,ma_dt:$item$$.ma_dt}),fields:["ten_dt"]}],function(){$callback1$$()})},function(){$callback$$()})},details_contract:function($callback$$){async.mapSeries($items$$,function($r$$,$callback1$$){const $details$$=$r$$.details;if(!$details$$)return $callback1$$();$details$$.filter($item$$=>$item$$.ma_hd).joinModel2(null,contract,[{where:$item$$=>({id_app:$r$$.id_app,so_hd:$item$$.ma_hd}),fields:["ten_hd"]}],function(){$callback1$$()})},function(){$callback$$()})},
124
- details_phi:function($callback$$){async.mapSeries($items$$,function($r$$,$callback1$$){const $details$$=$r$$.details;if(!$details$$)return $callback1$$();$details$$.filter($item$$=>$item$$.ma_phi).joinModel2(null,dmphi,[{where:$item$$=>({id_app:$r$$.id_app,ma_phi:$item$$.ma_phi}),fields:["ten_phi"]}],function(){$callback1$$()})},function(){$callback$$()})},details_cpbh:function($callback$$){async.each($items$$,function($r$$,$callback1$$){let $ctcpbhs$$=$r$$.ctcpbhs;if(!$ctcpbhs$$)return $callback1$$();
125
- $ctcpbhs$$?$ctcpbhs$$.filter($item$$=>$item$$.ma_cp).joinModel2(null,dmcpmh,[{where:$item$$=>({id_app:$r$$.id_app,ma_cp:$item$$.ma_cp}),fields:["ten_cp"]}],function(){$callback1$$()}):$callback1$$()},function(){$callback$$()})}},function(){$fn$$(null,$items$$)})}};
105
+ $contr_router$$.created=async function($user$$,$obj$$,$next$$){if($obj$$.pt_thanh_toan&&global.mongoose.Types.ObjectId.isValid($obj$$.pt_thanh_toan))try{const $pt_thanh_toan$$=await global.getModel("ptthanhtoan").findOne({_id:$obj$$.pt_thanh_toan});if($pt_thanh_toan$$.payment_service){let $paymentServiceModel$$=global.getModel($pt_thanh_toan$$.payment_service);$obj$$.amount=$obj$$.t_tt_nt-($obj$$.tien_paymentByPoints||0);if($obj$$.amount&&$paymentServiceModel$$.createVirtualPaymentClientURL){let $virtual_payment_client_url$$=
106
+ await $paymentServiceModel$$.createVirtualPaymentClientURL($obj$$,$user$$.clientIp,$pt_thanh_toan$$);$obj$$.virtual_payment_client_url=$virtual_payment_client_url$$;$obj$$.payment_service=$pt_thanh_toan$$.payment_service;$obj$$.payment_id=((await $paymentServiceModel$$.findOne({$or:[{id_ct:$obj$$._id.toString(),order_id:$obj$$._id.toString()}]})||{})._id||"").toString()}else $obj$$.virtual_payment_client_url="",$obj$$.payment_service="",$obj$$.payment_id=""}else $obj$$.virtual_payment_client_url=
107
+ ""}catch($e$$){return console.error($e$$),$next$$("Kh\u00f4ng tao li\u00ean k\u1ebft thanh to\u00e1n:"+($e$$.message||$e$$.error||$e$$))}else console.log("Chua nhap phuong thuc thanh toan"),$obj$$.virtual_payment_client_url="";model.findOneAndUpdate({_id:$obj$$._id},{virtual_payment_client_url:$obj$$.virtual_payment_client_url},$e$$=>{$e$$&&(console.error($e$$),console.log("error create Virtual Payment ClientURL",$e$$.message))});await createTransactionPayment($obj$$);await createTransactionBonus($obj$$);
108
+ $obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>updateEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.updating=async($user$$,$data$$,$obj$$,$next$$)=>{$data$$.details||($data$$.details=$obj$$.details);await $data$$.details.asyncJoinModel2($user$$.current_id_app,dmvt,{where:"ma_vt",fields:["combo"]});$obj$$.details.forEach($detail$$=>{$detail$$.combo&&0<$detail$$.combo.length&&($detail$$.combo=$detail$$.combo.map($item$$=>{$item$$=$item$$.toObject?$item$$.toObject():
109
+ {...$item$$};$item$$.sl_xuat*=$detail$$.sl_xuat;$item$$.tien_xuat=$item$$.tien_xuat_nt=$item$$.sl_xuat*($item$$.gia_von_nt||0);$item$$.tien_hang=$item$$.tien_hang_nt=$item$$.sl_xuat*($item$$.gia_ban_nt||0);$item$$.tien_ck=$item$$.tien_ck_nt=$item$$.sl_xuat*($item$$.tien_ck_nt||0);$item$$.tien=$item$$.tien_nt=$item$$.tien_hang_nt-($item$$.tien_ck_nt||0);return $item$$}))});$data$$.pt_thanh_toan&&$data$$.pt_thanh_toan!=$obj$$.pt_thanh_toan&&($data$$.virtual_payment_client_url="",$data$$.payment_service=
110
+ "",$data$$.payment_id="");$data$$.evouchers=$data$$.evouchers||$obj$$.evouchers||[];valid($user$$,$data$$,async $error$$=>{if($error$$)return $next$$($error$$);if(($obj$$.paymentByPoints||0)!==($data$$.paymentByPoints||0))return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt s\u1ed1 \u0111i\u1ec3m thanh to\u00e1n.");await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"});$next$$(null,$data$$,$obj$$)},$obj$$)};$contr_router$$.updated=async function($evouchers_user$$,$obj$$,$next$$){if(!$obj$$.virtual_payment_client_url&&
111
+ ("1"===$obj$$.trang_thai||"0"===$obj$$.trang_thai)){if($obj$$.pt_thanh_toan&&global.mongoose.Types.ObjectId.isValid($obj$$.pt_thanh_toan))try{const $pt_thanh_toan$$=await global.getModel("ptthanhtoan").findOne({_id:$obj$$.pt_thanh_toan});if($pt_thanh_toan$$.payment_service){let $paymentServiceModel$$=global.getModel($pt_thanh_toan$$.payment_service);$obj$$.amount=$obj$$.t_tt_nt-($obj$$.tien_paymentByPoints||0);if($obj$$.amount&&$paymentServiceModel$$.createVirtualPaymentClientURL){let $virtual_payment_client_url$$=
112
+ await $paymentServiceModel$$.createVirtualPaymentClientURL($obj$$,$evouchers_user$$.clientIp,$pt_thanh_toan$$);$obj$$.virtual_payment_client_url=$virtual_payment_client_url$$;$obj$$.payment_service=$pt_thanh_toan$$.payment_service;$obj$$.payment_id=((await $paymentServiceModel$$.findOne({$or:[{id_ct:$obj$$._id.toString()},{order_id:$obj$$._id.toString()}]})||{})._id||"").toString()}else $obj$$.virtual_payment_client_url="",$obj$$.payment_service="",$obj$$.payment_id=""}else $obj$$.virtual_payment_client_url=
113
+ ""}catch($e$$){return console.error($e$$),$next$$("Error create Virtual Payment ClientURL:"+($e$$.message||$e$$.error||$e$$))}else $obj$$.virtual_payment_client_url="";model.findOneAndUpdate({_id:$obj$$._id},{virtual_payment_client_url:$obj$$.virtual_payment_client_url},$e$$=>{$e$$&&console.log("error create Virtual Payment ClientURL",$e$$.message)})}"9"===$obj$$.trang_thai?(await transaction.deleteTrans({id_ct:$obj$$._id.toString()}),await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},
114
+ "Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng"),await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"})):(await createTransactionPayment($obj$$),createTransactionBonus($obj$$));await Evoucher.updateMany({id_ct_used:$obj$$._id.toString()},{id_ct_used:null});$evouchers_user$$=await Evoucher.find({id_ct_useds:$obj$$._id.toString()});await Promise.all($evouchers_user$$.map($e$$=>deleteEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>
115
+ updateEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.deleting=function($user$$,$obj$$,$next$$){$next$$(null,$obj$$)};$contr_router$$.deleted=async function($user$$,$obj$$,$next$$){await transaction.deleteTrans({id_ct:$obj$$._id.toString()});await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng");await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"});$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>
116
+ deleteEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.view=function($user$$,$items$$,$fn$$){async.series({app:function($callback$$){$items$$.filter($item$$=>$item$$.id_app).joinModel2(null,App,[{where:{id_app:"_id"},fields:{name_app:"name"}}],function(){$callback$$()})},kh:function($callback$$){$items$$.filter($item$$=>$item$$.ma_kh).joinModel2(null,customer,[{where:$item$$=>({id_app:$item$$.id_app,ma_kh:$item$$.ma_kh}),fields:"ten_kh"}],function(){$callback$$()})},
117
+ nhan_vien_giao_hang:function($callback$$){$items$$.filter($item$$=>$item$$.nhan_vien_giao_hang).joinModel2(null,customer,[{where:{nhan_vien_giao_hang:"ma_kh"},fields:[{ten_nhan_vien_giao_hang:"ten_kh"}]}],function(){$callback$$()})},nv_giao_hang:function($callback$$){$items$$.filter($item$$=>$item$$.user_nv_giao_hang).joinModel2(null,User,{where:{user_nv_giao_hang:"email"},fields:{ten_nv_giao_hang:"name"}},function(){$callback$$()})},kho:function($callback$$){$items$$.filter($item$$=>$item$$.ma_kho).joinModel2(null,
118
+ dmkho,[{where:$item$$=>({id_app:$item$$.id_app,ma_kho:$item$$.ma_kho}),fields:["ten_kho",{tk_cn_kho:"tk_cn"}]}],function(){$callback$$()})},trangthai:function($callback$$){$items$$.filter($item$$=>$item$$.trang_thai).joinModel2(null,trangthai,[{where:{trang_thai:"ma_trang_thai",ma_ct:"ma_ct"},fields:["ten_trang_thai","color"]}],function(){$callback$$()})},ptthanhtoan:function($callback$$){$items$$.filter($item$$=>$item$$.pt_thanh_toan).joinModel2(null,ptthanhtoan,[{where:$item$$=>({_id:$item$$.pt_thanh_toan,
119
+ id_app:$item$$.id_app}),fields:[{ten_pt_thanh_toan:"ten"},{tk_cn_thanhtoan:"tk_cn"}]}],function(){$callback$$()})},pt1:function($callback$$){$items$$.joinModel2(null,pt1,[{where:$item$$=>({id_app:$item$$.id_app,id_so1:"_id"}),fields:[{id_pt1:"_id"},{so_ct_pt1:"so_ct"},{ma_ct_pt1:"ma_ct"},{ngay_ct_pt1:"ngay_ct"}]}],function(){$callback$$()})},t_tien:function($callback$$){$items$$.filter($item$$=>$item$$.details).forEach(function($r$$){$r$$.tien_phi_vc=$r$$.tien_phi_vc||0;$r$$.tien_freeship=$r$$.tien_freeship||
120
+ 0;$r$$.details?($r$$.t_sl=$r$$.details.csum("sl_xuat"),$r$$.t_tien_hang=$r$$.details.csum("tien_hang"),$r$$.t_tien_hang_nt=$r$$.details.csum("tien_hang_nt"),$r$$.t_tien=$r$$.t_tien_hang-$r$$.details.csum("tien_ck"),$r$$.t_tien_nt=$r$$.t_tien_hang_nt-$r$$.details.csum("tien_ck_nt"),$r$$.t_ck_nt=$r$$.t_ck=$r$$.tien_ck_hd+($r$$.tien_evoucher||0)):($r$$.t_sl=0,$r$$.t_tien_hang=0,$r$$.t_tien_hang_nt=0,$r$$.t_ck=0,$r$$.t_ck_nt=0,$r$$.t_tien=$r$$.t_tien_hang,$r$$.t_tien_nt=$r$$.t_tien_hang_nt);$r$$.ctcpbhs?
121
+ ($r$$.t_cp_cpb_nt=$r$$.ctcpbhs.csum("tien_cp_nt"),$r$$.t_cp_cpb=$r$$.ctcpbhs.csum("tien_cp")):($r$$.t_cp_cpb_nt=0,$r$$.t_cp_cpb=0);$r$$.t_tt=$r$$.t_tt_nt=Math.max(0,$r$$.t_tien_nt+$r$$.t_cp_cpb_nt-$r$$.t_ck_nt-($r$$.tt_tien_thuong||0)+($r$$.tien_phi_vc||0)-($r$$.tien_freeship||0))});$callback$$()},details_vt:function($callback$$){async.each($items$$,function($r$$,$callback1$$){const $details$$=$r$$.details;if(!$details$$)return $callback1$$();$details$$.joinModel2(null,dmvt,[{where:$item$$=>({id_app:$r$$.id_app,
122
+ ma_vt:$item$$.ma_vt}),fields:"ten_vt ten_vt_eng picture chieu_cao chieu_rong chieu_sau trong_luong".split(" ")}],function(){$callback1$$()})},function(){$callback$$()})},details_tt1:function($callback$$){async.mapSeries($items$$,function($r$$,$callback1$$){$r$$.details.filter($item$$=>$item$$.ma_tt1).joinModel2(null,dmtt,[{where:$item$$=>({id_app:$r$$.id_app,ma_vt:$item$$.ma_vt,ma_tt1:$item$$.ma_tt1}),setFields:($item$$,$ref$$)=>{$item$$.ten_vt=$item$$.ten_vt+" - "+$ref$$.ten_tt}}],function(){$callback1$$()})},
123
+ function(){$callback$$()})},details_dt:function($callback$$){async.mapSeries($items$$,function($r$$,$callback1$$){const $details$$=$r$$.details;if(!$details$$)return $callback1$$();$details$$.filter($item$$=>$item$$.ma_dt).joinModel2(null,dmdt,[{where:$item$$=>({id_app:$r$$.id_app,ma_dt:$item$$.ma_dt}),fields:["ten_dt"]}],function(){$callback1$$()})},function(){$callback$$()})},details_contract:function($callback$$){async.mapSeries($items$$,function($r$$,$callback1$$){const $details$$=$r$$.details;
124
+ if(!$details$$)return $callback1$$();$details$$.filter($item$$=>$item$$.ma_hd).joinModel2(null,contract,[{where:$item$$=>({id_app:$r$$.id_app,so_hd:$item$$.ma_hd}),fields:["ten_hd"]}],function(){$callback1$$()})},function(){$callback$$()})},details_phi:function($callback$$){async.mapSeries($items$$,function($r$$,$callback1$$){const $details$$=$r$$.details;if(!$details$$)return $callback1$$();$details$$.filter($item$$=>$item$$.ma_phi).joinModel2(null,dmphi,[{where:$item$$=>({id_app:$r$$.id_app,ma_phi:$item$$.ma_phi}),
125
+ fields:["ten_phi"]}],function(){$callback1$$()})},function(){$callback$$()})},details_cpbh:function($callback$$){async.each($items$$,function($r$$,$callback1$$){let $ctcpbhs$$=$r$$.ctcpbhs;if(!$ctcpbhs$$)return $callback1$$();$ctcpbhs$$?$ctcpbhs$$.filter($item$$=>$item$$.ma_cp).joinModel2(null,dmcpmh,[{where:$item$$=>({id_app:$r$$.id_app,ma_cp:$item$$.ma_cp}),fields:["ten_cp"]}],function(){$callback1$$()}):$callback1$$()},function(){$callback$$()})}},function(){$fn$$(null,$items$$)})}};
@@ -34,16 +34,16 @@ $option$$.tk_tien,$error$jscomp$2_tt_tt$$.tien_nt=$obj$$.tt_tien_thuong||0,$erro
34
34
  0),$error$jscomp$2_tt_tt$$.tien=$error$jscomp$2_tt_tt$$.tien_nt,$error$jscomp$2_tt_tt$$.ma_kh_no=$obj$$.ma_kh,$error$jscomp$2_tt_tt$$.ma_kh_co=$option$$.ma_kh,$error$jscomp$2_tt_tt$$.check_balance=!1,$details$$.push($error$jscomp$2_tt_tt$$);(new PostSocai($obj$$,$details$$)).run(function($e$$,$rs$$){$callback$$($e$$,$rs$$)})})}},function($e$$,$rs$$){$fn$$($e$$,$rs$$)})};$contr_router$$.creating=async function($user$$,$obj$$,$next$$){$obj$$.details||($obj$$.details=[]);delete $obj$$.virtual_payment_client_url;
35
35
  if(!$obj$$.ma_kh){let $cust$$=await global.getModel("customer").findOne({id_app:$user$$.current_id_app,of_user:$user$$.email},{ma_kh:1,ten_kh:1}).lean();$cust$$&&($obj$$.ma_kh=$cust$$.ma_kh)}valid($user$$,$obj$$,async $error$$=>{if($error$$)return $next$$($error$$);if(!$obj$$.paymentByPoints)return $next$$(null,$obj$$);try{let $detail_buy_coins$$=$obj$$.details.filter($d$$=>$d$$.is_coin&&!$d$$.transferred&&$d$$.wallet_receiver).asyncGroupBy(["ma_vt"],["sl_xuat"]);if(1==$detail_buy_coins$$.length&&
36
36
  await getWalletBalanceOfApp($user$$.current_id_app,$detail_buy_coins$$[0].ma_vt.toLowerCase())<$detail_buy_coins$$[0].sl_xuat)return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 n\u1ea1p ti\u1ec1n th\u1eddi gian n\u00e0y. Hay th\u1eed l\u1ea1i sau");if(1<$detail_buy_coins$$.length)return $next$$("M\u1ed7i l\u1ea7n ch\u1ec9 \u0111\u01b0\u1ee3c mua m\u1ed9t lo\u1ea1i coin");if(await getPointBalance($user$$.current_id_app,$user$$.email)<$obj$$.paymentByPoints)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 \u0111\u1ee7 \u0111i\u1ec3m \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y.");
37
- $next$$(null,$obj$$)}catch($e$$){$next$$($e$$.message)}})};$contr_router$$.created=async function($user$$,$obj$$,$next$$){if($obj$$.pt_thanh_toan&&global.mongoose.Types.ObjectId.isValid($obj$$.pt_thanh_toan))try{const $pt_thanh_toan$$=await global.getModel("ptthanhtoan").findOne({_id:$obj$$.pt_thanh_toan});if($pt_thanh_toan$$.payment_service){let $paymentServiceModel$$=global.getModel($pt_thanh_toan$$.payment_service);$obj$$.amount=$obj$$.t_tt_nt-($obj$$.tien_paymentByPoints||0);console.log("payment by",
38
- $pt_thanh_toan$$.payment_service,$obj$$.amount);if($obj$$.amount){let $virtual_payment_client_url$$=await $paymentServiceModel$$.createVirtualPaymentClientURL($obj$$,$user$$.clientIp,$pt_thanh_toan$$);$obj$$.virtual_payment_client_url=$virtual_payment_client_url$$;$obj$$.payment_service=$pt_thanh_toan$$.payment_service;$obj$$.payment_id=((await $paymentServiceModel$$.findOne({id_ct:$obj$$._id.toString()})||{})._id||"").toString()}else $obj$$.virtual_payment_client_url="",$obj$$.payment_service="",
39
- $obj$$.payment_id=""}else $obj$$.virtual_payment_client_url=""}catch($e$$){return console.error($e$$),$next$$("Kh\u00f4ng tao li\u00ean k\u1ebft thanh to\u00e1n:"+($e$$.message||$e$$.error||$e$$))}else console.log("Chua nhap phuong thuc thanh toan"),$obj$$.virtual_payment_client_url="";model.findOneAndUpdate({_id:$obj$$._id},{virtual_payment_client_url:$obj$$.virtual_payment_client_url},$e$$=>{$e$$&&(console.error($e$$),console.log("error create Virtual Payment ClientURL",$e$$.message))});await createTransactionPayment($obj$$);
37
+ $next$$(null,$obj$$)}catch($e$$){$next$$($e$$.message)}})};$contr_router$$.created=async function($user$$,$obj$$,$next$$){if($obj$$.pt_thanh_toan&&global.mongoose.Types.ObjectId.isValid($obj$$.pt_thanh_toan))try{const $pt_thanh_toan$$=await global.getModel("ptthanhtoan").findOne({_id:$obj$$.pt_thanh_toan});if($pt_thanh_toan$$.payment_service){let $paymentServiceModel$$=global.getModel($pt_thanh_toan$$.payment_service);$obj$$.amount=$obj$$.t_tt_nt-($obj$$.tien_paymentByPoints||0);if($obj$$.amount&&
38
+ $paymentServiceModel$$.createVirtualPaymentClientURL){let $virtual_payment_client_url$$=await $paymentServiceModel$$.createVirtualPaymentClientURL($obj$$,$user$$.clientIp,$pt_thanh_toan$$);$obj$$.virtual_payment_client_url=$virtual_payment_client_url$$;$obj$$.payment_service=$pt_thanh_toan$$.payment_service;$obj$$.payment_id=((await $paymentServiceModel$$.findOne({id_ct:$obj$$._id.toString()})||{})._id||"").toString()}else $obj$$.virtual_payment_client_url="",$obj$$.payment_service="",$obj$$.payment_id=
39
+ ""}else $obj$$.virtual_payment_client_url=""}catch($e$$){return console.error($e$$),$next$$("Kh\u00f4ng tao li\u00ean k\u1ebft thanh to\u00e1n:"+($e$$.message||$e$$.error||$e$$))}else console.log("Chua nhap phuong thuc thanh toan"),$obj$$.virtual_payment_client_url="";model.findOneAndUpdate({_id:$obj$$._id},{virtual_payment_client_url:$obj$$.virtual_payment_client_url},$e$$=>{$e$$&&(console.error($e$$),console.log("error create Virtual Payment ClientURL",$e$$.message))});await createTransactionPayment($obj$$);
40
40
  await createTransactionBonus($obj$$);$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>updateEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.updating=async($user$$,$data$$,$obj$$,$next$$)=>{$data$$.pt_thanh_toan&&$data$$.pt_thanh_toan!=$obj$$.pt_thanh_toan&&($data$$.virtual_payment_client_url="",$data$$.payment_service="",$data$$.payment_id="");valid($user$$,$data$$,async $detail_buy_coins$jscomp$1_error$$=>{if($detail_buy_coins$jscomp$1_error$$)return $next$$($detail_buy_coins$jscomp$1_error$$);
41
41
  if(($obj$$.paymentByPoints||0)!==($data$$.paymentByPoints||0))return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt s\u1ed1 \u0111i\u1ec3m thanh to\u00e1n.");$detail_buy_coins$jscomp$1_error$$=$data$$.details.filter($d$$=>$d$$.is_coin&&!$d$$.transferred&&$d$$.wallet_receiver).asyncGroupBy(["ma_vt"],["sl_xuat"]);if(1==$detail_buy_coins$jscomp$1_error$$.length&&await getWalletBalanceOfApp($user$$.current_id_app,$detail_buy_coins$jscomp$1_error$$[0].ma_vt.toLowerCase())<$detail_buy_coins$jscomp$1_error$$[0].sl_xuat)return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 n\u1ea1p ti\u1ec1n th\u1eddi gian n\u00e0y. Hay th\u1eed l\u1ea1i sau");
42
42
  if(1<$detail_buy_coins$jscomp$1_error$$.length)return $next$$("M\u1ed7i l\u1ea7n ch\u1ec9 \u0111\u01b0\u1ee3c mua m\u1ed9t lo\u1ea1i coin");await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"});$next$$(null,$data$$,$obj$$)},$obj$$)};$contr_router$$.updated=async function($evouchers_user$$,$obj$$,$next$$){if(!$obj$$.virtual_payment_client_url&&("1"===$obj$$.trang_thai||"0"===$obj$$.trang_thai)){if($obj$$.pt_thanh_toan&&global.mongoose.Types.ObjectId.isValid($obj$$.pt_thanh_toan))try{const $pt_thanh_toan$$=
43
- await global.getModel("ptthanhtoan").findOne({_id:$obj$$.pt_thanh_toan});if($pt_thanh_toan$$.payment_service){let $paymentServiceModel$$=global.getModel($pt_thanh_toan$$.payment_service);$obj$$.amount=$obj$$.t_tt_nt-($obj$$.tien_paymentByPoints||0);if($obj$$.amount){let $virtual_payment_client_url$$=await $paymentServiceModel$$.createVirtualPaymentClientURL($obj$$,$evouchers_user$$.clientIp,$pt_thanh_toan$$);$obj$$.virtual_payment_client_url=$virtual_payment_client_url$$;$obj$$.payment_service=$pt_thanh_toan$$.payment_service;
44
- $obj$$.payment_id=((await $paymentServiceModel$$.findOne({id_ct:$obj$$._id.toString()})||{})._id||"").toString()}else $obj$$.virtual_payment_client_url="",$obj$$.payment_service="",$obj$$.payment_id=""}else $obj$$.virtual_payment_client_url=""}catch($e$$){return console.error($e$$),$next$$("Error create Virtual Payment ClientURL:"+($e$$.message||$e$$.error||$e$$))}else $obj$$.virtual_payment_client_url="";model.findOneAndUpdate({_id:$obj$$._id},{virtual_payment_client_url:$obj$$.virtual_payment_client_url},
45
- $e$$=>{$e$$&&console.log("error create Virtual Payment ClientURL",$e$$.message)})}"9"===$obj$$.trang_thai?(await transaction.deleteTrans({id_ct:$obj$$._id.toString()}),await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng"),await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"})):(await createTransactionPayment($obj$$),createTransactionBonus($obj$$));await Evoucher.updateMany({id_ct_used:$obj$$._id.toString()},{id_ct_used:null});
46
- $evouchers_user$$=await Evoucher.find({id_ct_useds:$obj$$._id.toString()});await Promise.all($evouchers_user$$.map($e$$=>deleteEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>updateEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.deleting=function($user$$,$obj$$,$next$$){$next$$(null,$obj$$)};$contr_router$$.deleted=async function($user$$,$obj$$,$next$$){await transaction.deleteTrans({id_ct:$obj$$._id.toString()});
43
+ await global.getModel("ptthanhtoan").findOne({_id:$obj$$.pt_thanh_toan});if($pt_thanh_toan$$.payment_service){let $paymentServiceModel$$=global.getModel($pt_thanh_toan$$.payment_service);$obj$$.amount=$obj$$.t_tt_nt-($obj$$.tien_paymentByPoints||0);if($obj$$.amount&&$paymentServiceModel$$.createVirtualPaymentClientURL){let $virtual_payment_client_url$$=await $paymentServiceModel$$.createVirtualPaymentClientURL($obj$$,$evouchers_user$$.clientIp,$pt_thanh_toan$$);$obj$$.virtual_payment_client_url=$virtual_payment_client_url$$;
44
+ $obj$$.payment_service=$pt_thanh_toan$$.payment_service;$obj$$.payment_id=((await $paymentServiceModel$$.findOne({id_ct:$obj$$._id.toString()})||{})._id||"").toString()}else $obj$$.virtual_payment_client_url="",$obj$$.payment_service="",$obj$$.payment_id=""}else $obj$$.virtual_payment_client_url=""}catch($e$$){return console.error($e$$),$next$$("Error create Virtual Payment ClientURL:"+($e$$.message||$e$$.error||$e$$))}else $obj$$.virtual_payment_client_url="";model.findOneAndUpdate({_id:$obj$$._id},
45
+ {virtual_payment_client_url:$obj$$.virtual_payment_client_url},$e$$=>{$e$$&&console.log("error create Virtual Payment ClientURL",$e$$.message)})}"9"===$obj$$.trang_thai?(await transaction.deleteTrans({id_ct:$obj$$._id.toString()}),await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng"),await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"})):(await createTransactionPayment($obj$$),createTransactionBonus($obj$$));await Evoucher.updateMany({id_ct_used:$obj$$._id.toString()},
46
+ {id_ct_used:null});$evouchers_user$$=await Evoucher.find({id_ct_useds:$obj$$._id.toString()});await Promise.all($evouchers_user$$.map($e$$=>deleteEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>updateEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.deleting=function($user$$,$obj$$,$next$$){$next$$(null,$obj$$)};$contr_router$$.deleted=async function($user$$,$obj$$,$next$$){await transaction.deleteTrans({id_ct:$obj$$._id.toString()});
47
47
  await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng");await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"});$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>deleteEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.view=async function($user$$,$items$$,$fn$$){let $id_app$$=$user$$.current_id_app;await Promise.all($items$$.filter($item$$=>"0"==$item$$.trang_thai||"2"==$item$$.trang_thai||
48
48
  "7"==$item$$.trang_thai).map($inv$$=>(async()=>{let $tg_hien_tai$$=(new Date).getTime(),$tg_tao$$=(new Date($inv$$.date_created)).getTime();1<($tg_hien_tai$$-$tg_tao$$)/864E5&&($inv$$.trang_thai="9",await model.findOneAndUpdate({_id:$inv$$._id},{trang_thai:9}))})()));async.series({kh:function($callback$$){$items$$.filter($item$$=>$item$$.ma_kh).joinModel2($id_app$$,customer,[{where:"ma_kh",fields:"ten_kh"}],function(){$callback$$()})},nhan_vien_giao_hang:function($callback$$){$items$$.filter($item$$=>
49
49
  $item$$.nhan_vien_giao_hang).joinModel2($id_app$$,customer,[{where:{nhan_vien_giao_hang:"ma_kh"},fields:[{ten_nhan_vien_giao_hang:"ten_kh"}]}],function(){$callback$$()})},nv_giao_hang:function($callback$$){$items$$.filter($item$$=>$item$$.user_nv_giao_hang).joinModel2(null,User,{where:{user_nv_giao_hang:"email"},fields:{ten_nv_giao_hang:"name"}},function(){$callback$$()})},trangthai:function($callback$$){$items$$.filter($item$$=>$item$$.trang_thai).joinModel2(null,trangthai,[{where:{trang_thai:"ma_trang_thai",
@@ -1,8 +1,9 @@
1
1
  'use strict';const _global=require("../global"),Endpoint=global.getModel("endpoint"),Payload=global.getModel("payload"),{Expo}=require("expo-server-sdk"),{parentPort,workerData}=require("worker_threads"),redis=require("redis");global.clientRedis=redis.createClient();const prototypes=require("../libs/prototypes.js");let connect2Db=!1;
2
- const pustNotify=async($configs_msg_number_notifi_vapidKeys$$,$callback$$)=>{const {email:$email$$,data:$data$$,event:$event$$}=$configs_msg_number_notifi_vapidKeys$$;$configs_msg_number_notifi_vapidKeys$$=$configs_msg_number_notifi_vapidKeys$$.configs||global.configs||require("../configs");connect2Db||(mongoose.connect($configs_msg_number_notifi_vapidKeys$$.database.url,{useNewUrlParser:!0}),{vapidKeys:$configs_msg_number_notifi_vapidKeys$$}=$configs_msg_number_notifi_vapidKeys$$,$configs_msg_number_notifi_vapidKeys$$?
3
- webPush.setVapidDetails("mailto:invncur@gmail.com",$configs_msg_number_notifi_vapidKeys$$.publicKey,$configs_msg_number_notifi_vapidKeys$$.privateKey):console.log("use webPush tool to create a vapidKeys and add to configs file. ex: web-push generate-vapid-key --json"),connect2Db=!0);$data$$.title&&($data$$.title=$data$$.title.replace(/<[^>]*>?/gm,""));$data$$.body&&($data$$.body=$data$$.body.replace(/<[^>]*>?/gm,""));$configs_msg_number_notifi_vapidKeys$$=await global.asyncCountNotifications($email$$);
4
- let $number_message$$=await global.asyncCountUnRead($email$$),$badge$$=$configs_msg_number_notifi_vapidKeys$$+$number_message$$;Endpoint.find({user:$email$$}).limit(5).sort({date_create:-1}).lean().exec(async function($e$$,$eps$$){if($eps$$&&0<$eps$$.length){let $expo$$=new Expo,$messages$$=[];$eps$$.forEach(function($ep$$){if(Expo.isExpoPushToken($ep$$.endpoint))$messages$$.push({to:$ep$$.endpoint,sound:"default",badge:$badge$$,title:$data$$.title,body:$data$$.body!==$data$$.title?$data$$.body:"",
5
- data:$data$$,channelId:$data$$.channel||"default"});else try{const $pushSubscription$$=JSON.parse($ep$$.endpoint);if($pushSubscription$$.endpoint){let $options$$={},$ep_id$$=Buffer.from($ep$$.endpoint).toString("base64");(new Payload({ep_id:$ep_id$$,endpoint:$ep$$.endpoint,user:$email$$,payload:JSON.stringify($data$$)})).save(function($e$jscomp$2$$){if($e$jscomp$2$$)return console.error($e$jscomp$2$$);webPush.sendNotification($pushSubscription$$,JSON.stringify($data$$),$options$$).then(function(){console.log("web push success",
6
- $email$$,$event$$)},function($e$jscomp$0$$){console.error("error web push:",$email$$,$event$$,$e$jscomp$0$$);Endpoint.deleteOne({endpoint:$ep$$.endpoint},$e$$=>{console.log("deleted error endpoint",{endpoint:$ep$$.endpoint},$e$$)})})})}else Endpoint.deleteOne({endpoint:$ep$$.endpoint},$e$$=>{console.log("deleted error endpoint",{endpoint:$ep$$.endpoint},$e$$)})}catch($e$jscomp$0$$){console.error($e$jscomp$0$$),Endpoint.deleteOne({endpoint:$ep$$.endpoint},$e$$=>{console.log("deleted error endpoint",
7
- {endpoint:$ep$$.endpoint},$e$$)})}});$messages$$.forEach($message$$=>{let $chunks$$=$expo$$.chunkPushNotifications([$message$$]),$tickets$$=[];(async()=>{for(let $chunk$$ of $chunks$$)try{console.log("mobile push",$email$$,$event$$);let $ticketChunk$$=await $expo$$.sendPushNotificationsAsync($chunk$$);0<$ticketChunk$$.length&&"error"===$ticketChunk$$[0].status&&console.error($ticketChunk$$,$message$$);$tickets$$.push(...$ticketChunk$$)}catch($error$$){console.error($error$$)}})()})}$callback$$()})};
8
- parentPort.on("message",async $msg$$=>{$msg$$?pustNotify($msg$$,function($e$$){parentPort.postMessage({error:$e$$})}):parentPort.postMessage({error:"msg is not valid"})});workerData&&workerData.email&&workerData.data&&workerData.event&&pustNotify(workerData,function($e$$){parentPort.postMessage({error:$e$$})});
2
+ const pustNotify=async($configs_msg_number_notifi_query_endpoint_vapidKeys$$,$callback$$)=>{const {email:$email$$,data:$data$$,event:$event$$}=$configs_msg_number_notifi_query_endpoint_vapidKeys$$;$configs_msg_number_notifi_query_endpoint_vapidKeys$$=$configs_msg_number_notifi_query_endpoint_vapidKeys$$.configs||global.configs||require("../configs");connect2Db||(mongoose.connect($configs_msg_number_notifi_query_endpoint_vapidKeys$$.database.url,{useNewUrlParser:!0}),{vapidKeys:$configs_msg_number_notifi_query_endpoint_vapidKeys$$}=
3
+ $configs_msg_number_notifi_query_endpoint_vapidKeys$$,$configs_msg_number_notifi_query_endpoint_vapidKeys$$?webPush.setVapidDetails("mailto:invncur@gmail.com",$configs_msg_number_notifi_query_endpoint_vapidKeys$$.publicKey,$configs_msg_number_notifi_query_endpoint_vapidKeys$$.privateKey):console.log("use webPush tool to create a vapidKeys and add to configs file. ex: web-push generate-vapid-key --json"),connect2Db=!0);$data$$.title&&($data$$.title=$data$$.title.replace(/<[^>]*>?/gm,""));$data$$.body&&
4
+ ($data$$.body=$data$$.body.replace(/<[^>]*>?/gm,""));$configs_msg_number_notifi_query_endpoint_vapidKeys$$=await global.asyncCountNotifications($email$$);let $number_message$$=await global.asyncCountUnRead($email$$),$badge$$=$configs_msg_number_notifi_query_endpoint_vapidKeys$$+$number_message$$;$configs_msg_number_notifi_query_endpoint_vapidKeys$$={user:$email$$,id_app:{$in:[$data$$.id_app,void 0,null,""]}};console.log("query endpoint",$configs_msg_number_notifi_query_endpoint_vapidKeys$$);Endpoint.find($configs_msg_number_notifi_query_endpoint_vapidKeys$$).limit(5).sort({date_create:-1}).lean().exec(async function($e$$,
5
+ $eps$$){if($eps$$&&0<$eps$$.length){let $expo$$=new Expo,$messages$$=[];$eps$$.forEach(function($ep$$){if(Expo.isExpoPushToken($ep$$.endpoint))$messages$$.push({to:$ep$$.endpoint,sound:"default",badge:$badge$$,title:$data$$.title,body:$data$$.body!==$data$$.title?$data$$.body:"",data:$data$$,channelId:$data$$.channel||"default"});else try{const $pushSubscription$$=JSON.parse($ep$$.endpoint);if($pushSubscription$$.endpoint){let $options$$={},$ep_id$$=Buffer.from($ep$$.endpoint).toString("base64");
6
+ (new Payload({ep_id:$ep_id$$,endpoint:$ep$$.endpoint,user:$email$$,payload:JSON.stringify($data$$)})).save(function($e$jscomp$2$$){if($e$jscomp$2$$)return console.error($e$jscomp$2$$);webPush.sendNotification($pushSubscription$$,JSON.stringify($data$$),$options$$).then(function(){console.log("web push success",$email$$,$event$$)},function($e$jscomp$0$$){console.error("error web push:",$email$$,$event$$,$e$jscomp$0$$);Endpoint.deleteOne({endpoint:$ep$$.endpoint},$e$$=>{console.log("deleted error endpoint",
7
+ {endpoint:$ep$$.endpoint},$e$$)})})})}else Endpoint.deleteOne({endpoint:$ep$$.endpoint},$e$$=>{console.log("deleted error endpoint",{endpoint:$ep$$.endpoint},$e$$)})}catch($e$jscomp$0$$){console.error($e$jscomp$0$$),Endpoint.deleteOne({endpoint:$ep$$.endpoint},$e$$=>{console.log("deleted error endpoint",{endpoint:$ep$$.endpoint},$e$$)})}});$messages$$.forEach($message$$=>{let $chunks$$=$expo$$.chunkPushNotifications([$message$$]),$tickets$$=[];(async()=>{for(let $chunk$$ of $chunks$$)try{console.log("mobile push",
8
+ $email$$,$event$$);let $ticketChunk$$=await $expo$$.sendPushNotificationsAsync($chunk$$);0<$ticketChunk$$.length&&"error"===$ticketChunk$$[0].status&&console.error($ticketChunk$$,$message$$);$tickets$$.push(...$ticketChunk$$)}catch($error$$){console.error($error$$)}})()})}$callback$$()})};parentPort.on("message",async $msg$$=>{$msg$$?pustNotify($msg$$,function($e$$){parentPort.postMessage({error:$e$$})}):parentPort.postMessage({error:"msg is not valid"})});
9
+ workerData&&workerData.email&&workerData.data&&workerData.event&&pustNotify(workerData,function($e$$){parentPort.postMessage({error:$e$$})});