flexbiz-server 12.2.2 → 12.2.3

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.
Files changed (57) hide show
  1. package/package.json +2 -2
  2. package/server/app.js +14 -14
  3. package/server/auths/local.js +3 -3
  4. package/server/cluster.js +12 -11
  5. package/server/controllers/controller.js +37 -34
  6. package/server/data/sys/listinfo.js +80395 -78085
  7. package/server/data/sys/reportinfo.js +8826 -8826
  8. package/server/data/sys/trangthai.js +10348 -10229
  9. package/server/libs/getGiaban.js +21 -21
  10. package/server/libs/permission.js +12 -12
  11. package/server/libs/prototypes.js +3 -3
  12. package/server/libs/tinhgiatb.js +16 -19
  13. package/server/models/customer.js +9 -5
  14. package/server/models/dh2.js +9 -7
  15. package/server/models/dmbp.js +7 -4
  16. package/server/models/dmgiaban.js +6 -6
  17. package/server/models/dmhoahonghd.js +5 -5
  18. package/server/models/dmnvt.js +3 -3
  19. package/server/models/dmvt.js +9 -9
  20. package/server/models/ecomcategories.js +2 -2
  21. package/server/models/ecomcategories_cty.js +3 -0
  22. package/server/models/group.js +4 -4
  23. package/server/models/hd2.js +9 -6
  24. package/server/models/listinfo.js +15 -8
  25. package/server/models/originimportid.js +1 -0
  26. package/server/models/so1.js +15 -13
  27. package/server/models/socai.js +3 -1
  28. package/server/models/task.js +4 -4
  29. package/server/models/tontucthoi.js +2 -2
  30. package/server/models/usergroup.js +4 -4
  31. package/server/modules/lists/ls-asskey.js +34 -34
  32. package/server/modules/lists/ls-customer.js +14 -7
  33. package/server/modules/lists/ls-dmbp.js +7 -3
  34. package/server/modules/lists/ls-dmnkh.js +5 -1
  35. package/server/modules/lists/ls-dmnvt.js +5 -5
  36. package/server/modules/lists/ls-dmvt.js +15 -11
  37. package/server/modules/lists/ls-ecomcategories.js +5 -0
  38. package/server/modules/lists/ls-ecomcategories_cty.js +5 -0
  39. package/server/modules/lists/ls-file.js +21 -25
  40. package/server/modules/lists/ls-group.js +5 -1
  41. package/server/modules/lists/ls-introducecode.js +8 -7
  42. package/server/modules/lists/ls-introducer.js +16 -17
  43. package/server/modules/lists/ls-message2.js +8 -7
  44. package/server/modules/lists/ls-message2setting.js +4 -4
  45. package/server/modules/lists/ls-session.js +1 -1
  46. package/server/modules/lists/ls-task.js +18 -18
  47. package/server/modules/lists/ls-usergroup.js +6 -2
  48. package/server/modules/reports/calc-tinhgiatb.js +2 -2
  49. package/server/modules/reports/rp-congviectheonv.js +5 -5
  50. package/server/modules/reports/rp-thnxt.js +4 -3
  51. package/server/modules/reports/rp-thnxt_sl.js +3 -3
  52. package/server/modules/reports/rp-thnxttt.js +3 -3
  53. package/server/modules/vouchers/vo-dh2.js +38 -20
  54. package/server/modules/vouchers/vo-hd2.js +82 -50
  55. package/server/modules/vouchers/vo-so1.js +119 -120
  56. package/server/templates/reset mat khau.html +1 -1
  57. package/server/templates/reset mat khau.pug +1 -3
