flexbiz-server 12.6.13 → 12.6.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/README.md +439 -4
  2. package/package.json +4 -3
  3. package/server/agents/agents.js +1 -0
  4. package/server/agents/ai_memory_manager.js +6 -0
  5. package/server/agents/ceoAgent.js +43 -0
  6. package/server/agents/chatController.js +6 -0
  7. package/server/agents/cskhAgent.js +43 -0
  8. package/server/agents/flowAgent.js +43 -0
  9. package/server/agents/prompts/ceo.js +2 -0
  10. package/server/agents/prompts/flow.js +2 -0
  11. package/server/agents/staffAgent.js +44 -0
  12. package/server/agents/tools/financeTools.js +57 -0
  13. package/server/agents/tools/flowTools.js +36 -0
  14. package/server/agents/tools/kpiTools.js +104 -0
  15. package/server/agents/tools/masterDataTools.js +74 -0
  16. package/server/agents/tools/okrTools.js +21 -0
  17. package/server/agents/tools/ragTools.js +21 -0
  18. package/server/agents/tools/reportTools.js +43 -0
  19. package/server/agents/tools/staffTools.js +13 -0
  20. package/server/agents/tools/stockTools.js +41 -0
  21. package/server/agents/tools/systemTools.js +52 -0
  22. package/server/agents/tools/taskTools.js +23 -0
  23. package/server/agents/tools/utils.js +57 -0
  24. package/server/app.js +7 -7
  25. package/server/controllers/controller.js +31 -29
  26. package/server/controllers/controllerRPT.js +31 -29
  27. package/server/controllers/findHandler.js +22 -21
  28. package/server/controllers/importFromExcelHandler.js +17 -14
  29. package/server/controllers/importHandler.js +26 -41
  30. package/server/controllers/importHandler_old.js +41 -0
  31. package/server/controllers/rptHandler.js +14 -11
  32. package/server/controllers/viewHandler.js +7 -7
  33. package/server/flow/FlowEngine.js +49 -45
  34. package/server/flow/WebhookManager.js +1 -1
  35. package/server/flow/handlers.js +2 -2
  36. package/server/flow/nodes/userform.js +28 -0
  37. package/server/flow/utils.js +12 -4
  38. package/server/global.js +4 -3
  39. package/server/libs/cdpstk.js +1 -1
  40. package/server/libs/ckvt.js +12 -11
  41. package/server/libs/ckvtcapphat.js +5 -5
  42. package/server/libs/ckvtnpp.js +8 -8
  43. package/server/libs/ckvttt.js +6 -5
  44. package/server/libs/ctvt.js +7 -6
  45. package/server/libs/ctvtnpp.js +7 -6
  46. package/server/libs/ctvttt.js +6 -6
  47. package/server/libs/databanle.js +17 -18
  48. package/server/libs/databanle_old.js +18 -0
  49. package/server/libs/databanletheongay.js +25 -29
  50. package/server/libs/dktk.js +3 -3
  51. package/server/libs/dkvt.js +11 -11
  52. package/server/libs/dkvtnpp.js +7 -6
  53. package/server/libs/dkvttt.js +7 -6
  54. package/server/libs/docs.js +72 -36
  55. package/server/libs/dtbanletheosp.js +16 -19
  56. package/server/libs/fifo_dk.js +8 -0
  57. package/server/libs/fifo_group.js +4 -0
  58. package/server/libs/fifo_trace_query.js +12 -0
  59. package/server/libs/getGiaban.js +59 -70
  60. package/server/libs/getGiaban_old.js +70 -0
  61. package/server/libs/joinData.js +3 -3
  62. package/server/libs/joinData_bk.js +44 -0
  63. package/server/libs/kpistatus.js +24 -17
  64. package/server/libs/permission.js +54 -56
  65. package/server/libs/permission_old.js +58 -0
  66. package/server/libs/post-book.js +1 -1
  67. package/server/libs/post-socai.js +2 -1
  68. package/server/libs/post-sokho.js +11 -11
  69. package/server/libs/prototypes.js +13 -12
  70. package/server/libs/queryBuilding.js +11 -10
  71. package/server/libs/redis-cache.js +22 -10
  72. package/server/libs/sctcnkh.js +19 -17
  73. package/server/libs/socaitk.js +1 -1
  74. package/server/libs/thnxt.js +17 -14
  75. package/server/libs/thnxtnpp.js +8 -8
  76. package/server/libs/thnxttt.js +8 -7
  77. package/server/libs/tinhgia1vt_fifo.js +22 -0
  78. package/server/libs/tinhgiafifo.js +28 -0
  79. package/server/libs/utils.js +37 -19
  80. package/server/models/app.js +1 -1
  81. package/server/models/approve.js +8 -8
  82. package/server/models/cacheDataReport.js +2 -2
  83. package/server/models/cacheSessionReport.js +5 -1
  84. package/server/models/cdvt.js +2 -2
  85. package/server/models/checkin.js +2 -2
  86. package/server/models/chitietluongds.js +1 -1
  87. package/server/models/contract.js +1 -1
  88. package/server/models/csluongtheods.js +2 -2
  89. package/server/models/ctds2.js +7 -6
  90. package/server/models/custom_report.js +1 -0
  91. package/server/models/dmdt.js +2 -2
  92. package/server/models/dmkho.js +5 -4
  93. package/server/models/dmnvt.js +5 -4
  94. package/server/models/fifo_dk.js +2 -0
  95. package/server/models/fifo_lot.js +3 -0
  96. package/server/models/fifo_trace.js +4 -0
  97. package/server/models/flowpending.js +2 -0
  98. package/server/models/group.js +3 -5
  99. package/server/models/listinfo.js +61 -33
  100. package/server/models/schedule.js +4 -3
  101. package/server/models/task.js +1 -1
  102. package/server/models/trangthai.js +2 -2
  103. package/server/modules/lists/bg-fifo_dk.js +8 -0
  104. package/server/modules/lists/ls-checkin.js +1 -1
  105. package/server/modules/lists/ls-customer.js +23 -26
  106. package/server/modules/lists/ls-dmbp.js +5 -5
  107. package/server/modules/lists/ls-dmkho.js +7 -1
  108. package/server/modules/lists/ls-dmnhtask.js +1 -1
  109. package/server/modules/lists/ls-dmvt.js +52 -70
  110. package/server/modules/lists/ls-flowpending.js +3 -0
  111. package/server/modules/lists/ls-participant.js +6 -4
  112. package/server/modules/lists/ls-task.js +6 -6
  113. package/server/modules/reports/calc-tinhgiafifo.js +8 -0
  114. package/server/modules/reports/calc-tinhluong.js +17 -16
  115. package/server/modules/reports/rp-baoCaoFifoKy.js +1 -0
  116. package/server/modules/reports/rp-congviectheobp.js +4 -4
  117. package/server/modules/reports/rp-congviectheodt.js +1 -1
  118. package/server/modules/reports/rp-congviectheokh.js +1 -1
  119. package/server/modules/reports/rp-congviectheonv.js +1 -1
  120. package/server/modules/reports/rp-dtbanletheoct.js +22 -23
  121. package/server/modules/reports/rp-dtbanletheokh.js +17 -20
  122. package/server/modules/reports/rp-dtbanletheokho.js +15 -18
  123. package/server/modules/reports/rp-hoahong.js +1 -1
  124. package/server/modules/reports/rp-sctvt.js +1 -1
  125. package/server/modules/reports/rp-sosanhkhvatt2.js +1 -1
  126. package/server/modules/reports/rp-thnxt.js +8 -8
  127. package/server/modules/reports/rp-tongquannvbh.js +1 -1
  128. package/server/modules/systems/sys-app.js +5 -5
  129. package/server/modules/vouchers/vo-so1.js +14 -14
@@ -1,5 +1,5 @@
1
- const socai=global.getModel("socai"),ctds=global.getModel("ctds2"),dmbp=global.getModel("dmbp"),dmdt=global.getModel("dmdt"),dmphi=global.getModel("dmphi"),async=require("async"),_=require("lodash"),moment=require("moment"),{getCodeChildren}=require("./utils"),databanle=require("./databanle"),tinhHoaHong=async($ct$$,$query$$)=>{$ct$$.chinh_sach_hoa_hong&&$ct$$.chinh_sach_hoa_hong.length!=0&&($ct$$.chinh_sach_hoa_hong=$ct$$.chinh_sach_hoa_hong.filter($cs$$=>$cs$$.ty_le_ht_tu<=$ct$$.ty_le_ht&&(!$cs$$.ty_le_ht_den||
2
- $cs$$.ty_le_ht_den>$ct$$.ty_le_ht)),await Promise.all($ct$$.chinh_sach_hoa_hong.map($cs$$=>(async()=>{$ct$$.ma_kho&&!$cs$$.ma_kho&&($cs$$.ma_kho=$ct$$.ma_kho);$ct$$.ma_nv&&!$cs$$.ma_nv&&($cs$$.ma_nv=$ct$$.ma_nv);$cs$$.quan_ly=$ct$$.quan_ly;$ct$$.__in_ma_bp__&&!$cs$$.ma_bp&&($cs$$.__in_ma_bp__=$ct$$.__in_ma_bp__);$ct$$.__in_ma_dt__&&!$cs$$.ma_dt&&($cs$$.__in_ma_dt__=$ct$$.__in_ma_dt__);$ct$$.__in_ma_phi__&&!$cs$$.ma_phi&&($cs$$.__in_ma_phi__=$ct$$.__in_ma_phi__);switch($cs$$.cach_tinh){case "0":$cs$$.ps_tinh_hoa_hong=
1
+ const socai=global.getModel("socai"),ctds=global.getModel("ctds2"),dmbp=global.getModel("dmbp"),dmdt=global.getModel("dmdt"),dmphi=global.getModel("dmphi"),async=require("async"),_=require("lodash"),moment=require("moment"),{getCodeChildren,evalute2:evalute}=require("./utils"),databanle=require("./databanle"),tinhHoaHong=async($ct$$,$query$$)=>{$ct$$.chinh_sach_hoa_hong&&$ct$$.chinh_sach_hoa_hong.length!=0&&($ct$$.chinh_sach_hoa_hong=$ct$$.chinh_sach_hoa_hong.filter($cs$$=>$cs$$.ty_le_ht_tu<=$ct$$.ty_le_ht&&
2
+ (!$cs$$.ty_le_ht_den||$cs$$.ty_le_ht_den>$ct$$.ty_le_ht)),await Promise.all($ct$$.chinh_sach_hoa_hong.map($cs$$=>(async()=>{$ct$$.ma_kho&&!$cs$$.ma_kho&&($cs$$.ma_kho=$ct$$.ma_kho);$ct$$.ma_nv&&!$cs$$.ma_nv&&($cs$$.ma_nv=$ct$$.ma_nv);$cs$$.quan_ly=$ct$$.quan_ly;$ct$$.__in_ma_bp__&&!$cs$$.ma_bp&&($cs$$.__in_ma_bp__=$ct$$.__in_ma_bp__);$ct$$.__in_ma_dt__&&!$cs$$.ma_dt&&($cs$$.__in_ma_dt__=$ct$$.__in_ma_dt__);$ct$$.__in_ma_phi__&&!$cs$$.ma_phi&&($cs$$.__in_ma_phi__=$ct$$.__in_ma_phi__);switch($cs$$.cach_tinh){case "0":$cs$$.ps_tinh_hoa_hong=
3
3
  $ct$$.ps;$cs$$.tien_hoa_hong=Math.roundBy($cs$$.ps_tinh_hoa_hong*$cs$$.ty_le_hoa_hong/100,0);break;case "1":var $dt_dt$$=await calcSoCai($cs$$,_.cloneDeep($query$$));$cs$$.ps_tinh_hoa_hong=$dt_dt$$;$cs$$.tien_hoa_hong=Math.roundBy($cs$$.ps_tinh_hoa_hong*$cs$$.ty_le_hoa_hong/100,0);break;case "2":$dt_dt$$=await calcDoanhThu($cs$$,_.cloneDeep($query$$),{doanh_thu_tinh_hoa_hong:!0});$cs$$.ps_tinh_hoa_hong=$dt_dt$$.t_dt;$cs$$.tien_hoa_hong=Math.roundBy($cs$$.ps_tinh_hoa_hong*$cs$$.ty_le_hoa_hong/100,
4
4
  0);break;case "3":$dt_dt$$=await calcDoanhThu($cs$$,_.cloneDeep($query$$),{doanh_thu_tinh_hoa_hong:!0}),$cs$$.ps_tinh_hoa_hong=$dt_dt$$.t_ds,$cs$$.tien_hoa_hong=Math.roundBy($cs$$.ps_tinh_hoa_hong*$cs$$.ty_le_hoa_hong/100,0)}})())))},calcSoCai=async($ct$$,$query$$)=>{$ct$$.ma_kho&&($query$$.ma_kho=$ct$$.ma_kho);$ct$$.ma_nv&&($query$$.ma_nv=$ct$$.ma_nv);$ct$$.ma_nv_giao_hang&&($query$$.ma_nv_giao_hang=$ct$$.ma_nv_giao_hang);$ct$$.phu_xe&&($query$$.phu_xe=$ct$$.phu_xe);if($ct$$.__in_ma_bp__)$query$$.ma_bp=
5
5
  $ct$$.__in_ma_bp__;else if($ct$$.ma_bp){var $bps_custs_dts_nh_khs_nh_vts_phis_vts$$=await getCodeChildren(dmbp,$query$$.id_app,$ct$$.ma_bp,"ma_bp","ma_bp_me");$query$$.ma_bp={$in:$bps_custs_dts_nh_khs_nh_vts_phis_vts$$};$ct$$.__in_ma_bp__={$in:$bps_custs_dts_nh_khs_nh_vts_phis_vts$$}}$ct$$.quan_ly&&$query$$.ma_nv&&($query$$.ma_nv={$ne:$query$$.ma_nv});$ct$$.__in_ma_dt__?$query$$.ma_dt=$ct$$.__in_ma_dt__:$ct$$.ma_dt&&($bps_custs_dts_nh_khs_nh_vts_phis_vts$$=await getCodeChildren(dmdt,$query$$.id_app,
@@ -19,22 +19,29 @@ $ct$$.ma_nvt_lt?{$nin:$bps$jscomp$1_custs$jscomp$1_dts$jscomp$1_nh_khs$jscomp$1_
19
19
  []).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);await $details_error$$.asyncJoinModel2($_query$$.id_app,"dmqddvt",{where:{ma_dvt:"ma_dvt",ma_vt:"ma_vt"},fields:["tu","mau","ma_dvt_goc"]});await $details_error$$.filter($d$$=>$d$$.ma_vt_du&&$d$$.ma_dvt_vt_du).asyncJoinModel2($_query$$.id_app,"dmqddvt",{where:{ma_dvt_vt_du:"ma_dvt",ma_vt_du:"ma_vt"},fields:[{tu_vt_du:"tu"},{mau_vt_du:"mau"},{ma_dvt_goc_vt_du:"ma_dvt_goc"}]});$details_error$$.forEach(function($r$$){if($r$$.mau){let $he_so_qd$$=$r$$.tu/
20
20
  $r$$.mau;$r$$.sl_xuat_qd=$he_so_qd$$*($r$$.sl_xuat||0);$r$$.sl_nhap_qd=$he_so_qd$$*($r$$.sl_nhap||0)}else $r$$.sl_xuat_qd=$r$$.sl_xuat||0,$r$$.sl_nhap_qd=$r$$.sl_nhap||0;$r$$.mau_vt_du=$r$$.mau_vt_du||$r$$.mau;$r$$.tu_vt_du=$r$$.tu_vt_du||$r$$.tu;$r$$.sl_vt_du_qd=$r$$.mau_vt_du?$r$$.tu_vt_du/$r$$.mau_vt_du*($r$$.sl_vt_du||0):$r$$.sl_vt_du||0;$r$$.sl_xuat_qd_bc=$r$$.sl_xuat_qd-$r$$.sl_vt_du_qd;$r$$.sl_nhap_qd_bc=$r$$.sl_nhap_qd;$r$$.ma_dvt_bc=$r$$.ma_dvt_goc||$r$$.ma_dvt});$ct$$.ma_dvt&&await $details_error$$.asyncJoinModel2($_query$$.id_app,
21
21
  "dmqddvt",{where:$item$$=>({ma_vt:$item$$.ma_vt,ma_dvt:$ct$$.ma_dvt}),setFields:($item$$,$he_so_qd$$)=>{$he_so_qd$$&&$he_so_qd$$.tu?($item$$.ma_dvt_bc=$ct$$.ma_dvt,$he_so_qd$$=$he_so_qd$$.mau/$he_so_qd$$.tu,$item$$.sl_xuat_qd_bc=$he_so_qd$$*($item$$.sl_xuat_qd||0),$item$$.sl_nhap_qd_bc=$he_so_qd$$*($item$$.sl_nhap_qd||0)):($item$$.sl_xuat_qd_bc=$item$$.sl_xuat_qd,$item$$.sl_nhap_qd_bc=$item$$.sl_nhap_qd)}});async.mapLimit($rs$$,20,function($r$$,$callback$$){$options$$.doanh_thu_tinh_hoa_hong&&($r$$.details=
22
- $r$$.details.filter($d$$=>!$d$$.tien_hoa_hong));$r$$.details=$r$$.details.filter($d$$=>$query$$["details.ma_vt"]&&$query$$["details.ma_vt"].$in?$query$$["details.ma_vt"].$in.indexOf($d$$.ma_vt)>=0:!0);$r$$.t_sl_xuat=$r$$.details.csum("sl_xuat");$r$$.t_sl_xuat_qd_bc=$r$$.details.csum("sl_xuat_qd_bc");$r$$.t_tien_hang=$r$$.details.csum("tien_hang");$r$$.t_tien_hang_ct=$r$$.details.csum("tien_hang_ct");$r$$.t_gt_vt_du=$r$$.details.csum("gt_vt_du");$r$$.t_thue=$r$$.details.csum("tien_thue");$r$$.t_tien_ck=
23
- $r$$.details.csum("tien_ck");$r$$.t_tien=$r$$.details.csum("tien");$r$$.t_tien_cp=$r$$.details.csum("tien_cp");$r$$.tien_freeship=$r$$.tien_freeship||0;$r$$.tien_phi_vc=$r$$.tien_phi_vc||0;$r$$.tien_ck_hd=$r$$.tien_ck_hd?$r$$.tien_ck_hd:0;$r$$.t_tien_xuat=$r$$.details.csum("tien_xuat");$r$$.details_tl?($r$$.t_tien_tl=$r$$.details_tl.csum("tien_hang_ct")-$r$$.details_tl.csum("tien_ck"),$r$$.t_tien_thue_tl=$r$$.details_tl.csum("tien_thue"),$r$$.t_tien_nhap=$r$$.details_tl.csum("tien_nhap"),$r$$.t_sl_nhap=
24
- $r$$.details_tl.csum("sl_nhap")):($r$$.t_tien_tl=0,$r$$.t_tien_thue_tl=0,$r$$.t_sl_nhap=0,$r$$.t_tien_nhap=0);$callback$$(null,$r$$)},function($error$$,$dt$$){if($error$$)return $reject$$($error$$);let $t_tien_hang_ct$$=$error$$=0,$t_tien_ck$$=0,$tien_ck_hd$$=0,$t_tien_tl$$=0,$t_tien_thue_tl$$=0,$t_ds$$=0,$t_dt$$=0;for(let $r$$ of $dt$$)$error$$+=$r$$.t_gt_vt_du||0,$t_tien_hang_ct$$+=$r$$.t_tien_hang_ct||0,$t_tien_ck$$+=$r$$.t_tien_ck||0,$tien_ck_hd$$+=$r$$.tien_ck_hd||0,$t_tien_tl$$+=$r$$.t_tien_tl||
25
- 0,$t_tien_thue_tl$$+=$r$$.t_tien_thue_tl||0,$t_ds$$+=$r$$.t_sl_xuat_qd_bc||0,$t_dt$$+=$r$$.t_tien_hang_ct-($r$$.t_gt_vt_du||0)-$r$$.t_tien_ck-$r$$.tien_ck_hd-$r$$.t_tien_tl-$r$$.t_tien_thue_tl;$resolve$$({t_dt:$t_dt$$,t_ds:$t_ds$$,t_gt_vt_du:$error$$,t_tien_hang_ct:$t_tien_hang_ct$$,t_tien_ck:$t_tien_ck$$,tien_ck_hd:$tien_ck_hd$$,t_tien_tl:$t_tien_tl$$,t_tien_thue_tl:$t_tien_thue_tl$$})})})})},kpistatus=async function($condition$$,$callback$$){$condition$$.nam=$condition$$.nam?Number($condition$$.nam):
26
- (new Date).getFullYear();$condition$$.tu_thang=$condition$$.tu_thang?Number($condition$$.tu_thang):moment().month()-1;$condition$$.den_thang=$condition$$.den_thang?Number($condition$$.den_thang):moment().month()-1;$condition$$.tu_quy=$condition$$.tu_quy?Number($condition$$.tu_quy):moment().quarter();$condition$$.den_quy=$condition$$.den_quy?Number($condition$$.den_quy):moment().quarter();let $query$$={id_app:$condition$$.id_app,status:!0};$condition$$.ma_dvcs&&($query$$.ma_dvcs=$condition$$.ma_dvcs);
27
- $condition$$.ma_kho&&($query$$.ma_kho=$condition$$.ma_kho);$condition$$.ma_nv&&($query$$.ma_nv=$condition$$.ma_nv);$condition$$.ma_nv_giao_hang&&($query$$.ma_nv_giao_hang=$condition$$.ma_nv_giao_hang);$condition$$.phu_xe&&($query$$.phu_xe=$condition$$.phu_xe);if($condition$$.ma_bp){var $bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$=await getCodeChildren(dmbp,$condition$$.id_app,$condition$$.ma_bp,"ma_bp","ma_bp_me");$query$$.ma_bp={$in:$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$}}$condition$$.ma_phi&&
28
- ($bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$=await getCodeChildren(dmphi,$condition$$.id_app,$condition$$.ma_phi,"ma_phi","ma_phi_me"),$query$$.ma_phi={$in:$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$});$condition$$.ma_dt&&($bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$=await getCodeChildren(dmdt,$condition$$.id_app,$condition$$.ma_dt,"ma_dt","ma_dt_me"),$query$$.ma_dt={$in:$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$});$condition$$.group_id&&($query$$.group_id=$condition$$.group_id);$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$=
29
- [];switch($condition$$.ct_theo){case "thang":for(var $pivot_column_quy_thang$$=$condition$$.tu_thang;$pivot_column_quy_thang$$<=$condition$$.den_thang;$pivot_column_quy_thang$$++)$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.push({thang:$pivot_column_quy_thang$$,nam:$condition$$.nam});break;case "quy":for($pivot_column_quy_thang$$=$condition$$.tu_quy;$pivot_column_quy_thang$$<=$condition$$.den_quy;$pivot_column_quy_thang$$++)$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.push({quy:$pivot_column_quy_thang$$,
30
- nam:$condition$$.nam});break;case "nam":$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.push({nam:$condition$$.nam});break;default:$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.push({tu_ngay:$condition$$.tu_ngay,den_ngay:$condition$$.den_ngay})}$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$=(await Promise.all($bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.map($ts$$=>(async()=>{var $_query$$=_.cloneDeep($query$$);let $tu_ngay$$=$ts$$.tu_ngay||moment().year($ts$$.nam);$ts$$.thang&&$tu_ngay$$.month($ts$$.thang-
31
- 1).startOf("month");$ts$$.quy&&$tu_ngay$$.quarter($ts$$.quy).starOf("quarter");$tu_ngay$$=$tu_ngay$$.endOf("date").toDate();$_query$$.hl_tu_ngay={$lte:$tu_ngay$$};let $den_ngay$$=$ts$$.den_ngay||moment().year($ts$$.nam);$ts$$.thang&&$den_ngay$$.month($ts$$.thang-1).endOf("month");$ts$$.quy&&$den_ngay$$.quarter($ts$$.quy).endOf("quarter");$den_ngay$$=$den_ngay$$.startOf("date").toDate();$_query$$.hl_den_ngay={$gte:$den_ngay$$};$_query$$=await ctds.find($_query$$).lean();await Promise.all($_query$$.map($ct$$=>
32
- (async()=>{$ct$$.thang=$ts$$.thang;$ct$$.quy=$ts$$.quy;$ct$$.nam=$ts$$.nam;$ct$$.chi_tieu=$ct$$.quy?Math.round($ct$$.chi_tieu_thang*3):$ct$$.thang?Math.round($ct$$.chi_tieu_thang):Math.round($ct$$.chi_tieu_thang*12);let $query$$={id_app:$ct$$.id_app,ma_dvcs:$ct$$.ma_dvcs};$query$$.ngay_ct={$gte:moment($tu_ngay$$).startOf("date").toDate(),$lte:moment($den_ngay$$).endOf("date").toDate()};switch($ct$$.cach_tinh){case "1":Logger.info("tinh kpi theo socai",$ct$$.ma_nv);var $dt$jscomp$4_key$jscomp$10_ps$$=
33
- await calcSoCai($ct$$,_.cloneDeep($query$$));$ct$$.ps_nt=$ct$$.ps=$dt$jscomp$4_key$jscomp$10_ps$$;$ct$$.bold=!1;$ct$$.sysorder=0;$ct$$.ty_le_ht=$ct$$.chi_tieu?Math.roundBy($ct$$.ps/$ct$$.chi_tieu*100,2):0;await tinhHoaHong($ct$$,_.cloneDeep($query$$));break;case "2":var $dt$jscomp$3_key$$=await calcDoanhThu($ct$$,_.cloneDeep($query$$));Logger.info("[kpistatus] t\u00ednh ph\u00e1t sinh theo doanh thu b\u00e1n h\u00e0ng",{dt:$dt$jscomp$3_key$$});$ct$$.ps_nt=$ct$$.ps=$dt$jscomp$3_key$$.t_dt;$ct$$.bold=
34
- !1;$ct$$.sysorder=0;$ct$$.ty_le_ht=$ct$$.chi_tieu?Math.roundBy($ct$$.ps/$ct$$.chi_tieu*100,2):0;for($dt$jscomp$4_key$jscomp$10_ps$$ in $dt$jscomp$3_key$$)$ct$$[$dt$jscomp$4_key$jscomp$10_ps$$]=$dt$jscomp$3_key$$[$dt$jscomp$4_key$jscomp$10_ps$$];await tinhHoaHong($ct$$,_.cloneDeep($query$$));break;case "3":$dt$jscomp$4_key$jscomp$10_ps$$=await calcDoanhThu($ct$$,_.cloneDeep($query$$));Logger.info("[kpistatus] t\u00ednh ph\u00e1t sinh theo doanh s\u1ed1 b\u00e1n h\u00e0ng",{dt:$dt$jscomp$4_key$jscomp$10_ps$$});
35
- $ct$$.ps_nt=$ct$$.ps=$dt$jscomp$4_key$jscomp$10_ps$$.t_ds;$ct$$.bold=!1;$ct$$.sysorder=0;$ct$$.ty_le_ht=$ct$$.chi_tieu?Math.roundBy($ct$$.ps/$ct$$.chi_tieu*100,2):0;for($dt$jscomp$3_key$$ in $dt$jscomp$4_key$jscomp$10_ps$$)$ct$$[$dt$jscomp$3_key$$]=$dt$jscomp$4_key$jscomp$10_ps$$[$dt$jscomp$3_key$$];await tinhHoaHong($ct$$,_.cloneDeep($query$$))}})()));return $_query$$})()))).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);Logger.info("[kpistatus] T\u00ednh hoa h\u1ed3ng...");let $columns_hoahong$$=await global.getModel("group").find({id_app:$condition$$.id_app,
22
+ $r$$.details.filter($d$$=>!$d$$.tien_hoa_hong));$r$$.details=$r$$.details.filter($d$$=>$query$$["details.ma_vt"]&&$query$$["details.ma_vt"].$in?$query$$["details.ma_vt"].$in.indexOf($d$$.ma_vt)>=0:!0);$r$$.t_sl_xuat=$r$$.details.csum("sl_xuat");$r$$.t_sl_xuat_qd_bc=$r$$.details.csum("sl_xuat_qd_bc");$r$$.t_tien_hang=$r$$.details.csum("tien_hang");$r$$.t_tien_hang_ct=$r$$.details.csum("tien_hang_ct");$r$$.t_gt_vt_du=$r$$.details.csum("gt_vt_du");$r$$.t_sl_vt_du=$r$$.details.csum("sl_vt_du");$r$$.t_thue=
23
+ $r$$.details.csum("tien_thue");$r$$.t_tien_ck=$r$$.details.csum("tien_ck");$r$$.t_tien=$r$$.details.csum("tien");$r$$.t_tien_cp=$r$$.details.csum("tien_cp");$r$$.tien_freeship=$r$$.tien_freeship||0;$r$$.tien_phi_vc=$r$$.tien_phi_vc||0;$r$$.tien_ck_hd=$r$$.tien_ck_hd?$r$$.tien_ck_hd:0;$r$$.t_tien_xuat=$r$$.details.csum("tien_xuat");$r$$.details_tl?($r$$.t_tien_tl=$r$$.details_tl.csum("tien_hang_ct")-$r$$.details_tl.csum("tien_ck"),$r$$.t_tien_thue_tl=$r$$.details_tl.csum("tien_thue"),$r$$.t_tien_nhap=
24
+ $r$$.details_tl.csum("tien_nhap"),$r$$.t_sl_nhap=$r$$.details_tl.csum("sl_nhap")):($r$$.t_tien_tl=0,$r$$.t_tien_thue_tl=0,$r$$.t_sl_nhap=0,$r$$.t_tien_nhap=0);$callback$$(null,$r$$)},function($error$$,$dt$$){if($error$$)return $reject$$($error$$);let $t_sl_vt_du$$=$error$$=0,$t_tien_hang_ct$$=0,$t_tien_ck$$=0,$tien_ck_hd$$=0,$t_tien_tl$$=0,$t_tien_thue_tl$$=0,$t_ds$$=0,$t_dt$$=0;for(let $r$$ of $dt$$)$error$$+=$r$$.t_gt_vt_du||0,$t_sl_vt_du$$+=$r$$.t_sl_vt_du||0,$t_tien_hang_ct$$+=$r$$.t_tien_hang_ct||
25
+ 0,$t_tien_ck$$+=$r$$.t_tien_ck||0,$tien_ck_hd$$+=$r$$.tien_ck_hd||0,$t_tien_tl$$+=$r$$.t_tien_tl||0,$t_tien_thue_tl$$+=$r$$.t_tien_thue_tl||0,$t_ds$$+=($r$$.t_sl_xuat_qd_bc||0)-($r$$.t_sl_vt_du||0),$t_dt$$+=$r$$.t_tien_hang_ct-($r$$.t_gt_vt_du||0)-$r$$.t_tien_ck-$r$$.tien_ck_hd-$r$$.t_tien_tl-$r$$.t_tien_thue_tl;$resolve$$({t_dt:$t_dt$$,t_ds:$t_ds$$,t_sl_vt_du:$t_sl_vt_du$$,t_gt_vt_du:$error$$,t_tien_hang_ct:$t_tien_hang_ct$$,t_tien_ck:$t_tien_ck$$,tien_ck_hd:$tien_ck_hd$$,t_tien_tl:$t_tien_tl$$,
26
+ t_tien_thue_tl:$t_tien_thue_tl$$})})})})},kpistatus=async function($condition$$,$callback$$){$condition$$.nam=$condition$$.nam?Number($condition$$.nam):(new Date).getFullYear();$condition$$.tu_thang=$condition$$.tu_thang?Number($condition$$.tu_thang):moment().month()-1;$condition$$.den_thang=$condition$$.den_thang?Number($condition$$.den_thang):moment().month()-1;$condition$$.tu_quy=$condition$$.tu_quy?Number($condition$$.tu_quy):moment().quarter();$condition$$.den_quy=$condition$$.den_quy?Number($condition$$.den_quy):
27
+ moment().quarter();let $query$$={id_app:$condition$$.id_app,status:!0};$condition$$.ma_dvcs&&($query$$.ma_dvcs=$condition$$.ma_dvcs);$condition$$.ma_kho&&($query$$.ma_kho=$condition$$.ma_kho);$condition$$.ma_nv&&($query$$.ma_nv=$condition$$.ma_nv);$condition$$.ma_nv_giao_hang&&($query$$.ma_nv_giao_hang=$condition$$.ma_nv_giao_hang);$condition$$.phu_xe&&($query$$.phu_xe=$condition$$.phu_xe);if($condition$$.ma_bp){var $bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$=await getCodeChildren(dmbp,$condition$$.id_app,
28
+ $condition$$.ma_bp,"ma_bp","ma_bp_me");$query$$.ma_bp={$in:$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$}}$condition$$.ma_phi&&($bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$=await getCodeChildren(dmphi,$condition$$.id_app,$condition$$.ma_phi,"ma_phi","ma_phi_me"),$query$$.ma_phi={$in:$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$});$condition$$.ma_dt&&($bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$=await getCodeChildren(dmdt,$condition$$.id_app,$condition$$.ma_dt,"ma_dt","ma_dt_me"),$query$$.ma_dt={$in:$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$});
29
+ $condition$$.group_id&&($query$$.group_id=$condition$$.group_id);$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$=[];switch($condition$$.ct_theo){case "thang":for(var $pivot_column_quy_thang$$=$condition$$.tu_thang;$pivot_column_quy_thang$$<=$condition$$.den_thang;$pivot_column_quy_thang$$++)$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.push({thang:$pivot_column_quy_thang$$,nam:$condition$$.nam});break;case "quy":for($pivot_column_quy_thang$$=$condition$$.tu_quy;$pivot_column_quy_thang$$<=$condition$$.den_quy;$pivot_column_quy_thang$$++)$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.push({quy:$pivot_column_quy_thang$$,
30
+ nam:$condition$$.nam});break;case "nam":$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.push({nam:$condition$$.nam});break;default:$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.push({tu_ngay:$condition$$.tu_ngay,den_ngay:$condition$$.den_ngay})}$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$=(await Promise.all($bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.map($ts$$=>(async()=>{var $_query$$=_.cloneDeep($query$$);let $tu_ngay$$=moment($ts$$.tu_ngay);$ts$$.nam&&($tu_ngay$$=$tu_ngay$$.year($ts$$.nam).startOf("year"));
31
+ $ts$$.thang&&($tu_ngay$$=$tu_ngay$$.month($ts$$.thang-1).startOf("month"));$ts$$.quy&&($tu_ngay$$=$tu_ngay$$.quarter($ts$$.quy).startOf("quarter"));$tu_ngay$$=$tu_ngay$$.endOf("date").toDate();$_query$$.hl_tu_ngay={$lte:$tu_ngay$$};let $den_ngay$$=moment($ts$$.den_ngay);$ts$$.nam&&($den_ngay$$=$den_ngay$$.year($ts$$.nam).endOf("year"));$ts$$.thang&&($den_ngay$$=$den_ngay$$.month($ts$$.thang-1).endOf("month"));$ts$$.quy&&($den_ngay$$=$den_ngay$$.quarter($ts$$.quy).endOf("quarter"));$den_ngay$$=$den_ngay$$.startOf("date").toDate();
32
+ $_query$$.hl_den_ngay={$gte:$den_ngay$$};$_query$$=await ctds.find($_query$$).lean();$_query$$.sort(($a$$,$b$$)=>$a$$.cach_tinh==="9"&&$b$$.cach_tinh!=="9"?1:$a$$.cach_tinh!=="9"&&$b$$.cach_tinh==="9"?-1:0);await Promise.all($_query$$.map($ct$$=>(async()=>{$ct$$.thang=$ts$$.thang;$ct$$.quy=$ts$$.quy;$ct$$.nam=$ts$$.nam;$ct$$.chi_tieu=$ct$$.quy?Math.round($ct$$.chi_tieu_thang*3):$ct$$.thang?Math.round($ct$$.chi_tieu_thang):Math.round($ct$$.chi_tieu_thang*12);let $query$$={id_app:$ct$$.id_app,ma_dvcs:$ct$$.ma_dvcs};
33
+ $query$$.ngay_ct={$gte:moment($tu_ngay$$).startOf("date").toDate(),$lte:moment($den_ngay$$).endOf("date").toDate()};switch($ct$$.cach_tinh){case "1":Logger.info("tinh kpi theo socai",$ct$$.ma_nv);var $dt$jscomp$4_key$jscomp$10_ps$$=await calcSoCai($ct$$,_.cloneDeep($query$$));$ct$$.ps_nt=$ct$$.ps=$dt$jscomp$4_key$jscomp$10_ps$$;$ct$$.bold=!1;$ct$$.sysorder=0;$ct$$.ty_le_ht=$ct$$.chi_tieu?Math.roundBy($ct$$.ps/$ct$$.chi_tieu*100,2):0;await tinhHoaHong($ct$$,_.cloneDeep($query$$));break;case "2":var $dt$jscomp$3_key$$=
34
+ await calcDoanhThu($ct$$,_.cloneDeep($query$$));Logger.info("[kpistatus] t\u00ednh ph\u00e1t sinh theo doanh thu b\u00e1n h\u00e0ng",{dt:$dt$jscomp$3_key$$});$ct$$.ps_nt=$ct$$.ps=$dt$jscomp$3_key$$.t_dt;$ct$$.bold=!1;$ct$$.sysorder=0;$ct$$.ty_le_ht=$ct$$.chi_tieu?Math.roundBy($ct$$.ps/$ct$$.chi_tieu*100,2):0;for($dt$jscomp$4_key$jscomp$10_ps$$ in $dt$jscomp$3_key$$)$ct$$[$dt$jscomp$4_key$jscomp$10_ps$$]=$dt$jscomp$3_key$$[$dt$jscomp$4_key$jscomp$10_ps$$];await tinhHoaHong($ct$$,_.cloneDeep($query$$));
35
+ break;case "3":$dt$jscomp$4_key$jscomp$10_ps$$=await calcDoanhThu($ct$$,_.cloneDeep($query$$));Logger.info("[kpistatus] t\u00ednh ph\u00e1t sinh theo doanh s\u1ed1 b\u00e1n h\u00e0ng",{dt:$dt$jscomp$4_key$jscomp$10_ps$$});$ct$$.ps_nt=$ct$$.ps=$dt$jscomp$4_key$jscomp$10_ps$$.t_ds;$ct$$.bold=!1;$ct$$.sysorder=0;$ct$$.ty_le_ht=$ct$$.chi_tieu?Math.roundBy($ct$$.ps/$ct$$.chi_tieu*100,2):0;for($dt$jscomp$3_key$$ in $dt$jscomp$4_key$jscomp$10_ps$$)$ct$$[$dt$jscomp$3_key$$]=$dt$jscomp$4_key$jscomp$10_ps$$[$dt$jscomp$3_key$$];
36
+ await tinhHoaHong($ct$$,_.cloneDeep($query$$));break;case "9":Logger.info("[kpistatus] T\u00ednh KPI theo k\u1ecbch b\u1ea3n \u0111\u1ed9ng (Custom Script)");if($ct$$.kpi_script)try{const $sandboxContext$$={id_app:$ct$$.id_app,moment,query:_.cloneDeep($query$$),ct:$ct$$,getModel:$cleanModelName_modelName$$=>{$cleanModelName_modelName$$=$cleanModelName_modelName$$.toLowerCase().trim();const $Model$$=global.getModel($cleanModelName_modelName$$);if(!$Model$$)throw Error(`Model '${$cleanModelName_modelName$$}' kh\u00f4ng t\u1ed3n t\u1ea1i.`);
37
+ const $enforceIdApp$$=($cond$$={})=>({...$cond$$,id_app:$ct$$.id_app}),$enforcePipeline$$=($newPipeline_pipeline$$=[])=>{$newPipeline_pipeline$$=[...$newPipeline_pipeline$$];$newPipeline_pipeline$$.length>0&&$newPipeline_pipeline$$[0].$match?$newPipeline_pipeline$$[0].$match.id_app=$ct$$.id_app:$newPipeline_pipeline$$.unshift({$match:{id_app:$ct$$.id_app}});return $newPipeline_pipeline$$};return{find:($cond$$,$proj$$,$opts$$)=>$Model$$.find($enforceIdApp$$($cond$$),$proj$$,$opts$$),findOne:($cond$$,
38
+ $proj$$,$opts$$)=>$Model$$.findOne($enforceIdApp$$($cond$$),$proj$$,$opts$$),aggregate:$pipeline$$=>$Model$$.aggregate($enforcePipeline$$($pipeline$$)),countDocuments:$cond$$=>$Model$$.countDocuments($enforceIdApp$$($cond$$))}}},$result$$=await evalute(`
39
+ return (async () => {
40
+ ${$ct$$.kpi_script}
41
+ })();
42
+ `,$sandboxContext$$,1E4);$ct$$.ps_nt=$ct$$.ps=Number($result$$)||0}catch($error$$){Logger.error("[kpistatus] L\u1ed7i ch\u1ea1y kpi_script:",$error$$),$ct$$.ps_nt=$ct$$.ps=0}else $ct$$.ps_nt=$ct$$.ps=0;$ct$$.bold=!1;$ct$$.sysorder=0;$ct$$.ty_le_ht=$ct$$.chi_tieu?Math.roundBy($ct$$.ps/$ct$$.chi_tieu*100,2):0}})()));return $_query$$})()))).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);Logger.info("[kpistatus] T\u00ednh hoa h\u1ed3ng...");let $columns_hoahong$$=await global.getModel("group").find({id_app:$condition$$.id_app,
36
43
  group_type:"HOAHONG",status:!0}).lean();$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.forEach($row$$=>{$row$$.t_tien_hoa_hong=0;$columns_hoahong$$.forEach($hh$$=>{$row$$[`ps_tinh_hoa_hong_${$hh$$._id.toString()}`]=($row$$.chinh_sach_hoa_hong||[]).filter($c$$=>$c$$.phan_loai==$hh$$._id.toString()).map($c$$=>$c$$.ps_tinh_hoa_hong||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$row$$[`hoa_hong_${$hh$$._id.toString()}`]=($row$$.chinh_sach_hoa_hong||[]).filter($c$$=>$c$$.phan_loai==$hh$$._id.toString()).map($c$$=>
37
44
  $c$$.tien_hoa_hong||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$row$$.t_tien_hoa_hong+=$row$$[`hoa_hong_${$hh$$._id.toString()}`]})});$pivot_column_quy_thang$$=$condition$$.pivot_column;if(!$pivot_column_quy_thang$$)return $callback$$(null,{rows:$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$,columns:$columns_hoahong$$,columns_hoahong:$columns_hoahong$$});let $pivot_datas$$=$condition$$.pivot_datas||["ps","chi_tieu","t_tien_hoa_hong"],$headers$$=$condition$$.headers||{ps:"Ph\u00e1t sinh",chi_tieu:"Ch\u1ec9 ti\u00eau",
38
45
  ty_le_ht:"% ho\u00e0n th\u00e0nh",t_tien_hoa_hong:"Hoa h\u1ed3ng"};$pivot_column_quy_thang$$=="ky"&&$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.forEach($ct$$=>{$ct$$.ky=$ct$$.thang||$ct$$.quy;$ct$$.ky=$ct$$.ky?`${$ct$$.ky}/${$ct$$.nam}`:`${$ct$$.nam}`});$pivot_column_quy_thang$$=="thang"&&$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.forEach($ct$$=>{$ct$$.thang=`Th\u00e1ng ${$ct$$.thang}/${$ct$$.nam}`});$pivot_column_quy_thang$$=="quy"&&$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.forEach($ct$$=>{$ct$$.quy=
39
46
  `Qu\u00fd ${$ct$$.quy}/${$ct$$.nam}`});$pivot_column_quy_thang$$=="nam"&&$bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.forEach($ct$$=>{$ct$$.nam=`N\u0103m ${$ct$$.nam}`});Logger.info("[kpistatus] pivot data...");let {data:$data$$,cols:$cols$$}=await $bps$jscomp$2_dts$jscomp$2_khoang_ts_phis$$.asyncPivot([],$pivot_column_quy_thang$$,$pivot_datas$$,{computed:{ty_le_ht:function($row$$,$prefix$$){const $chi_tieu$$=$row$$[$prefix$$+"chi_tieu"]||0;return $chi_tieu$$===0?0:parseFloat((($row$$[$prefix$$+"ps"]||
40
- 0)/$chi_tieu$$*100).toFixed(2))}}});$cols$$=$cols$$.map($c$$=>$pivot_datas$$.map($f$$=>({header:`${$c$$} - ${$headers$$[$f$$]}`,value_field:`${$c$$}${$f$$}`}))).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$callback$$(null,{rows:$data$$,columns:$cols$$,columns_hoahong:$columns_hoahong$$})};module.exports=$condition$$=>new Promise(($resolve$$,$reject$$)=>{kpistatus($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})});
47
+ 0)/$chi_tieu$$*100).toFixed(2))}}});$cols$$=$cols$$.map($c$$=>$pivot_datas$$.map($f$$=>({header:`${$c$$} - ${$headers$$[$f$$]}`,value_field:`${$c$$}${$f$$}`}))).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$callback$$(null,{rows:$data$$,columns:$cols$$,columns_hoahong:$columns_hoahong$$})},kpistatusWrapper=$condition$$=>new Promise(($resolve$$,$reject$$)=>{kpistatus($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})});module.exports={kpistatus:kpistatusWrapper,calcSoCai,calcDoanhThu};
@@ -1,58 +1,56 @@
1
- const right=global.getModel("right"),App=global.getModel("app"),Participant=global.getModel("participant"),UserGroup=global.getModel("usergroup"),underscore=require("underscore"),moment=require("moment"),trangthai=global.getModel("trangthai"),async=require("async"),_=require("lodash"),{evalute}=require("./utils"),not_need_right_models="parameter rpt label labelinfo templaterpt templatestore templatevoucher listinfo reportinfo shortcut rptobject rptform forminfo importexceltemplate options".split(" ");
2
- exports.dsChildrenGroups=async($id_app$$,$group_id$$)=>{let $childrenGroups$$=(await UserGroup.find({group_mother:$group_id$$,id_app:$id_app$$},{_id:1}).lean()).map($g$$=>$g$$._id.toString());$childrenGroups$$.length>0&&await Promise.all($childrenGroups$$.map($c$$=>(async()=>{let $gs$$=await exports.dsChildrenGroups($id_app$$,$c$$);$childrenGroups$$.push(...$gs$$)})()));return $childrenGroups$$};
3
- exports.dsDangPhuTrach=async($id_app$$,$ds_phu_trach_email$$)=>{if(!$id_app$$)return[];let $key_cache$$=`userdangphutrach::${$id_app$$}::${$ds_phu_trach_email$$}`,$time_cache$$=$ds_phu_trach_email$$==="public"?10080:1;if(global.cacheDatas[$key_cache$$]&&moment().diff(moment(global.cacheDatas[$key_cache$$].time),"minutes")<$time_cache$$)return global.cacheDatas[$key_cache$$].data;let $groups$$=(await UserGroup.find({ds_phu_trach:$ds_phu_trach_email$$,id_app:$id_app$$},{_id:1}).lean()).map($g$$=>$g$$._id.toString());
4
- await Promise.all([...$groups$$].map($group_id$$=>(async()=>{let $childrenGroups$$=await exports.dsChildrenGroups($id_app$$,$group_id$$);$groups$$.push(...$childrenGroups$$)})()));$groups$$=[...(new Set($groups$$))];$ds_phu_trach_email$$=(await Participant.find({id_app:$id_app$$,group_id:{$in:$groups$$}},{email:1}).lean()).map($p$$=>$p$$.email);global.cacheDatas[$key_cache$$]={time:new Date,data:_.cloneDeep($ds_phu_trach_email$$)};return $ds_phu_trach_email$$};
5
- exports.dsKhDangPhuTrach=async($data_id_app$$,$phu_trach$$)=>{if(!$data_id_app$$)return[];let $key_cache$$=`khdangphutrach::${$data_id_app$$}::${typeof $phu_trach$$=="object"?JSON.stringify($phu_trach$$):$phu_trach$$}`;if(global.cacheDatas[$key_cache$$]&&moment().diff(moment(global.cacheDatas[$key_cache$$].time),"minutes")<1)return Logger.info("lay danh sach khach hang dang phu trach tu cache",$key_cache$$),global.cacheDatas[$key_cache$$].data;$data_id_app$$=(await global.getModel("customer").find({id_app:$data_id_app$$,
1
+ const right=global.getModel("right"),App=global.getModel("app"),Participant=global.getModel("participant"),UserGroup=global.getModel("usergroup"),underscore=require("underscore"),moment=require("moment"),trangthai=global.getModel("trangthai"),_=require("lodash"),{evalute2}=require("./utils"),not_need_right_models="parameter rpt label labelinfo templaterpt templatestore templatevoucher listinfo reportinfo shortcut rptobject rptform forminfo importexceltemplate options".split(" "),MAX_DEPTH=20,isAdminAsync=
2
+ ($current_id_app$$,$email$$,$options$$={})=>new Promise(($resolve$$,$reject$$)=>{exports.isAdmin($current_id_app$$,$email$$,($e$$,$admin$$,$app$$,$participant$$)=>{if($e$$)return $reject$$($e$$);$resolve$$({admin:$admin$$,app:$app$$,participant:$participant$$})},$options$$)});
3
+ exports.dsChildrenGroups=async($id_app$$,$group_id$$)=>{const $visited$$=new Set([$group_id$$?.toString()].filter(Boolean));var $frontier_next$$=[$group_id$$];let $depth$$=0;for(;$frontier_next$$.length>0&&$depth$$<MAX_DEPTH;){$depth$$++;var $children_id$$=await UserGroup.find({id_app:$id_app$$,group_mother:{$in:$frontier_next$$}},{_id:1}).lean();$frontier_next$$=[];for(const $c$$ of $children_id$$)$children_id$$=$c$$._id.toString(),$visited$$.has($children_id$$)||($visited$$.add($children_id$$),
4
+ $frontier_next$$.push($c$$._id));$depth$$===MAX_DEPTH&&$frontier_next$$.length>0&&Logger.warn(`[dsChildrenGroups] \u0111\u1ea1t maxDepth ${MAX_DEPTH}, d\u1eebng.`)}$visited$$.delete($group_id$$?.toString());return[...$visited$$]};
5
+ exports.dsDangPhuTrach=async($ds_phu_trach_id_app$$,$allGroups_email$$)=>{if(!$ds_phu_trach_id_app$$)return[];const $key_cache$$=`userdangphutrach::${$ds_phu_trach_id_app$$}::${$allGroups_email$$}`;var $depth$$=$allGroups_email$$==="public"?10080:1;if(global.cacheDatas[$key_cache$$]&&moment().diff(moment(global.cacheDatas[$key_cache$$].time),"minutes")<$depth$$)return global.cacheDatas[$key_cache$$].data;$depth$$=(await UserGroup.find({ds_phu_trach:$allGroups_email$$,id_app:$ds_phu_trach_id_app$$},
6
+ {_id:1}).lean()).map($g$$=>$g$$._id.toString());if($depth$$.length===0)return global.cacheDatas[$key_cache$$]={time:new Date,data:[]},[];$allGroups_email$$=new Set($depth$$);var $frontier$jscomp$1_next$$=[...$depth$$];for($depth$$=0;$frontier$jscomp$1_next$$.length>0&&$depth$$<MAX_DEPTH;){$depth$$++;var $children$jscomp$1_id$$=await UserGroup.find({id_app:$ds_phu_trach_id_app$$,group_mother:{$in:$frontier$jscomp$1_next$$}},{_id:1,group_mother:1}).lean();$frontier$jscomp$1_next$$=[];for(const $c$$ of $children$jscomp$1_id$$)$children$jscomp$1_id$$=
7
+ $c$$._id.toString(),$allGroups_email$$.has($children$jscomp$1_id$$)||($allGroups_email$$.add($children$jscomp$1_id$$),$frontier$jscomp$1_next$$.push($c$$._id))}$ds_phu_trach_id_app$$=(await Participant.find({id_app:$ds_phu_trach_id_app$$,group_id:{$in:[...$allGroups_email$$]}},{email:1}).lean()).map($p$$=>$p$$.email);global.cacheDatas[$key_cache$$]={time:new Date,data:_.cloneDeep($ds_phu_trach_id_app$$)};return $ds_phu_trach_id_app$$};
8
+ exports.dsKhDangPhuTrach=async($data_id_app$$,$phu_trach$$)=>{if(!$data_id_app$$)return[];var $key_cache$$=typeof $phu_trach$$==="object"?JSON.stringify($phu_trach$$):$phu_trach$$;$key_cache$$=`khdangphutrach::${$data_id_app$$}::${$key_cache$$}`;if(global.cacheDatas[$key_cache$$]&&moment().diff(moment(global.cacheDatas[$key_cache$$].time),"minutes")<1)return Logger.info("lay danh sach khach hang dang phu trach tu cache",$key_cache$$),global.cacheDatas[$key_cache$$].data;$data_id_app$$=(await global.getModel("customer").find({id_app:$data_id_app$$,
6
9
  phu_trach:$phu_trach$$},{ma_kh:1}).lean()).map($p$$=>$p$$.ma_kh);global.cacheDatas[$key_cache$$]={time:new Date,data:_.cloneDeep($data_id_app$$)};return $data_id_app$$};
7
- exports.isAdmin=function($current_id_app$$,$email$$,$callback$$){if(!$current_id_app$$)return $callback$$(null,!0);App.findOne({_id:$current_id_app$$}).lean().then(async $app$$=>{if(!$app$$)return $callback$$({error:"ID app: "+$current_id_app$$+" kh\u00f4ng t\u1ed3n t\u1ea1i",code:-7},!1);if($app$$.trang_thai=="9")return $callback$$({error:`C\u00f4ng ty ${$app$$.name} \u0111\u00e3 ng\u1eebng s\u1eed d\u1ee5ng`,code:-9},!1);if(global.configs.check_expire_date&&$app$$.expire_date&&(new Date($app$$.expire_date)).getTime()<
8
- (new Date).getTime())return $callback$$({error:`C\u00f4ng ty ${$app$$.name} \u0111\u00e3 h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng`,code:-8},!1);let $participant$$=await Participant.findOne({id_app:$current_id_app$$,email:$email$$}).lean();if(!$participant$$)return $callback$$({error:`B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp c\u00f4ng ty ${$app$$.name}`,code:-2},!1);if(!$participant$$.admin&&!$participant$$.active&&$email$$!=="public")return $callback$$({error:"T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111ang ch\u1edd \u0111\u01b0\u1ee3c x\u00e1c nh\u1eadn",
9
- code:-1},!1);$callback$$(null,$participant$$.admin,$app$$,$participant$$)}).catch($error$$=>{$callback$$($error$$,!1)})};
10
- exports.hasRight=async function($current_id_app$$,$email$$,$module$$,$action$$,$callbackMain$$,$options$$={}){if(!$current_id_app$$||$options$$.notNeedRight)return $callbackMain$$(null,!0);const $model$$=global.controllers[$module$$]?global.controllers[$module$$].model:void 0;if($model$$&&$model$$.schema&&!underscore.has($model$$.schema.paths,"id_app"))return $callbackMain$$(null,!0);let $right_code$$=($options$$.right_code||$options$$.listinfo_code||$module$$).toLowerCase();$options$$.data&&($options$$.data.trang_thai||
11
- $options$$.data.trang_thai==0)&&($options$$.data.trang_thai=$options$$.data.trang_thai.toString());$options$$.obj&&($options$$.obj.trang_thai||$options$$.obj.trang_thai==0)&&($options$$.obj.trang_thai=$options$$.obj.trang_thai.toString());$action$$=($action$$||"").toLowerCase();var $data$$=$options$$.data||$options$$.obj||{};const $ma_ct$$=$model$$&&underscore.has($model$$.schema.paths,"ma_ct")&&(($options$$.obj||{}).ma_ct||($options$$.data||{}).ma_ct||"").toString().toUpperCase();let $ma_trang_thai$$=
12
- ($data$$.trang_thai||$data$$.progress||"").toString().toUpperCase();!$ma_trang_thai$$&&$options$$.obj&&($ma_trang_thai$$=($options$$.obj.trang_thai||$options$$.obj.progress||"").toString().toUpperCase());if($ma_ct$$&&$ma_trang_thai$$)if($data$$=await trangthai.findOne({ma_trang_thai:$ma_trang_thai$$,ma_ct:$ma_ct$$}).lean()){if($data$$.not_need_right)return $callbackMain$$(null,!0)}else Logger.info("Khong tim thay trang thai cho chuc nang nay",{ma_ct:$ma_ct$$,ma_trang_thai:$ma_trang_thai$$,trang_thai:$data$$,
13
- action:$action$$});exports.isAdmin($current_id_app$$,$email$$,async($api_code_e_key_right_ms_q$$,$admin$$,$app$$,$_right__right_trang_thai_controler_participant$$)=>{if($api_code_e_key_right_ms_q$$)return $callbackMain$$($api_code_e_key_right_ms_q$$,!1);var $listinfo_model$$;if(!$admin$$&&$right_code$$!=$module$$.toLowerCase())if($listinfo_model$$=await global.getModel("listinfo").findOne({code:$right_code$$}).lean()){if($api_code_e_key_right_ms_q$$=$listinfo_model$$.api_code||$listinfo_model$$.code,
14
- $api_code_e_key_right_ms_q$$!=$module$$.toLowerCase())return $callbackMain$$({error:`M\u00e3 quy\u1ec1n '${$right_code$$}' kh\u00f4ng h\u1ee3p l\u1ec7. API: ${$api_code_e_key_right_ms_q$$}, module: ${$module$$}`})}else return $callbackMain$$({error:`M\u00e3 quy\u1ec1n '${$right_code$$}' kh\u00f4ng t\u1ed3n t\u1ea1i`});$listinfo_model$$=$listinfo_model$$?.permistion_code||$right_code$$;if($app$$&&$app$$.allow_modules&&$app$$.allow_modules.length>0&&($api_code_e_key_right_ms_q$$={"items.code":{$regex:"^"+
15
- $module$$+"$",$options:"i"},active_require:!0},$app$$.menu_code&&($api_code_e_key_right_ms_q$$.app=$app$$.menu_code),$api_code_e_key_right_ms_q$$=await global.getModel("moduleinfo").find($api_code_e_key_right_ms_q$$).lean(),$api_code_e_key_right_ms_q$$.length>0&&$api_code_e_key_right_ms_q$$.filter($m$$=>$app$$.allow_modules.indexOf($m$$.code)>=0&&(!$m$$.not_for_companies||$m$$.not_for_companies.indexOf($app$$._id.toString())<0)&&(!$m$$.only_for_companies||$m$$.only_for_companies.indexOf($app$$._id.toString())>=
16
- 0)).length==0))return $callbackMain$$('API "'+$module$$+'" ch\u01b0a \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t cho c\u00f4ng ty n\u00e0y (trong module '+$api_code_e_key_right_ms_q$$[0].app+"/"+$api_code_e_key_right_ms_q$$[0].title+")",!1);if($options$$.data&&$options$$.data.id_app){if($options$$.data.id_app!=$current_id_app$$)return $callbackMain$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp th\u00f4ng tin n\u00e0y",!1);if($options$$.obj&&$options$$.data.id_app!=$options$$.obj.id_app)return Logger.warn("[permission]",
17
- {obj_id_app:$options$$.obj.id_app,data_id_app:$options$$.data.id_app}),$callbackMain$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt th\u00f4ng tin n\u00e0y v\u00e0o c\u00f4ng ty kh\u00e1c",!1)}if($options$$.obj&&$options$$.obj.id_app&&$options$$.obj.id_app!=$current_id_app$$)return Logger.warn("[permission]",{obj_id_app:$options$$.obj.id_app,current_id_app:$current_id_app$$}),$callbackMain$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp th\u00f4ng tin n\u00e0y do d\u1eef li\u1ec7u kh\u00f4ng thu\u1ed9c c\u00f4ng ty hi\u1ec7n t\u1ea1i",
18
- !1);if($options$$.notNeedRight)return $callbackMain$$(null,!0,$app$$);if($options$$.obj&&!$admin$$)if($options$$.obj?.visible_to===2){if(!underscore.contains($options$$.obj.visible_to_users,$email$$)&&$options$$.obj?.of_user!==$email$$.toLowerCase()&&$options$$.obj.user_created&&$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase())return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp th\u00f4ng tin n\u00e0y",!1)}else if($options$$.obj.visible_to===1&&$options$$.obj?.of_user!==
19
- $email$$.toLowerCase()&&$options$$.obj.user_created&&$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase()&&$options$$.obj.phu_trach!=$email$$.toLowerCase()&&($options$$.obj.attends||[]).indexOf($email$$)<0&&(await exports.dsDangPhuTrach($options$$.obj.id_app,$email$$.toLowerCase())).indexOf($options$$.obj.user_created)<0)return $callbackMain$$("Ch\u1ec9 ng\u01b0\u1eddi t\u1ea1o, ph\u1ee5 tr\u00e1ch, h\u1ed7 tr\u1ee3 v\u00e0 admin m\u1edbi c\u00f3 quy\u1ec1n truy c\u1eadp th\u00f4ng tin n\u00e0y",
20
- !1);$api_code_e_key_right_ms_q$$=$email$$;$_right__right_trang_thai_controler_participant$$&&$_right__right_trang_thai_controler_participant$$.group_id&&($api_code_e_key_right_ms_q$$=$_right__right_trang_thai_controler_participant$$.group_id.toLowerCase());($_right__right_trang_thai_controler_participant$$=await right.findOne({id_app:$current_id_app$$,email:$api_code_e_key_right_ms_q$$,module:$listinfo_model$$}).lean())||$listinfo_model$$!=$options$$.listinfo_code||$listinfo_model$$==$module$$.toLowerCase()||
21
- ($listinfo_model$$=$module$$.toLowerCase());$_right__right_trang_thai_controler_participant$$=await right.findOne({id_app:$current_id_app$$,email:$api_code_e_key_right_ms_q$$,module:$listinfo_model$$}).lean();if(!$admin$$){if(!$_right__right_trang_thai_controler_participant$$)return $_right__right_trang_thai_controler_participant$$=global.controllers[$module$$.toUpperCase()],$listinfo_model$$=(($_right__right_trang_thai_controler_participant$$||{}).model_name||$module$$).toLowerCase(),$listinfo_model$$==
22
- "customer"||$listinfo_model$$.indexOf("socai")>=0||$listinfo_model$$.indexOf("sokho")>=0||$listinfo_model$$.indexOf("vatvao")>=0||$listinfo_model$$.indexOf("vatra")>=0||$listinfo_model$$.indexOf("tdttno")>=0||$listinfo_model$$.indexOf("tdttco")>=0||$_right__right_trang_thai_controler_participant$$&&($_right__right_trang_thai_controler_participant$$.options||{}).isVoucher||$action$$!=="view"&&($action$$!=="add"||$module$$.toLowerCase()!=="group")?$callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",
23
- !1):($_right__right_trang_thai_controler_participant$$={"items.code":$module$$.toLowerCase()},$app$$&&$app$$.menu_code&&($_right__right_trang_thai_controler_participant$$.app=$app$$.menu_code),await global.getModel("moduleinfo").findOne($_right__right_trang_thai_controler_participant$$,{app:1}).lean()?$callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",!1):$callbackMain$$(null,!0,$app$$));if($action$$=="view"&&$_right__right_trang_thai_controler_participant$$?.view_all)return $callbackMain$$(null,
24
- !0,$app$$);if($action$$=="view"&&$options$$.obj&&$_right__right_trang_thai_controler_participant$$&&!$_right__right_trang_thai_controler_participant$$.view_all&&!$_right__right_trang_thai_controler_participant$$.viewOfOther&&$options$$.obj.user_created.toLowerCase()!==$email$$&&($options$$.obj.visible_to!==2||!underscore.contains($options$$.obj.visible_to_users,$email$$))&&$options$$.obj.phu_trach!==$email$$&&($options$$.obj.attends||[]).indexOf($email$$)<0&&(await exports.dsDangPhuTrach($options$$.obj.id_app,
25
- $email$$.toLowerCase())).indexOf($options$$.obj.user_created)<0)return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp th\u00f4ng tin n\u00e0y",!1);if(!$_right__right_trang_thai_controler_participant$$[$action$$])return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",!1);if($ma_trang_thai$$&&($_right__right_trang_thai_controler_participant$$=$_right__right_trang_thai_controler_participant$$[`${$action$$}_trang_thai`])&&
26
- !$_right__right_trang_thai_controler_participant$$[$ma_trang_thai$$]&&$_right__right_trang_thai_controler_participant$$[$ma_trang_thai$$]!=void 0)return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y",!1)}$options$$.obj?async.series({trangthai:$callback$$=>{$options$$.obj&&($action$$==="update"||$action$$==="delete")&&$model$$&&underscore.has($model$$.schema.paths,"ma_ct")&&$options$$.obj.ma_ct?trangthai.findOne({ma_ct:$options$$.obj.ma_ct.toUpperCase(),
27
- ma_trang_thai:$options$$.obj.trang_thai},function($e$$,$trang_thai$$){if($e$$)return $callback$$($e$$);if($trang_thai$$){if($action$$==="update"){if($trang_thai$$.allow_update==0)return $callback$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y kh\u00f4ng cho ph\u00e9p s\u1eeda");if($trang_thai$$.lock_data==1)return $callback$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c kho\u00e1")}if($action$$==="delete"&&($trang_thai$$.lock_data||$trang_thai$$.allow_delete==
28
- 0))return $callback$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y kh\u00f4ng cho ph\u00e9p xo\u00e1")}return $callback$$()}):$callback$$()}},$action_right_e$$=>{if($action_right_e$$)$callbackMain$$($action_right_e$$,!1);else{$action_right_e$$=`${$action$$}_right`;if(!$admin$$&&$options$$.obj&&$options$$.obj[$action_right_e$$]&&$options$$.obj[$action_right_e$$].length>0&&$options$$.obj[$action_right_e$$].indexOf($email$$.toLowerCase())<0)return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",
29
- !1);$callbackMain$$(null,!0,$app$$)}}):$callbackMain$$(null,!0,$app$$)},$options$$)};exports.asyncHasRight=function($current_id_app$$,$email$$,$module$$,$action$$,$options$$={}){return new Promise(($resolve$$,$reject$$)=>{exports.hasRight($current_id_app$$,$email$$,$module$$,$action$$,($e$$,$permission$$,$app$$)=>{if($e$$)return $reject$$($e$$);$resolve$$({permission:$permission$$,app:$app$$})},$options$$)})};
30
- exports.getRightByItem=async function($id_app$$,$model$$,$email$$,$next$$,$module$$,$options$$={}){$module$$||=$model$$&&$model$$.modelName?$model$$.modelName.toLowerCase():"";let $right_code$$=($options$$.right_code||$options$$.listinfo_code||$module$$).toLowerCase(),$key_cache$$=$right_code$$?`RightByItem::${$id_app$$}::${$email$$}::${$right_code$$}::${JSON.stringify($options$$)}`:"",$time_cache$$=$email$$==="public"?10080:1;if($key_cache$$&&global.cacheDatas[$key_cache$$]&&moment().diff(moment(global.cacheDatas[$key_cache$$].time),
31
- "minutes")<$time_cache$$)return $next$$(null,global.cacheDatas[$key_cache$$].data,!1);exports.isAdmin($id_app$$,$email$$,async function($condition_e$$,$_right$jscomp$1_admin$jscomp$1_api_code$$,$allow_trang_thai_app$$,$_right_trang_thai$jscomp$1_participant$$){if($condition_e$$)return $next$$($condition_e$$);$condition_e$$={};if($_right$jscomp$1_admin$jscomp$1_api_code$$||$options$$.notNeedRight||!underscore.has($model$$.schema.paths,"id_app"))$next$$(null,$condition_e$$,$_right$jscomp$1_admin$jscomp$1_api_code$$);
32
- else{var $listinfo$$;if($right_code$$&&$right_code$$!=$module$$.toLowerCase())if($listinfo$$=await global.getModel("listinfo").findOne({code:$right_code$$}).lean()){if($_right$jscomp$1_admin$jscomp$1_api_code$$=$listinfo$$.api_code||$listinfo$$.code,$_right$jscomp$1_admin$jscomp$1_api_code$$!=$module$$.toLowerCase())return $next$$({error:`M\u00e3 quy\u1ec1n '${$right_code$$}' kh\u00f4ng h\u1ee3p l\u1ec7, API: ${$_right$jscomp$1_admin$jscomp$1_api_code$$}, module: ${$module$$.toLowerCase()}`})}else return $next$$({error:`M\u00e3 quy\u1ec1n '${$right_code$$}' kh\u00f4ng t\u1ed3n t\u1ea1i`});
33
- var $ds_dang_phu_trach_permistion_code$$=$listinfo$$?.permistion_code||$right_code$$;let $selUsers$$;$listinfo$$=[];let $key_right$$=$email$$;$_right_trang_thai$jscomp$1_participant$$&&$_right_trang_thai$jscomp$1_participant$$.group_id&&($key_right$$=$_right_trang_thai$jscomp$1_participant$$.group_id.toLowerCase());($_right$jscomp$1_admin$jscomp$1_api_code$$=await right.findOne({id_app:$id_app$$,email:$key_right$$,module:$ds_dang_phu_trach_permistion_code$$}).lean())||$ds_dang_phu_trach_permistion_code$$!=
34
- $options$$.listinfo_code||$ds_dang_phu_trach_permistion_code$$==$module$$.toLowerCase()||($ds_dang_phu_trach_permistion_code$$=$module$$.toLowerCase());if(($_right$jscomp$1_admin$jscomp$1_api_code$$=await right.findOne({id_app:$id_app$$,email:$key_right$$,module:$ds_dang_phu_trach_permistion_code$$}).lean())&&$_right$jscomp$1_admin$jscomp$1_api_code$$.view_all){if($_right$jscomp$1_admin$jscomp$1_api_code$$&&$_right$jscomp$1_admin$jscomp$1_api_code$$.extra_condition)try{$condition_e$$=evalute(`return ${$_right$jscomp$1_admin$jscomp$1_api_code$$.extra_condition}`,
35
- {module:$module$$,participant:$_right_trang_thai$jscomp$1_participant$$,appInfo:$allow_trang_thai_app$$})}catch($e$$){return Logger.error("[getRightByItem] [extra_condition]",$e$$,$_right$jscomp$1_admin$jscomp$1_api_code$$.extra_condition),$next$$($e$$.message)}$key_cache$$&&(global.cacheDatas[$key_cache$$]={time:new Date,data:_.cloneDeep($condition_e$$)});return $next$$(null,$condition_e$$,!1)}$ds_dang_phu_trach_permistion_code$$=(await exports.dsDangPhuTrach($id_app$$,$email$$)).filter($d$$=>$d$$);
36
- $ds_dang_phu_trach_permistion_code$$.push($email$$);$_right$jscomp$1_admin$jscomp$1_api_code$$&&$_right$jscomp$1_admin$jscomp$1_api_code$$.view_empty_phu_trach&&($ds_dang_phu_trach_permistion_code$$.push(""),$ds_dang_phu_trach_permistion_code$$.push(null));$ds_dang_phu_trach_permistion_code$$=[...(new Set($ds_dang_phu_trach_permistion_code$$))];if($_right$jscomp$1_admin$jscomp$1_api_code$$&&$_right$jscomp$1_admin$jscomp$1_api_code$$.view){$allow_trang_thai_app$$={visible_to:null};if(underscore.has($model$$.schema.paths,
37
- "visible_to")){$condition_e$$.$and||($condition_e$$.$and=[]);var $allUsers_query$$={visible_to:0};$selUsers$$={visible_to:2,visible_to_users:$email$$};$_right_trang_thai$jscomp$1_participant$$=underscore.has($model$$.schema.paths,"visible_to_usergroups")?{visible_to:5,visible_to_usergroups:($_right_trang_thai$jscomp$1_participant$$||{}).group_id}:{visible_to:5,visible_to_users:($_right_trang_thai$jscomp$1_participant$$||{}).group_id};$listinfo$$.push($allUsers_query$$);$listinfo$$.push($selUsers$$);
38
- $listinfo$$.push($_right_trang_thai$jscomp$1_participant$$);$listinfo$$.push($allow_trang_thai_app$$)}if($_right$jscomp$1_admin$jscomp$1_api_code$$.viewOfOther===!1){if(underscore.has($model$$.schema.paths,"ma_kh")){var $allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$=await exports.dsKhDangPhuTrach($id_app$$,{$in:$ds_dang_phu_trach_permistion_code$$});$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$.length>0&&$listinfo$$.push({ma_kh:{$in:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$}})}$allUsers_query$$?
39
- $allUsers_query$$.user_created={$in:$ds_dang_phu_trach_permistion_code$$}:$listinfo$$.push({user_created:{$in:$ds_dang_phu_trach_permistion_code$$}})}else{if(underscore.has($model$$.schema.paths,"trang_thai")===!0){if($_right_trang_thai$jscomp$1_participant$$=$_right$jscomp$1_admin$jscomp$1_api_code$$.view_trang_thai){$allow_trang_thai_app$$=[void 0,null,""];for(var $t_viewOfOther_right_trang_thai$$ in $_right_trang_thai$jscomp$1_participant$$)$_right_trang_thai$jscomp$1_participant$$[$t_viewOfOther_right_trang_thai$$]&&
40
- $allow_trang_thai_app$$.push($t_viewOfOther_right_trang_thai$$);$condition_e$$.trang_thai={$in:$allow_trang_thai_app$$}}if($t_viewOfOther_right_trang_thai$$=$_right$jscomp$1_admin$jscomp$1_api_code$$.viewOfOther_trang_thai){$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$=[void 0,null,""];for(var $t$jscomp$1_users$$ in $t_viewOfOther_right_trang_thai$$)!$t_viewOfOther_right_trang_thai$$[$t$jscomp$1_users$$]||$_right_trang_thai$jscomp$1_participant$$&&!$_right_trang_thai$jscomp$1_participant$$[$t$jscomp$1_users$$]||
41
- $allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$.push($t$jscomp$1_users$$)}}$_right$jscomp$1_admin$jscomp$1_api_code$$.viewOfOther_user_groups&&$_right$jscomp$1_admin$jscomp$1_api_code$$.viewOfOther_user_groups.length>0?($t$jscomp$1_users$$=await Participant.find({id_app:$id_app$$,group_id:{$in:$_right$jscomp$1_admin$jscomp$1_api_code$$.viewOfOther_user_groups}},{email:1}).lean(),$ds_dang_phu_trach_permistion_code$$.push(...$t$jscomp$1_users$$.map($u$$=>$u$$.email)),$allUsers_query$$?
42
- $allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$?$allUsers_query$$.$or=[{user_created:{$in:$ds_dang_phu_trach_permistion_code$$.filter($e$$=>$e$$!=$email$$)},trang_thai:{$in:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$}},{user_created:$email$$}]:$allUsers_query$$.user_created={$in:$ds_dang_phu_trach_permistion_code$$}:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$?($listinfo$$.push({user_created:{$in:$ds_dang_phu_trach_permistion_code$$},
43
- trang_thai:{$in:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$}}),$listinfo$$.push({$or:[{user_created:{$in:$ds_dang_phu_trach_permistion_code$$.filter($e$$=>$e$$!=$email$$)},trang_thai:{$in:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$}},{user_created:$email$$}]})):$listinfo$$.push({user_created:{$in:$ds_dang_phu_trach_permistion_code$$}})):$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$&&($allUsers_query$$?$allUsers_query$$.$or=[{user_created:{$ne:$email$$},
44
- trang_thai:{$in:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$}},{user_created:$email$$}]:$listinfo$$.push({$or:[{user_created:{$ne:$email$$},trang_thai:{$in:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$}},{user_created:$email$$}]}))}$selUsers$$&&(underscore.has($model$$.schema.paths,"of_user")&&$listinfo$$.push({of_user:{$in:[...$ds_dang_phu_trach_permistion_code$$,$email$$]}}),underscore.has($model$$.schema.paths,"user")&&$listinfo$$.push({user:{$in:[...$ds_dang_phu_trach_permistion_code$$,
45
- $email$$]}}),underscore.has($model$$.schema.paths,"phu_trach")&&$listinfo$$.push({phu_trach:{$in:$ds_dang_phu_trach_permistion_code$$}}),underscore.has($model$$.schema.paths,"attends")&&$listinfo$$.push({attends:{$in:$ds_dang_phu_trach_permistion_code$$}}))}else not_need_right_models.indexOf($module$$)<0&&($listinfo$$.push({user_created:$email$$}),underscore.has($model$$.schema.paths,"of_user")&&$listinfo$$.push({of_user:{$in:[...$ds_dang_phu_trach_permistion_code$$,$email$$]}}),underscore.has($model$$.schema.paths,
46
- "user")&&$listinfo$$.push({user:{$in:[...$ds_dang_phu_trach_permistion_code$$,$email$$]}}),underscore.has($model$$.schema.paths,"phu_trach")&&$listinfo$$.push({phu_trach:{$in:$ds_dang_phu_trach_permistion_code$$}}),underscore.has($model$$.schema.paths,"attends")&&$listinfo$$.push({attends:$email$$})),$allUsers_query$$={"items.code":$module$$.toLowerCase()},$allow_trang_thai_app$$&&$allow_trang_thai_app$$.menu_code&&($allUsers_query$$.app=$allow_trang_thai_app$$.menu_code),await global.getModel("moduleinfo").findOne($allUsers_query$$,
47
- {app:1}).lean()||($allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$={visible_to:null},underscore.has($model$$.schema.paths,"visible_to")&&($condition_e$$.$and||($condition_e$$.$and=[]),$allUsers_query$$={visible_to:0},$selUsers$$={visible_to:2,visible_to_users:$email$$},$_right_trang_thai$jscomp$1_participant$$=underscore.has($model$$.schema.paths,"visible_to_usergroups")?{visible_to:5,visible_to_usergroups:($_right_trang_thai$jscomp$1_participant$$||{}).group_id}:{visible_to:5,
48
- visible_to_users:($_right_trang_thai$jscomp$1_participant$$||{}).group_id},$listinfo$$.push($allUsers_query$$),$listinfo$$.push($selUsers$$),$listinfo$$.push($_right_trang_thai$jscomp$1_participant$$),$listinfo$$.push($allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$)));underscore.has($model$$.schema.paths,"public")&&$listinfo$$.push({public:!0});underscore.has($model$$.schema.paths,"shared")&&$listinfo$$.push({shared:!0});$listinfo$$.length>0&&($condition_e$$.$and||($condition_e$$.$and=
49
- []),$condition_e$$.$and.push({$or:$listinfo$$}));$condition_e$$.$and&&$condition_e$$.$and.length===0&&delete $condition_e$$.$and;$condition_e$$.$or&&$condition_e$$.$or.length===0&&delete $condition_e$$.$or;$key_cache$$&&(global.cacheDatas[$key_cache$$]={time:new Date,data:_.cloneDeep($condition_e$$)});$next$$(null,$condition_e$$,!1)}},$options$$)};
50
- exports.getRightDataView=function($id_app$$,$model$$,$email$$,$next$$){exports.isAdmin($id_app$$,$email$$,function($condition$jscomp$1_e$$,$admin$$){if($condition$jscomp$1_e$$)return $next$$($condition$jscomp$1_e$$);$condition$jscomp$1_e$$={};if(!$admin$$&&underscore.has($model$$.schema.paths,"dataview_to_users")===!0){$condition$jscomp$1_e$$.$and||($condition$jscomp$1_e$$.$and=[]);let $dataview$$=[{dataview_to:null}];$dataview$$.push({dataview_to:0});$dataview$$.push({dataview_to:1,user_created:$email$$});
51
- $dataview$$.push({dataview_to:2,dataview_to_users:$email$$});$condition$jscomp$1_e$$.$and.push({$or:$dataview$$})}$next$$(null,$condition$jscomp$1_e$$,$admin$$)})};
52
- exports.getFieldNotRight=async($_fields_id_app$$,$_p_email$jscomp$6_group_id$$,$ma_ct$$)=>{if(!$_fields_id_app$$)return[];$_p_email$jscomp$6_group_id$$=await Participant.ofApp($_fields_id_app$$,$_p_email$jscomp$6_group_id$$);if($_p_email$jscomp$6_group_id$$.length>0){$_p_email$jscomp$6_group_id$$=$_p_email$jscomp$6_group_id$$[0].group_id;let $field_not_right$$;try{$field_not_right$$=await right.getInfo($_fields_id_app$$,{email:$_p_email$jscomp$6_group_id$$,module:$ma_ct$$.toLowerCase()},"field_not_right")}catch($e$$){return[]}$_fields_id_app$$=
53
- [];for(let $_key$$ in $field_not_right$$)$field_not_right$$[$_key$$]&&$_fields_id_app$$.push($_key$$);return $_fields_id_app$$}return[]};const request=require("request");
54
- exports.verifyReCaptcha=async($gRecaptchaResponse$$,$remoteip$$)=>{if(!$gRecaptchaResponse$$)throw Error("Please select captcha");var $verificationUrl$$="https://www.google.com/recaptcha/api/siteverify?secret="+global.configs.GOOGLE_RECAPTCHA_SECRET_KEY+"&response="+$gRecaptchaResponse$$;$remoteip$$&&($verificationUrl$$+="&remoteip="+$remoteip$$);return new Promise(($resolve$$,$reject$$)=>{request($verificationUrl$$,function($error$$,$response$$,$body$$){$body$$=JSON.parse($body$$);if(!$body$$.success)return Logger.error("Failed captcha verification",
55
- $body$$,$verificationUrl$$),$reject$$(Error("Failed captcha verification"));$resolve$$(!0)})})};
10
+ exports.isAdmin=function($current_id_app$$,$email$$,$callback$$){if(!$current_id_app$$)return $callback$$(null,!0);App.findOne({_id:$current_id_app$$}).lean().then(async $app$$=>{if(!$app$$)return $callback$$({error:`ID app: ${$current_id_app$$} kh\u00f4ng t\u1ed3n t\u1ea1i`,code:-7},!1);if($app$$.trang_thai==="9")return $callback$$({error:`C\u00f4ng ty ${$app$$.name} \u0111\u00e3 ng\u1eebng s\u1eed d\u1ee5ng`,code:-9},!1);if(global.configs.check_expire_date&&$app$$.expire_date&&(new Date($app$$.expire_date)).getTime()<
11
+ Date.now())return $callback$$({error:`C\u00f4ng ty ${$app$$.name} \u0111\u00e3 h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng`,code:-8},!1);const $participant$$=await Participant.findOne({id_app:$current_id_app$$,email:$email$$}).lean();if(!$participant$$)return $callback$$({error:`B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp c\u00f4ng ty ${$app$$.name}`,code:-2},!1);if(!$participant$$.admin&&!$participant$$.active&&$email$$!=="public")return $callback$$({error:"T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111ang ch\u1edd \u0111\u01b0\u1ee3c x\u00e1c nh\u1eadn",
12
+ code:-1},!1);$callback$$(null,$participant$$.admin,$app$$,$participant$$)}).catch($e$$=>$callback$$($e$$,!1))};const findRight=async($id_app$$,$key_right$$,$permistion_code$$,$module$$)=>{let $_right$$=await right.findOne({id_app:$id_app$$,email:$key_right$$,module:$permistion_code$$}).lean();$_right$$||$permistion_code$$===$module$$.toLowerCase()||($_right$$=await right.findOne({id_app:$id_app$$,email:$key_right$$,module:$module$$.toLowerCase()}).lean());return $_right$$};
13
+ exports.hasRight=async function($action_right_current_id_app$$,$email$$,$module$$,$action$$,$callbackMain$$,$options$$={}){if(!$action_right_current_id_app$$||$options$$.notNeedRight)return $callbackMain$$(null,!0);const $model$$=global.controllers[$module$$]?.model;if($model$$?.schema&&!underscore.has($model$$.schema.paths,"id_app"))return $callbackMain$$(null,!0);var $q_right_code$$=($options$$.right_code||$options$$.listinfo_code||$module$$).toLowerCase();$action$$=($action$$||"").toLowerCase();
14
+ $options$$.data?.trang_thai!=null&&($options$$.data.trang_thai=$options$$.data.trang_thai.toString());$options$$.obj?.trang_thai!=null&&($options$$.obj.trang_thai=$options$$.obj.trang_thai.toString());var $data$$=$options$$.data||$options$$.obj||{},$ma_ct_permistion_code$$=$model$$&&underscore.has($model$$.schema.paths,"ma_ct")?(($options$$.obj||{}).ma_ct||($options$$.data||{}).ma_ct||"").toString().toUpperCase():null;$data$$=($data$$.trang_thai||$data$$.progress||"").toString().toUpperCase();!$data$$&&
15
+ $options$$.obj&&($data$$=($options$$.obj.trang_thai||$options$$.obj.progress||"").toString().toUpperCase());if($ma_ct_permistion_code$$&&$data$$){const $tt$$=await trangthai.findOne({ma_trang_thai:$data$$,ma_ct:$ma_ct_permistion_code$$}).lean();if($tt$$?.not_need_right)return $callbackMain$$(null,!0);$tt$$||Logger.info("Kh\u00f4ng t\u00ecm th\u1ea5y tr\u1ea1ng th\u00e1i",{ma_ct:$ma_ct_permistion_code$$,ma_trang_thai:$data$$})}try{const {admin:$admin$$,app:$app$$,participant:$participant$$}=await isAdminAsync($action_right_current_id_app$$,
16
+ $email$$,$options$$);let $listinfo$$;$ma_ct_permistion_code$$=$q_right_code$$;if(!$admin$$&&$q_right_code$$!==$module$$.toLowerCase()){$listinfo$$=await global.getModel("listinfo").findOne({code:$q_right_code$$}).lean();if(!$listinfo$$)return $callbackMain$$({error:`M\u00e3 quy\u1ec1n '${$q_right_code$$}' kh\u00f4ng t\u1ed3n t\u1ea1i`});const $api_code$$=$listinfo$$.api_code||$listinfo$$.code;if($api_code$$!==$module$$.toLowerCase())return $callbackMain$$({error:`M\u00e3 quy\u1ec1n '${$q_right_code$$}' kh\u00f4ng h\u1ee3p l\u1ec7. API: ${$api_code$$}, module: ${$module$$}`})}$ma_ct_permistion_code$$=
17
+ $listinfo$$?.permistion_code||$q_right_code$$;if($app$$?.allow_modules?.length>0){$q_right_code$$={"items.code":{$regex:`^${$module$$}$`,$options:"i"},active_require:!0};$app$$.menu_code&&($q_right_code$$.app=$app$$.menu_code);const $ms$$=await global.getModel("moduleinfo").find($q_right_code$$).lean();if($ms$$.length>0&&!$ms$$.filter($m$$=>$app$$.allow_modules.includes($m$$.code)&&(!$m$$.not_for_companies||!$m$$.not_for_companies.includes($app$$._id.toString()))&&(!$m$$.only_for_companies||$m$$.only_for_companies.includes($app$$._id.toString()))).length)return $callbackMain$$(`API "${$module$$}" ch\u01b0a \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t cho c\u00f4ng ty n\u00e0y (trong module ${$ms$$[0].app}/${$ms$$[0].title})`,
18
+ !1)}if($options$$.data?.id_app){if($options$$.data.id_app!==$action_right_current_id_app$$)return $callbackMain$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp th\u00f4ng tin n\u00e0y",!1);if($options$$.obj?.id_app&&$options$$.data.id_app!==$options$$.obj.id_app)return $callbackMain$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt th\u00f4ng tin n\u00e0y v\u00e0o c\u00f4ng ty kh\u00e1c",!1)}if($options$$.obj?.id_app&&$options$$.obj.id_app!==$action_right_current_id_app$$)return $callbackMain$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp th\u00f4ng tin n\u00e0y do d\u1eef li\u1ec7u kh\u00f4ng thu\u1ed9c c\u00f4ng ty hi\u1ec7n t\u1ea1i",
19
+ !1);if($options$$.notNeedRight)return $callbackMain$$(null,!0,$app$$);if($options$$.obj&&!$admin$$)if($options$$.obj.visible_to===2){if(!underscore.contains($options$$.obj.visible_to_users,$email$$)&&$options$$.obj.of_user!==$email$$.toLowerCase()&&$options$$.obj.user_created?.toLowerCase()!==$email$$.toLowerCase())return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp th\u00f4ng tin n\u00e0y",!1)}else if($options$$.obj.visible_to===1&&$options$$.obj.of_user!==$email$$.toLowerCase()&&
20
+ $options$$.obj.user_created?.toLowerCase()!==$email$$.toLowerCase()&&$options$$.obj.phu_trach!==$email$$.toLowerCase()&&!($options$$.obj.attends||[]).includes($email$$)&&!(await exports.dsDangPhuTrach($options$$.obj.id_app,$email$$.toLowerCase())).includes($options$$.obj.user_created))return $callbackMain$$("Ch\u1ec9 ng\u01b0\u1eddi t\u1ea1o, ph\u1ee5 tr\u00e1ch, h\u1ed7 tr\u1ee3 v\u00e0 admin m\u1edbi c\u00f3 quy\u1ec1n truy c\u1eadp th\u00f4ng tin n\u00e0y",!1);const $key_right$$=($participant$$?.group_id||
21
+ $email$$).toLowerCase(),$_right$$=await findRight($action_right_current_id_app$$,$key_right$$,$ma_ct_permistion_code$$,$module$$);if(!$admin$$){if(!$_right$$){const $controler$$=global.controllers[$module$$.toUpperCase()],$model_name$$=(($controler$$||{}).model_name||$module$$).toLowerCase();if($model_name$$==="customer"||"socai sokho vatvao vatra tdttno tdttco".split(" ").some($k$$=>$model_name$$.includes($k$$))||$controler$$&&($controler$$.options||{}).isVoucher)return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",
22
+ !1);if($action$$==="view"||$action$$==="add"&&$module$$.toLowerCase()==="group"){const $q$$={"items.code":$module$$.toLowerCase()};$app$$?.menu_code&&($q$$.app=$app$$.menu_code);if(!await global.getModel("moduleinfo").findOne($q$$,{app:1}).lean())return $callbackMain$$(null,!0,$app$$)}return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",!1)}if($action$$==="view"&&$_right$$.view_all)return $callbackMain$$(null,!0,$app$$);if(!($action$$!==
23
+ "view"||!$options$$.obj||$_right$$.view_all||$_right$$.viewOfOther||$options$$.obj.user_created?.toLowerCase()===$email$$||$options$$.obj.visible_to===2&&underscore.contains($options$$.obj.visible_to_users,$email$$)||$options$$.obj.phu_trach===$email$$||($options$$.obj.attends||[]).includes($email$$)||(await exports.dsDangPhuTrach($options$$.obj.id_app,$email$$.toLowerCase())).includes($options$$.obj.user_created)))return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp th\u00f4ng tin n\u00e0y",
24
+ !1);if(!$_right$$[$action$$])return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",!1);if($data$$&&$_right$$[`${$action$$}_trang_thai`]&&$_right$$[`${$action$$}_trang_thai`][$data$$]===!1)return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y",!1)}if($options$$.obj){if(($action$$==="update"||$action$$==="delete")&&$model$$&&underscore.has($model$$.schema.paths,
25
+ "ma_ct")&&$options$$.obj.ma_ct){const $tt$$=await trangthai.findOne({ma_ct:$options$$.obj.ma_ct.toUpperCase(),ma_trang_thai:$options$$.obj.trang_thai}).lean();if($tt$$){if($action$$==="update"){if($tt$$.allow_update===!1)return $callbackMain$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y kh\u00f4ng cho ph\u00e9p s\u1eeda",!1);if($tt$$.lock_data===!0)return $callbackMain$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c kho\u00e1",!1)}if($action$$==="delete"&&
26
+ ($tt$$.lock_data||$tt$$.allow_delete===!1))return $callbackMain$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y kh\u00f4ng cho ph\u00e9p xo\u00e1",!1)}}$action_right_current_id_app$$=`${$action$$}_right`;if(!$admin$$&&$options$$.obj[$action_right_current_id_app$$]?.length>0&&!$options$$.obj[$action_right_current_id_app$$].includes($email$$.toLowerCase()))return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",!1)}$callbackMain$$(null,
27
+ !0,$app$$)}catch($e$$){$callbackMain$$($e$$,!1)}};exports.asyncHasRight=($current_id_app$$,$email$$,$module$$,$action$$,$options$$={})=>new Promise(($resolve$$,$reject$$)=>{exports.hasRight($current_id_app$$,$email$$,$module$$,$action$$,($e$$,$perm$$,$app$$)=>{if($e$$)return $reject$$($e$$);$resolve$$({permission:$perm$$,app:$app$$})},$options$$)});
28
+ exports.getRightByItem=async function($id_app$$,$model$$,$email$$,$next$$,$module$$,$options$jscomp$5_permistion_code$$={}){$module$$||=$model$$?.modelName?.toLowerCase()||"";var $buildVisibleToFilter_right_code$$=($options$jscomp$5_permistion_code$$.right_code||$options$jscomp$5_permistion_code$$.listinfo_code||$module$$).toLowerCase();const $key_cache$$=$buildVisibleToFilter_right_code$$?`RightByItem::${$id_app$$}::${$email$$}::${$buildVisibleToFilter_right_code$$}::${JSON.stringify($options$jscomp$5_permistion_code$$)}`:
29
+ "",$time_cache$$=$email$$==="public"?10080:1;if($key_cache$$&&global.cacheDatas[$key_cache$$]&&moment().diff(moment(global.cacheDatas[$key_cache$$].time),"minutes")<$time_cache$$)return $next$$(null,global.cacheDatas[$key_cache$$].data,!1);try{const {admin:$admin$$,app:$app$$,participant:$participant$$}=await isAdminAsync($id_app$$,$email$$,$options$jscomp$5_permistion_code$$);let $condition$$={};if($admin$$||$options$jscomp$5_permistion_code$$.notNeedRight||!underscore.has($model$$.schema.paths,
30
+ "id_app"))return $next$$(null,$condition$$,$admin$$);let $listinfo$$;if(($options$jscomp$5_permistion_code$$=$buildVisibleToFilter_right_code$$)&&$buildVisibleToFilter_right_code$$!==$module$$.toLowerCase()){$listinfo$$=await global.getModel("listinfo").findOne({code:$buildVisibleToFilter_right_code$$}).lean();if(!$listinfo$$)return $next$$({error:`M\u00e3 quy\u1ec1n '${$buildVisibleToFilter_right_code$$}' kh\u00f4ng t\u1ed3n t\u1ea1i`});const $api_code$$=$listinfo$$.api_code||$listinfo$$.code;if($api_code$$!==
31
+ $module$$.toLowerCase())return $next$$({error:`M\u00e3 quy\u1ec1n '${$buildVisibleToFilter_right_code$$}' kh\u00f4ng h\u1ee3p l\u1ec7, API: ${$api_code$$}, module: ${$module$$}`})}$options$jscomp$5_permistion_code$$=$listinfo$$?.permistion_code||$buildVisibleToFilter_right_code$$;const $key_right$$=($participant$$?.group_id||$email$$).toLowerCase(),$_right$$=await findRight($id_app$$,$key_right$$,$options$jscomp$5_permistion_code$$,$module$$);if($_right$$?.view_all){if($_right$$.extra_condition)try{const $codeToRun$$=
32
+ $_right$$.extra_condition.indexOf("return ")<0?`return ${$_right$$.extra_condition}`:`
33
+ return (async () => {
34
+ ${$_right$$.extra_condition}
35
+ })();
36
+ `;$condition$$=await evalute2($codeToRun$$,{user:$email$$,module:$module$$,participant:$participant$$,appInfo:$app$$,getModel:$cleanModelName_modelName$$=>{$cleanModelName_modelName$$=$cleanModelName_modelName$$.toLowerCase().trim();const $Model$$=global.getModel($cleanModelName_modelName$$);if(!$Model$$)throw Error(`Model '${$cleanModelName_modelName$$}' kh\u00f4ng t\u1ed3n t\u1ea1i.`);const $enforceIdApp$$=($cond$$={})=>({...$cond$$,id_app:$id_app$$}),$enforcePipeline$$=($newPipeline_pipeline$$=
37
+ [])=>{$newPipeline_pipeline$$=[...$newPipeline_pipeline$$];$newPipeline_pipeline$$.length>0&&$newPipeline_pipeline$$[0].$match?$newPipeline_pipeline$$[0].$match.id_app=$id_app$$:$newPipeline_pipeline$$.unshift({$match:{id_app:$id_app$$}});return $newPipeline_pipeline$$};return{find:($cond$$,$proj$$,$opts$$)=>$Model$$.find($enforceIdApp$$($cond$$),$proj$$,$opts$$),findOne:($cond$$,$proj$$,$opts$$)=>$Model$$.findOne($enforceIdApp$$($cond$$),$proj$$,$opts$$),aggregate:$pipeline$$=>$Model$$.aggregate($enforcePipeline$$($pipeline$$)),
38
+ countDocuments:$cond$$=>$Model$$.countDocuments($enforceIdApp$$($cond$$))}}})}catch($e$$){return Logger.error("[getRightByItem] [extra_condition]",$e$$,$_right$$.extra_condition),$next$$($e$$.message)}$key_cache$$&&(global.cacheDatas[$key_cache$$]={time:new Date,data:_.cloneDeep($condition$$)});return $next$$(null,$condition$$,!1)}let $ds_dang_phu_trach$$=(await exports.dsDangPhuTrach($id_app$$,$email$$)).filter(Boolean);$ds_dang_phu_trach$$.push($email$$);$_right$$?.view_empty_phu_trach&&($ds_dang_phu_trach$$.push(""),
39
+ $ds_dang_phu_trach$$.push(null));$ds_dang_phu_trach$$=[...(new Set($ds_dang_phu_trach$$))];let $allUsers$$,$selUsers$$,$selGroups$$,$visible$$=[],$allow_trang_thai$$;$buildVisibleToFilter_right_code$$=()=>{underscore.has($model$$.schema.paths,"visible_to")&&($condition$$.$and||($condition$$.$and=[]),$allUsers$$={visible_to:0},$selUsers$$={visible_to:2,visible_to_users:$email$$},$selGroups$$=underscore.has($model$$.schema.paths,"visible_to_usergroups")?{visible_to:5,visible_to_usergroups:($participant$$||
40
+ {}).group_id}:{visible_to:5,visible_to_users:($participant$$||{}).group_id},$visible$$.push($allUsers$$,$selUsers$$,$selGroups$$,{visible_to:null}))};if($_right$$?.view){$buildVisibleToFilter_right_code$$();if($_right$$.viewOfOther===!1){if(underscore.has($model$$.schema.paths,"ma_kh")){const $ds_kh$$=await exports.dsKhDangPhuTrach($id_app$$,{$in:$ds_dang_phu_trach$$});$ds_kh$$.length>0&&$visible$$.push({ma_kh:{$in:$ds_kh$$}})}$allUsers$$?$allUsers$$.user_created={$in:$ds_dang_phu_trach$$}:$visible$$.push({user_created:{$in:$ds_dang_phu_trach$$}})}else if(underscore.has($model$$.schema.paths,
41
+ "trang_thai")){const $rtt$$=$_right$$.view_trang_thai;$rtt$$&&($allow_trang_thai$$=[void 0,null,"",...Object.entries($rtt$$).filter(([,$v$$])=>$v$$).map(([$k$$])=>$k$$)],$condition$$.trang_thai={$in:$allow_trang_thai$$});const $rtt_other$$=$_right$$.viewOfOther_trang_thai;let $allow_viewOfOther_trang_thai$$;$rtt_other$$&&($allow_viewOfOther_trang_thai$$=[void 0,null,"",...Object.entries($rtt_other$$).filter(([$k$$,$v$$])=>$v$$&&(!$rtt$$||$rtt$$[$k$$])).map(([$k$$])=>$k$$)]);if($_right$$.viewOfOther_user_groups?.length>
42
+ 0){const $extra_users$$=await Participant.find({id_app:$id_app$$,group_id:{$in:$_right$$.viewOfOther_user_groups}},{email:1}).lean();$ds_dang_phu_trach$$.push(...$extra_users$$.map($u$$=>$u$$.email));$allUsers$$?$allUsers$$[$allow_viewOfOther_trang_thai$$?"$or":"user_created"]=$allow_viewOfOther_trang_thai$$?[{user_created:{$in:$ds_dang_phu_trach$$.filter($e$$=>$e$$!==$email$$)},trang_thai:{$in:$allow_viewOfOther_trang_thai$$}},{user_created:$email$$}]:{$in:$ds_dang_phu_trach$$}:$allow_viewOfOther_trang_thai$$?
43
+ $visible$$.push({$or:[{user_created:{$in:$ds_dang_phu_trach$$.filter($e$$=>$e$$!==$email$$)},trang_thai:{$in:$allow_viewOfOther_trang_thai$$}},{user_created:$email$$}]}):$visible$$.push({user_created:{$in:$ds_dang_phu_trach$$}})}else $allow_viewOfOther_trang_thai$$&&($module$$=[{user_created:{$ne:$email$$},trang_thai:{$in:$allow_viewOfOther_trang_thai$$}},{user_created:$email$$}],$allUsers$$?$allUsers$$.$or=$module$$:$visible$$.push({$or:$module$$}))}$selUsers$$&&(underscore.has($model$$.schema.paths,
44
+ "of_user")&&$visible$$.push({of_user:{$in:[...$ds_dang_phu_trach$$,$email$$]}}),underscore.has($model$$.schema.paths,"user")&&$visible$$.push({user:{$in:[...$ds_dang_phu_trach$$,$email$$]}}),underscore.has($model$$.schema.paths,"phu_trach")&&$visible$$.push({phu_trach:{$in:$ds_dang_phu_trach$$}}),underscore.has($model$$.schema.paths,"attends")&&$visible$$.push({attends:{$in:$ds_dang_phu_trach$$}}))}else{not_need_right_models.includes($module$$)||($visible$$.push({user_created:$email$$}),underscore.has($model$$.schema.paths,
45
+ "of_user")&&$visible$$.push({of_user:{$in:[...$ds_dang_phu_trach$$,$email$$]}}),underscore.has($model$$.schema.paths,"user")&&$visible$$.push({user:{$in:[...$ds_dang_phu_trach$$,$email$$]}}),underscore.has($model$$.schema.paths,"phu_trach")&&$visible$$.push({phu_trach:{$in:$ds_dang_phu_trach$$}}),underscore.has($model$$.schema.paths,"attends")&&$visible$$.push({attends:$email$$}));const $q$$={"items.code":$module$$.toLowerCase()};$app$$?.menu_code&&($q$$.app=$app$$.menu_code);await global.getModel("moduleinfo").findOne($q$$,
46
+ {app:1}).lean()||$buildVisibleToFilter_right_code$$()}underscore.has($model$$.schema.paths,"public")&&$visible$$.push({public:!0});underscore.has($model$$.schema.paths,"shared")&&$visible$$.push({shared:!0});$visible$$.length>0&&($condition$$.$and||($condition$$.$and=[]),$condition$$.$and.push({$or:$visible$$}));$condition$$.$and?.length===0&&delete $condition$$.$and;$condition$$.$or?.length===0&&delete $condition$$.$or;$key_cache$$&&(global.cacheDatas[$key_cache$$]={time:new Date,data:_.cloneDeep($condition$$)});
47
+ return $next$$(null,$condition$$,!1)}catch($e$$){$next$$($e$$)}};
48
+ exports.getRightDataView=function($id_app$$,$model$$,$email$$,$next$$){exports.isAdmin($id_app$$,$email$$,($condition$jscomp$1_e$$,$admin$$)=>{if($condition$jscomp$1_e$$)return $next$$($condition$jscomp$1_e$$);$condition$jscomp$1_e$$={};!$admin$$&&underscore.has($model$$.schema.paths,"dataview_to_users")&&($condition$jscomp$1_e$$.$and=[{$or:[{dataview_to:null},{dataview_to:0},{dataview_to:1,user_created:$email$$},{dataview_to:2,dataview_to_users:$email$$}]}]);$next$$(null,$condition$jscomp$1_e$$,
49
+ $admin$$)})};
50
+ exports.getFieldNotRight=async($id_app$$,$email$jscomp$7_group_id$$,$ma_ct$$)=>{if(!$id_app$$)return[];$email$jscomp$7_group_id$$=await Participant.ofApp($id_app$$,$email$jscomp$7_group_id$$);if(!$email$jscomp$7_group_id$$.length)return[];$email$jscomp$7_group_id$$=$email$jscomp$7_group_id$$[0].group_id;try{const $field_not_right$$=await right.getInfo($id_app$$,{email:$email$jscomp$7_group_id$$,module:$ma_ct$$.toLowerCase()},"field_not_right");return Object.entries($field_not_right$$||{}).filter(([,
51
+ $v$$])=>$v$$).map(([$k$$])=>$k$$)}catch($e$$){return[]}};
52
+ exports.verifyReCaptcha=async($gRecaptchaResponse_url$$,$body_remoteip$$)=>{if(!$gRecaptchaResponse_url$$)throw Error("Please select captcha");$gRecaptchaResponse_url$$=`https://www.google.com/recaptcha/api/siteverify?secret=${global.configs.GOOGLE_RECAPTCHA_SECRET_KEY}&response=${$gRecaptchaResponse_url$$}`;$body_remoteip$$&&($gRecaptchaResponse_url$$+=`&remoteip=${$body_remoteip$$}`);$body_remoteip$$=await (await fetch($gRecaptchaResponse_url$$)).json();if(!$body_remoteip$$.success)throw Logger.error("Failed captcha verification",
53
+ $body_remoteip$$,$gRecaptchaResponse_url$$),Error("Failed captcha verification");return!0};
56
54
  exports.verifyOTP=async($otp_username$$,$otp_id$$,$otp_code$$)=>{if(!$otp_id$$||!$otp_code$$)throw Error("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u otp-id v\u00e0 otp-code");const $u$$=await global.getModel("user").findOne({$or:[{email:$otp_username$$}]});if(!$u$$)throw Error(`T\u00e0i kho\u1ea3n ${$otp_username$$} kh\u00f4ng t\u1ed3n t\u1ea1i`);if($otp_id$$.toUpperCase()==="PIN"&&configs.use_pin_as_otp){if(!($u$$.local||{}).pin)throw Error("M\u00e3 pin ch\u01b0a \u0111\u01b0\u1ee3c t\u1ea1o");
57
- if(!await $u$$.validPin($otp_code$$))throw Error("M\u00e3 pin kh\u00f4ng ch\u00ednh x\u00e1c");return{pin:$otp_code$$,phone:$otp_username$$}}if(!global.mongoose.Types.ObjectId.isValid($otp_id$$))throw Error("otp-id kh\u00f4ng h\u1ee3p l\u1ec7");$otp_username$$=await global.getModel("otp").findOne({_id:$otp_id$$,phone:$otp_username$$});if(!$otp_username$$)throw Error("OTP kh\u00f4ng h\u1ee3p l\u1ec7");$otp_username$$.tried_number=($otp_username$$.tried_number||0)+1;await $otp_username$$.save();if(!$otp_username$$||
58
- $otp_username$$.tried_number>(configs.MAX_TRY_OTP||3)||$otp_username$$.otp!=$otp_code$$||$otp_username$$.verified||$otp_username$$.expire_time.getTime()<(new Date).getTime())throw Error("M\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i ho\u1eb7c \u0111\u00e3 h\u1ebft hi\u1ec7u l\u1ef1c");await global.getModel("otp").updateOne({_id:$otp_id$$},{verified:!0});return $otp_username$$};
55
+ if(!await $u$$.validPin($otp_code$$))throw Error("M\u00e3 pin kh\u00f4ng ch\u00ednh x\u00e1c");return{pin:$otp_code$$,phone:$otp_username$$}}if(!global.mongoose.Types.ObjectId.isValid($otp_id$$))throw Error("otp-id kh\u00f4ng h\u1ee3p l\u1ec7");$otp_username$$=await global.getModel("otp").findOne({_id:$otp_id$$,phone:$otp_username$$});if(!$otp_username$$)throw Error("OTP kh\u00f4ng h\u1ee3p l\u1ec7");$otp_username$$.tried_number=($otp_username$$.tried_number||0)+1;await $otp_username$$.save();if($otp_username$$.tried_number>
56
+ (configs.MAX_TRY_OTP||3)||$otp_username$$.otp!==$otp_code$$||$otp_username$$.verified||$otp_username$$.expire_time.getTime()<Date.now())throw Error("M\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i ho\u1eb7c \u0111\u00e3 h\u1ebft hi\u1ec7u l\u1ef1c");await global.getModel("otp").updateOne({_id:$otp_id$$},{verified:!0});return $otp_username$$};
@@ -0,0 +1,58 @@
1
+ const right=global.getModel("right"),App=global.getModel("app"),Participant=global.getModel("participant"),UserGroup=global.getModel("usergroup"),underscore=require("underscore"),moment=require("moment"),trangthai=global.getModel("trangthai"),async=require("async"),_=require("lodash"),{evalute}=require("./utils"),not_need_right_models="parameter rpt label labelinfo templaterpt templatestore templatevoucher listinfo reportinfo shortcut rptobject rptform forminfo importexceltemplate options".split(" ");
2
+ exports.dsChildrenGroups=async($id_app$$,$group_id$$)=>{let $childrenGroups$$=(await UserGroup.find({group_mother:$group_id$$,id_app:$id_app$$},{_id:1}).lean()).map($g$$=>$g$$._id.toString());$childrenGroups$$.length>0&&await Promise.all($childrenGroups$$.map($c$$=>(async()=>{let $gs$$=await exports.dsChildrenGroups($id_app$$,$c$$);$childrenGroups$$.push(...$gs$$)})()));return $childrenGroups$$};
3
+ exports.dsDangPhuTrach=async($id_app$$,$ds_phu_trach_email$$)=>{if(!$id_app$$)return[];let $key_cache$$=`userdangphutrach::${$id_app$$}::${$ds_phu_trach_email$$}`,$time_cache$$=$ds_phu_trach_email$$==="public"?10080:1;if(global.cacheDatas[$key_cache$$]&&moment().diff(moment(global.cacheDatas[$key_cache$$].time),"minutes")<$time_cache$$)return global.cacheDatas[$key_cache$$].data;let $groups$$=(await UserGroup.find({ds_phu_trach:$ds_phu_trach_email$$,id_app:$id_app$$},{_id:1}).lean()).map($g$$=>$g$$._id.toString());
4
+ await Promise.all([...$groups$$].map($group_id$$=>(async()=>{let $childrenGroups$$=await exports.dsChildrenGroups($id_app$$,$group_id$$);$groups$$.push(...$childrenGroups$$)})()));$groups$$=[...(new Set($groups$$))];$ds_phu_trach_email$$=(await Participant.find({id_app:$id_app$$,group_id:{$in:$groups$$}},{email:1}).lean()).map($p$$=>$p$$.email);global.cacheDatas[$key_cache$$]={time:new Date,data:_.cloneDeep($ds_phu_trach_email$$)};return $ds_phu_trach_email$$};
5
+ exports.dsKhDangPhuTrach=async($data_id_app$$,$phu_trach$$)=>{if(!$data_id_app$$)return[];let $key_cache$$=`khdangphutrach::${$data_id_app$$}::${typeof $phu_trach$$=="object"?JSON.stringify($phu_trach$$):$phu_trach$$}`;if(global.cacheDatas[$key_cache$$]&&moment().diff(moment(global.cacheDatas[$key_cache$$].time),"minutes")<1)return Logger.info("lay danh sach khach hang dang phu trach tu cache",$key_cache$$),global.cacheDatas[$key_cache$$].data;$data_id_app$$=(await global.getModel("customer").find({id_app:$data_id_app$$,
6
+ phu_trach:$phu_trach$$},{ma_kh:1}).lean()).map($p$$=>$p$$.ma_kh);global.cacheDatas[$key_cache$$]={time:new Date,data:_.cloneDeep($data_id_app$$)};return $data_id_app$$};
7
+ exports.isAdmin=function($current_id_app$$,$email$$,$callback$$){if(!$current_id_app$$)return $callback$$(null,!0);App.findOne({_id:$current_id_app$$}).lean().then(async $app$$=>{if(!$app$$)return $callback$$({error:"ID app: "+$current_id_app$$+" kh\u00f4ng t\u1ed3n t\u1ea1i",code:-7},!1);if($app$$.trang_thai=="9")return $callback$$({error:`C\u00f4ng ty ${$app$$.name} \u0111\u00e3 ng\u1eebng s\u1eed d\u1ee5ng`,code:-9},!1);if(global.configs.check_expire_date&&$app$$.expire_date&&(new Date($app$$.expire_date)).getTime()<
8
+ (new Date).getTime())return $callback$$({error:`C\u00f4ng ty ${$app$$.name} \u0111\u00e3 h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng`,code:-8},!1);let $participant$$=await Participant.findOne({id_app:$current_id_app$$,email:$email$$}).lean();if(!$participant$$)return $callback$$({error:`B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp c\u00f4ng ty ${$app$$.name}`,code:-2},!1);if(!$participant$$.admin&&!$participant$$.active&&$email$$!=="public")return $callback$$({error:"T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111ang ch\u1edd \u0111\u01b0\u1ee3c x\u00e1c nh\u1eadn",
9
+ code:-1},!1);$callback$$(null,$participant$$.admin,$app$$,$participant$$)}).catch($error$$=>{$callback$$($error$$,!1)})};
10
+ exports.hasRight=async function($current_id_app$$,$email$$,$module$$,$action$$,$callbackMain$$,$options$$={}){if(!$current_id_app$$||$options$$.notNeedRight)return $callbackMain$$(null,!0);const $model$$=global.controllers[$module$$]?global.controllers[$module$$].model:void 0;if($model$$&&$model$$.schema&&!underscore.has($model$$.schema.paths,"id_app"))return $callbackMain$$(null,!0);let $right_code$$=($options$$.right_code||$options$$.listinfo_code||$module$$).toLowerCase();$options$$.data&&($options$$.data.trang_thai||
11
+ $options$$.data.trang_thai==0)&&($options$$.data.trang_thai=$options$$.data.trang_thai.toString());$options$$.obj&&($options$$.obj.trang_thai||$options$$.obj.trang_thai==0)&&($options$$.obj.trang_thai=$options$$.obj.trang_thai.toString());$action$$=($action$$||"").toLowerCase();var $data$$=$options$$.data||$options$$.obj||{};const $ma_ct$$=$model$$&&underscore.has($model$$.schema.paths,"ma_ct")&&(($options$$.obj||{}).ma_ct||($options$$.data||{}).ma_ct||"").toString().toUpperCase();let $ma_trang_thai$$=
12
+ ($data$$.trang_thai||$data$$.progress||"").toString().toUpperCase();!$ma_trang_thai$$&&$options$$.obj&&($ma_trang_thai$$=($options$$.obj.trang_thai||$options$$.obj.progress||"").toString().toUpperCase());if($ma_ct$$&&$ma_trang_thai$$)if($data$$=await trangthai.findOne({ma_trang_thai:$ma_trang_thai$$,ma_ct:$ma_ct$$}).lean()){if($data$$.not_need_right)return $callbackMain$$(null,!0)}else Logger.info("Khong tim thay trang thai cho chuc nang nay",{ma_ct:$ma_ct$$,ma_trang_thai:$ma_trang_thai$$,trang_thai:$data$$,
13
+ action:$action$$});exports.isAdmin($current_id_app$$,$email$$,async($api_code_e_key_right_ms_q$$,$admin$$,$app$$,$_right__right_trang_thai_controler_participant$$)=>{if($api_code_e_key_right_ms_q$$)return $callbackMain$$($api_code_e_key_right_ms_q$$,!1);var $listinfo_model$$;if(!$admin$$&&$right_code$$!=$module$$.toLowerCase())if($listinfo_model$$=await global.getModel("listinfo").findOne({code:$right_code$$}).lean()){if($api_code_e_key_right_ms_q$$=$listinfo_model$$.api_code||$listinfo_model$$.code,
14
+ $api_code_e_key_right_ms_q$$!=$module$$.toLowerCase())return $callbackMain$$({error:`M\u00e3 quy\u1ec1n '${$right_code$$}' kh\u00f4ng h\u1ee3p l\u1ec7. API: ${$api_code_e_key_right_ms_q$$}, module: ${$module$$}`})}else return $callbackMain$$({error:`M\u00e3 quy\u1ec1n '${$right_code$$}' kh\u00f4ng t\u1ed3n t\u1ea1i`});$listinfo_model$$=$listinfo_model$$?.permistion_code||$right_code$$;if($app$$&&$app$$.allow_modules&&$app$$.allow_modules.length>0&&($api_code_e_key_right_ms_q$$={"items.code":{$regex:"^"+
15
+ $module$$+"$",$options:"i"},active_require:!0},$app$$.menu_code&&($api_code_e_key_right_ms_q$$.app=$app$$.menu_code),$api_code_e_key_right_ms_q$$=await global.getModel("moduleinfo").find($api_code_e_key_right_ms_q$$).lean(),$api_code_e_key_right_ms_q$$.length>0&&$api_code_e_key_right_ms_q$$.filter($m$$=>$app$$.allow_modules.indexOf($m$$.code)>=0&&(!$m$$.not_for_companies||$m$$.not_for_companies.indexOf($app$$._id.toString())<0)&&(!$m$$.only_for_companies||$m$$.only_for_companies.indexOf($app$$._id.toString())>=
16
+ 0)).length==0))return $callbackMain$$('API "'+$module$$+'" ch\u01b0a \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t cho c\u00f4ng ty n\u00e0y (trong module '+$api_code_e_key_right_ms_q$$[0].app+"/"+$api_code_e_key_right_ms_q$$[0].title+")",!1);if($options$$.data&&$options$$.data.id_app){if($options$$.data.id_app!=$current_id_app$$)return $callbackMain$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp th\u00f4ng tin n\u00e0y",!1);if($options$$.obj&&$options$$.data.id_app!=$options$$.obj.id_app)return Logger.warn("[permission]",
17
+ {obj_id_app:$options$$.obj.id_app,data_id_app:$options$$.data.id_app}),$callbackMain$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt th\u00f4ng tin n\u00e0y v\u00e0o c\u00f4ng ty kh\u00e1c",!1)}if($options$$.obj&&$options$$.obj.id_app&&$options$$.obj.id_app!=$current_id_app$$)return Logger.warn("[permission]",{obj_id_app:$options$$.obj.id_app,current_id_app:$current_id_app$$}),$callbackMain$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp th\u00f4ng tin n\u00e0y do d\u1eef li\u1ec7u kh\u00f4ng thu\u1ed9c c\u00f4ng ty hi\u1ec7n t\u1ea1i",
18
+ !1);if($options$$.notNeedRight)return $callbackMain$$(null,!0,$app$$);if($options$$.obj&&!$admin$$)if($options$$.obj?.visible_to===2){if(!underscore.contains($options$$.obj.visible_to_users,$email$$)&&$options$$.obj?.of_user!==$email$$.toLowerCase()&&$options$$.obj.user_created&&$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase())return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp th\u00f4ng tin n\u00e0y",!1)}else if($options$$.obj.visible_to===1&&$options$$.obj?.of_user!==
19
+ $email$$.toLowerCase()&&$options$$.obj.user_created&&$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase()&&$options$$.obj.phu_trach!=$email$$.toLowerCase()&&($options$$.obj.attends||[]).indexOf($email$$)<0&&(await exports.dsDangPhuTrach($options$$.obj.id_app,$email$$.toLowerCase())).indexOf($options$$.obj.user_created)<0)return $callbackMain$$("Ch\u1ec9 ng\u01b0\u1eddi t\u1ea1o, ph\u1ee5 tr\u00e1ch, h\u1ed7 tr\u1ee3 v\u00e0 admin m\u1edbi c\u00f3 quy\u1ec1n truy c\u1eadp th\u00f4ng tin n\u00e0y",
20
+ !1);$api_code_e_key_right_ms_q$$=$email$$;$_right__right_trang_thai_controler_participant$$&&$_right__right_trang_thai_controler_participant$$.group_id&&($api_code_e_key_right_ms_q$$=$_right__right_trang_thai_controler_participant$$.group_id.toLowerCase());($_right__right_trang_thai_controler_participant$$=await right.findOne({id_app:$current_id_app$$,email:$api_code_e_key_right_ms_q$$,module:$listinfo_model$$}).lean())||$listinfo_model$$!=$options$$.listinfo_code||$listinfo_model$$==$module$$.toLowerCase()||
21
+ ($listinfo_model$$=$module$$.toLowerCase());$_right__right_trang_thai_controler_participant$$=await right.findOne({id_app:$current_id_app$$,email:$api_code_e_key_right_ms_q$$,module:$listinfo_model$$}).lean();if(!$admin$$){if(!$_right__right_trang_thai_controler_participant$$)return $_right__right_trang_thai_controler_participant$$=global.controllers[$module$$.toUpperCase()],$listinfo_model$$=(($_right__right_trang_thai_controler_participant$$||{}).model_name||$module$$).toLowerCase(),$listinfo_model$$==
22
+ "customer"||$listinfo_model$$.indexOf("socai")>=0||$listinfo_model$$.indexOf("sokho")>=0||$listinfo_model$$.indexOf("vatvao")>=0||$listinfo_model$$.indexOf("vatra")>=0||$listinfo_model$$.indexOf("tdttno")>=0||$listinfo_model$$.indexOf("tdttco")>=0||$_right__right_trang_thai_controler_participant$$&&($_right__right_trang_thai_controler_participant$$.options||{}).isVoucher||$action$$!=="view"&&($action$$!=="add"||$module$$.toLowerCase()!=="group")?$callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",
23
+ !1):($_right__right_trang_thai_controler_participant$$={"items.code":$module$$.toLowerCase()},$app$$&&$app$$.menu_code&&($_right__right_trang_thai_controler_participant$$.app=$app$$.menu_code),await global.getModel("moduleinfo").findOne($_right__right_trang_thai_controler_participant$$,{app:1}).lean()?$callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",!1):$callbackMain$$(null,!0,$app$$));if($action$$=="view"&&$_right__right_trang_thai_controler_participant$$?.view_all)return $callbackMain$$(null,
24
+ !0,$app$$);if($action$$=="view"&&$options$$.obj&&$_right__right_trang_thai_controler_participant$$&&!$_right__right_trang_thai_controler_participant$$.view_all&&!$_right__right_trang_thai_controler_participant$$.viewOfOther&&$options$$.obj.user_created.toLowerCase()!==$email$$&&($options$$.obj.visible_to!==2||!underscore.contains($options$$.obj.visible_to_users,$email$$))&&$options$$.obj.phu_trach!==$email$$&&($options$$.obj.attends||[]).indexOf($email$$)<0&&(await exports.dsDangPhuTrach($options$$.obj.id_app,
25
+ $email$$.toLowerCase())).indexOf($options$$.obj.user_created)<0)return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp th\u00f4ng tin n\u00e0y",!1);if(!$_right__right_trang_thai_controler_participant$$[$action$$])return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",!1);if($ma_trang_thai$$&&($_right__right_trang_thai_controler_participant$$=$_right__right_trang_thai_controler_participant$$[`${$action$$}_trang_thai`])&&
26
+ !$_right__right_trang_thai_controler_participant$$[$ma_trang_thai$$]&&$_right__right_trang_thai_controler_participant$$[$ma_trang_thai$$]!=void 0)return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y",!1)}$options$$.obj?async.series({trangthai:$callback$$=>{$options$$.obj&&($action$$==="update"||$action$$==="delete")&&$model$$&&underscore.has($model$$.schema.paths,"ma_ct")&&$options$$.obj.ma_ct?trangthai.findOne({ma_ct:$options$$.obj.ma_ct.toUpperCase(),
27
+ ma_trang_thai:$options$$.obj.trang_thai},function($e$$,$trang_thai$$){if($e$$)return $callback$$($e$$);if($trang_thai$$){if($action$$==="update"){if($trang_thai$$.allow_update==0)return $callback$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y kh\u00f4ng cho ph\u00e9p s\u1eeda");if($trang_thai$$.lock_data==1)return $callback$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c kho\u00e1")}if($action$$==="delete"&&($trang_thai$$.lock_data||$trang_thai$$.allow_delete==
28
+ 0))return $callback$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y kh\u00f4ng cho ph\u00e9p xo\u00e1")}return $callback$$()}):$callback$$()}},$action_right_e$$=>{if($action_right_e$$)$callbackMain$$($action_right_e$$,!1);else{$action_right_e$$=`${$action$$}_right`;if(!$admin$$&&$options$$.obj&&$options$$.obj[$action_right_e$$]&&$options$$.obj[$action_right_e$$].length>0&&$options$$.obj[$action_right_e$$].indexOf($email$$.toLowerCase())<0)return $callbackMain$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",
29
+ !1);$callbackMain$$(null,!0,$app$$)}}):$callbackMain$$(null,!0,$app$$)},$options$$)};exports.asyncHasRight=function($current_id_app$$,$email$$,$module$$,$action$$,$options$$={}){return new Promise(($resolve$$,$reject$$)=>{exports.hasRight($current_id_app$$,$email$$,$module$$,$action$$,($e$$,$permission$$,$app$$)=>{if($e$$)return $reject$$($e$$);$resolve$$({permission:$permission$$,app:$app$$})},$options$$)})};
30
+ exports.getRightByItem=async function($id_app$$,$model$$,$email$$,$next$$,$module$$,$options$$={}){$module$$||=$model$$&&$model$$.modelName?$model$$.modelName.toLowerCase():"";let $right_code$$=($options$$.right_code||$options$$.listinfo_code||$module$$).toLowerCase(),$key_cache$$=$right_code$$?`RightByItem::${$id_app$$}::${$email$$}::${$right_code$$}::${JSON.stringify($options$$)}`:"",$time_cache$$=$email$$==="public"?10080:1;if($key_cache$$&&global.cacheDatas[$key_cache$$]&&moment().diff(moment(global.cacheDatas[$key_cache$$].time),
31
+ "minutes")<$time_cache$$)return $next$$(null,global.cacheDatas[$key_cache$$].data,!1);exports.isAdmin($id_app$$,$email$$,async function($condition_e$$,$_right$jscomp$1_admin$jscomp$1_api_code$$,$allow_trang_thai_app$$,$_right_trang_thai$jscomp$1_participant$$){if($condition_e$$)return $next$$($condition_e$$);$condition_e$$={};if($_right$jscomp$1_admin$jscomp$1_api_code$$||$options$$.notNeedRight||!underscore.has($model$$.schema.paths,"id_app"))$next$$(null,$condition_e$$,$_right$jscomp$1_admin$jscomp$1_api_code$$);
32
+ else{var $listinfo$$;if($right_code$$&&$right_code$$!=$module$$.toLowerCase())if($listinfo$$=await global.getModel("listinfo").findOne({code:$right_code$$}).lean()){if($_right$jscomp$1_admin$jscomp$1_api_code$$=$listinfo$$.api_code||$listinfo$$.code,$_right$jscomp$1_admin$jscomp$1_api_code$$!=$module$$.toLowerCase())return $next$$({error:`M\u00e3 quy\u1ec1n '${$right_code$$}' kh\u00f4ng h\u1ee3p l\u1ec7, API: ${$_right$jscomp$1_admin$jscomp$1_api_code$$}, module: ${$module$$.toLowerCase()}`})}else return $next$$({error:`M\u00e3 quy\u1ec1n '${$right_code$$}' kh\u00f4ng t\u1ed3n t\u1ea1i`});
33
+ var $ds_dang_phu_trach_permistion_code$$=$listinfo$$?.permistion_code||$right_code$$;let $selUsers$$;$listinfo$$=[];let $key_right$$=$email$$;$_right_trang_thai$jscomp$1_participant$$&&$_right_trang_thai$jscomp$1_participant$$.group_id&&($key_right$$=$_right_trang_thai$jscomp$1_participant$$.group_id.toLowerCase());($_right$jscomp$1_admin$jscomp$1_api_code$$=await right.findOne({id_app:$id_app$$,email:$key_right$$,module:$ds_dang_phu_trach_permistion_code$$}).lean())||$ds_dang_phu_trach_permistion_code$$!=
34
+ $options$$.listinfo_code||$ds_dang_phu_trach_permistion_code$$==$module$$.toLowerCase()||($ds_dang_phu_trach_permistion_code$$=$module$$.toLowerCase());if(($_right$jscomp$1_admin$jscomp$1_api_code$$=await right.findOne({id_app:$id_app$$,email:$key_right$$,module:$ds_dang_phu_trach_permistion_code$$}).lean())&&$_right$jscomp$1_admin$jscomp$1_api_code$$.view_all){if($_right$jscomp$1_admin$jscomp$1_api_code$$&&$_right$jscomp$1_admin$jscomp$1_api_code$$.extra_condition)try{$condition_e$$=evalute(`return ${$_right$jscomp$1_admin$jscomp$1_api_code$$.extra_condition}`,
35
+ {module:$module$$,participant:$_right_trang_thai$jscomp$1_participant$$,appInfo:$allow_trang_thai_app$$})}catch($e$$){return Logger.error("[getRightByItem] [extra_condition]",$e$$,$_right$jscomp$1_admin$jscomp$1_api_code$$.extra_condition),$next$$($e$$.message)}$key_cache$$&&(global.cacheDatas[$key_cache$$]={time:new Date,data:_.cloneDeep($condition_e$$)});return $next$$(null,$condition_e$$,!1)}$ds_dang_phu_trach_permistion_code$$=(await exports.dsDangPhuTrach($id_app$$,$email$$)).filter($d$$=>$d$$);
36
+ $ds_dang_phu_trach_permistion_code$$.push($email$$);$_right$jscomp$1_admin$jscomp$1_api_code$$&&$_right$jscomp$1_admin$jscomp$1_api_code$$.view_empty_phu_trach&&($ds_dang_phu_trach_permistion_code$$.push(""),$ds_dang_phu_trach_permistion_code$$.push(null));$ds_dang_phu_trach_permistion_code$$=[...(new Set($ds_dang_phu_trach_permistion_code$$))];if($_right$jscomp$1_admin$jscomp$1_api_code$$&&$_right$jscomp$1_admin$jscomp$1_api_code$$.view){$allow_trang_thai_app$$={visible_to:null};if(underscore.has($model$$.schema.paths,
37
+ "visible_to")){$condition_e$$.$and||($condition_e$$.$and=[]);var $allUsers_query$$={visible_to:0};$selUsers$$={visible_to:2,visible_to_users:$email$$};$_right_trang_thai$jscomp$1_participant$$=underscore.has($model$$.schema.paths,"visible_to_usergroups")?{visible_to:5,visible_to_usergroups:($_right_trang_thai$jscomp$1_participant$$||{}).group_id}:{visible_to:5,visible_to_users:($_right_trang_thai$jscomp$1_participant$$||{}).group_id};$listinfo$$.push($allUsers_query$$);$listinfo$$.push($selUsers$$);
38
+ $listinfo$$.push($_right_trang_thai$jscomp$1_participant$$);$listinfo$$.push($allow_trang_thai_app$$)}if($_right$jscomp$1_admin$jscomp$1_api_code$$.viewOfOther===!1){if(underscore.has($model$$.schema.paths,"ma_kh")){var $allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$=await exports.dsKhDangPhuTrach($id_app$$,{$in:$ds_dang_phu_trach_permistion_code$$});$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$.length>0&&$listinfo$$.push({ma_kh:{$in:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$}})}$allUsers_query$$?
39
+ $allUsers_query$$.user_created={$in:$ds_dang_phu_trach_permistion_code$$}:$listinfo$$.push({user_created:{$in:$ds_dang_phu_trach_permistion_code$$}})}else{if(underscore.has($model$$.schema.paths,"trang_thai")===!0){if($_right_trang_thai$jscomp$1_participant$$=$_right$jscomp$1_admin$jscomp$1_api_code$$.view_trang_thai){$allow_trang_thai_app$$=[void 0,null,""];for(var $t_viewOfOther_right_trang_thai$$ in $_right_trang_thai$jscomp$1_participant$$)$_right_trang_thai$jscomp$1_participant$$[$t_viewOfOther_right_trang_thai$$]&&
40
+ $allow_trang_thai_app$$.push($t_viewOfOther_right_trang_thai$$);$condition_e$$.trang_thai={$in:$allow_trang_thai_app$$}}if($t_viewOfOther_right_trang_thai$$=$_right$jscomp$1_admin$jscomp$1_api_code$$.viewOfOther_trang_thai){$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$=[void 0,null,""];for(var $t$jscomp$1_users$$ in $t_viewOfOther_right_trang_thai$$)!$t_viewOfOther_right_trang_thai$$[$t$jscomp$1_users$$]||$_right_trang_thai$jscomp$1_participant$$&&!$_right_trang_thai$jscomp$1_participant$$[$t$jscomp$1_users$$]||
41
+ $allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$.push($t$jscomp$1_users$$)}}$_right$jscomp$1_admin$jscomp$1_api_code$$.viewOfOther_user_groups&&$_right$jscomp$1_admin$jscomp$1_api_code$$.viewOfOther_user_groups.length>0?($t$jscomp$1_users$$=await Participant.find({id_app:$id_app$$,group_id:{$in:$_right$jscomp$1_admin$jscomp$1_api_code$$.viewOfOther_user_groups}},{email:1}).lean(),$ds_dang_phu_trach_permistion_code$$.push(...$t$jscomp$1_users$$.map($u$$=>$u$$.email)),$allUsers_query$$?
42
+ $allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$?$allUsers_query$$.$or=[{user_created:{$in:$ds_dang_phu_trach_permistion_code$$.filter($e$$=>$e$$!=$email$$)},trang_thai:{$in:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$}},{user_created:$email$$}]:$allUsers_query$$.user_created={$in:$ds_dang_phu_trach_permistion_code$$}:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$?($listinfo$$.push({user_created:{$in:$ds_dang_phu_trach_permistion_code$$},
43
+ trang_thai:{$in:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$}}),$listinfo$$.push({$or:[{user_created:{$in:$ds_dang_phu_trach_permistion_code$$.filter($e$$=>$e$$!=$email$$)},trang_thai:{$in:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$}},{user_created:$email$$}]})):$listinfo$$.push({user_created:{$in:$ds_dang_phu_trach_permistion_code$$}})):$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$&&($allUsers_query$$?$allUsers_query$$.$or=[{user_created:{$ne:$email$$},
44
+ trang_thai:{$in:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$}},{user_created:$email$$}]:$listinfo$$.push({$or:[{user_created:{$ne:$email$$},trang_thai:{$in:$allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$}},{user_created:$email$$}]}))}$selUsers$$&&(underscore.has($model$$.schema.paths,"of_user")&&$listinfo$$.push({of_user:{$in:[...$ds_dang_phu_trach_permistion_code$$,$email$$]}}),underscore.has($model$$.schema.paths,"user")&&$listinfo$$.push({user:{$in:[...$ds_dang_phu_trach_permistion_code$$,
45
+ $email$$]}}),underscore.has($model$$.schema.paths,"phu_trach")&&$listinfo$$.push({phu_trach:{$in:$ds_dang_phu_trach_permistion_code$$}}),underscore.has($model$$.schema.paths,"attends")&&$listinfo$$.push({attends:{$in:$ds_dang_phu_trach_permistion_code$$}}))}else not_need_right_models.indexOf($module$$)<0&&($listinfo$$.push({user_created:$email$$}),underscore.has($model$$.schema.paths,"of_user")&&$listinfo$$.push({of_user:{$in:[...$ds_dang_phu_trach_permistion_code$$,$email$$]}}),underscore.has($model$$.schema.paths,
46
+ "user")&&$listinfo$$.push({user:{$in:[...$ds_dang_phu_trach_permistion_code$$,$email$$]}}),underscore.has($model$$.schema.paths,"phu_trach")&&$listinfo$$.push({phu_trach:{$in:$ds_dang_phu_trach_permistion_code$$}}),underscore.has($model$$.schema.paths,"attends")&&$listinfo$$.push({attends:$email$$})),$allUsers_query$$={"items.code":$module$$.toLowerCase()},$allow_trang_thai_app$$&&$allow_trang_thai_app$$.menu_code&&($allUsers_query$$.app=$allow_trang_thai_app$$.menu_code),await global.getModel("moduleinfo").findOne($allUsers_query$$,
47
+ {app:1}).lean()||($allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$={visible_to:null},underscore.has($model$$.schema.paths,"visible_to")&&($condition_e$$.$and||($condition_e$$.$and=[]),$allUsers_query$$={visible_to:0},$selUsers$$={visible_to:2,visible_to_users:$email$$},$_right_trang_thai$jscomp$1_participant$$=underscore.has($model$$.schema.paths,"visible_to_usergroups")?{visible_to:5,visible_to_usergroups:($_right_trang_thai$jscomp$1_participant$$||{}).group_id}:{visible_to:5,
48
+ visible_to_users:($_right_trang_thai$jscomp$1_participant$$||{}).group_id},$listinfo$$.push($allUsers_query$$),$listinfo$$.push($selUsers$$),$listinfo$$.push($_right_trang_thai$jscomp$1_participant$$),$listinfo$$.push($allow_viewOfOther_trang_thai_ds_kh_dang_phu_trach_visible_to_null$$)));underscore.has($model$$.schema.paths,"public")&&$listinfo$$.push({public:!0});underscore.has($model$$.schema.paths,"shared")&&$listinfo$$.push({shared:!0});$listinfo$$.length>0&&($condition_e$$.$and||($condition_e$$.$and=
49
+ []),$condition_e$$.$and.push({$or:$listinfo$$}));$condition_e$$.$and&&$condition_e$$.$and.length===0&&delete $condition_e$$.$and;$condition_e$$.$or&&$condition_e$$.$or.length===0&&delete $condition_e$$.$or;$key_cache$$&&(global.cacheDatas[$key_cache$$]={time:new Date,data:_.cloneDeep($condition_e$$)});$next$$(null,$condition_e$$,!1)}},$options$$)};
50
+ exports.getRightDataView=function($id_app$$,$model$$,$email$$,$next$$){exports.isAdmin($id_app$$,$email$$,function($condition$jscomp$1_e$$,$admin$$){if($condition$jscomp$1_e$$)return $next$$($condition$jscomp$1_e$$);$condition$jscomp$1_e$$={};if(!$admin$$&&underscore.has($model$$.schema.paths,"dataview_to_users")===!0){$condition$jscomp$1_e$$.$and||($condition$jscomp$1_e$$.$and=[]);let $dataview$$=[{dataview_to:null}];$dataview$$.push({dataview_to:0});$dataview$$.push({dataview_to:1,user_created:$email$$});
51
+ $dataview$$.push({dataview_to:2,dataview_to_users:$email$$});$condition$jscomp$1_e$$.$and.push({$or:$dataview$$})}$next$$(null,$condition$jscomp$1_e$$,$admin$$)})};
52
+ exports.getFieldNotRight=async($_fields_id_app$$,$_p_email$jscomp$6_group_id$$,$ma_ct$$)=>{if(!$_fields_id_app$$)return[];$_p_email$jscomp$6_group_id$$=await Participant.ofApp($_fields_id_app$$,$_p_email$jscomp$6_group_id$$);if($_p_email$jscomp$6_group_id$$.length>0){$_p_email$jscomp$6_group_id$$=$_p_email$jscomp$6_group_id$$[0].group_id;let $field_not_right$$;try{$field_not_right$$=await right.getInfo($_fields_id_app$$,{email:$_p_email$jscomp$6_group_id$$,module:$ma_ct$$.toLowerCase()},"field_not_right")}catch($e$$){return[]}$_fields_id_app$$=
53
+ [];for(let $_key$$ in $field_not_right$$)$field_not_right$$[$_key$$]&&$_fields_id_app$$.push($_key$$);return $_fields_id_app$$}return[]};const request=require("request");
54
+ exports.verifyReCaptcha=async($gRecaptchaResponse$$,$remoteip$$)=>{if(!$gRecaptchaResponse$$)throw Error("Please select captcha");let $verificationUrl$$="https://www.google.com/recaptcha/api/siteverify?secret="+global.configs.GOOGLE_RECAPTCHA_SECRET_KEY+"&response="+$gRecaptchaResponse$$;$remoteip$$&&($verificationUrl$$+="&remoteip="+$remoteip$$);return new Promise(($resolve$$,$reject$$)=>{request($verificationUrl$$,function($error$$,$response$$,$body$$){$body$$=JSON.parse($body$$);if(!$body$$.success)return Logger.error("Failed captcha verification",
55
+ $body$$,$verificationUrl$$),$reject$$(Error("Failed captcha verification"));$resolve$$(!0)})})};
56
+ exports.verifyOTP=async($otp_username$$,$otp_id$$,$otp_code$$)=>{if(!$otp_id$$||!$otp_code$$)throw Error("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u otp-id v\u00e0 otp-code");const $u$$=await global.getModel("user").findOne({$or:[{email:$otp_username$$}]});if(!$u$$)throw Error(`T\u00e0i kho\u1ea3n ${$otp_username$$} kh\u00f4ng t\u1ed3n t\u1ea1i`);if($otp_id$$.toUpperCase()==="PIN"&&configs.use_pin_as_otp){if(!($u$$.local||{}).pin)throw Error("M\u00e3 pin ch\u01b0a \u0111\u01b0\u1ee3c t\u1ea1o");
57
+ if(!await $u$$.validPin($otp_code$$))throw Error("M\u00e3 pin kh\u00f4ng ch\u00ednh x\u00e1c");return{pin:$otp_code$$,phone:$otp_username$$}}if(!global.mongoose.Types.ObjectId.isValid($otp_id$$))throw Error("otp-id kh\u00f4ng h\u1ee3p l\u1ec7");$otp_username$$=await global.getModel("otp").findOne({_id:$otp_id$$,phone:$otp_username$$});if(!$otp_username$$)throw Error("OTP kh\u00f4ng h\u1ee3p l\u1ec7");$otp_username$$.tried_number=($otp_username$$.tried_number||0)+1;await $otp_username$$.save();if(!$otp_username$$||
58
+ $otp_username$$.tried_number>(configs.MAX_TRY_OTP||3)||$otp_username$$.otp!=$otp_code$$||$otp_username$$.verified||$otp_username$$.expire_time.getTime()<(new Date).getTime())throw Error("M\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i ho\u1eb7c \u0111\u00e3 h\u1ebft hi\u1ec7u l\u1ef1c");await global.getModel("otp").updateOne({_id:$otp_id$$},{verified:!0});return $otp_username$$};
@@ -1,4 +1,4 @@
1
- const async=require("async"),utils=require("./utils"),tontucthoi=global.getModel("tontucthoi"),Dmvt=global.getModel("dmvt"),round=4,post=function($master$$,$details$$,$model_book$$,$prepare$$,$options$$={}){$details$$||=[];this.master={...$master$$};this.details=$details$$.map($detail$$=>({...$detail$$}));this.prepare=$prepare$$;this.model_book=$model_book$$;this.options=$options$$};
1
+ const async=require("async"),utils=require("./utils"),tontucthoi=global.getModel("tontucthoi"),Dmvt=global.getModel("dmvt"),round=4,post=function($master$$,$details$$,$model_book$$,$prepare$$,$options$$={}){$details$$||=[];Array.isArray($details$$)||($details$$=[$details$$]);this.master={...$master$$};this.details=$details$$.map($detail$$=>({...$detail$$}));this.prepare=$prepare$$;this.model_book=$model_book$$;this.options=$options$$};
2
2
  post.prototype.runPrepare=async($prepareFunction$$,$details$$)=>{$details$$=$details$$.map($d$$=>{$d$$.toObject&&($d$$=$d$$.toObject());return{...$d$$}});return new Promise($resolve$$=>{$prepareFunction$$?async.map($details$$,($detail$$,$callback$$)=>{setImmediate(()=>{$detail$$.toObject=function(){return Object.assign({},$detail$$)};$prepareFunction$$($detail$$,$detail$$=>{$detail$$.toObject=function(){return Object.assign({},$detail$$)};$callback$$(null,$detail$$)})})},($e$$,$details$$)=>{$resolve$$($details$$)}):
3
3
  $resolve$$($details$$)})};