@@ -1,17 +1,21 @@
1
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
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
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
- 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
- $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
- $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$$);
11
- delete $condition$$.ma_vt2;$e$$=[...(new Set($rs$$.tt.concat($rs$$.vt)))];$condition$$.ma_vt={$in:$e$$};$callback$jscomp$0$$()})}else $callback$jscomp$0$$()},nhom:$callback$$=>{$condition$$.ma_nvt&&"object"!==typeof $condition$$.ma_nvt?getAllChildrenGroup($condition$$.ma_nvt).then($nh_vt$$=>{$condition$$.ma_nvt={$in:[...(new Set($nh_vt$$))]};$callback$$()}):$callback$$()},danhmuc:$callback$$=>{$condition$$.ma_danh_muc&&"object"!==typeof $condition$$.ma_danh_muc?getAllEcomcategories($condition$$.ma_danh_muc).then($nh_vt$$=>
12
- {$condition$$.ma_danh_muc={$in:[...(new Set($nh_vt$$))]};$callback$$()}):$callback$$()},discount:$callback$$=>{if($condition$$.has_discount){let $_q$$={};$condition$$.id_app&&($_q$$.id_app=$condition$$.id_app);var $hieu_luc_den_tu_ngay$$=moment().startOf("date").toDate();let $hieu_luc_tu$$={$lte:moment().endOf("date").toDate()};$hieu_luc_den_tu_ngay$$={$gte:$hieu_luc_den_tu_ngay$$};$_q$$.hieu_luc_tu=$hieu_luc_tu$$;$_q$$.hieu_luc_den=$hieu_luc_den_tu_ngay$$;$condition$$.ma_vt&&($_q$$.ma_vt=$condition$$.ma_vt);
13
- Dmchietkhau.find($_q$$,{ma_vt:1,ma_nvt:1}).lean().exec(($_ma_vt_e$$,$$or__ma_nvt_rs$$)=>{$$or__ma_nvt_rs$$&&($_ma_vt_e$$=$$or__ma_nvt_rs$$.filter($r$$=>$r$$.ma_vt).map($r$$=>$r$$.ma_vt),$$or__ma_nvt_rs$$=$$or__ma_nvt_rs$$.filter($r$$=>$r$$.ma_nvt&&!$r$$.ma_vt).map($r$$=>$r$$.ma_nvt),$$or__ma_nvt_rs$$=[{ma_vt:{$in:$_ma_vt_e$$}},{ma_nvt:{$in:$$or__ma_nvt_rs$$}}],$condition$$.$and?$condition$$.$and.push({$or:$$or__ma_nvt_rs$$}):$condition$$.$and=[{$or:$$or__ma_nvt_rs$$}]);$callback$$()})}else $callback$$()}},
14
- $e$$=>{if($e$$)return $next$$($e$$);delete $condition$$.has_discount;$next$$(null,$condition$$)})}});$contr_router$$.route();$contr_router$$.validating=($user$$,$obj$$,$next$$)=>{$obj$$.ma_vt?$next$$(null,$obj$$):counter.getNextSequence($user$$.current_id_app,"DMVT","ma_vt",function($error$$,$sequence$$){$error$$&&($sequence$$=0);$sequence$$=$sequence$$.toString();$obj$$.ma_vt="SP"+"00000000".substring(0,8-$sequence$$.length)+$sequence$$;$next$$(null,$obj$$)})};$contr_router$$.creating=async function($user$$,
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$$},getAllEcomcategories_cty=async $chil$jscomp$2_ma_danh_muc$jscomp$1_nh_vt_cons$$=>{let $rs$$=[$chil$jscomp$2_ma_danh_muc$jscomp$1_nh_vt_cons$$];$chil$jscomp$2_ma_danh_muc$jscomp$1_nh_vt_cons$$=
5
+ (await global.getModel("ecomcategories_cty").find({danh_muc_me:$chil$jscomp$2_ma_danh_muc$jscomp$1_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$2_ma_danh_muc$jscomp$1_nh_vt_cons$$.length&&($chil$jscomp$2_ma_danh_muc$jscomp$1_nh_vt_cons$$=await Promise.all($chil$jscomp$2_ma_danh_muc$jscomp$1_nh_vt_cons$$.map($nh$$=>getAllEcomcategories_cty($nh$$))),$chil$jscomp$2_ma_danh_muc$jscomp$1_nh_vt_cons$$=
6
+ $chil$jscomp$2_ma_danh_muc$jscomp$1_nh_vt_cons$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]),$rs$$=[...$chil$jscomp$2_ma_danh_muc$jscomp$1_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||1}`]=$item$$.ma_tt);$options$$&&$options$$.req&&$options$$.req.query&&($options$$.req.query.ma_kho&&($condition$$.ma_kho=$options$$.req.query.ma_kho),
7
+ $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),$options$$.req.query.offline&&($condition$$.offline=$options$$.req.query.offline),$options$$.req.query.so_luong&&($condition$$.so_luong=
8
+ $options$$.req.query.so_luong));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",
9
+ "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)})})};
10
+ 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.offline||($options$$.req.query.offline=
11
+ $condition$$.offline);$options$$.req.query.show_quantity_in_stock||($options$$.req.query.show_quantity_in_stock=$condition$$.show_quantity_in_stock);$options$$.req.query.ma_kho||($options$$.req.query.ma_kho=$condition$$.ma_kho);$options$$.req.query.ma_kh||($options$$.req.query.ma_kh=$condition$$.ma_kh);$options$$.req.query.ma_ban||($options$$.req.query.ma_ban=$condition$$.ma_ban);$options$$.req.query.nh_kh||($options$$.req.query.nh_kh=$condition$$.nh_kh);$options$$.req.query.so_luong||($options$$.req.query.so_luong=
12
+ $condition$$.so_luong);delete $condition$$.show_properties;delete $condition$$.by_user;delete $condition$$.show_quantity_in_stock;delete $condition$$.online;delete $condition$$.offline;delete $condition$$.ma_kho;delete $condition$$.ma_ban;delete $condition$$.ma_kh;delete $condition$$.nh_kh;delete $condition$$.so_luong;$condition$$.ma_vt&&"object"!=typeof $condition$$.ma_vt&&(delete $condition$$.ma_danh_muc_cty,delete $condition$$.ma_danh_muc);async.series({barcode:$callback$jscomp$0$$=>{if($condition$$.ma_vt2&&
13
+ !$condition$$.ma_vt&&$options$$&&$options$$.req&&$options$$.req.query&&$options$$.req.query.show_properties){if(underscore.isArray($condition$$.ma_vt2)&&0===$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},
14
+ {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$$);delete $condition$$.ma_vt2;$e$$=[...(new Set($rs$$.tt.concat($rs$$.vt)))];$condition$$.ma_vt={$in:$e$$};$callback$jscomp$0$$()})}else $callback$jscomp$0$$()},nhom:$callback$$=>{$condition$$.ma_nvt&&"object"!==typeof $condition$$.ma_nvt?getAllChildrenGroup($condition$$.ma_nvt).then($nh_vt$$=>{$condition$$.ma_nvt={$in:[...(new Set($nh_vt$$))]};
15
+ $callback$$()}):$callback$$()},danhmuc:$callback$$=>{$condition$$.ma_danh_muc&&"object"!==typeof $condition$$.ma_danh_muc?getAllEcomcategories($condition$$.ma_danh_muc).then($nh_vt$$=>{$condition$$.ma_danh_muc={$in:[...(new Set($nh_vt$$))]};$callback$$()}):$callback$$()},danhmuc_cty:$callback$$=>{$condition$$.ma_danh_muc_cty&&"object"!==typeof $condition$$.ma_danh_muc_cty?getAllEcomcategories_cty($condition$$.ma_danh_muc_cty).then($nh_vt$$=>{$condition$$.ma_danh_muc_cty={$in:[...(new Set($nh_vt$$))]};
16
+ $callback$$()}):$callback$$()},discount:$callback$$=>{if($condition$$.has_discount){let $_q$$={};$condition$$.id_app&&($_q$$.id_app=$condition$$.id_app);var $hieu_luc_den_tu_ngay$$=moment().startOf("date").toDate();let $hieu_luc_tu$$={$lte:moment().endOf("date").toDate()};$hieu_luc_den_tu_ngay$$={$gte:$hieu_luc_den_tu_ngay$$};$_q$$.hieu_luc_tu=$hieu_luc_tu$$;$_q$$.hieu_luc_den=$hieu_luc_den_tu_ngay$$;$condition$$.ma_vt&&($_q$$.ma_vt=$condition$$.ma_vt);Dmchietkhau.find($_q$$,{ma_vt:1,ma_nvt:1}).lean().exec(($_ma_vt_e$$,
17
+ $$or__ma_nvt_rs$$)=>{$$or__ma_nvt_rs$$&&($_ma_vt_e$$=$$or__ma_nvt_rs$$.filter($r$$=>$r$$.ma_vt).map($r$$=>$r$$.ma_vt),$$or__ma_nvt_rs$$=$$or__ma_nvt_rs$$.filter($r$$=>$r$$.ma_nvt&&!$r$$.ma_vt).map($r$$=>$r$$.ma_nvt),$$or__ma_nvt_rs$$=[{ma_vt:{$in:$_ma_vt_e$$}},{ma_nvt:{$in:$$or__ma_nvt_rs$$}}],$condition$$.$and?$condition$$.$and.push({$or:$$or__ma_nvt_rs$$}):$condition$$.$and=[{$or:$$or__ma_nvt_rs$$}]);$callback$$()})}else $callback$$()}},$e$$=>{if($e$$)return $next$$($e$$);delete $condition$$.has_discount;
18
+ $condition$$.$and&&0==$condition$$.$and.length&&delete $condition$$.$and;$next$$(null,$condition$$)})}});$contr_router$$.route();$contr_router$$.validating=($user$$,$obj$$,$next$$)=>{$obj$$.ma_vt?$next$$(null,$obj$$):counter.getNextSequence($user$$.current_id_app,"DMVT","ma_vt",function($error$$,$sequence$$){$error$$&&($sequence$$=0);$sequence$$=$sequence$$.toString();$obj$$.ma_vt="SP"+"00000000".substring(0,8-$sequence$$.length)+$sequence$$;$next$$(null,$obj$$)})};$contr_router$$.creating=async function($user$$,
15
19
  $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
20
  $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
21
  $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$$,
@@ -0,0 +1,5 @@
1
+ 'use strict';const model=global.getModel("ecomcategories"),controller=require("../../controllers/controller"),getSysorder=function($item$$,$callback$$){let $sysorder$$=$item$$._id.toString();$item$$.danh_muc_me?model.findOne({ma_danh_muc:$item$$.danh_muc_me,id_app:$item$$.id_app}).lean().exec(function($e$$,$item_me$$){$item_me$$?getSysorder($item_me$$,function($rs$$){$sysorder$$=$rs$$+"---"+$sysorder$$;$callback$$($sysorder$$)}):$callback$$($sysorder$$)}):$callback$$($sysorder$$)},group=function($contr_router$$){$contr_router$$=
2
+ new controller($contr_router$$,model,"ecomcategories",{sort:{sysorder:1},unique:["ma_danh_muc"]});$contr_router$$.route();$contr_router$$.deleting=function($user$$,$obj$$,$next$$){if(0===$obj$$.loai_nh)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a nh\u00f3m m\u1eb9"));$next$$(null,$obj$$)};$contr_router$$.created=function($user$$,$obj$$,$next$$){getSysorder($obj$$,function($rs$$){$obj$$.sysorder=$rs$$;$obj$$.bac=$rs$$.split("---").length;model.findOneAndUpdate({_id:$obj$$._id},
3
+ {$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:1}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.updated=function($user$$,$obj$$,$next$$){getSysorder($obj$$,async function($loai_nh_rs$$){$obj$$.sysorder=$loai_nh_rs$$;$obj$$.bac=$loai_nh_rs$$.split("---").length;$loai_nh_rs$$=1;await model.findOne({danh_muc_me:$obj$$.ma_danh_muc,id_app:$obj$$.id_app})&&($loai_nh_rs$$=0);$obj$$.loai_nh=$loai_nh_rs$$;model.findOneAndUpdate({_id:$obj$$._id},{$set:{bac:$obj$$.bac,
4
+ sysorder:$obj$$.sysorder,loai_nh:$loai_nh_rs$$}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.on("saved",function($obj$jscomp$0$$){const $danh_muc_me$$=$obj$jscomp$0$$.danh_muc_me;$danh_muc_me$$&&model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,ma_danh_muc:$danh_muc_me$$},{$set:{loai_nh:0}},function($error$$,$obj$$){$error$$?console.error($error$$):$obj$$?console.log("updated "+$obj$$.ma_danh_muc):console.log("Not found mother account:"+$danh_muc_me$$)})});
5
+ $contr_router$$.on("deleted",function($obj$jscomp$0$$){$obj$jscomp$0$$.danh_muc_me&&model.findOne({danh_muc_me:$obj$jscomp$0$$.danh_muc_me,id_app:$obj$jscomp$0$$.id_app},function($error$jscomp$0$$,$acc$$){$error$jscomp$0$$||$acc$$||model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,ma_danh_muc:$obj$jscomp$0$$.danh_muc_me},{$set:{loai_nh:1}},function($error$$,$obj$$){$error$$||$obj$$&&console.log("updated "+$obj$$.ma_danh_muc)})})})};module.exports=group;
@@ -0,0 +1,5 @@
1
+ 'use strict';const model=global.getModel("ecomcategories_cty"),controller=require("../../controllers/controller"),getSysorder=function($item$$,$callback$$){let $sysorder$$=$item$$._id.toString();$item$$.danh_muc_me?model.findOne({ma_danh_muc:$item$$.danh_muc_me,id_app:$item$$.id_app}).lean().exec(function($e$$,$item_me$$){$item_me$$?getSysorder($item_me$$,function($rs$$){$sysorder$$=$rs$$+"---"+$sysorder$$;$callback$$($sysorder$$)}):$callback$$($sysorder$$)}):$callback$$($sysorder$$)},group=function($contr_router$$){$contr_router$$=
2
+ new controller($contr_router$$,model,"ecomcategories_cty",{sort:{sysorder:1},unique:["ma_danh_muc"]});$contr_router$$.route();$contr_router$$.deleting=function($user$$,$obj$$,$next$$){if(0===$obj$$.loai_nh)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a nh\u00f3m m\u1eb9"));$next$$(null,$obj$$)};$contr_router$$.created=function($user$$,$obj$$,$next$$){getSysorder($obj$$,function($rs$$){$obj$$.sysorder=$rs$$;$obj$$.bac=$rs$$.split("---").length;model.findOneAndUpdate({_id:$obj$$._id},
3
+ {$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:1}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.updated=function($user$$,$obj$$,$next$$){getSysorder($obj$$,async function($loai_nh_rs$$){$obj$$.sysorder=$loai_nh_rs$$;$obj$$.bac=$loai_nh_rs$$.split("---").length;$loai_nh_rs$$=1;await model.findOne({danh_muc_me:$obj$$.ma_danh_muc,id_app:$obj$$.id_app})&&($loai_nh_rs$$=0);$obj$$.loai_nh=$loai_nh_rs$$;model.findOneAndUpdate({_id:$obj$$._id},{$set:{bac:$obj$$.bac,
4
+ sysorder:$obj$$.sysorder,loai_nh:$loai_nh_rs$$}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.on("saved",function($obj$jscomp$0$$){const $danh_muc_me$$=$obj$jscomp$0$$.danh_muc_me;$danh_muc_me$$&&model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,ma_danh_muc:$danh_muc_me$$},{$set:{loai_nh:0}},function($error$$,$obj$$){$error$$?console.error($error$$):$obj$$?console.log("updated "+$obj$$.ma_danh_muc):console.log("Not found mother account:"+$danh_muc_me$$)})});
5
+ $contr_router$$.on("deleted",function($obj$jscomp$0$$){$obj$jscomp$0$$.danh_muc_me&&model.findOne({danh_muc_me:$obj$jscomp$0$$.danh_muc_me,id_app:$obj$jscomp$0$$.id_app},function($error$jscomp$0$$,$acc$$){$error$jscomp$0$$||$acc$$||model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,ma_danh_muc:$obj$jscomp$0$$.danh_muc_me},{$set:{loai_nh:1}},function($error$$,$obj$$){$error$$||$obj$$&&console.log("updated "+$obj$$.ma_danh_muc)})})})};module.exports=group;
@@ -1,29 +1,25 @@
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"),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 "XL":case "FULLHD":$size$$=1080;$cache$$=!0;break;case "1440":case "2K":$size$$=1440;$cache$$=!0;break;default:try{$size$$=Number($_size_file_name_resize$$);if(isNaN($size$$)||!$size$$)$size$$=1080;$cache$$=!0}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$$)?
8
- {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$$}};
2
+ const sharp=require("sharp"),watermark=require("dynamic-watermark"),permission=require("../../libs/permission"),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",function($err$$){$reject$$($err$$.message)}).on("end",()=>{$resolve$$($fileOutput$$)}).run()}),setWaterMark4Image=async($app_info$$,
3
+ $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$$),$extension_root$$=path.dirname($extension_root$$),$extension_root$$=path.join($extension_root$$,"images"));
4
+ 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-$watermark_size$$-10,logoY:10,logoHeight:$watermark_size$$,logoWidth:$watermark_size$$}},function($status$$){1===
5
+ $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$$;if($_size_file_name_resize$$)switch($_size_file_name_resize$$.toString().toUpperCase()){case "64":case "X":$size$$=
6
+ 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 "XL":case "FULLHD":$size$$=1080;$cache$$=!0;break;case "1440":case "2K":$size$$=1440;$cache$$=!0;break;default:try{$size$$=Number($_size_file_name_resize$$);if(isNaN($size$$)||!$size$$)$size$$=1080;$cache$$=!0}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$$}};
9
8
  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
9
  $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
10
  $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{var $folder_text$$=await $extension$jscomp$2_root$$.recognize($file_name$jscomp$2_input_user$$,$config$$);$obj$$.text_from_image=$folder_text$$}catch($error$$){return console.error($error$$),
12
- $fn$$($error$$.message)}}}$obj$$.id_folder&&($folder_text$$=await global.getModel("folder").findOne({_id:$obj$$.id_folder}))&&($obj$$.update_right=$folder_text$$.update_right,$obj$$.delete_right=$folder_text$$.delete_right,$obj$$.visible_to=$folder_text$$.visible_to,$obj$$.visible_to_users=$folder_text$$.visible_to_users,$obj$$.visible_to_usergroups=$folder_text$$.visible_to_usergroups);$fn$$(null,$obj$$)};$contr$$.created=function($file_name$jscomp$3_user$$,$obj$$,$fn$$){if($obj$$.file&&$obj$$.file.name&&
13
- $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$$=__dirname,$extension$jscomp$3_input$jscomp$1_root$$=path.dirname($extension$jscomp$3_input$jscomp$1_root$$),$extension$jscomp$3_input$jscomp$1_root$$=
14
- 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$$),$output$$=path.join($output$$,"videos"));fs.existsSync($output$$)||fs.mkdirSync($output$$);
15
- $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$$.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$$=
16
- $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$$,function($e$$){$e$$&&console.error($e$$)});
17
- $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$$=path.dirname($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$),
18
- $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()),fs.existsSync($extension$jscomp$4_file_name$jscomp$4_output$jscomp$1_user$$)&&
19
- 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.split("-")[0];if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(400).send({error:"File ID kh\u00f4ng h\u1ee3p l\u1ec7"});let $size$$=$req$$.query.size||$req$$.query.resize||"FULLHD";app.findOne({_id:$req$$.user.current_id_app}).lean().exec(function($e$jscomp$0$$,
20
- $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$$||
21
- "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$$);
22
- 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,
23
- {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}));$error$jscomp$3_extension$$&&"webp"!=$error$jscomp$3_extension$$.format&&(console.log("convert ",$error$jscomp$3_extension$$.format,"to","webp","..."),
24
- $_gm$$=$_gm$$.webp({lossless:!1,quality:50,nearLossless:!0}));$_resize_conf$$.cache&&setImmediate(()=>{$_gm$$.toFile($_resize_conf$$.file_name_resize,$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$$,
25
- 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"})})})});$router$$.route("/:id_app/file/stream/:id/:file").get(function($req$$,$res$$){let $id$$=$req$$.params.id.split("-")[0];if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(400).send({error:"File ID kh\u00f4ng h\u1ee3p l\u1ec7"});app.findOne({_id:$req$$.user.current_id_app}).lean().exec(function($e$jscomp$0$$,$app_info$$){if($e$jscomp$0$$||
26
- !$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",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$$||
27
- "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)&&($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$$||
28
- ($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$$,"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$$);
29
- 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")},{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")})})})})};
11
+ $fn$$($error$$.message)}}}$obj$$.id_folder&&global.mongoose.Types.ObjectId.isValid($obj$$.id_folder)&&($folder_text$$=await global.getModel("folder").findOne({_id:$obj$$.id_folder}))&&($obj$$.update_right=$folder_text$$.update_right,$obj$$.delete_right=$folder_text$$.delete_right,$obj$$.visible_to=$folder_text$$.visible_to,$obj$$.visible_to_users=$folder_text$$.visible_to_users,$obj$$.visible_to_usergroups=$folder_text$$.visible_to_usergroups);$fn$$(null,$obj$$)};$contr$$.created=function($file_name$jscomp$3_user$$,
12
+ $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$$=__dirname,$extension$jscomp$3_input$jscomp$1_root$$=path.dirname($extension$jscomp$3_input$jscomp$1_root$$),
13
+ $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$$),$output$$=path.join($output$$,"videos"));
14
+ 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$$.route(function($router$$){$router$$.route("/:id_app/file/download/:id").get(function($req$$,
15
+ $res$$){let $id$$=$req$$.params.id.split("-")[0];if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(400).send({error:"File ID kh\u00f4ng h\u1ee3p l\u1ec7"});let $size$$=$req$$.query.size||$req$$.query.resize||"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$$);
16
+ $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$4_permission$$){if(!$_new_file_file_name$jscomp$4_permission$$)return $res$$.status(403).send({error:$error$jscomp$3_extension$$||"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$4_permission$$=$rs$$.file.name;$error$jscomp$3_extension$$=
17
+ $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$4_permission$$=path.join($root$$,$_new_file_file_name$jscomp$4_permission$$);if(fs.existsSync($_new_file_file_name$jscomp$4_permission$$))if(0<=["png","jpg","jpeg","webp"].indexOf($error$jscomp$3_extension$$)){$_new_file_file_name$jscomp$4_permission$$=await setWaterMark4Image($app_info$$,$_new_file_file_name$jscomp$4_permission$$,
18
+ $error$jscomp$3_extension$$,$req$$.query.recache);let $_resize_conf$$=await configResizeImage($size$$,$_new_file_file_name$jscomp$4_permission$$,$error$jscomp$3_extension$$,$req$$.query.recache);if($_resize_conf$$.exist)return sharp($_resize_conf$$.file_name_resize,{failOnError:!1}).pipe($res$$);let $_gm$$=sharp($_new_file_file_name$jscomp$4_permission$$,{failOnError:!1});($error$jscomp$3_extension$$=await $_gm$$.metadata())&&$_resize_conf$$.size&&$_resize_conf$$.size<$error$jscomp$3_extension$$.width&&
19
+ $_resize_conf$$.size<$error$jscomp$3_extension$$.height&&($_gm$$=$_gm$$.resize({width:$_resize_conf$$.size}));$error$jscomp$3_extension$$&&"webp"!=$error$jscomp$3_extension$$.format&&(console.log("convert ",$error$jscomp$3_extension$$.format,"to","webp","..."),$_gm$$=$_gm$$.webp({lossless:!1,quality:50,nearLossless:!0}));$_resize_conf$$.cache&&setImmediate(()=>{$_gm$$.toFile($_resize_conf$$.file_name_resize,$error$$=>{if($error$$)return console.error("save resize image:",$error$$.message);console.log("cache file",
20
+ $_resize_conf$$.file_name_resize)})});$_gm$$.pipe($res$$)}else $res$$.download($_new_file_file_name$jscomp$4_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"})})})});$router$$.route("/:id_app/file/stream/:id/:file").get(function($req$$,$res$$){let $id$$=$req$$.params.id.split("-")[0];
21
+ if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(400).send({error:"File ID kh\u00f4ng h\u1ee3p l\u1ec7"});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,
22
+ $contr$$.module,"view",async function($error$jscomp$5_file_name$jscomp$5_output$$,$file_permission$jscomp$2_root$$){if(!$file_permission$jscomp$2_root$$)return $res$$.status(403).send({error:$error$jscomp$5_file_name$jscomp$5_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$5_output$$=$rs$$.file.name;$file_permission$jscomp$2_root$$=$req$$.params.file;".ts"==$file_permission$jscomp$2_root$$.substr(-3)&&
23
+ ($error$jscomp$5_file_name$jscomp$5_output$$=$file_permission$jscomp$2_root$$);$file_permission$jscomp$2_root$$=configs.paths.videos;$file_permission$jscomp$2_root$$||($file_permission$jscomp$2_root$$=__dirname,$file_permission$jscomp$2_root$$=path.dirname($file_permission$jscomp$2_root$$),$file_permission$jscomp$2_root$$=path.dirname($file_permission$jscomp$2_root$$),$file_permission$jscomp$2_root$$=path.join($file_permission$jscomp$2_root$$,"videos"));$error$jscomp$5_file_name$jscomp$5_output$$=
24
+ path.join($file_permission$jscomp$2_root$$,$rs$$._id.toString(),$error$jscomp$5_file_name$jscomp$5_output$$);if(fs.existsSync($error$jscomp$5_file_name$jscomp$5_output$$)){const $readStream$$=fs.createReadStream($error$jscomp$5_file_name$jscomp$5_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")},{data:$rs$$,obj:$rs$$,notNeedRight:!$rs$$.id_link&&
25
+ !$rs$$.id_folder||$rs$$.shared}):$res$$.status(400).send("Kh\u00f4ng t\u00ecm th\u1ea5y file n\u00e0y")})})})})};
@@ -1 +1,5 @@
1
- 'use strict';const model=global.getModel("group"),controller=require("../../controllers/controller"),group=function($router$$){(new controller($router$$,model,"group",{sort:{group_name:1},findExact:{group_type:1}})).route()};module.exports=group;
1
+ 'use strict';const model=global.getModel("group"),controller=require("../../controllers/controller"),getSysorder=function($item$$,$callback$$){let $sysorder$$=$item$$._id.toString();$item$$.group_mother?model.findOne({_id:$item$$.group_mother}).lean().exec(function($e$$,$item_me$$){$item_me$$?getSysorder($item_me$$,function($rs$$){$sysorder$$=$rs$$+"---"+$sysorder$$;$callback$$($sysorder$$)}):$callback$$($sysorder$$)}):$callback$$($sysorder$$)},group=function($contr_router$$){$contr_router$$=new controller($contr_router$$,
2
+ model,"group",{sort:{sysorder:1},findExact:{group_type:1}});$contr_router$$.route();$contr_router$$.deleting=function($user$$,$obj$$,$next$$){if(0===$obj$$.loai_nh)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a nh\u00f3m m\u1eb9"));$next$$(null,$obj$$)};$contr_router$$.created=function($user$$,$obj$$,$next$$){getSysorder($obj$$,function($rs$$){$obj$$.sysorder=$rs$$;$obj$$.bac=$rs$$.split("---").length;model.findOneAndUpdate({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,
3
+ loai_nh:1}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.updated=function($user$$,$obj$$,$next$$){getSysorder($obj$$,async function($loai_nh_rs$$){$obj$$.sysorder=$loai_nh_rs$$;$obj$$.bac=$loai_nh_rs$$.split("---").length;$loai_nh_rs$$=1;await model.findOne({group_mother:$obj$$._id.toString()})&&($loai_nh_rs$$=0);$obj$$.loai_nh=$loai_nh_rs$$;model.findOneAndUpdate({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:$loai_nh_rs$$}},function($e$$){$e$$&&
4
+ console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.on("saved",function($obj$jscomp$0$$){const $group_mother$$=$obj$jscomp$0$$.group_mother;$group_mother$$&&model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,_id:$group_mother$$},{$set:{loai_nh:0}},function($error$$,$obj$$){$error$$?console.error($error$$):$obj$$?console.log("updated "+$obj$$._id):console.log("Not found mother account:"+$group_mother$$)})});$contr_router$$.on("deleted",function($obj$jscomp$0$$){$obj$jscomp$0$$.group_mother&&
5
+ model.findOne({group_mother:$obj$jscomp$0$$.group_mother},function($error$jscomp$0$$,$acc$$){$error$jscomp$0$$||$acc$$||model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,_id:$obj$jscomp$0$$.group_mother},{$set:{loai_nh:1}},function($error$$,$obj$$){$error$$||$obj$$&&console.log("updated "+$obj$$._id)})})})};module.exports=group;
@@ -1,8 +1,9 @@
1
1
  'use strict';const model=global.getModel("introducecode"),asskey=global.getModel("asskey"),controller=require("../../controllers/controller"),DIGITS="0123456789",User=global.getModel("user"),Introducer=global.getModel("introducer"),Trangthai=global.getModel("trangthai"),{DirectSecp256k1HdWallet}=require("@cosmjs/proto-signing");function generateCode(){let $OTP$$="";for(let $i$$=0;6>$i$$;$i$$++)$OTP$$+=DIGITS[Math.floor(10*Math.random())];return $OTP$$}
2
- module.exports=function($router$$){(new controller($router$$,model,"introducecode",{sort:{date_created:-1},notNeedRight:!0,unique:["introduce_code"],onView:async($user$$,$items$$,$next$$)=>{if(0===await model.countDocuments({user_created:$user$$.email,id_app:$user$$.current_id_app})){for(var $new_code_obj$$={user_created:$user$$.email,id_app:$user$$.current_id_app,so_lan_su_dung:0};;){var $code$$=generateCode();if(!await model.findOne({id_app:$user$$.current_id_app,introduce_code:$code$$})){$new_code_obj$$.introduce_code=
3
- $code$$;break}}$code$$=await asskey.findOne({user_created:$user$$.email,id_app:$user$$.current_id_app,wallet_type:1,asset:{$nin:["BTC","ETH"]}}).lean();if(!$code$$){$code$$=new asskey({user_created:$user$$.email,username:$user$$.email,id_app:$user$$.current_id_app,wallet_type:1});const $wallet$$=await DirectSecp256k1HdWallet.generate(24,{prefix:configs.ADDRESS_PREFIX});let $accounts$$=await $wallet$$.getAccounts();$code$$.address=$accounts$$[0].address;$code$$.mnemonic=$wallet$$.mnemonic;$code$$.name=
4
- "T\u00e0i kho\u1ea3n nh\u1eadn th\u01b0\u1edfng";$code$$.asset=configs.MAIN_DENOM;await $code$$.save();global.getModel("app").emitEvent($user$$.current_id_app,"blockchain.wallet.changed",{sender:$user$$.email},null,[$user$$.email],!1,!1)}$new_code_obj$$.wallet_address_receive_reward=$code$$.address;$new_code_obj$$=await model.create($new_code_obj$$);$items$$.push($new_code_obj$$)}await Promise.all($items$$.map($item$$=>(async()=>{$item$$.so_user_da_gioi_thieu=await global.getModel("introducer").countDocuments({id_app:$user$$.current_id_app,
5
- introduce_code:$item$$.introduce_code});const $so_lan_dau_tu$$=await global.getModel("assinvestment").find({id_app:$user$$.current_id_app,introduce_code:$item$$.introduce_code,trang_thai:{$in:["1","5","9"]}}).lean();$item$$.so_lan_dau_tu=$so_lan_dau_tu$$.length;$item$$.so_user_da_dau_tu=(await $so_lan_dau_tu$$.asyncGroupBy(["user_created"],["so_luong"])).length})()));await $items$$.asyncJoinModel2($user$$.current_id_app,Introducer,{where:"introduce_code",fields:["be_introduced",{be_introduced_date:"date_created"}]});
6
- await $items$$.asyncJoinModel2(null,User,{where:{be_introduced:"email"},fields:[{be_introduced_name:"name"}]});await $items$$.asyncJoinModel2(null,Trangthai,{where:$item$$=>({ma_trang_thai:$item$$.trang_thai,ma_ct:"INTRODUCECODE"}),fields:["ten_trang_thai","color"]});$next$$(null,$items$$)},onCreating:async($expiry_date_user$$,$data$$,$next$$)=>{if(0<await model.countDocuments({user_created:$expiry_date_user$$.email,id_app:$expiry_date_user$$.current_id_app}))return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 t\u1ea1o th\u00eam m\u00e3 g\u1edbi thi\u1ec7u m\u1edbi");
7
- if(!$data$$.introduce_code)for(;;){let $code$$=generateCode();if(!await model.findOne({id_app:$expiry_date_user$$.current_id_app,introduce_code:$code$$})){$data$$.introduce_code=$code$$;break}}$expiry_date_user$$=new Date;$expiry_date_user$$.setDate($expiry_date_user$$.getDate()+1825);$data$$.expiry_date=$expiry_date_user$$;$next$$(null,$data$$)},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{if($user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 s\u1eeda m\u00e3 gi\u1edbi thi\u1ec7u n\u00e0y");
8
- delete $data$$.introduce_code;delete $data$$.so_lan_su_dung;$next$$(null,$data$$,$obj$$)},onDeleting:async($obj$jscomp$21_user$$,$data$$,$next$$)=>{$obj$jscomp$21_user$$=await model.findOne({_id:$data$$._id});if(!$obj$jscomp$21_user$$||$obj$jscomp$21_user$$.so_lan_su_dung)return $next$$("Kh\u00f4ng th\u1ec3 xo\u00e1 m\u00e3 gi\u1edbi thi\u1ec7u n\u00e0y do \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng");$next$$(null,$data$$)}})).route()};
2
+ module.exports=function($router$$){(new controller($router$$,model,"introducecode",{sort:{date_created:-1},notNeedRight:!0,unique:["introduce_code"],onView:async($user$$,$items$$,$next$$)=>{if(0===await model.countDocuments({user_created:$user$$.email,id_app:$user$$.current_id_app}))try{const $obj$$={user_created:$user$$.email,id_app:$user$$.current_id_app,so_lan_su_dung:0};for(;;){let $code$$=generateCode();if(!await model.findOne({id_app:$user$$.current_id_app,introduce_code:$code$$})){$obj$$.introduce_code=
3
+ $code$$;break}}let $wallet_reward$$,$ws$$=await asskey.findOne({user_created:$user$$.email,id_app:$user$$.current_id_app,wallet_type:1,asset:{$nin:["BTC","ETH"]}}).lean();if($ws$$)$wallet_reward$$=$ws$$;else{$wallet_reward$$=new asskey({user_created:$user$$.email,username:$user$$.email,id_app:$user$$.current_id_app,wallet_type:1});const $wallet$$=await DirectSecp256k1HdWallet.generate(24,{prefix:configs.ADDRESS_PREFIX});let $accounts$$=await $wallet$$.getAccounts();$wallet_reward$$.address=$accounts$$[0].address;
4
+ $wallet_reward$$.mnemonic=$wallet$$.mnemonic;$wallet_reward$$.name="T\u00e0i kho\u1ea3n nh\u1eadn th\u01b0\u1edfng";$wallet_reward$$.asset=configs.MAIN_DENOM;await $wallet_reward$$.save();global.getModel("app").emitEvent($user$$.current_id_app,"blockchain.wallet.changed",{sender:$user$$.email},null,[$user$$.email],!1,!1)}$obj$$.wallet_address_receive_reward=$wallet_reward$$.address;let $new_code$$=await model.create($obj$$);$items$$.push($new_code$$)}catch($e$$){console.error($e$$)}await Promise.all($items$$.map($item$$=>
5
+ (async()=>{$item$$.so_user_da_gioi_thieu=await global.getModel("introducer").countDocuments({id_app:$user$$.current_id_app,introduce_code:$item$$.introduce_code});const $so_lan_dau_tu$$=await global.getModel("assinvestment").find({id_app:$user$$.current_id_app,introduce_code:$item$$.introduce_code,trang_thai:{$in:["1","5","9"]}}).lean();$item$$.so_lan_dau_tu=$so_lan_dau_tu$$.length;$item$$.so_user_da_dau_tu=(await $so_lan_dau_tu$$.asyncGroupBy(["user_created"],["so_luong"])).length})()));await $items$$.asyncJoinModel2($user$$.current_id_app,
6
+ Introducer,{where:"introduce_code",fields:["be_introduced",{be_introduced_date:"date_created"}]});await $items$$.asyncJoinModel2(null,User,{where:{be_introduced:"email"},fields:[{be_introduced_name:"name"}]});await $items$$.asyncJoinModel2(null,Trangthai,{where:$item$$=>({ma_trang_thai:$item$$.trang_thai,ma_ct:"INTRODUCECODE"}),fields:["ten_trang_thai","color"]});$next$$(null,$items$$)},onCreating:async($expiry_date_user$$,$data$$,$next$$)=>{if(0<await model.countDocuments({user_created:$expiry_date_user$$.email,
7
+ id_app:$expiry_date_user$$.current_id_app}))return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 t\u1ea1o th\u00eam m\u00e3 g\u1edbi thi\u1ec7u m\u1edbi");if(!$data$$.introduce_code)for(;;){let $code$$=generateCode();if(!await model.findOne({id_app:$expiry_date_user$$.current_id_app,introduce_code:$code$$})){$data$$.introduce_code=$code$$;break}}$expiry_date_user$$=new Date;$expiry_date_user$$.setDate($expiry_date_user$$.getDate()+1825);$data$$.expiry_date=$expiry_date_user$$;$next$$(null,$data$$)},onUpdating:async($user$$,
8
+ $data$$,$obj$$,$next$$)=>{if($user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 s\u1eeda m\u00e3 gi\u1edbi thi\u1ec7u n\u00e0y");delete $data$$.introduce_code;delete $data$$.so_lan_su_dung;$next$$(null,$data$$,$obj$$)},onDeleting:async($obj$jscomp$21_user$$,$data$$,$next$$)=>{$obj$jscomp$21_user$$=await model.findOne({_id:$data$$._id});if(!$obj$jscomp$21_user$$||$obj$jscomp$21_user$$.so_lan_su_dung)return $next$$("Kh\u00f4ng th\u1ec3 xo\u00e1 m\u00e3 gi\u1edbi thi\u1ec7u n\u00e0y do \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng");
9
+ $next$$(null,$data$$)}})).route()};
@@ -1,20 +1,19 @@
1
1
  'use strict';const model=global.getModel("introducer"),introducecode=global.getModel("introducecode"),app=global.getModel("app"),controller=require("../../controllers/controller"),blockchainconnect=require("../../libs/blockchainconnect"),asskey=global.getModel("asskey"),_=require("underscore"),{isSupperAdmin}=require("../../libs/utils"),async=require("async"),{DirectSecp256k1HdWallet}=require("@cosmjs/proto-signing"),Usergroup=global.getModel("usergroup"),Participant=global.getModel("participant"),
2
2
  numeral=require("numeral"),{bcQuery}=require("../../libs/blockchainconnect"),spend=async($appInfo$$,$receiver_user$$,$receiver_address$$,$amount$$,$denom$$,$memo$$,$introduce_code$$,$sub_action$$="")=>{try{await blockchainconnect.spend($appInfo$$._id,$appInfo$$.wallet_token,$appInfo$$.wallet_address,$receiver_address$$,{amount:$amount$$,denom:$denom$$,memo:$memo$$,action:"bonus",introduce_code:$introduce_code$$,sub_action:$sub_action$$})}catch($e$$){console.error("Error send coin",$e$$,$receiver_user$$,
3
3
  $receiver_address$$,$amount$$,$denom$$,$memo$$)}},bonus=async $obj$$=>{if($obj$$.introduce_code){const $code$$=await introducecode.findOne({id_app:$obj$$.id_app,introduce_code:$obj$$.introduce_code});if($code$$){let $be_introduced_by_user$$=await Participant.findOne({id_app:$obj$$.id_app,email:$obj$$.be_introduced_by}).lean();if($be_introduced_by_user$$&&await Participant.findOne({id_app:$obj$$.id_app,email:$obj$$.be_introduced}).lean()){$code$$.so_lan_su_dung=($code$$.so_lan_su_dung||0)+1;await $code$$.save();
4
- var $appInfo$$=await app.findOne({_id:$obj$$.id_app}).lean();$appInfo$$.wallet_address&&$appInfo$$.wallet_token&&await new Promise($res$$=>{async.series({introducer:async()=>{let $usergroup$$,$tang_gioi_thieu_denom$$;$be_introduced_by_user$$.group_id&&($usergroup$$=await Usergroup.findOne({id_app:$obj$$.id_app,_id:$be_introduced_by_user$$.group_id}).lean());$usergroup$$||($usergroup$$={});if($tang_gioi_thieu_denom$$=$usergroup$$.tang_gioi_thieu_denom||$appInfo$$.tang_gioi_thieu_denom){var $tang_gioi_thieu_wallet_address_receive_reward$jscomp$1_wallet_be_introduced_by$$=
5
- $usergroup$$.tang_gioi_thieu||$appInfo$$.tang_gioi_thieu||0,$tang_gioi_thieu_pt$$=$usergroup$$.tang_gioi_thieu_pt||$appInfo$$.tang_gioi_thieu_pt||0;if($tang_gioi_thieu_wallet_address_receive_reward$jscomp$1_wallet_be_introduced_by$$){var $memo$$=$code$$.wallet_address_receive_reward;if(!$memo$$){var $memo$jscomp$0$$=await asskey.findOne({id_app:$appInfo$$._id.toString(),username:$obj$$.be_introduced_by});$memo$jscomp$0$$&&($memo$$=$memo$jscomp$0$$.address)}$memo$$&&($memo$jscomp$0$$=`${$appInfo$$.short_name||
6
- $appInfo$$.name} t\u1eb7ng b\u1ea1n ${numeral($tang_gioi_thieu_wallet_address_receive_reward$jscomp$1_wallet_be_introduced_by$$).format()} ${$tang_gioi_thieu_denom$$.toUpperCase()} v\u00ec \u0111\u00e3 gi\u1edbi thi\u1ec7u Nh\u00e0 \u0111\u1ea7u t\u01b0 m\u1edbi!`,await spend($appInfo$$,$obj$$.be_introduced_by,$memo$$,$tang_gioi_thieu_wallet_address_receive_reward$jscomp$1_wallet_be_introduced_by$$,$tang_gioi_thieu_denom$$,$memo$jscomp$0$$,$code$$.introduce_code,"1"))}$tang_gioi_thieu_pt$$&&$usergroup$$.phu_trach&&
7
- $usergroup$$.phu_trach!==$obj$$.be_introduced_by&&($tang_gioi_thieu_wallet_address_receive_reward$jscomp$1_wallet_be_introduced_by$$=await asskey.findOne({id_app:$appInfo$$._id.toString(),username:$usergroup$$.phu_trach}))&&($tang_gioi_thieu_wallet_address_receive_reward$jscomp$1_wallet_be_introduced_by$$=$tang_gioi_thieu_wallet_address_receive_reward$jscomp$1_wallet_be_introduced_by$$.address)&&($memo$$=`${$appInfo$$.short_name||$appInfo$$.name} t\u1eb7ng b\u1ea1n ${numeral($tang_gioi_thieu_pt$$).format()} ${$tang_gioi_thieu_denom$$.toUpperCase()} v\u00ec c\u00f3 th\u00e0nh vi\u00ean trong nh\u00f3m b\u1ea1n qu\u1ea3n l\u00fd t\u00ecm \u0111\u01b0\u1ee3c kh\u00e1ch h\u00e0ng m\u1edbi!`,
8
- await spend($appInfo$$,$usergroup$$.phu_trach,$tang_gioi_thieu_wallet_address_receive_reward$jscomp$1_wallet_be_introduced_by$$,$tang_gioi_thieu_pt$$,$tang_gioi_thieu_denom$$,$memo$$,$code$$.introduce_code,"1"))}},be_introduce:async()=>{var $tang_duoc_gioi_thieu_usergroup$$,$par_tang_gioi_thieu_denom$$;($par_tang_gioi_thieu_denom$$=await Participant.findOne({id_app:$obj$$.id_app,email:$obj$$.be_introduced_by}).lean())&&$par_tang_gioi_thieu_denom$$.group_id&&($tang_duoc_gioi_thieu_usergroup$$=await Usergroup.findOne({id_app:$obj$$.id_app,
9
- _id:$par_tang_gioi_thieu_denom$$.group_id}).lean());$tang_duoc_gioi_thieu_usergroup$$||($tang_duoc_gioi_thieu_usergroup$$={});if($par_tang_gioi_thieu_denom$$=$tang_duoc_gioi_thieu_usergroup$$.tang_gioi_thieu_denom||$appInfo$$.tang_gioi_thieu_denom)if($tang_duoc_gioi_thieu_usergroup$$=$tang_duoc_gioi_thieu_usergroup$$.tang_duoc_gioi_thieu||$appInfo$$.tang_duoc_gioi_thieu||0){var $wallet_be_introduced$$=await asskey.findOne({id_app:$appInfo$$._id.toString(),username:$obj$$.be_introduced,wallet_type:1});
10
- if(!$wallet_be_introduced$$){$wallet_be_introduced$$=new asskey({user_created:$obj$$.be_introduced,username:$obj$$.be_introduced,id_app:$obj$$.id_app,wallet_type:1});$memo$$=await DirectSecp256k1HdWallet.generate(24,{prefix:configs.ADDRESS_PREFIX});let $accounts$$=await $memo$$.getAccounts();$wallet_be_introduced$$.address=$accounts$$[0].address;$wallet_be_introduced$$.mnemonic=$memo$$.mnemonic;$wallet_be_introduced$$.name="T\u00e0i kho\u1ea3n nh\u1eadn th\u01b0\u1edfng";await $wallet_be_introduced$$.save()}var $memo$$=
11
- `${$appInfo$$.short_name||$appInfo$$.name} t\u1eb7ng b\u1ea1n ${numeral($tang_duoc_gioi_thieu_usergroup$$).format()} ${$par_tang_gioi_thieu_denom$$.toUpperCase()} v\u00ec \u0111\u00e3 \u0111\u0103ng k\u00fd th\u00e0nh c\u00f4ng t\u00e0i kho\u1ea3n!`;await spend($appInfo$$,$obj$$.be_introduced,$wallet_be_introduced$$.address,$tang_duoc_gioi_thieu_usergroup$$,$par_tang_gioi_thieu_denom$$,$memo$$,$code$$.introduce_code,"2")}}},$e$$=>{$e$$&&console.error($e$$);$res$$()})})}}}},introducer=function($router$$){(new controller($router$$,
12
- model,"introducer",{sort:{date_created:-1},unique:["be_introduced"],notNeedRight:!0,onView:async($user$$,$items$$,$next$$)=>{let $network$$="MAINNET",$app$$=await global.getModel("app").findOne({_id:$user$$.current_id_app}).lean();$app$$&&$app$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$$.wallet_network]&&($network$$=$app$$.wallet_network);await $items$$.asyncJoinModel2($user$$.current_id_app,"asskey",{where:$item$$=>({username:$item$$.be_introduced,wallet_type:1}),fields:[{be_introduced_address:"address"}]});
13
- await $items$$.asyncJoinModel2($user$$.current_id_app,"participant",{where:{be_introduced_by:"email"},fields:["group_id"]});await $items$$.filter($r$$=>$r$$.group_id).asyncJoinModel2($user$$.current_id_app,"usergroup",{where:{group_id:"_id"},fields:["group_name"]});await $items$$.asyncJoinModel2(null,"user",{where:{be_introduced_by:"email"},fields:[{be_introduced_by_name:"name"}]});async.mapSeries($items$$,($item$$,$callback$$)=>{if(0<$item$$.bonus_paid)return $callback$$(null,$item$$);setImmediate(async()=>
14
- {const $action$$=`action-bonus-introducecode-${$item$$.introduce_code}`;try{let $rs$$=(await bcQuery(`transferlogs/${$action$$}/all-?pagination.limit=100000`,$network$$)).TransferLog||[];await $rs$$.asyncJoinModel2($user$$.current_id_app,"asskey",{where:{receiver:"address"},fields:["username"]});$item$$.bonus_paid=$rs$$.filter($r$$=>$r$$.username===$item$$.be_introduced).map($r$$=>Number($r$$.amount)).reduce(($a$$,$b$$)=>$a$$+$b$$,0);if(0===$item$$.bonus_paid)isSupperAdmin($user$$.email.toLowerCase());
15
- else{let $rs$$=await model.updateOne({_id:$item$$._id},{bonus_paid:$item$$.bonus_paid});console.log("save bonus_paid",$item$$.bonus_paid,$rs$$)}}catch($e$$){console.error($e$$)}$callback$$(null,$item$$)})},()=>{$next$$(null,$items$$)})},onCreating:async($code$jscomp$2_user$$,$obj$$,$next$$)=>{$obj$$.be_introduced=$code$jscomp$2_user$$.email;$code$jscomp$2_user$$=await introducecode.findOne({id_app:$code$jscomp$2_user$$.current_id_app,introduce_code:$obj$$.introduce_code});if(!$code$jscomp$2_user$$)return $next$$("M\u00e3 gi\u1edbi thi\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i");
16
- $obj$$.be_introduced_by=$code$jscomp$2_user$$.user_created;if($obj$$.be_introduced_by==$obj$$.be_introduced)return $next$$("Ng\u01b0\u1eddi gi\u1edbi thi\u1ec7u ph\u1ea3i kh\u00e1c ng\u01b0\u1eddi \u0111\u01b0\u1ee3c gi\u1edbi thi\u1ec7u");$next$$(null,$obj$$)},onUpdating:($user$$,$data$$,$obj$$,$next$$)=>{if(!_.contains(configs.admins,$user$$.email)&&!isSupperAdmin($user$$.email.toLowerCase()))return $next$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p c\u1eadp nh\u1eadt th\u00f4ng tin n\u00e0y");$data$$.be_introduced=
17
- $obj$$.be_introduced;$data$$.be_introduced_by=$obj$$.be_introduced_by;$data$$.introduce_code=$obj$$.introduce_code;if($data$$.be_introduced_by==$data$$.be_introduced)return $next$$("Ng\u01b0\u1eddi gi\u1edbi thi\u1ec7u ph\u1ea3i kh\u00e1c ng\u01b0\u1eddi \u0111\u01b0\u1ee3c gi\u1edbi thi\u1ec7u");$next$$(null,$data$$,$obj$$)},onDeleting:($user$$,$obj$$,$next$$)=>{if(!_.contains(configs.admins,$user$$.email)&&!isSupperAdmin($user$$.email.toLowerCase()))return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");
18
- $next$$(null,$obj$$)},onCreated:async($user$$,$obj$$,$next$$)=>{try{bonus($obj$$)}catch($e$$){console.error("Error handle to introduce",$e$$)}$next$$(null,$obj$$)},onUpdated:async($user$$,$item$$,$next$$)=>{let $network$$="MAINNET";var $action$jscomp$1_app$$=await global.getModel("app").findOne({_id:$item$$.id_app}).lean();$action$jscomp$1_app$$&&$action$jscomp$1_app$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$action$jscomp$1_app$$.wallet_network]&&($network$$=$action$jscomp$1_app$$.wallet_network);
19
- $action$jscomp$1_app$$=`action-bonus-introducecode-${$item$$.introduce_code}`;try{let $rs$$=(await bcQuery(`transferlogs/${$action$jscomp$1_app$$}/all-?pagination.limit=100000`,$network$$)).TransferLog||[];await $rs$$.asyncJoinModel2($user$$.current_id_app,"asskey",{where:{receiver:"address"},fields:["username"]});if(0<$rs$$.filter($r$$=>$r$$.username===$item$$.be_introduced).map($r$$=>Number($r$$.amount)).reduce(($a$$,$b$$)=>$a$$+$b$$,0))return $next$$(null,$item$$);(new Date($item$$.date_created)).getTime()>=
20
- (new Date(2022,9,1)).getTime()&&await bonus($item$$)}catch($e$$){console.error("error update introducer",$e$$)}$next$$(null,$item$$)}})).route()};module.exports=introducer;
4
+ var $appInfo$$=await app.findOne({_id:$obj$$.id_app}).lean();$appInfo$$.wallet_address&&$appInfo$$.wallet_token&&await new Promise($res$$=>{async.series({introducer:async()=>{try{let $usergroup$$,$tang_gioi_thieu_denom$$;$be_introduced_by_user$$.group_id&&($usergroup$$=await Usergroup.findOne({id_app:$obj$$.id_app,_id:$be_introduced_by_user$$.group_id}).lean());$usergroup$$||($usergroup$$={});if($tang_gioi_thieu_denom$$=$usergroup$$.tang_gioi_thieu_denom||$appInfo$$.tang_gioi_thieu_denom){var $tang_gioi_thieu$$=
5
+ $usergroup$$.tang_gioi_thieu||$appInfo$$.tang_gioi_thieu||0,$tang_gioi_thieu_pt$$=$usergroup$$.tang_gioi_thieu_pt||$appInfo$$.tang_gioi_thieu_pt||0;if($tang_gioi_thieu$$){let $wallet_address_receive_reward$$=$code$$.wallet_address_receive_reward;if(!$wallet_address_receive_reward$$){let $wallet_be_introduced_by$$=await asskey.findOne({id_app:$appInfo$$._id.toString(),username:$obj$$.be_introduced_by});$wallet_be_introduced_by$$&&($wallet_address_receive_reward$$=$wallet_be_introduced_by$$.address)}if($wallet_address_receive_reward$$){let $memo$$=
6
+ `${$appInfo$$.short_name||$appInfo$$.name} t\u1eb7ng b\u1ea1n ${numeral($tang_gioi_thieu$$).format()} ${$tang_gioi_thieu_denom$$.toUpperCase()} v\u00ec \u0111\u00e3 gi\u1edbi thi\u1ec7u Nh\u00e0 \u0111\u1ea7u t\u01b0 m\u1edbi!`;await spend($appInfo$$,$obj$$.be_introduced_by,$wallet_address_receive_reward$$,$tang_gioi_thieu$$,$tang_gioi_thieu_denom$$,$memo$$,$code$$.introduce_code,"1")}}if($tang_gioi_thieu_pt$$&&$usergroup$$.phu_trach&&$usergroup$$.phu_trach!==$obj$$.be_introduced_by){let $wallet_be_introduced_by$$=
7
+ await asskey.findOne({id_app:$appInfo$$._id.toString(),username:$usergroup$$.phu_trach});if($wallet_be_introduced_by$$){var $wallet_address_receive_reward$jscomp$0$$=$wallet_be_introduced_by$$.address;if($wallet_address_receive_reward$jscomp$0$$){let $memo$$=`${$appInfo$$.short_name||$appInfo$$.name} t\u1eb7ng b\u1ea1n ${numeral($tang_gioi_thieu_pt$$).format()} ${$tang_gioi_thieu_denom$$.toUpperCase()} v\u00ec c\u00f3 th\u00e0nh vi\u00ean trong nh\u00f3m b\u1ea1n qu\u1ea3n l\u00fd t\u00ecm \u0111\u01b0\u1ee3c kh\u00e1ch h\u00e0ng m\u1edbi!`;
8
+ await spend($appInfo$$,$usergroup$$.phu_trach,$wallet_address_receive_reward$jscomp$0$$,$tang_gioi_thieu_pt$$,$tang_gioi_thieu_denom$$,$memo$$,$code$$.introduce_code,"1")}}}}}catch($e$$){console.error($e$$)}},be_introduce:async()=>{try{let $usergroup$$,$tang_gioi_thieu_denom$$;const $par$$=await Participant.findOne({id_app:$obj$$.id_app,email:$obj$$.be_introduced_by}).lean();$par$$&&$par$$.group_id&&($usergroup$$=await Usergroup.findOne({id_app:$obj$$.id_app,_id:$par$$.group_id}).lean());$usergroup$$||
9
+ ($usergroup$$={});if($tang_gioi_thieu_denom$$=$usergroup$$.tang_gioi_thieu_denom||$appInfo$$.tang_gioi_thieu_denom){var $tang_duoc_gioi_thieu$$=$usergroup$$.tang_duoc_gioi_thieu||$appInfo$$.tang_duoc_gioi_thieu||0;if($tang_duoc_gioi_thieu$$){var $wallet_be_introduced$$=await asskey.findOne({id_app:$appInfo$$._id.toString(),username:$obj$$.be_introduced,wallet_type:1});if(!$wallet_be_introduced$$){$wallet_be_introduced$$=new asskey({user_created:$obj$$.be_introduced,username:$obj$$.be_introduced,id_app:$obj$$.id_app,
10
+ wallet_type:1});const $wallet$$=await DirectSecp256k1HdWallet.generate(24,{prefix:configs.ADDRESS_PREFIX});let $accounts$$=await $wallet$$.getAccounts();$wallet_be_introduced$$.address=$accounts$$[0].address;$wallet_be_introduced$$.mnemonic=$wallet$$.mnemonic;$wallet_be_introduced$$.name="T\u00e0i kho\u1ea3n nh\u1eadn th\u01b0\u1edfng";await $wallet_be_introduced$$.save()}var $memo$$=`${$appInfo$$.short_name||$appInfo$$.name} t\u1eb7ng b\u1ea1n ${numeral($tang_duoc_gioi_thieu$$).format()} ${$tang_gioi_thieu_denom$$.toUpperCase()} v\u00ec \u0111\u00e3 \u0111\u0103ng k\u00fd th\u00e0nh c\u00f4ng t\u00e0i kho\u1ea3n!`;
11
+ await spend($appInfo$$,$obj$$.be_introduced,$wallet_be_introduced$$.address,$tang_duoc_gioi_thieu$$,$tang_gioi_thieu_denom$$,$memo$$,$code$$.introduce_code,"2")}}}catch($e$$){console.error($e$$)}}},$e$$=>{$e$$&&console.error($e$$);$res$$()})})}}}},introducer=function($router$$){(new controller($router$$,model,"introducer",{sort:{date_created:-1},unique:["be_introduced"],notNeedRight:!0,onView:async($user$$,$items$$,$next$$)=>{let $network$$="MAINNET",$app$$=await global.getModel("app").findOne({_id:$user$$.current_id_app}).lean();
12
+ $app$$&&$app$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$$.wallet_network]&&($network$$=$app$$.wallet_network);await $items$$.asyncJoinModel2($user$$.current_id_app,"asskey",{where:$item$$=>({username:$item$$.be_introduced,wallet_type:1}),fields:[{be_introduced_address:"address"}]});await $items$$.asyncJoinModel2($user$$.current_id_app,"participant",{where:{be_introduced_by:"email"},fields:["group_id"]});await $items$$.filter($r$$=>$r$$.group_id).asyncJoinModel2($user$$.current_id_app,"usergroup",
13
+ {where:{group_id:"_id"},fields:["group_name"]});await $items$$.asyncJoinModel2(null,"user",{where:{be_introduced_by:"email"},fields:[{be_introduced_by_name:"name"}]});async.mapSeries($items$$,($item$$,$callback$$)=>{if(0<$item$$.bonus_paid)return $callback$$(null,$item$$);setImmediate(async()=>{const $action$$=`action-bonus-introducecode-${$item$$.introduce_code}`;try{let $rs$$=(await bcQuery(`transferlogs/${$action$$}/all-?pagination.limit=100000`,$network$$)).TransferLog||[];await $rs$$.asyncJoinModel2($user$$.current_id_app,
14
+ "asskey",{where:{receiver:"address"},fields:["username"]});$item$$.bonus_paid=$rs$$.filter($r$$=>$r$$.username===$item$$.be_introduced).map($r$$=>Number($r$$.amount)).reduce(($a$$,$b$$)=>$a$$+$b$$,0);if(0===$item$$.bonus_paid)isSupperAdmin($user$$.email.toLowerCase());else{let $rs$$=await model.updateOne({_id:$item$$._id},{bonus_paid:$item$$.bonus_paid});console.log("save bonus_paid",$item$$.bonus_paid,$rs$$)}}catch($e$$){console.error($e$$)}$callback$$(null,$item$$)})},()=>{$next$$(null,$items$$)})},
15
+ onCreating:async($code$jscomp$2_user$$,$obj$$,$next$$)=>{$obj$$.be_introduced=$code$jscomp$2_user$$.email;$code$jscomp$2_user$$=await introducecode.findOne({id_app:$code$jscomp$2_user$$.current_id_app,introduce_code:$obj$$.introduce_code});if(!$code$jscomp$2_user$$)return $next$$("M\u00e3 gi\u1edbi thi\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i");$obj$$.be_introduced_by=$code$jscomp$2_user$$.user_created;if($obj$$.be_introduced_by==$obj$$.be_introduced)return $next$$("Ng\u01b0\u1eddi gi\u1edbi thi\u1ec7u ph\u1ea3i kh\u00e1c ng\u01b0\u1eddi \u0111\u01b0\u1ee3c gi\u1edbi thi\u1ec7u");
16
+ $next$$(null,$obj$$)},onUpdating:($user$$,$data$$,$obj$$,$next$$)=>{if(!_.contains(configs.admins,$user$$.email)&&!isSupperAdmin($user$$.email.toLowerCase()))return $next$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p c\u1eadp nh\u1eadt th\u00f4ng tin n\u00e0y");$data$$.be_introduced=$obj$$.be_introduced;$data$$.be_introduced_by=$obj$$.be_introduced_by;$data$$.introduce_code=$obj$$.introduce_code;if($data$$.be_introduced_by==$data$$.be_introduced)return $next$$("Ng\u01b0\u1eddi gi\u1edbi thi\u1ec7u ph\u1ea3i kh\u00e1c ng\u01b0\u1eddi \u0111\u01b0\u1ee3c gi\u1edbi thi\u1ec7u");
17
+ $next$$(null,$data$$,$obj$$)},onDeleting:($user$$,$obj$$,$next$$)=>{if(!_.contains(configs.admins,$user$$.email)&&!isSupperAdmin($user$$.email.toLowerCase()))return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n th\u1ef1c hi\u1ec7n thao t\u00e1c n\u00e0y");$next$$(null,$obj$$)},onCreated:async($user$$,$obj$$,$next$$)=>{try{bonus($obj$$)}catch($e$$){console.error("Error handle to introduce",$e$$)}$next$$(null,$obj$$)},onUpdated:async($user$$,$item$$,$next$$)=>{let $network$$="MAINNET";var $action$jscomp$1_app$$=
18
+ await global.getModel("app").findOne({_id:$item$$.id_app}).lean();$action$jscomp$1_app$$&&$action$jscomp$1_app$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$action$jscomp$1_app$$.wallet_network]&&($network$$=$action$jscomp$1_app$$.wallet_network);$action$jscomp$1_app$$=`action-bonus-introducecode-${$item$$.introduce_code}`;try{let $rs$$=(await bcQuery(`transferlogs/${$action$jscomp$1_app$$}/all-?pagination.limit=100000`,$network$$)).TransferLog||[];await $rs$$.asyncJoinModel2($user$$.current_id_app,
19
+ "asskey",{where:{receiver:"address"},fields:["username"]});if(0<$rs$$.filter($r$$=>$r$$.username===$item$$.be_introduced).map($r$$=>Number($r$$.amount)).reduce(($a$$,$b$$)=>$a$$+$b$$,0))return $next$$(null,$item$$);(new Date($item$$.date_created)).getTime()>=(new Date(2022,9,1)).getTime()&&await bonus($item$$)}catch($e$$){console.error("error update introducer",$e$$)}$next$$(null,$item$$)}})).route()};module.exports=introducer;
@@ -1,7 +1,8 @@
1
- 'use strict';const model=global.getModel("message2"),m2s=global.getModel("message2setting"),User=global.getModel("user"),controller=require("../../controllers/controller"),message2=function($router$$){const $contr$$=new controller($router$$,model,"message2",{sort:{date_created:-1},notNeedRight:!0,users_receive_notification_default:[async $_setting_msg$$=>{var $sender_name_title$$=(await User.findOne({email:$_setting_msg$$.user_created},{name:1})||{}).name||$_setting_msg$$.user_created;let $body$$=
2
- $_setting_msg$$.text;$sender_name_title$$=`Tin nh\u1eafn t\u1eeb ${$sender_name_title$$}`;($_setting_msg$$=await m2s.findOne({id_app:$_setting_msg$$.id_app,id_link:$_setting_msg$$.id_link}))&&($body$$=`T\u1edbi nh\u00f3m ${$_setting_msg$$.title}: ${$body$$}`);return{title:$sender_name_title$$,body:$body$$,send_phu_trach:!0,send_attends:!0,send_to_user_created:!1}}],onFinding:async($user$$,$condition$$,$next$$)=>{$condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push({$or:[{attends:$user$$.email},
3
- {phu_trach:$user$$.email},{sender:$user$$.email},{receiver:$user$$.email}]});$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2(null,User,{where:{sender:"email"},fields:{sender_name:"name"}});await $items$$.asyncJoinModel2(null,User,{where:{receiver:"email"},fields:{receiver_name:"name"}});$items$$.forEach($item$$=>{$item$$.read&&"false"!==$item$$.read||($item$$.read=[]);let $read$$=$item$$.read;$read$$.find($r$$=>$r$$===$user$$.email)||($read$$.push($user$$.email),
4
- model.findOneAndUpdate({_id:$item$$._id.toString()},{read:$read$$},($e$$,$rs$$)=>{controller.pushNotification($contr$$,$rs$$,"read",null,!0)}))});$next$$(null,$items$$)},onCreating:async($user$$,$obj$$,$next$$)=>{let $_setting$$=await m2s.findOne({id_app:$user$$.current_id_app,id_link:$obj$$.id_link});if($_setting$$){let $attends$$=[...$_setting$$.attends];$_setting$$.phu_trach&&$attends$$.push($_setting$$.phu_trach);if(0>$attends$$.indexOf($user$$.email))return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n g\u1eedi tin nh\u1eafn trong nh\u00f3m n\u00e0y");
5
- $attends$$=[...(new Set($attends$$))];$obj$$.attends=$attends$$}$obj$$.sender=$user$$.email;return $next$$(null,$obj$$)},onCreated:($user$$,$obj$$,$next$$)=>{$obj$$.id_link&&m2s.findOneAndUpdate({id_app:$obj$$.id_app,id_link:$obj$$.id_link},{latest_message:$obj$$.text,name_sender_latest_message:$user$$.name,date_updated:new Date,id_latest_message:$obj$$._id.toString()},($e$$,$rs$$)=>{$rs$$&&controller.pushNotification(global.controllers.MESSAGE2SETTING,$rs$$,"update",null,!0)});$next$$(null,$obj$$)}});
6
- $contr$$.createRoute("unread/:id_link",async($_s_req$$,$next$$)=>{const $id_link$$=$_s_req$$.params.id_link;var $condition$jscomp$1_user$$=$_s_req$$.user;$condition$jscomp$1_user$$={id_app:$_s_req$$.user.current_id_app,read:{$ne:$_s_req$$.user.email},user_created:{$ne:$_s_req$$.user.email},$or:[{attends:$condition$jscomp$1_user$$.email},{phu_trach:$condition$jscomp$1_user$$.email}]};"all"!==$id_link$$?$condition$jscomp$1_user$$.id_link=$id_link$$:($_s_req$$=await m2s.find({id_app:$_s_req$$.user.current_id_app,
7
- title:{$nin:[null,"",void 0]},$or:[{phu_trach:$_s_req$$.user.email},{attends:$_s_req$$.user.email}]},{_id:1,id_link:1}),$condition$jscomp$1_user$$.id_link={$in:$_s_req$$.map($s$$=>$s$$.id_link||$s$$._id.toString())});try{const $unread$$=await model.countDocuments($condition$jscomp$1_user$$);return $next$$(null,{unread:$unread$$})}catch($e$$){$next$$($e$$)}});$contr$$.route()};module.exports=message2;
1
+ 'use strict';const model=global.getModel("message2"),m2s=global.getModel("message2setting"),User=global.getModel("user"),controller=require("../../controllers/controller"),permission=require("../../libs/permission"),message2=function($router$$){const $contr$$=new controller($router$$,model,"message2",{sort:{date_created:-1},notNeedRight:!0,users_receive_notification_default:[async $_setting_msg$$=>{var $sender_name_title$$=(await User.findOne({email:$_setting_msg$$.user_created},{name:1})||{}).name||
2
+ $_setting_msg$$.user_created;let $body$$=$_setting_msg$$.text;$sender_name_title$$=`Tin nh\u1eafn t\u1eeb ${$sender_name_title$$}`;($_setting_msg$$=await m2s.findOne({id_app:$_setting_msg$$.id_app,id_link:$_setting_msg$$.id_link}))&&($body$$=`T\u1edbi nh\u00f3m ${$_setting_msg$$.title}: ${$body$$}`);return{title:$sender_name_title$$,body:$body$$,send_phu_trach:!0,send_attends:!0,send_to_user_created:!1}}],onFinding:async($user$$,$condition$$,$next$$)=>{permission.isAdmin($user$$.current_id_app,$user$$.email,
3
+ function($e$$,$admin$$){$admin$$||($condition$$.$and||($condition$$.$and=[]),$condition$$.$and.push({$or:[{attends:$user$$.email},{phu_trach:$user$$.email},{sender:$user$$.email},{receiver:$user$$.email}]}));$next$$(null,$condition$$)})},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2(null,User,{where:{sender:"email"},fields:{sender_name:"name"}});await $items$$.asyncJoinModel2(null,User,{where:{receiver:"email"},fields:{receiver_name:"name"}});$items$$.forEach($item$$=>{$item$$.read&&
4
+ "false"!==$item$$.read||($item$$.read=[]);let $read$$=$item$$.read;$read$$.find($r$$=>$r$$===$user$$.email)||($read$$.push($user$$.email),model.findOneAndUpdate({_id:$item$$._id.toString()},{read:$read$$},($e$$,$rs$$)=>{controller.pushNotification($contr$$,$rs$$,"read",null,!0)}))});$next$$(null,$items$$)},onCreating:async($user$$,$obj$$,$next$$)=>{permission.isAdmin($user$$.current_id_app,$user$$.email,async function($_setting$jscomp$1_e$$,$admin$$){if($_setting$jscomp$1_e$$=await m2s.findOne({id_app:$user$$.current_id_app,
5
+ id_link:$obj$$.id_link})){let $attends$$=[...$_setting$jscomp$1_e$$.attends];$_setting$jscomp$1_e$$.phu_trach&&$attends$$.push($_setting$jscomp$1_e$$.phu_trach);if(!$admin$$&&0>$attends$$.indexOf($user$$.email))return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n g\u1eedi tin nh\u1eafn trong nh\u00f3m n\u00e0y");$attends$$=[...(new Set($attends$$))];$obj$$.attends=$attends$$}$admin$$&&($obj$$.attends=$obj$$.attends||[],0>$obj$$.attends.indexOf($user$$.email)&&$obj$$.attends.push($user$$.email));
6
+ $obj$$.sender=$user$$.email;return $next$$(null,$obj$$)})},onCreated:($user$$,$obj$$,$next$$)=>{$obj$$.id_link&&m2s.findOneAndUpdate({id_app:$obj$$.id_app,id_link:$obj$$.id_link},{latest_message:$obj$$.text,name_sender_latest_message:$user$$.name,date_updated:new Date,id_latest_message:$obj$$._id.toString()},($e$$,$rs$$)=>{$rs$$&&controller.pushNotification(global.controllers.MESSAGE2SETTING,$rs$$,"update",null,!0)});$next$$(null,$obj$$)}});$contr$$.createRoute("unread/:id_link",async($_s_req$$,$next$$)=>
7
+ {const $id_link$$=$_s_req$$.params.id_link;var $condition$jscomp$1_user$$=$_s_req$$.user;$condition$jscomp$1_user$$={id_app:$_s_req$$.user.current_id_app,read:{$ne:$_s_req$$.user.email},user_created:{$ne:$_s_req$$.user.email},$or:[{attends:$condition$jscomp$1_user$$.email},{phu_trach:$condition$jscomp$1_user$$.email}]};"all"!==$id_link$$?$condition$jscomp$1_user$$.id_link=$id_link$$:($_s_req$$=await m2s.find({id_app:$_s_req$$.user.current_id_app,title:{$nin:[null,"",void 0]},$or:[{phu_trach:$_s_req$$.user.email},
8
+ {attends:$_s_req$$.user.email}]},{_id:1,id_link:1}),$condition$jscomp$1_user$$.id_link={$in:$_s_req$$.map($s$$=>$s$$.id_link||$s$$._id.toString())});try{const $unread$$=await model.countDocuments($condition$jscomp$1_user$$);return $next$$(null,{unread:$unread$$})}catch($e$$){$next$$($e$$)}});$contr$$.route()};module.exports=message2;
@@ -1,4 +1,4 @@
1
- 'use strict';const model=global.getModel("message2setting"),controller=require("../../controllers/controller"),Message2=global.getModel("message2"),underscore=require("underscore"),message2setting=function($router$$){(new controller($router$$,model,"message2setting",{sort:{date_updated:-1},unique:["id_link"],notNeedRight:!0,users_receive_notification_default:[async()=>({send_phu_trach:!0,send_attends:!0})],onFinding:async($user$$,$condition$$,$next$$)=>{$condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push({$or:[{attends:$user$$.email},
2
- {phu_trach:$user$$.email}]});$next$$(null,$condition$$)},onCreating:($user$$,$data$$,$next$$)=>{$data$$.id_link||($data$$.id_link=(new Date).getTime().toString(),$data$$.code_link="other");$data$$.phu_trach=$data$$.phu_trach||$user$$.email;$next$$(null,$data$$)},onUpdating:($user$$,$new_data$$,$old_data$$,$next$$)=>!underscore.contains(configs.admins,$user$$.email)&&$old_data$$.phu_trach&&$old_data$$.phu_trach!==$user$$.email?$next$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt nh\u00f3m n\u00e0y"):
3
- $next$$(null,$new_data$$,$old_data$$),onUpdated:async($user$$,$obj$$,$next$$)=>{Message2.updateMany({id_link:$obj$$._id.toString()},{$set:{attends:$obj$$.attends}}).then($rs$$=>{console.log("update message2",$rs$$)});$next$$(null,$obj$$)},onDeleting:($user$$,$data$$,$next$$)=>!underscore.contains(configs.admins,$user$$.email)&&$data$$.phu_trach&&$data$$.phu_trach!==$user$$.email?$next$$("B\u1ea1n kh\u00f4ng th\u1ec3 xo\u00e1 nh\u00f3m n\u00e0y"):$next$$(null,$data$$),onDeleted:($user$$,$data$$,$next$$)=>
4
- {Message2.deleteMany({id_link:$data$$._id.toString()});return $next$$(null,$data$$)}})).route()};module.exports=message2setting;
1
+ 'use strict';const model=global.getModel("message2setting"),controller=require("../../controllers/controller"),Message2=global.getModel("message2"),underscore=require("underscore"),permission=require("../../libs/permission"),message2setting=function($router$$){(new controller($router$$,model,"message2setting",{sort:{date_updated:-1},unique:["id_link"],notNeedRight:!0,users_receive_notification_default:[async()=>({send_phu_trach:!0,send_attends:!0})],onFinding:async($user$$,$condition$$,$next$$)=>
2
+ {permission.isAdmin($user$$.current_id_app,$user$$.email,function($e$$,$admin$$){$admin$$||($condition$$.$and||($condition$$.$and=[]),$condition$$.$and.push({$or:[{attends:$user$$.email},{phu_trach:$user$$.email}]}));$next$$(null,$condition$$)})},onCreating:($user$$,$data$$,$next$$)=>{$data$$.id_link||($data$$.id_link=(new Date).getTime().toString(),$data$$.code_link="other");$data$$.phu_trach=$data$$.phu_trach||$user$$.email;$next$$(null,$data$$)},onUpdating:($user$$,$new_data$$,$old_data$$,$next$$)=>
3
+ !underscore.contains(configs.admins,$user$$.email)&&$old_data$$.phu_trach&&$old_data$$.phu_trach!==$user$$.email?$next$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt nh\u00f3m n\u00e0y"):$next$$(null,$new_data$$,$old_data$$),onUpdated:async($user$$,$obj$$,$next$$)=>{Message2.updateMany({id_link:$obj$$._id.toString()},{$set:{attends:$obj$$.attends}}).then($rs$$=>{console.log("update message2",$rs$$)});$next$$(null,$obj$$)},onDeleting:($user$$,$data$$,$next$$)=>!underscore.contains(configs.admins,
4
+ $user$$.email)&&$data$$.phu_trach&&$data$$.phu_trach!==$user$$.email?$next$$("B\u1ea1n kh\u00f4ng th\u1ec3 xo\u00e1 nh\u00f3m n\u00e0y"):$next$$(null,$data$$),onDeleted:($user$$,$data$$,$next$$)=>{Message2.deleteMany({id_link:$data$$._id.toString()});return $next$$(null,$data$$)}})).route()};module.exports=message2setting;
@@ -10,7 +10,7 @@ async function createToken($appId$$,$room$$){const $session$$=await model.findOn
10
10
  Buffer.from("OPENVIDUAPP:"+configs.VIDEO_CONFERENCE_SERVER_SECRET).toString("base64"),"Content-Type":"application/json"}};request($options$$,($error$$,$response$$,$body$$)=>{if($body$$&&$body$$.token)return $resolve$$($body$$.token);if($response$$&&404===$response$$.statusCode)return $reject$$({message:"Phi\u00ean n\u00e0y ch\u01b0a \u0111\u01b0\u1ee3c m\u1edf ho\u1eb7c \u0111\u00e3 \u0111\u00f3ng",code:404});console.log("Error create token",$error$$,$body$$);return $reject$$($error$$||$body$$||"Kh\u00f4ng th\u1ec3 t\u1ea1o token cho phi\u00ean "+
11
11
  $room$$)})})}
12
12
  async function startRecord($appId$$,$room$$){if(!await model.findOne({_id:$room$$}))throw{message:"Phi\u00ean n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i",code:400};const $sessionId$$=`T${$appId$$}${$room$$}`.toUpperCase();return await new Promise(($resolve$$,$reject$$)=>{let $options$$={rejectUnauthorized:!1,uri:configs.VIDEO_CONFERENCE_SERVER_URL+"/api/recordings/start",method:"POST",json:{session:$sessionId$$},headers:{Authorization:"Basic "+Buffer.from("OPENVIDUAPP:"+configs.VIDEO_CONFERENCE_SERVER_SECRET).toString("base64"),"Content-Type":"application/json"}};
13
- request($options$$,async($error$$,$response$$,$body$$)=>{if($response$$)switch($response$$.statusCode){case 409,200:return $resolve$$($body$$);case 404:return $reject$$({message:"Phi\u00ean n\u00e0y ch\u01b0a \u0111\u01b0\u1ee3c m\u1edf",code:$response$$.statusCode});default:return $reject$$({message:"Kh\u00f4ng th\u1ec3 ghi l\u1ea1i phi\u00ean n\u00e0y",code:$response$$.statusCode})}else return $reject$$({message:"Kh\u00f4ng th\u1ec3 ghi l\u1ea1i phi\u00ean n\u00e0y",code:500})})})}
13
+ request($options$$,async($error$$,$response$$,$body$$)=>{if($response$$)switch($response$$.statusCode){case 409:case 200:return $resolve$$($body$$);case 404:return $reject$$({message:"Phi\u00ean n\u00e0y ch\u01b0a \u0111\u01b0\u1ee3c m\u1edf",code:$response$$.statusCode});default:return $reject$$({message:"Kh\u00f4ng th\u1ec3 ghi l\u1ea1i phi\u00ean n\u00e0y",code:$response$$.statusCode})}else return $reject$$({message:"Kh\u00f4ng th\u1ec3 ghi l\u1ea1i phi\u00ean n\u00e0y",code:500})})})}
14
14
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"session",{sort:{date_created:-1},onCreating:($user$$,$data$$,$next$$)=>{delete $data$$.registers;$next$$(null,$data$$)},onCreated:async($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)},onUpdating:($user$$,$data$$,$obj$$,$next$$)=>{delete $data$$.registers;$next$$(null,$data$$,$obj$$)},onUpdated:async($now$jscomp$1_sessionName_user$$,$obj$$,$next$$)=>{$now$jscomp$1_sessionName_user$$=new Date;if($obj$$.closed||
15
15
  $now$jscomp$1_sessionName_user$$.getTime()<$obj$$.date_from.getTime()||$now$jscomp$1_sessionName_user$$.getTime()>$obj$$.date_to.getTime()){$now$jscomp$1_sessionName_user$$=$obj$$._id.toString();try{await closeSession($obj$$.id_app,$now$jscomp$1_sessionName_user$$)}catch($e$$){console.error("Error when close session",$e$$.message)}}$next$$(null,$obj$$)},onDeleting:async($sessionName$jscomp$1_user$$,$obj$$,$next$$)=>{$sessionName$jscomp$1_user$$=$obj$$._id.toString();try{await closeSession($obj$$.id_app,
16
16
  $sessionName$jscomp$1_user$$)}catch($e$$){console.error("Error when delete session",$e$$.message)}$next$$(null,$obj$$)},onView:($user$$,$items$$,$next$$)=>{async.series([$callback$$=>{$items$$.joinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"session"}),fields:["ten_trang_thai","color","allow_update"]}],function(){$callback$$()})},$callback$$=>{async.each($items$$,function($r$$,$callback1$$){var $prices$$=$r$$.prices||[];$prices$$.forEach($p$$=>{$p$$.id_app=$r$$.id_app});
@@ -6,24 +6,24 @@ status:!0,user_created:$data_obj$$.user_created,user_updated:$data_obj$$.user_cr
6
6
  const createLink=async($attends_user$$,$obj$$,$next$$)=>{$obj$$.id_kh&&link.find({$or:[{id_a:$obj$$._id,id_b:$obj$$.id_kh},{id_a:$obj$$.id_kh,id_b:$obj$$._id}]}).lean().exec(function($e$$,$rs$$){$rs$$&&0!==$rs$$.length||(new link({id_app:$obj$$.id_app,id_a:$obj$$.id_kh,id_b:$obj$$._id,collection_a:"dmkh",collection_b:"task"})).save(function($e$$){$e$$&&console.error($e$$)})});$obj$$.id_dt&&link.find({$or:[{id_a:$obj$$._id,id_b:$obj$$.id_dt},{id_a:$obj$$.id_dt,id_b:$obj$$._id}]}).lean().exec(function($e$jscomp$0$$,
7
7
  $rs$$){$rs$$&&0!==$rs$$.length||(new link({id_app:$obj$$.id_app,id_a:$obj$$.id_dt,id_b:$obj$$._id,collection_a:"dmdt",collection_b:"task"})).save(function($e$$){$e$$&&console.error($e$$)})});if($obj$$.nh_cv&&global.mongoose.Types.ObjectId.isValid($obj$$.nh_cv)){$attends_user$$=$obj$$.attends||[];let $_group$$=await Group.findOne({_id:$obj$$.nh_cv});$_group$$&&($_group$$.attends=[...(new Set([...($_group$$.attends||[]),...$attends_user$$]))],$_group$$.save($e$$=>{$e$$&&console.error("Can't update task group",
8
8
  $e$$,$_group$$)}))}createSchedule($obj$$);$next$$(null,$obj$$)};
9
- module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,ma_ct.toLowerCase(),{sort:{start_date:-1},users_receive_notification_default:[{trang_thai:"0",content:"C\u00f4ng vi\u1ec7c m\u1edbi: {{ten_cv}}",send_phu_trach:!0,send_attends:!0,send_admin:!0},{trang_thai:"1",content:'C\u00f4ng vi\u1ec7c "{{ten_cv}}" \u0111ang \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n',send_phu_trach:!0,send_attends:!0,send_admin:!0,send_to_customer:!0},{trang_thai:"3",content:'C\u00f4ng vi\u1ec7c "{{ten_cv}}" \u0111\u00e3 ho\u00e0n th\u00e0nh',
10
- send_phu_trach:!0,send_attends:!0,send_admin:!0,send_to_customer:!0},{trang_thai:"4",content:'C\u00f4ng vi\u1ec7c "{{ten_cv}}" \u0111\u00e3 t\u1ea1m d\u1eebng',send_phu_trach:!0,send_attends:!0,send_admin:!0},{trang_thai:"5",content:'C\u00f4ng vi\u1ec7c "{{ten_cv}}" \u0111ang ch\u1edd',send_phu_trach:!0,send_attends:!0,send_admin:!0}],onFinding:function($user$$,$condition$$,$next$$){console.time("Finding task");async.series({find_ten_kh:function($callback$$){setImmediate(()=>{$condition$$.ten_kh?
11
- customer.find({id_app:$user$$.current_id_app,ten_kh:{$regex:$condition$$.ten_kh,$options:"i"}},{_id:1}).lean().exec(function($e$$,$khs$$){if($e$$)return $callback$$($e$$);delete $condition$$.ten_kh;$e$$=underscore.pluck($khs$$,"_id");$condition$$.id_kh={$in:$e$$};$callback$$()}):$callback$$()})},find_ten_dt:function($callback$$){setImmediate(()=>{$condition$$.ten_dt?dmdt.find({id_app:$user$$.current_id_app,ten_dt:{$regex:$condition$$.ten_dt,$options:"i"}},{_id:1}).lean().exec(function($e$jscomp$6_id_khs$$,
12
- $khs$$){if($e$jscomp$6_id_khs$$)return $callback$$($e$jscomp$6_id_khs$$);delete $condition$$.ten_dt;$e$jscomp$6_id_khs$$=underscore.pluck($khs$$,"_id");$condition$$.id_dt={$in:$e$jscomp$6_id_khs$$};$callback$$()}):$callback$$()})}},function($e$$){if($e$$)return $next$$($e$$);console.timeEnd("Finding task");$next$$(null,$condition$$)})},onFound:($user$$,$condition$$,$items$$,$next$$)=>{$next$$(null,$items$$)},onView:function($user$$,$items$$,$next$$){console.time("task view");async.series({trangthai:function($callback$$){setImmediate(()=>
13
- {$items$$.filter($item$$=>void 0!==$item$$.progress).joinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.progress.toString(),ma_ct:"TASK"}),fields:["ten_trang_thai","color","allow_update"]}],function(){$callback$$()})})},nh_cv:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.nh_cv).joinModel2($user$$.current_id_app,Group,[{where:{nh_cv:"_id"},fields:[{name:"ten_nh_cv",value:"group_name"}]}],function(){$callback$$(null,$items$$)})})},phu_trach:function($callback$$){setImmediate(()=>
14
- {(async()=>{await $items$$.filter($item$$=>$item$$.phu_trach).asyncJoinModel2($user$$.current_id_app,Participant,[{where:{phu_trach:"email"},fields:[{name:"nhom_phu_trach",value:"group_id"},{name:"ten_phu_trach",value:"name"}]}]);await $items$$.filter($item$$=>$item$$.nhom_phu_trach).asyncJoinModel2($user$$.current_id_app,UserGroup,[{where:{nhom_phu_trach:"_id"},fields:[{name:"ten_nhom_phu_trach",value:"group_name"}]}]);await $items$$.filter($item$$=>$item$$.nguoi_kiem_tra).asyncJoinModel2(null,User,
15
- [{where:{nguoi_kiem_tra:"email"},fields:[{name:"ten_nguoi_kiem_tra",value:"name"}]}]);await $items$$.filter($item$$=>$item$$.nguoi_thuc_hien).asyncJoinModel2(null,User,[{where:{nguoi_thuc_hien:"email"},fields:[{name:"ten_nguoi_thuc_hien",value:"name"}]}])})().then(()=>{$callback$$(null,$items$$)}).catch($e$$=>{$callback$$($e$$)})})},kh:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_kh).joinModel2($user$$.current_id_app,customer,[{where:{id_kh:"_id"},fields:[{name:"ten_kh",
16
- value:"ten_kh"}]}],function(){$callback$$(null,$items$$)})})},dkho:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_dokho).joinModel2($user$$.current_id_app,dokho,[{where:{id_dokho:"_id"},fields:[{name:"ten_dokho",value:"ten_dokho"}]}],function(){$callback$$(null,$items$$)})})},project:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_dt).joinModel2($user$$.current_id_app,dmdt,[{where:{id_dt:"_id"},fields:[{name:"ten_dt",value:"ten_dt"}]}],function(){$callback$$(null,
17
- $items$$)})})},bp:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_bp).joinModel2($user$$.current_id_app,Dmbp,[{where:{id_bp:"_id"},fields:[{name:"ten_bp",value:"ten_bp"}]}],function(){$callback$$(null,$items$$)})})},so3:$callback$$=>{setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_ct).joinModel2($user$$.current_id_app,SO3,[{where:$a$$=>({_id:$a$$.id_ct}),fields:["so_ct","ngay_ct","ma_kh","ten_kh"]}],function(){$callback$$(null,$items$$)})})},file:$callback$$=>{setImmediate(()=>
18
- {$items$$.filter($item$$=>$item$$.id_link).joinModel2($user$$.current_id_app,File,[{where:$item$$=>({id_link:$item$$._id}),setFields:($item$$,$data$$)=>{$item$$.avatarFile=$data$$}}],function(){$callback$$(null,$items$$)})})}},function(){setImmediate(()=>{const $last_week$$=new Date;$last_week$$.setDate($last_week$$.getDate()-7);$items$$.forEach(function($item$$){void 0===$item$$.ten_kh&&($item$$.ten_kh="");!$item$$.saved&&$item$$.finished_date&&3===$item$$.progress&&(new Date($item$$.finished_date)).getTime()<=
19
- $last_week$$.getTime()&&model.findOneAndUpdate({_id:$item$$._id},{saved:!0},()=>{})});console.timeEnd("task view");$next$$(null,$items$$)})})},onCreating:async($user$$,$obj$$,$next$$)=>{$obj$$.attends&&($obj$$.attends=[...(new Set($obj$$.attends))]);setImmediate(async()=>{$obj$$.ma_ct=ma_ct;$obj$$.due_date=$obj$$.due_date||$obj$$.start_date;if(!$obj$$.nh_cv&&$obj$$.group_id_link){var $TY_LE_HOA_HONG_g$$=await Group.findOne({id_link:$obj$$.group_id_link,id_app:$user$$.current_id_app,group_type:"TASK"});
20
- $TY_LE_HOA_HONG_g$$?$obj$$.nh_cv=$TY_LE_HOA_HONG_g$$._id.toString():$obj$$.group_name_link&&($TY_LE_HOA_HONG_g$$=await Group.create({group_type:"TASK",id_link:$obj$$.group_id_link,id_app:$user$$.current_id_app,group_name:$obj$$.group_name_link,phu_trach:$obj$$.phu_trach||$user$$.email,attends:$obj$$.attends}),$obj$$.nh_cv=$TY_LE_HOA_HONG_g$$._id.toString())}$TY_LE_HOA_HONG_g$$=((await App.findOne({_id:$user$$.current_id_app})).exfields||{}).ty_le_hoa_hong||0;var $hoa_hong_tong_tien_hang$$=0;if($obj$$.id_ct){let $so3Obj$$=
21
- await SO3.findOne({_id:$obj$$.id_ct});$so3Obj$$&&($so3Obj$$=$so3Obj$$.toObject(),$hoa_hong_tong_tien_hang$$=$so3Obj$$.details.map($d$$=>$d$$.tien_nt).reduce(($a$$,$b$$)=>$a$$+$b$$,0),$hoa_hong_tong_tien_hang$$=Math.roundBy($hoa_hong_tong_tien_hang$$*$TY_LE_HOA_HONG_g$$/100))}$obj$$.ty_le_hoa_hong=$TY_LE_HOA_HONG_g$$;$obj$$.tien_hoa_hong=$hoa_hong_tong_tien_hang$$;3===$obj$$.progress&&($obj$$.finished_date=$obj$$.finished_date||new Date,$obj$$.da_thu=$obj$$.da_thu||$obj$$.thu_phi);$obj$$.da_thu&&($obj$$.ngay_ct=
22
- $obj$$.ngay_ct||new Date);if(!$obj$$.id_bp&&$obj$$.phu_trach)try{let $nv$$=await Dmnv.findOne({id_app:$obj$$.id_app,user:$obj$$.phu_trach},{ma_bp:1,bo_phan:1}).lean();if($nv$$){let $bo_phan$$=($nv$$.bo_phan||[]).filter($b$$=>!$b$$.den_ngay||$b$$.den_ngay>=new Date);if(0<$bo_phan$$.length){let $id_bp$$=await Dmbp.getInfo($obj$$.id_app,{ma_bp:$bo_phan$$[0].ma_bp},"_id");$obj$$.id_bp=$id_bp$$;await model.findOneAndUpdate({_id:$obj$$._id},{id_bp:$id_bp$$})}else if($nv$$.ma_bp){let $id_bp$$=await Dmbp.getInfo($obj$$.id_app,
23
- {ma_bp:$nv$$.ma_bp},"_id");$obj$$.id_bp=$id_bp$$;await model.findOneAndUpdate({_id:$obj$$._id},{id_bp:$id_bp$$})}}}catch($e$$){console.error($e$$)}$next$$(null,$obj$$)})},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{$data$$.attends=$data$$.attends||$obj$$.attends;$data$$.attends&&($data$$.attends=[...(new Set($data$$.attends))]);setImmediate(async()=>{$data$$.ma_ct=$obj$$.ma_ct||ma_ct;$data$$.due_date=$data$$.due_date||$obj$$.due_date||$data$$.start_date||$obj$$.start_date;if(!$obj$$.tien_hoa_hong){var $TY_LE_HOA_HONG$$=
24
- ((await App.findOne({_id:$obj$$.id_app})).exfields||{}).ty_le_hoa_hong||0;let $phi_dich_vu_1_lan$$=0,$hoa_hong$$=0;if($obj$$.id_ct){let $so3Obj$$=await SO3.findOne({_id:$obj$$.id_ct});$so3Obj$$&&($so3Obj$$=$so3Obj$$.toObject(),$phi_dich_vu_1_lan$$=$so3Obj$$.details.map($d$$=>$d$$.tien_nt/($d$$.so_lan||1)).reduce(($a$$,$b$$)=>$a$$+$b$$,0),$hoa_hong$$=Math.roundBy($phi_dich_vu_1_lan$$*$TY_LE_HOA_HONG$$/100))}$data$$.phi_dich_vu_1_lan=$phi_dich_vu_1_lan$$;$data$$.ty_le_hoa_hong=$TY_LE_HOA_HONG$$;$data$$.tien_hoa_hong=
25
- $hoa_hong$$}1!==$data$$.progress&&2!==$data$$.progress||$data$$.nguoi_thuc_hien||$obj$$.nguoi_thuc_hien||($data$$.nguoi_thuc_hien=$user$$.email);3===$data$$.progress&&($data$$.nguoi_thuc_hien||$obj$$.nguoi_thuc_hien||($data$$.nguoi_thuc_hien=$user$$.email),2!==$obj$$.progress||$data$$.nguoi_kiem_tra||($data$$.nguoi_kiem_tra=$user$$.email));$TY_LE_HOA_HONG$$=$data$$.progress||$obj$$.progress;3===$TY_LE_HOA_HONG$$&&$obj$$.progress!==$TY_LE_HOA_HONG$$&&($data$$.finished_date=new Date,$data$$.da_thu=
26
- $obj$$.da_thu||$data$$.da_thu||$obj$$.thu_phi);if($obj$$.da_thu||$data$$.da_thu)$data$$.ngay_ct=$obj$$.ngay_ct||$data$$.ngay_ct||new Date;$next$$(null,$data$$,$obj$$)})},onCreated:function($user$$,$obj$jscomp$0$$,$next$$){setImmediate(()=>{createLink($user$$,$obj$jscomp$0$$,function($e$$,$obj$$){if($e$$)return $next$$($e$$);$next$$(null,$obj$$)})})},onUpdated:function($user$$,$obj$jscomp$0$$,$next$$){setImmediate(()=>{createLink($user$$,$obj$jscomp$0$$,async($e$jscomp$11_m2g_so3Obj$$,$obj$$)=>{if($e$jscomp$11_m2g_so3Obj$$)return $next$$($e$jscomp$11_m2g_so3Obj$$);
9
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,ma_ct.toLowerCase(),{sort:{start_date:-1},users_receive_notification_default:[{trang_thai:"0",content:"C\u00f4ng vi\u1ec7c m\u1edbi: {{ten_cv}}",send_phu_trach:!0,send_attends:!0,send_to_user_created:!1},{trang_thai:"1",content:'C\u00f4ng vi\u1ec7c "{{ten_cv}}" \u0111ang \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n',send_phu_trach:!0,send_attends:!0,send_to_customer:!0,send_to_user_created:!1},{trang_thai:"3",
10
+ content:'C\u00f4ng vi\u1ec7c "{{ten_cv}}" \u0111\u00e3 ho\u00e0n th\u00e0nh',send_phu_trach:!0,send_attends:!0,send_to_customer:!0,send_to_user_created:!1},{trang_thai:"4",content:'C\u00f4ng vi\u1ec7c "{{ten_cv}}" \u0111\u00e3 t\u1ea1m d\u1eebng',send_phu_trach:!0,send_attends:!0,send_to_user_created:!1},{trang_thai:"5",content:'C\u00f4ng vi\u1ec7c "{{ten_cv}}" \u0111ang ch\u1edd',send_phu_trach:!0,send_attends:!0,send_to_user_created:!1}],onFinding:function($user$$,$condition$$,$next$$){async.series({find_ten_kh:function($callback$$){setImmediate(()=>
11
+ {$condition$$.ten_kh?customer.find({id_app:$user$$.current_id_app,ten_kh:{$regex:$condition$$.ten_kh,$options:"i"}},{_id:1}).lean().exec(function($e$$,$khs$$){if($e$$)return $callback$$($e$$);delete $condition$$.ten_kh;$e$$=underscore.pluck($khs$$,"_id");$condition$$.id_kh={$in:$e$$};$callback$$()}):$callback$$()})},find_ten_dt:function($callback$$){setImmediate(()=>{$condition$$.ten_dt?dmdt.find({id_app:$user$$.current_id_app,ten_dt:{$regex:$condition$$.ten_dt,$options:"i"}},{_id:1}).lean().exec(function($e$jscomp$6_id_khs$$,
12
+ $khs$$){if($e$jscomp$6_id_khs$$)return $callback$$($e$jscomp$6_id_khs$$);delete $condition$$.ten_dt;$e$jscomp$6_id_khs$$=underscore.pluck($khs$$,"_id");$condition$$.id_dt={$in:$e$jscomp$6_id_khs$$};$callback$$()}):$callback$$()})}},function($e$$){if($e$$)return $next$$($e$$);$next$$(null,$condition$$)})},onFound:($user$$,$condition$$,$items$$,$next$$)=>{$next$$(null,$items$$)},onView:function($user$$,$items$$,$next$$){async.series({trangthai:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>
13
+ void 0!==$item$$.progress).joinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.progress.toString(),ma_ct:"TASK"}),fields:["ten_trang_thai","color","allow_update"]}],function(){$callback$$()})})},nh_cv:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.nh_cv).joinModel2($user$$.current_id_app,Group,[{where:{nh_cv:"_id"},fields:[{name:"ten_nh_cv",value:"group_name"}]}],function(){$callback$$(null,$items$$)})})},phu_trach:function($callback$$){setImmediate(()=>{(async()=>
14
+ {await $items$$.filter($item$$=>$item$$.phu_trach).asyncJoinModel2($user$$.current_id_app,Participant,[{where:{phu_trach:"email"},fields:[{name:"nhom_phu_trach",value:"group_id"},{name:"ten_phu_trach",value:"name"}]}]);await $items$$.filter($item$$=>$item$$.nhom_phu_trach).asyncJoinModel2($user$$.current_id_app,UserGroup,[{where:{nhom_phu_trach:"_id"},fields:[{name:"ten_nhom_phu_trach",value:"group_name"}]}]);await $items$$.filter($item$$=>$item$$.nguoi_kiem_tra).asyncJoinModel2(null,User,[{where:{nguoi_kiem_tra:"email"},
15
+ fields:[{name:"ten_nguoi_kiem_tra",value:"name"}]}]);await $items$$.filter($item$$=>$item$$.nguoi_thuc_hien).asyncJoinModel2(null,User,[{where:{nguoi_thuc_hien:"email"},fields:[{name:"ten_nguoi_thuc_hien",value:"name"}]}])})().then(()=>{$callback$$(null,$items$$)}).catch($e$$=>{$callback$$($e$$)})})},kh:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_kh).joinModel2($user$$.current_id_app,customer,[{where:{id_kh:"_id"},fields:[{name:"ten_kh",value:"ten_kh"}]}],function(){$callback$$(null,
16
+ $items$$)})})},dkho:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_dokho).joinModel2($user$$.current_id_app,dokho,[{where:{id_dokho:"_id"},fields:[{name:"ten_dokho",value:"ten_dokho"}]}],function(){$callback$$(null,$items$$)})})},project:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_dt).joinModel2($user$$.current_id_app,dmdt,[{where:{id_dt:"_id"},fields:[{name:"ten_dt",value:"ten_dt"}]}],function(){$callback$$(null,$items$$)})})},bp:function($callback$$){setImmediate(()=>
17
+ {$items$$.filter($item$$=>$item$$.id_bp).joinModel2($user$$.current_id_app,Dmbp,[{where:{id_bp:"_id"},fields:[{name:"ten_bp",value:"ten_bp"}]}],function(){$callback$$(null,$items$$)})})},so3:$callback$$=>{setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_ct).joinModel2($user$$.current_id_app,SO3,[{where:$a$$=>({_id:$a$$.id_ct}),fields:["so_ct","ngay_ct","ma_kh","ten_kh"]}],function(){$callback$$(null,$items$$)})})},file:$callback$$=>{setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_link).joinModel2($user$$.current_id_app,
18
+ File,[{where:$item$$=>({id_link:$item$$._id}),setFields:($item$$,$data$$)=>{$item$$.avatarFile=$data$$}}],function(){$callback$$(null,$items$$)})})}},function(){setImmediate(()=>{const $last_week$$=new Date;$last_week$$.setDate($last_week$$.getDate()-7);$items$$.forEach(function($item$$){void 0===$item$$.ten_kh&&($item$$.ten_kh="");!$item$$.saved&&$item$$.finished_date&&3===$item$$.progress&&(new Date($item$$.finished_date)).getTime()<=$last_week$$.getTime()&&model.findOneAndUpdate({_id:$item$$._id},
19
+ {saved:!0},()=>{})});$next$$(null,$items$$)})})},onCreating:async($user$$,$obj$$,$next$$)=>{$obj$$.attends&&($obj$$.attends=[...(new Set($obj$$.attends))]);setImmediate(async()=>{$obj$$.ma_ct=ma_ct;$obj$$.due_date=$obj$$.due_date||$obj$$.start_date;if(!$obj$$.nh_cv&&$obj$$.group_id_link){var $TY_LE_HOA_HONG_g$$=await Group.findOne({id_link:$obj$$.group_id_link,id_app:$user$$.current_id_app,group_type:"TASK"});$TY_LE_HOA_HONG_g$$?$obj$$.nh_cv=$TY_LE_HOA_HONG_g$$._id.toString():$obj$$.group_name_link&&
20
+ ($TY_LE_HOA_HONG_g$$=await Group.create({group_type:"TASK",id_link:$obj$$.group_id_link,id_app:$user$$.current_id_app,group_name:$obj$$.group_name_link,phu_trach:$obj$$.phu_trach||$user$$.email,attends:$obj$$.attends}),$obj$$.nh_cv=$TY_LE_HOA_HONG_g$$._id.toString())}$TY_LE_HOA_HONG_g$$=((await App.findOne({_id:$user$$.current_id_app})).exfields||{}).ty_le_hoa_hong||0;var $hoa_hong_tong_tien_hang$$=0;if($obj$$.id_ct){let $so3Obj$$=await SO3.findOne({_id:$obj$$.id_ct});$so3Obj$$&&($so3Obj$$=$so3Obj$$.toObject(),
21
+ $hoa_hong_tong_tien_hang$$=$so3Obj$$.details.map($d$$=>$d$$.tien_nt).reduce(($a$$,$b$$)=>$a$$+$b$$,0),$hoa_hong_tong_tien_hang$$=Math.roundBy($hoa_hong_tong_tien_hang$$*$TY_LE_HOA_HONG_g$$/100))}$obj$$.ty_le_hoa_hong=$TY_LE_HOA_HONG_g$$;$obj$$.tien_hoa_hong=$hoa_hong_tong_tien_hang$$;3===$obj$$.progress&&($obj$$.finished_date=$obj$$.finished_date||new Date,$obj$$.da_thu=$obj$$.da_thu||$obj$$.thu_phi);$obj$$.da_thu&&($obj$$.ngay_ct=$obj$$.ngay_ct||new Date);if(!$obj$$.id_bp&&$obj$$.phu_trach)try{let $nv$$=
22
+ await Dmnv.findOne({id_app:$obj$$.id_app,user:$obj$$.phu_trach},{ma_bp:1,bo_phan:1}).lean();if($nv$$){let $bo_phan$$=($nv$$.bo_phan||[]).filter($b$$=>!$b$$.den_ngay||$b$$.den_ngay>=new Date);if(0<$bo_phan$$.length){let $id_bp$$=await Dmbp.getInfo($obj$$.id_app,{ma_bp:$bo_phan$$[0].ma_bp},"_id");$obj$$.id_bp=$id_bp$$;await model.findOneAndUpdate({_id:$obj$$._id},{id_bp:$id_bp$$})}else if($nv$$.ma_bp){let $id_bp$$=await Dmbp.getInfo($obj$$.id_app,{ma_bp:$nv$$.ma_bp},"_id");$obj$$.id_bp=$id_bp$$;await model.findOneAndUpdate({_id:$obj$$._id},
23
+ {id_bp:$id_bp$$})}}}catch($e$$){console.error($e$$)}$next$$(null,$obj$$)})},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{$data$$.attends=$data$$.attends||$obj$$.attends;$data$$.attends&&($data$$.attends=[...(new Set($data$$.attends))]);setImmediate(async()=>{$data$$.ma_ct=$obj$$.ma_ct||ma_ct;$data$$.due_date=$data$$.due_date||$obj$$.due_date||$data$$.start_date||$obj$$.start_date;if(!$obj$$.tien_hoa_hong){var $TY_LE_HOA_HONG$$=((await App.findOne({_id:$obj$$.id_app})).exfields||{}).ty_le_hoa_hong||
24
+ 0;let $phi_dich_vu_1_lan$$=0,$hoa_hong$$=0;if($obj$$.id_ct){let $so3Obj$$=await SO3.findOne({_id:$obj$$.id_ct});$so3Obj$$&&($so3Obj$$=$so3Obj$$.toObject(),$phi_dich_vu_1_lan$$=$so3Obj$$.details.map($d$$=>$d$$.tien_nt/($d$$.so_lan||1)).reduce(($a$$,$b$$)=>$a$$+$b$$,0),$hoa_hong$$=Math.roundBy($phi_dich_vu_1_lan$$*$TY_LE_HOA_HONG$$/100))}$data$$.phi_dich_vu_1_lan=$phi_dich_vu_1_lan$$;$data$$.ty_le_hoa_hong=$TY_LE_HOA_HONG$$;$data$$.tien_hoa_hong=$hoa_hong$$}1!==$data$$.progress&&2!==$data$$.progress||
25
+ $data$$.nguoi_thuc_hien||$obj$$.nguoi_thuc_hien||($data$$.nguoi_thuc_hien=$user$$.email);3===$data$$.progress&&($data$$.nguoi_thuc_hien||$obj$$.nguoi_thuc_hien||($data$$.nguoi_thuc_hien=$user$$.email),2!==$obj$$.progress||$data$$.nguoi_kiem_tra||($data$$.nguoi_kiem_tra=$user$$.email));$TY_LE_HOA_HONG$$=$data$$.progress||$obj$$.progress;3===$TY_LE_HOA_HONG$$&&$obj$$.progress!==$TY_LE_HOA_HONG$$&&($data$$.finished_date=new Date,$data$$.da_thu=$obj$$.da_thu||$data$$.da_thu||$obj$$.thu_phi);if($obj$$.da_thu||
26
+ $data$$.da_thu)$data$$.ngay_ct=$obj$$.ngay_ct||$data$$.ngay_ct||new Date;$next$$(null,$data$$,$obj$$)})},onCreated:function($user$$,$obj$jscomp$0$$,$next$$){setImmediate(()=>{createLink($user$$,$obj$jscomp$0$$,function($e$$,$obj$$){if($e$$)return $next$$($e$$);$next$$(null,$obj$$)})})},onUpdated:function($user$$,$obj$jscomp$0$$,$next$$){setImmediate(()=>{createLink($user$$,$obj$jscomp$0$$,async($e$jscomp$11_m2g_so3Obj$$,$obj$$)=>{if($e$jscomp$11_m2g_so3Obj$$)return $next$$($e$jscomp$11_m2g_so3Obj$$);
27
27
  if($e$jscomp$11_m2g_so3Obj$$=await Message2setting.findOne({id_link:$obj$$._id.toString()})){$obj$$.phu_trach!==$e$jscomp$11_m2g_so3Obj$$.phu_trach&&($e$jscomp$11_m2g_so3Obj$$.phu_trach=$obj$$.phu_trach,$e$jscomp$11_m2g_so3Obj$$.attends.push($obj$$.user_created));var $attends$$=[...(new Set([...$e$jscomp$11_m2g_so3Obj$$.attends,...$obj$$.attends]))];$e$jscomp$11_m2g_so3Obj$$.attends=$attends$$;$e$jscomp$11_m2g_so3Obj$$.save();Message2.updateMany({id_link:$obj$$._id.toString()},{$set:{attends:$attends$$}}).then($rs$$=>
28
28
  {console.log("update message2",$rs$$)})}if($obj$$.id_ct&&($e$jscomp$11_m2g_so3Obj$$=await SO3.findOne({_id:$obj$$.id_ct}))){$e$jscomp$11_m2g_so3Obj$$=$e$jscomp$11_m2g_so3Obj$$.toObject();$attends$$=await model.countDocuments({id_ct:$obj$$.id_ct,progress:3});const $task_doing$$=await model.countDocuments({id_ct:$obj$$.id_ct,progress:1}),$task_cancel$$=await model.countDocuments({id_ct:$obj$$.id_ct,progress:5}),$total_task$$=await model.countDocuments({id_ct:$obj$$.id_ct});let $so3Obj_views$$=await so3Controller.asyncView($user$$,
29
29
  [$e$jscomp$11_m2g_so3Obj$$],{});$attends$$!==$total_task$$||"5"==$e$jscomp$11_m2g_so3Obj$$.trang_thai||"4"!=$e$jscomp$11_m2g_so3Obj$$.trang_thai&&"3"!=$e$jscomp$11_m2g_so3Obj$$.trang_thai?(($attends$$||$task_doing$$)&&"3"==$e$jscomp$11_m2g_so3Obj$$.trang_thai&&"4"!=$e$jscomp$11_m2g_so3Obj$$.trang_thai&&(await SO3.findOneAndUpdate({_id:$obj$$.id_ct},{trang_thai:"4"}),$e$jscomp$11_m2g_so3Obj$$.trang_thai="4",controller.pushNotification(so3Controller,$so3Obj_views$$[0],"update")),$total_task$$===$task_cancel$$&&
@@ -1,2 +1,6 @@
1
- 'use strict';const model=global.getModel("usergroup"),participant=global.getModel("participant"),controller=require("../../controllers/controller"),usergroup=function($router$$){(new controller($router$$,model,"usergroup",{sort:{group_name:1},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,participant,{where:{phu_trach:"email"},fields:{ten_phu_trach:"name"}});await $items$$.asyncJoinModel2($user$$.current_id_app,model,{where:{group_mother:"_id"},fields:{group_mother_name:"group_name"}});
2
- $next$$(null,$items$$)},onCreated:async($user$$,$obj$$,$next$$)=>{(await participant.find({id_app:$obj$$.id_app,group_id:$obj$$._id.toString()})).forEach($p$$=>{$p$$.phu_trach=$obj$$.phu_trach;$p$$.save()});$next$$(null,$obj$$)},onUpdated:async($user$$,$obj$$,$next$$)=>{(await participant.find({id_app:$obj$$.id_app,group_id:$obj$$._id.toString()})).forEach($p$$=>{$p$$.phu_trach=$obj$$.phu_trach;$p$$.save()});$next$$(null,$obj$$)}})).route()};module.exports=usergroup;
1
+ 'use strict';const model=global.getModel("usergroup"),participant=global.getModel("participant"),controller=require("../../controllers/controller"),getSysorder=function($item$$,$callback$$){let $sysorder$$=$item$$._id.toString();$item$$.group_mother?model.findOne({_id:$item$$.group_mother}).lean().exec(function($e$$,$item_me$$){$item_me$$?getSysorder($item_me$$,function($rs$$){$sysorder$$=$rs$$+"---"+$sysorder$$;$callback$$($sysorder$$)}):$callback$$($sysorder$$)}):$callback$$($sysorder$$)},usergroup=
2
+ function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"usergroup",{sort:{group_name:1},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,participant,{where:{phu_trach:"email"},fields:{ten_phu_trach:"name"}});await $items$$.asyncJoinModel2($user$$.current_id_app,model,{where:{group_mother:"_id"},fields:{group_mother_name:"group_name"}});$next$$(null,$items$$)},onCreated:async($user$$,$obj$$,$next$$)=>{(await participant.find({id_app:$obj$$.id_app,
3
+ group_id:$obj$$._id.toString()})).forEach($p$$=>{$p$$.phu_trach=$obj$$.phu_trach;$p$$.save()});getSysorder($obj$$,function($rs$$){$obj$$.sysorder=$rs$$;$obj$$.bac=$rs$$.split("---").length;model.findOneAndUpdate({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:1}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})},onUpdated:async($user$$,$obj$$,$next$$)=>{(await participant.find({id_app:$obj$$.id_app,group_id:$obj$$._id.toString()})).forEach($p$$=>{$p$$.phu_trach=
4
+ $obj$$.phu_trach;$p$$.save()});getSysorder($obj$$,async function($loai_nh_rs$$){$obj$$.sysorder=$loai_nh_rs$$;$obj$$.bac=$loai_nh_rs$$.split("---").length;$loai_nh_rs$$=1;await model.findOne({group_mother:$obj$$._id.toString()})&&($loai_nh_rs$$=0);$obj$$.loai_nh=$loai_nh_rs$$;model.findOneAndUpdate({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:$loai_nh_rs$$}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})}});$contr_router$$.route();$contr_router$$.deleting=
5
+ function($user$$,$obj$$,$next$$){if(0===$obj$$.loai_nh)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a nh\u00f3m m\u1eb9"));$next$$(null,$obj$$)};$contr_router$$.on("saved",function($obj$jscomp$0$$){const $group_mother$$=$obj$jscomp$0$$.group_mother;$group_mother$$&&model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,_id:$group_mother$$},{$set:{loai_nh:0}},function($error$$,$obj$$){$error$$?console.error($error$$):$obj$$?console.log("updated "+$obj$$._id):console.log("Not found mother account:"+
6
+ $group_mother$$)})});$contr_router$$.on("deleted",function($obj$jscomp$0$$){$obj$jscomp$0$$.group_mother&&model.findOne({group_mother:$obj$jscomp$0$$.group_mother},function($error$jscomp$0$$,$acc$$){$error$jscomp$0$$||$acc$$||model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,_id:$obj$jscomp$0$$.group_mother},{$set:{loai_nh:1}},function($error$$,$obj$$){$error$$||$obj$$&&console.log("updated "+$obj$$._id)})})})};module.exports=usergroup;
@@ -1,5 +1,5 @@
1
1
  'use strict';const tinhgiatb=require("../../libs/tinhgiatb"),controller=require("../../controllers/controllerRPT"),_Notification=global.getModel("notification");
2
2
  module.exports=function($router$$){new controller($router$$,"tinhgiatb",async function($req$$,$callback$$){const $query$$=$req$$.query;if(!$query$$.nam||!$query$$.tu_thang||!$query$$.den_thang)return $callback$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: nam,tu_thang,den_thang");const $moment$$=require("moment");var $_app_ngay_ks$$=await global.getModel("app").findOne({_id:$req$$.user.current_id_app});if(!$_app_ngay_ks$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");
3
3
  $_app_ngay_ks$$=$moment$$($_app_ngay_ks$$.ngay_ks).startOf("date").toDate();let $tu_ngay$$=$moment$$([Number($query$$.nam),Number($query$$.tu_thang)-1,1]).startOf("month").toDate();if($_app_ngay_ks$$.getTime()>=$tu_ngay$$.getTime())return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${$moment$$($_app_ngay_ks$$).format("DD/MM/YYYY")}`);const $id_app$$=$query$$.id_app,$zquery$$=Object.assign({},$query$$,{id_app:$id_app$$});tinhgiatb($zquery$$,function($error$$){const $email$$=
4
- $req$$.user.email;$error$$?(console.error("l\u1ed7i t\u00ednh gia trung b\u00ecnh:",$error$$,$zquery$$),_Notification.createNotification($email$$,$email$$,$error$$.message||$error$$,$error$$.message||$error$$,null,{id_app:$id_app$$},!0,$req$$.access_token,!0)):(console.log("\u0110\u00e3 t\u00ednh xong gi\u00e1 trung b\u00ecnh",$zquery$$),_Notification.createNotification($email$$,$email$$,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 t\u00ednh gi\u00e1 trung b\u00ecnh xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 t\u00ednh gi\u00e1 trung b\u00ecnh xong",
5
- null,{id_app:$id_app$$},!0,$req$$.access_token,!0))});$callback$$(null,[{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. B\u1ea1n c\u00f3 th\u1ec3 chuy\u1ec3n sang trang kh\u00e1c \u0111\u1ec3 l\u00e0m vi\u1ec7c. Khi ch\u01b0\u01a1ng tr\u00ecnh th\u1ef1c hi\u1ec7n xong s\u1ebd g\u1eedi th\u00f4ng b\u00e1o cho b\u1ea1n."}])},{stream:!1})};
4
+ $req$$.user.email;$error$$?(console.error("l\u1ed7i t\u00ednh gia trung b\u00ecnh:",$error$$,$zquery$$),_Notification.createNotification($email$$,$email$$,$error$$.message||$error$$,$error$$.message||$error$$,null,{id_app:$id_app$$},!0,$req$$.access_token,!0)):_Notification.createNotification($email$$,$email$$,"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 t\u00ednh gi\u00e1 trung b\u00ecnh xong","Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 t\u00ednh gi\u00e1 trung b\u00ecnh xong",null,{id_app:$id_app$$},
5
+ !0,$req$$.access_token,!0)});$callback$$(null,[{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. B\u1ea1n c\u00f3 th\u1ec3 chuy\u1ec3n sang trang kh\u00e1c \u0111\u1ec3 l\u00e0m vi\u1ec7c. Khi ch\u01b0\u01a1ng tr\u00ecnh th\u1ef1c hi\u1ec7n xong s\u1ebd g\u1eedi th\u00f4ng b\u00e1o cho b\u1ea1n."}])},{stream:!1})};
@@ -2,8 +2,8 @@
2
2
  module.exports=function($router$$){new controller($router$$,"congviectheonv",function($req$$,$callback$jscomp$0$$){const $condition$$=$req$$.query;if(!$condition$$.tu_ngay||!$condition$$.den_ngay)return $callback$jscomp$0$$("B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1:tu_ngay,den_ngay");$condition$$.tu_ngay=moment(new Date($condition$$.tu_ngay)).startOf("date").toDate();$condition$$.den_ngay=moment(new Date($condition$$.den_ngay)).endOf("date").toDate();const $query$$={id_app:$condition$$.id_app};
3
3
  $query$$.start_date={$gte:$condition$$.tu_ngay,$lte:$condition$$.den_ngay};$condition$$.id_bp&&($query$$.id_bp=$condition$$.id_bp);$condition$$.id_dt&&($query$$.id_dt=$condition$$.id_dt);$condition$$.id_kh&&($query$$.id_kh=$condition$$.id_kh);$condition$$.nh_cv&&($query$$.nh_cv=$condition$$.nh_cv);const $now$$=new Date;task.find($query$$).lean().exec(async function($error$jscomp$2$$,$rs$$){if($error$jscomp$2$$)return $callback$jscomp$0$$($error$jscomp$2$$);await $rs$$.filter($item$$=>$item$$.ma_loai_cv).asyncJoinModel2($req$$.user.current_id_app,
4
4
  dmloaitask,{where:"ma_loai_cv",fields:["ten_loai_cv","he_so"]});async.mapSeries($rs$$,function($r$$,$callback$$){$r$$.t_so_luong=1;$r$$.chua_thuc_hien=0===$r$$.progress?1:0;$r$$.dang_thuc_hien=1===$r$$.progress?1:0;$r$$.kiem_tra=2===$r$$.progress?1:0;$r$$.hoan_thanh=3===$r$$.progress?1:0;$r$$.tam_dung=4===$r$$.progress?1:0;$r$$.cho=5===$r$$.progress?1:0;$r$$.cham_tien_do=0;$r$$.diem=0;$r$$.complete_hour=$r$$.complete_hour||0;$r$$.he_so=void 0===$r$$.he_so?1:$r$$.he_so;$r$$.ngay=moment($r$$.start_date).date();
5
- $r$$.thang=(new Date($r$$.start_date)).getMonth()+1;$r$$.quy=moment($r$$.start_date).quarter();$r$$.nam=(new Date($r$$.start_date)).getFullYear();$r$$.due_date&&($r$$.finished_date?$r$$.finished_date.getTime()>$r$$.due_date.getTime()&&($r$$.cham_tien_do=1):$now$$.getTime()>$r$$.due_date.getTime()&&($r$$.cham_tien_do=1));$r$$.diem=($r$$.diem_du_tinh||0)*$r$$.he_so*($r$$.percent||0)/100;if($r$$.chia_diem&&$r$$.attends&&0<$r$$.attends.length){let $nvs$$=[...(new Set([...$r$$.attends,$r$$.phu_trach]))];
6
- $r$$.diem/=$nvs$$.length}$callback$$(null,$r$$)},function($error$jscomp$0$$,$_rs$$){if($error$jscomp$0$$)return $callback$jscomp$0$$($error$jscomp$0$$);$_rs$$.filter($r$$=>$r$$.attends&&0<$r$$.attends.length&&$r$$.chia_diem&&$r$$.hoan_thanh).forEach($r$$=>{$r$$.attends.filter($a$$=>$a$$!==$r$$.phu_trach).forEach($nv_cung_lam$$=>{$rs$$.push({...$r$$,phu_trach:$nv_cung_lam$$})})});$condition$$.phu_trach&&($rs$$=$rs$$.filter($r$$=>$r$$.phu_trach===$condition$$.phu_trach));$error$jscomp$0$$=["phu_trach"];
7
- $condition$$.groupby&&($error$jscomp$0$$=[...(new Set([...$error$jscomp$0$$,...$condition$$.groupby.split(",")]))]);$rs$$.groupBy($error$jscomp$0$$,[{name:"t_so_luong",value:"t_so_luong"},{name:"chua_thuc_hien",value:"chua_thuc_hien"},{name:"dang_thuc_hien",value:"dang_thuc_hien"},{name:"kiem_tra",value:"kiem_tra"},{name:"hoan_thanh",value:"hoan_thanh"},{name:"tam_dung",value:"tam_dung"},{name:"cho",value:"cho"},{name:"cham_tien_do",value:"cham_tien_do"},{name:"diem",value:"diem"},{name:"complete_hour",
8
- value:"complete_hour"}],function($error$$,$rs$$){if($error$$)return $callback$jscomp$0$$($error$$);const $report$$=underscore.sortBy($rs$$,function($r$$){return $r$$.phu_trach});let $i$$=1;$report$$.forEach(function($r$$){$r$$.stt=$i$$;$r$$.bold=!1;$i$$++});$report$$.joinModel2($condition$$.id_app,Participant,{where:{phu_trach:"email"},fields:[{name:"name",value:"name"}]},function(){$report$$.push({name:"T\u1ed5ng c\u1ed9ng",t_so_luong:$report$$.csum("t_so_luong"),chua_thuc_hien:$report$$.csum("chua_thuc_hien"),
9
- dang_thuc_hien:$report$$.csum("dang_thuc_hien"),kiem_tra:$report$$.csum("kiem_tra"),hoan_thanh:$report$$.csum("hoan_thanh"),tam_dung:$report$$.csum("tam_dung"),cho:$report$$.csum("cho"),cham_tien_do:$report$$.csum("cham_tien_do"),diem:$report$$.csum("diem"),complete_hour:$report$$.csum("complete_hour"),bold:!0});$callback$jscomp$0$$(null,$report$$)})})})})})};
5
+ $r$$.thang=(new Date($r$$.start_date)).getMonth()+1;$r$$.quy=moment($r$$.start_date).quarter();$r$$.nam=(new Date($r$$.start_date)).getFullYear();$r$$.due_date&&($r$$.finished_date?$r$$.finished_date.getTime()>$r$$.due_date.getTime()&&($r$$.cham_tien_do=1):$now$$.getTime()>$r$$.due_date.getTime()&&($r$$.cham_tien_do=1));$r$$.diem=($r$$.diem_du_tinh||0)*$r$$.he_so*($r$$.percent||0)/100;$callback$$(null,$r$$)},function($error$jscomp$0$$,$_rs$$){if($error$jscomp$0$$)return $callback$jscomp$0$$($error$jscomp$0$$);
6
+ $_rs$$.filter($r$$=>$r$$.attends&&0<$r$$.attends.length&&$r$$.chia_diem&&0<$r$$.he_so_chia_diem.length).forEach($r$$=>{const $tong_diem$$=$r$$.diem,$tong_he_so$$=$r$$.he_so_chia_diem.map($u$$=>$u$$.he_so).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$tong_he_so$$&&($r$$.diem=0,$r$$.he_so_chia_diem.forEach($u$$=>{const $diem$$=$u$$.he_so/$tong_he_so$$*$tong_diem$$;$u$$.user===$r$$.phu_trach?$r$$.diem=$diem$$:$rs$$.push({...$r$$,phu_trach:$u$$.user,diem:$diem$$})}))});$condition$$.phu_trach&&($rs$$=$rs$$.filter($r$$=>
7
+ $r$$.phu_trach===$condition$$.phu_trach));$error$jscomp$0$$=["phu_trach"];$condition$$.groupby&&($error$jscomp$0$$=[...(new Set([...$error$jscomp$0$$,...$condition$$.groupby.split(",")]))]);$rs$$.groupBy($error$jscomp$0$$,[{name:"t_so_luong",value:"t_so_luong"},{name:"chua_thuc_hien",value:"chua_thuc_hien"},{name:"dang_thuc_hien",value:"dang_thuc_hien"},{name:"kiem_tra",value:"kiem_tra"},{name:"hoan_thanh",value:"hoan_thanh"},{name:"tam_dung",value:"tam_dung"},{name:"cho",value:"cho"},{name:"cham_tien_do",
8
+ value:"cham_tien_do"},{name:"diem",value:"diem"},{name:"complete_hour",value:"complete_hour"}],function($error$$,$rs$$){if($error$$)return $callback$jscomp$0$$($error$$);const $report$$=underscore.sortBy($rs$$,function($r$$){return $r$$.phu_trach});let $i$$=1;$report$$.forEach(function($r$$){$r$$.stt=$i$$;$r$$.bold=!1;$i$$++});$report$$.joinModel2($condition$$.id_app,Participant,{where:{phu_trach:"email"},fields:[{name:"name",value:"name"}]},function(){$report$$.push({name:"T\u1ed5ng c\u1ed9ng",t_so_luong:$report$$.csum("t_so_luong"),
9
+ chua_thuc_hien:$report$$.csum("chua_thuc_hien"),dang_thuc_hien:$report$$.csum("dang_thuc_hien"),kiem_tra:$report$$.csum("kiem_tra"),hoan_thanh:$report$$.csum("hoan_thanh"),tam_dung:$report$$.csum("tam_dung"),cho:$report$$.csum("cho"),cham_tien_do:$report$$.csum("cham_tien_do"),diem:$report$$.csum("diem"),complete_hour:$report$$.csum("complete_hour"),bold:!0});$callback$jscomp$0$$(null,$report$$)})})})})})};