4
4
  post.prototype.remove=async function($callback$$=()=>{}){var $master$$=this.master;$master$$&&$master$$.toObject&&($master$$=$master$$.toObject());if(!$master$$._id)return $callback$$();let $model_book$$=this.model_book,$query_delete$$={id_ct:$master$$._id.toString(),id_app:$master$$.id_app};this.options.queryDelete&&($query_delete$$={...$query_delete$$,...this.options.queryDelete,id_app:$master$$.id_app});$master$$=$model_book$$.modelName.toLowerCase()==="sokho"?await global.getModel("sokho").find({id_ct:$master$$._id.toString(),id_app:$master$$.id_app}).lean():
@@ -11,7 +11,8 @@ if($acc$$.tk_bp_yn&&!$data$$.ma_bp)return $callback$$(`T\u00e0i kho\u1ea3n ${$tk
11
11
  if($acc$$.tk_td1_yn&&!$data$$.ma_td1)return $callback$$(`T\u00e0i kho\u1ea3n ${$tk$$} y\u00eau c\u1ea7u nh\u1eadp ma_td1`);if($acc$$.tk_td2_yn&&!$data$$.ma_td2)return $callback$$(`T\u00e0i kho\u1ea3n ${$tk$$} y\u00eau c\u1ea7u nh\u1eadp ma_td2`);if($acc$$.tk_td3_yn&&!$data$$.ma_td3)return $callback$$(`T\u00e0i kho\u1ea3n ${$tk$$} y\u00eau c\u1ea7u nh\u1eadp ma_td3`);$callback$$(null,$acc$$)}).catch($e$$=>{$callback$$($e$$)})},checkData=function($id_app$$,$ngay_ct$$,$_data$$,$callback$$){async.parallel({tk_no:$callback$$=>
12
12
  {checkAcc($id_app$$,$_data$$,$_data$$.tk_no,$_data$$.ma_kh_no,($e$$,$acc$$)=>{if($e$$)return $callback$$($e$$);$acc$$.not_du_no_yn&&$_data$$.check_balance!=0?cktk({id_app:$id_app$$,tk:$_data$$.tk_no,bu_tru:!0,ngay:moment($ngay_ct$$).endOf("date").toDate()},($du_no$jscomp$2_e$$,$rs$$)=>{if($du_no$jscomp$2_e$$)return $callback$$($du_no$jscomp$2_e$$);$du_no$jscomp$2_e$$=$rs$$.map($r$$=>$r$$.du_no00-$r$$.du_co00).reduce(($a$$,$b$$)=>$a$$+$b$$,0)+$_data$$.tien;$du_no$jscomp$2_e$$>0?$callback$$(`T\u00e0i kho\u1ea3n ${$_data$$.tk_no} kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p c\u00f3 s\u1ed1 d\u01b0 b\u00ean n\u1ee3 : ${$du_no$jscomp$2_e$$}`):
13
13
  $callback$$()}):$callback$$()})},tk_co:$callback$$=>{checkAcc($id_app$$,$_data$$,$_data$$.tk_co,$_data$$.ma_kh_co,($e$$,$acc$$)=>{if($e$$)return $callback$$($e$$);$acc$$.not_du_co_yn&&$_data$$.check_balance!=0?cktk({id_app:$id_app$$,tk:$_data$$.tk_co,bu_tru:!0,ngay:moment($ngay_ct$$).endOf("date").toDate()},($du_co$jscomp$2_e$$,$rs$$)=>{if($du_co$jscomp$2_e$$)return $callback$$($du_co$jscomp$2_e$$);$du_co$jscomp$2_e$$=$rs$$.map($r$$=>$r$$.du_co00-$r$$.du_no00).reduce(($a$$,$b$$)=>$a$$+$b$$,0)+$_data$$.tien;
14
- $du_co$jscomp$2_e$$>0?$callback$$(`T\u00e0i kho\u1ea3n ${$_data$$.tk_co} kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p c\u00f3 s\u1ed1 d\u01b0 b\u00ean c\u00f3: ${$du_co$jscomp$2_e$$}`):$callback$$()}):$callback$$()})}},$e$$=>{$callback$$($e$$,$_data$$)})},post=function($master$$,$details$$,$prepare$$,$model$$=SocaiModel,$_options$$={}){$details$$&&(this.master={...$master$$},this.details=$details$$.map($detail$$=>({...$detail$$})),this.model=$model$$,this._options=$_options$$,this.prepare=$prepare$$)};
14
+ $du_co$jscomp$2_e$$>0?$callback$$(`T\u00e0i kho\u1ea3n ${$_data$$.tk_co} kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p c\u00f3 s\u1ed1 d\u01b0 b\u00ean c\u00f3: ${$du_co$jscomp$2_e$$}`):$callback$$()}):$callback$$()})}},$e$$=>{$callback$$($e$$,$_data$$)})},post=function($master$$,$details$$,$prepare$$,$model$$=SocaiModel,$_options$$={}){$details$$&&(Array.isArray($details$$)||($details$$=[$details$$]),this.master={...$master$$},this.details=$details$$.map($detail$$=>({...$detail$$})),this.model=$model$$,
15
+ this._options=$_options$$,this.prepare=$prepare$$)};
15
16
  post.prototype.runPrepare=async($prepare$$,$details$$)=>{$details$$=$details$$.map($d$$=>{$d$$.toObject&&($d$$=$d$$.toObject());return{...$d$$}});return new Promise($resolve$$=>{$prepare$$?async.map($details$$,($detail$$,$callback$$)=>{setImmediate(()=>{$detail$$.toObject=function(){return Object.assign({},$detail$$)};$prepare$$($detail$$,$detail$$=>{$detail$$.toObject=function(){return Object.assign({},$detail$$)};$callback$$(null,$detail$$)})})},($e$$,$details$$)=>{$resolve$$($details$$)}):$resolve$$($details$$)})};
16
17
  post.prototype.run=async function($callback$$=()=>{}){if(!this.details)return $callback$$(null,null);const $Socai$$=this.model||SocaiModel;let $master$$=this.master;if($master$$.trang_thai&&$master$$.ma_ct){var $details$$=await global.getModel("trangthai").findOne({ma_trang_thai:$master$$.trang_thai,ma_ct:$master$$.ma_ct}).lean();if($details$$?.post_books&&$details$$?.post_books?.indexOf($Socai$$.modelName.toLowerCase())<0||$details$$?.not_post_books&&$details$$?.not_post_books?.indexOf($Socai$$.modelName.toLowerCase())>=
17
18
  0)return $callback$$(null,null)}$details$$=await this.runPrepare(this.prepare,this.details);let $ngay_ct$$=Math.max(new Date($master$$.ngay_ghi_so||$master$$.ngay_ct),new Date($master$$.ngay_ct));if(!$ngay_ct$$)return $callback$$("ngay_ct is not null");$details$$.forEach($d$$=>{$d$$.tk_no=$d$$.tk_no||$master$$.tk_no;$d$$.tk_co=$d$$.tk_co||$master$$.tk_co;$d$$.ma_ct=$master$$.ma_ct;$d$$.so_ct=$master$$.so_ct;$d$$.ngay_ct=$ngay_ct$$});$details$$=$details$$.filter($d$$=>$d$$.tk_no&&$d$$.tk_co&&($d$$.tk_no!=
@@ -1,8 +1,8 @@
1
1
  const async=require("async"),utils=require("./utils"),tontucthoi=global.getModel("tontucthoi"),Dmvt=global.getModel("dmvt"),round=4,tinhgiatb=require("../libs/tinhgiatb1vt"),moment=require("moment"),dinhmucsx=async($id_app$$,$i_ma_sp_qd$$,$dm_ma_tt1$$,$sl_xuat_sl_xuat_qd$$,$dm_of_vt_ma_dvt_vt$$)=>{let $vts$$=[];$dm_ma_tt1$$=await global.getModel("dinhmucsx").findOne({id_app:$id_app$$,ma_sp:$i_ma_sp_qd$$,ma_tt1:$dm_ma_tt1$$||void 0},{details:1}).lean();if(!$dm_ma_tt1$$||!$dm_ma_tt1$$.details||$dm_ma_tt1$$.details.length===
2
2
  0)return $vts$$;$dm_ma_tt1$$.details=$dm_ma_tt1$$.details.map($d$$=>{$d$$.toObject&&($d$$=$d$$.toObject());return $d$$});var $he_so_qd_sl$$=1;($i_ma_sp_qd$$=await global.getModel("dmqddvt").findOne({id_app:$id_app$$,ma_vt:$i_ma_sp_qd$$,ma_dvt:$dm_of_vt_ma_dvt_vt$$}).lean())&&($he_so_qd_sl$$=$i_ma_sp_qd$$.mau?$i_ma_sp_qd$$.tu/$i_ma_sp_qd$$.mau:$i_ma_sp_qd$$.ty_le_qd);$sl_xuat_sl_xuat_qd$$*=$he_so_qd_sl$$;await $dm_ma_tt1$$.details.asyncJoinModel2($id_app$$,Dmvt,{where:"ma_vt",setFields:($item$$,$ref$$)=>
3
3
  {$item$$.tk_vt||($item$$.tk_vt=$ref$$.tk_vt);$item$$.tk_gv||($item$$.tk_gv=$ref$$.tk_gv);$item$$.tg_tk=$ref$$.tg_tk;$item$$.xk_nvl=$ref$$.xk_nvl}});for($i_ma_sp_qd$$=0;$i_ma_sp_qd$$<$dm_ma_tt1$$.details.length;$i_ma_sp_qd$$++)$dm_of_vt_ma_dvt_vt$$=$dm_ma_tt1$$.details[$i_ma_sp_qd$$],$he_so_qd_sl$$=0,$he_so_qd_sl$$=$dm_of_vt_ma_dvt_vt$$.loai_dinh_muc==1?$dm_of_vt_ma_dvt_vt$$.sl_dinh_muc*$sl_xuat_sl_xuat_qd$$*(1+($dm_of_vt_ma_dvt_vt$$.ty_le_hao_hut||0)/100):$dm_of_vt_ma_dvt_vt$$.sl_dinh_muc*(1+$dm_of_vt_ma_dvt_vt$$.ty_le_hao_hut/
4
- 100),$dm_of_vt_ma_dvt_vt$$.xk_nvl?($dm_of_vt_ma_dvt_vt$$=await dinhmucsx($id_app$$,$dm_of_vt_ma_dvt_vt$$.ma_vt,$dm_of_vt_ma_dvt_vt$$.ma_tt1||void 0,$he_so_qd_sl$$,$dm_of_vt_ma_dvt_vt$$.ma_dvt),$vts$$=[...$vts$$,...$dm_of_vt_ma_dvt_vt$$]):($dm_of_vt_ma_dvt_vt$$.sl_xuat=$he_so_qd_sl$$,$vts$$.push($dm_of_vt_ma_dvt_vt$$));return $vts$$},post=function($master$$,$details$$,$prepare$$,$options$$={}){$details$$||=[];this.master={...$master$$};this.details=$details$$.map($detail$$=>({...$detail$$}));this.prepare=
5
- $prepare$$;this.options=$options$$};
4
+ 100),$dm_of_vt_ma_dvt_vt$$.xk_nvl?($dm_of_vt_ma_dvt_vt$$=await dinhmucsx($id_app$$,$dm_of_vt_ma_dvt_vt$$.ma_vt,$dm_of_vt_ma_dvt_vt$$.ma_tt1||void 0,$he_so_qd_sl$$,$dm_of_vt_ma_dvt_vt$$.ma_dvt),$vts$$=[...$vts$$,...$dm_of_vt_ma_dvt_vt$$]):($dm_of_vt_ma_dvt_vt$$.sl_xuat=$he_so_qd_sl$$,$vts$$.push($dm_of_vt_ma_dvt_vt$$));return $vts$$},post=function($master$$,$details$$,$prepare$$,$options$$={}){$details$$||=[];Array.isArray($details$$)||($details$$=[$details$$]);this.master={...$master$$};this.details=
5
+ $details$$.map($detail$$=>({...$detail$$}));this.prepare=$prepare$$;this.options=$options$$};
6
6
  post.prototype.runPrepare=async($prepareFunction$$,$details$$)=>{$details$$=$details$$.map($d$$=>{$d$$.toObject&&($d$$=$d$$.toObject());return{...$d$$}});return new Promise($resolve$$=>{$prepareFunction$$?async.map($details$$,($detail$$,$callback$$)=>{$detail$$.toObject=function(){return Object.assign({},$detail$$)};$prepareFunction$$($detail$$,$detail$$=>{$detail$$.toObject=function(){return Object.assign({},$detail$$)};$callback$$(null,$detail$$)})},($e$$,$details$$)=>{$resolve$$($details$$)}):
7
7
  $resolve$$($details$$)})};
8
8
  post.prototype.remove=async function($callback$$=()=>{}){var $master$$=this.master;$master$$&&$master$$.toObject&&($master$$=$master$$.toObject());if(!$master$$._id)return $callback$$();let $query_delete$$={id_ct:$master$$._id.toString(),id_app:$master$$.id_app};this.options.queryDelete&&($query_delete$$={...$query_delete$$,...this.options.queryDelete,id_app:$master$$.id_app});$master$$=await global.getModel("sokho").find({id_ct:$master$$._id.toString(),id_app:$master$$.id_app}).lean();await global.getModel("sokho").deleteMany($query_delete$$);
@@ -15,12 +15,12 @@ await dinhmucsx($master$$.id_app,$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl_
15
15
  $details$$.filter($p$$=>$p$$.xk_nvl&&$p$$.dinh_muc_nvl&&$p$$.dinh_muc_nvl.length>0);for($i$jscomp$1_i$$=0;$i$jscomp$1_i$$<$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl_trang_thai$$.length;$i$jscomp$1_i$$++){const $p$$=$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl_trang_thai$$[$i$jscomp$1_i$$];let $he_so_qd$$=1,$qd$$=await global.getModel("dmqddvt").findOne({id_app:$master$$.id_app,ma_vt:$p$$.ma_vt,ma_dvt:$p$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);let $sl_sp$$=
16
16
  $p$$.sl_xuat*$he_so_qd$$;$p$$.dinh_muc_nvl=$p$$.dinh_muc_nvl.map($d$$=>{$d$$.nxt=$p$$.nxt;$d$$.ma_sp=$p$$.ma_vt;$d$$.sl_sp=$sl_sp$$;$d$$.ma_tt1_sp=$p$$.ma_tt1;$d$$.ma_tt2_sp=$p$$.ma_tt2;$d$$.ma_tt3_sp=$p$$.ma_tt3;$d$$.ma_kho=$p$$.ma_kho;return $d$$});$p$$.dinh_muc_nvl=$p$$.dinh_muc_nvl.filter($p$$=>$p$$.tg_tk)}$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl_trang_thai$$=$details$$.filter($p$$=>!$p$$.xk_nvl||!$p$$.dinh_muc_nvl||$p$$.dinh_muc_nvl.length===0);$i$jscomp$1_i$$=$details$$.filter($p$$=>$p$$.xk_nvl&&
17
17
  $p$$.dinh_muc_nvl&&$p$$.dinh_muc_nvl.length>0).map($p$$=>$p$$.dinh_muc_nvl).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$details$$=[...$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl_trang_thai$$,...$i$jscomp$1_i$$];await $details$$.asyncJoinModel2($master$$.id_app,global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:["tu","mau",{he_so_qd:"ty_le_qd"}]});$details$$.forEach($detail$$=>{$detail$$.ma_kho=$detail$$.ma_kho||$master$$.ma_kho;$detail$$.he_so_qd=$detail$$.he_so_qd||1;$detail$$.mau&&
18
- $detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.he_so_qd,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.he_so_qd,round))});let $nam$$=(new Date($ngay_ct$$)).getFullYear(),$thang$$=(new Date($ngay_ct$$)).getMonth()+1;
19
- await new Promise($rs$$=>{async.map($details$$.filter($p$$=>$p$$.tg_tk&&($p$$.sl_xuat&&!$p$$.px_gia_dd||$p$$.sl_nhap&&$p$$.pn_gia_tb)&&$p$$.sl_xuat),($p$$,$callback$$)=>{setImmediate(async()=>{let $he_so_qd$$=1;var $giatb_qd$$=await global.getModel("dmqddvt").findOne({id_app:$master$$.id_app,ma_vt:$p$$.ma_vt,ma_dvt:$p$$.ma_dvt}).lean();$giatb_qd$$&&($he_so_qd$$=$giatb_qd$$.mau?$giatb_qd$$.tu/$giatb_qd$$.mau:$giatb_qd$$.ty_le_qd);$giatb_qd$$={id_app:$master$$.id_app,ma_vt:$p$$.ma_vt,nam:$nam$$,thang:$thang$$,
20
- ma_kho:{$in:[$p$$.ma_kho,"",null]}};$giatb_qd$$=await global.getModel("giatb").findOne($giatb_qd$$).sort({ma_kho:-1}).lean();Logger.debug("[postSokho] T\u00ecm gi\u00e1 trung b\u00ecnh c\u1ee7a v\u1eadt t\u01b0",$p$$.ma_vt,":",$giatb_qd$$,", h\u1ec7 s\u1ed1 quy \u0111\u1ed5i:",$he_so_qd$$);if($giatb_qd$$)$p$$.gia_von_nt=$p$$.gia_von=($giatb_qd$$.gia||0)*$he_so_qd$$,$p$$.tien_xuat_nt=$p$$.tien_xuat=($p$$.sl_xuat||0)*$p$$.gia_von_nt,$p$$.tien_nhap_nt=$p$$.tien_nhap=($p$$.sl_nhap||0)*$p$$.gia_von_nt,
21
- $callback$$();else{let $condition$$={id_app:$master$$.id_app,ma_vt:$p$$.ma_vt,ma_kho:$p$$.ma_kho};$condition$$.tu_ngay=moment($ngay_ct$$).startOf("month").toDate();$condition$$.den_ngay=moment($ngay_ct$$).endOf("month").toDate();Logger.debug("[postSokho] T\u00ednh gi\u00e1 trung b\u00ecnh cho v\u1eadt t\u01b0",$p$$.ma_vt);tinhgiatb($condition$$,($e$$,$giatb$$)=>{$e$$&&Logger.error("[postSokho] Kh\u00f4ng th\u1ec3 t\u00ednh gi\u00e1 trung b\u00ecnh",$e$$.message||$e$$.error||$e$$,$condition$$);Logger.debug("[postSokho] Gi\u00e1 trung b\u00ecnh \u0111\u00e3 t\u00ednh cho v\u1eadt t\u01b0",
22
- $p$$.ma_vt,":",$giatb$$.gia);$p$$.gia_von_nt=$giatb$$?$p$$.gia_von=($giatb$$.gia||0)*$he_so_qd$$:$p$$.gia_von=0;$p$$.tien_xuat_nt=$p$$.tien_xuat=($p$$.sl_xuat||0)*$p$$.gia_von_nt;$p$$.tien_nhap_nt=$p$$.tien_nhap=($p$$.sl_nhap||0)*$p$$.gia_von_nt;$callback$$()})}})},()=>{$rs$$()})});$details$$=$details$$.map(($detail$$,$line$$)=>{$detail$$.id_ct=$master$$._id.toString();$detail$$.ma_ct=$master$$.ma_ct;$detail$$.so_ct=$master$$.so_ct;$detail$$.ngay_ct=$ngay_ct$$;for(let $attr$$ in global.getModel("sokho").schema.paths)if($attr$$!=
23
- "id_ct"&&$attr$$!="_id"&&$attr$$!="__v"&&$attr$$!="date_updated"&&$attr$$!="date_created"){let $v$$=$detail$$[$attr$$];$v$$!==void 0&&$v$$!==null&&$v$$!==""||$v$$===0||$master$$[$attr$$]===void 0||($detail$$[$attr$$]=$master$$[$attr$$])}$detail$$.line=$line$$;delete $detail$$.toObject;delete $detail$$._id;delete $detail$$.__v;delete $detail$$.listinfo_code;return $detail$$});await $details$$.asyncJoinModel2($master$$.id_app,"dmkho",{where:"ma_kho",fields:"la_kho_npp"});this.remove(async $error$$=>
24
- {if($error$$)return Logger.error("[postSokho] error delete data post",$error$$.message||$error$$.error||$error$$,$master$$.so_ct,$master$$.ma_ct),$callback$$($error$$);if($details$$.length==0)return $callback$$(null,{});try{let $data_sokho$$=$details$$.filter($d$$=>$d$$.tg_tk&&!$d$$.la_kho_npp),$rs_sokho$$=await global.getModel("sokho").create($data_sokho$$),$data_sokhonpp$$=$details$$.filter($d$$=>$d$$.tg_tk&&$d$$.la_kho_npp),$rs_sokhnpp$$=await global.getModel("sokhonpp").create($data_sokhonpp$$),
25
- $data_sokhokhongton$$=$details$$.filter($d$$=>$d$$.tg_tk==0),$rs_sokhokhongton$$=await global.getModel("sokhokhongton").create($data_sokhokhongton$$);$rs_sokho$$&&tontucthoi.tinhTonTucThoi($rs_sokho$$,$e$$=>{$e$$&&Logger.error("L\u1ed7i t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi v\u1eadt t\u01b0",$rs_sokho$$,$e$$.message||$e$$.error||$e$$,$master$$.so_ct,$master$$.ma_ct)});$callback$$(null,{rs_sokho:$rs_sokho$$,rs_sokhnpp:$rs_sokhnpp$$,rs_sokhokhongton:$rs_sokhokhongton$$})}catch($e$$){Logger.error("[postSokho] \u0110\u00e3 c\u00f3 l\u1ed7i khi post sokho",
26
- $e$$),$callback$$($e$$)}})};module.exports=post;
18
+ $detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.he_so_qd,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.he_so_qd,round))});await $details$$.asyncJoinModel2($master$$.id_app,Dmvt,{where:"ma_vt",fields:["gia_xuat"]});
19
+ let $nam$$=(new Date($ngay_ct$$)).getFullYear(),$thang$$=(new Date($ngay_ct$$)).getMonth()+1;await new Promise($rs$$=>{async.map($details$$.filter($p$$=>$p$$.tg_tk&&$p$$.gia_xuat=="1"&&($p$$.sl_xuat&&!$p$$.px_gia_dd||$p$$.sl_nhap&&$p$$.pn_gia_tb)&&$p$$.sl_xuat),($p$$,$callback$$)=>{setImmediate(async()=>{let $he_so_qd$$=1;var $giatb_qd$$=await global.getModel("dmqddvt").findOne({id_app:$master$$.id_app,ma_vt:$p$$.ma_vt,ma_dvt:$p$$.ma_dvt}).lean();$giatb_qd$$&&($he_so_qd$$=$giatb_qd$$.mau?$giatb_qd$$.tu/
20
+ $giatb_qd$$.mau:$giatb_qd$$.ty_le_qd);$giatb_qd$$={id_app:$master$$.id_app,ma_vt:$p$$.ma_vt,nam:$nam$$,thang:$thang$$,ma_kho:{$in:[$p$$.ma_kho,"",null]}};$giatb_qd$$=await global.getModel("giatb").findOne($giatb_qd$$).sort({ma_kho:-1}).lean();Logger.debug("[postSokho] T\u00ecm gi\u00e1 trung b\u00ecnh c\u1ee7a v\u1eadt t\u01b0",$p$$.ma_vt,":",$giatb_qd$$,", h\u1ec7 s\u1ed1 quy \u0111\u1ed5i:",$he_so_qd$$);if($giatb_qd$$)$p$$.gia_von_nt=$p$$.gia_von=($giatb_qd$$.gia||0)*$he_so_qd$$,$p$$.tien_xuat_nt=
21
+ $p$$.tien_xuat=($p$$.sl_xuat||0)*$p$$.gia_von_nt,$p$$.tien_nhap_nt=$p$$.tien_nhap=($p$$.sl_nhap||0)*$p$$.gia_von_nt,$callback$$();else{let $condition$$={id_app:$master$$.id_app,ma_vt:$p$$.ma_vt,ma_kho:$p$$.ma_kho};$condition$$.tu_ngay=moment($ngay_ct$$).startOf("month").toDate();$condition$$.den_ngay=moment($ngay_ct$$).endOf("month").toDate();Logger.debug("[postSokho] T\u00ednh gi\u00e1 trung b\u00ecnh cho v\u1eadt t\u01b0",$p$$.ma_vt);tinhgiatb($condition$$,($e$$,$giatb$$)=>{$e$$&&Logger.error("[postSokho] Kh\u00f4ng th\u1ec3 t\u00ednh gi\u00e1 trung b\u00ecnh",
22
+ $e$$.message||$e$$.error||$e$$,$condition$$);Logger.debug("[postSokho] Gi\u00e1 trung b\u00ecnh \u0111\u00e3 t\u00ednh cho v\u1eadt t\u01b0",$p$$.ma_vt,":",$giatb$$.gia);$p$$.gia_von_nt=$giatb$$?$p$$.gia_von=($giatb$$.gia||0)*$he_so_qd$$:$p$$.gia_von=0;$p$$.tien_xuat_nt=$p$$.tien_xuat=($p$$.sl_xuat||0)*$p$$.gia_von_nt;$p$$.tien_nhap_nt=$p$$.tien_nhap=($p$$.sl_nhap||0)*$p$$.gia_von_nt;$callback$$()})}})},()=>{$rs$$()})});$details$$=$details$$.map(($detail$$,$line$$)=>{$detail$$.id_ct=$master$$._id.toString();
23
+ $detail$$.ma_ct=$master$$.ma_ct;$detail$$.so_ct=$master$$.so_ct;$detail$$.ngay_ct=$ngay_ct$$;for(let $attr$$ in global.getModel("sokho").schema.paths)if($attr$$!="id_ct"&&$attr$$!="_id"&&$attr$$!="__v"&&$attr$$!="date_updated"&&$attr$$!="date_created"){let $v$$=$detail$$[$attr$$];$v$$!==void 0&&$v$$!==null&&$v$$!==""||$v$$===0||$master$$[$attr$$]===void 0||($detail$$[$attr$$]=$master$$[$attr$$])}$detail$$.line=$line$$;delete $detail$$.toObject;delete $detail$$._id;delete $detail$$.__v;delete $detail$$.listinfo_code;
24
+ return $detail$$});await $details$$.asyncJoinModel2($master$$.id_app,"dmkho",{where:"ma_kho",fields:"la_kho_npp"});this.remove(async $error$$=>{if($error$$)return Logger.error("[postSokho] error delete data post",$error$$.message||$error$$.error||$error$$,$master$$.so_ct,$master$$.ma_ct),$callback$$($error$$);if($details$$.length==0)return $callback$$(null,{});try{let $data_sokho$$=$details$$.filter($d$$=>$d$$.tg_tk&&!$d$$.la_kho_npp),$rs_sokho$$=await global.getModel("sokho").create($data_sokho$$),
25
+ $data_sokhonpp$$=$details$$.filter($d$$=>$d$$.tg_tk&&$d$$.la_kho_npp),$rs_sokhnpp$$=await global.getModel("sokhonpp").create($data_sokhonpp$$),$data_sokhokhongton$$=$details$$.filter($d$$=>$d$$.tg_tk==0),$rs_sokhokhongton$$=await global.getModel("sokhokhongton").create($data_sokhokhongton$$);$rs_sokho$$&&tontucthoi.tinhTonTucThoi($rs_sokho$$,$e$$=>{$e$$&&Logger.error("L\u1ed7i t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi v\u1eadt t\u01b0",$rs_sokho$$,$e$$.message||$e$$.error||$e$$,$master$$.so_ct,$master$$.ma_ct)});
26
+ $callback$$(null,{rs_sokho:$rs_sokho$$?.map($r$$=>$r$$.toObject()),rs_sokhnpp:$rs_sokhnpp$$?.map($r$$=>$r$$.toObject()),rs_sokhokhongton:$rs_sokhokhongton$$?.map($r$$=>$r$$.toObject())})}catch($e$$){Logger.error("[postSokho] \u0110\u00e3 c\u00f3 l\u1ed7i khi post sokho",$e$$),$callback$$($e$$)}})};module.exports=post;