flexbiz-server 12.2.2 → 12.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/package.json +2 -2
  2. package/server/app.js +14 -14
  3. package/server/auths/local.js +3 -3
  4. package/server/cluster.js +12 -11
  5. package/server/controllers/controller.js +37 -34
  6. package/server/data/sys/listinfo.js +80395 -78085
  7. package/server/data/sys/reportinfo.js +8826 -8826
  8. package/server/data/sys/trangthai.js +10348 -10229
  9. package/server/libs/getGiaban.js +21 -21
  10. package/server/libs/permission.js +12 -12
  11. package/server/libs/prototypes.js +3 -3
  12. package/server/libs/tinhgiatb.js +16 -19
  13. package/server/models/customer.js +9 -5
  14. package/server/models/dh2.js +9 -7
  15. package/server/models/dmbp.js +7 -4
  16. package/server/models/dmgiaban.js +6 -6
  17. package/server/models/dmhoahonghd.js +5 -5
  18. package/server/models/dmnvt.js +3 -3
  19. package/server/models/dmvt.js +9 -9
  20. package/server/models/ecomcategories.js +2 -2
  21. package/server/models/ecomcategories_cty.js +3 -0
  22. package/server/models/group.js +4 -4
  23. package/server/models/hd2.js +9 -6
  24. package/server/models/listinfo.js +15 -8
  25. package/server/models/originimportid.js +1 -0
  26. package/server/models/so1.js +15 -13
  27. package/server/models/socai.js +3 -1
  28. package/server/models/task.js +4 -4
  29. package/server/models/tontucthoi.js +2 -2
  30. package/server/models/usergroup.js +4 -4
  31. package/server/modules/lists/ls-asskey.js +34 -34
  32. package/server/modules/lists/ls-customer.js +14 -7
  33. package/server/modules/lists/ls-dmbp.js +7 -3
  34. package/server/modules/lists/ls-dmnkh.js +5 -1
  35. package/server/modules/lists/ls-dmnvt.js +5 -5
  36. package/server/modules/lists/ls-dmvt.js +15 -11
  37. package/server/modules/lists/ls-ecomcategories.js +5 -0
  38. package/server/modules/lists/ls-ecomcategories_cty.js +5 -0
  39. package/server/modules/lists/ls-file.js +21 -25
  40. package/server/modules/lists/ls-group.js +5 -1
  41. package/server/modules/lists/ls-introducecode.js +8 -7
  42. package/server/modules/lists/ls-introducer.js +16 -17
  43. package/server/modules/lists/ls-message2.js +8 -7
  44. package/server/modules/lists/ls-message2setting.js +4 -4
  45. package/server/modules/lists/ls-session.js +1 -1
  46. package/server/modules/lists/ls-task.js +18 -18
  47. package/server/modules/lists/ls-usergroup.js +6 -2
  48. package/server/modules/reports/calc-tinhgiatb.js +2 -2
  49. package/server/modules/reports/rp-congviectheonv.js +5 -5
  50. package/server/modules/reports/rp-thnxt.js +4 -3
  51. package/server/modules/reports/rp-thnxt_sl.js +3 -3
  52. package/server/modules/reports/rp-thnxttt.js +3 -3
  53. package/server/modules/vouchers/vo-dh2.js +38 -20
  54. package/server/modules/vouchers/vo-hd2.js +82 -50
  55. package/server/modules/vouchers/vo-so1.js +119 -120
  56. package/server/templates/reset mat khau.html +1 -1
  57. package/server/templates/reset mat khau.pug +1 -3
@@ -1,12 +1,15 @@
1
1
  'use strict';const validAccount=require("../libs/validator-account"),validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),detailSchema=new Schema({ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024},ma_dvt:{type:String,required:!0,maxlength:32},ma_kho:{type:String,required:"Y\u00eau c\u1ea7u nh\u1eadp kho xu\u1ea5t",uppercase:!0,maxlength:32},tk_vt:{type:String,required:"Y\u00eau c\u1ea7u nh\u1eadp t\u00e0i kho\u1ea3n v\u1eadt t\u01b0",uppercase:!0,maxlength:32},
2
2
  tk_gv:{type:String,required:"Y\u00eau c\u1ea7u nh\u1eadp t\u00e0i kho\u1ea3n gi\u00e1 v\u1ed1n",uppercase:!0,maxlength:32},tk_dt:{type:String,required:"Y\u00eau c\u1ea7u nh\u1eadp t\u00e0i kho\u1ea3n doanh thu",uppercase:!0,maxlength:32},tk_ck:{type:String,uppercase:!0,maxlength:32},px_gia_dd:{type:Boolean,default:!1},ton_kho:{type:Number,default:0},so_luong:{type:Number,default:0},sl_xuat:{type:Number,default:0},gia_von:{type:Number,default:0},gia_von_nt:{type:Number,default:0},tien_xuat:{type:Number,
3
- default:0},tien_xuat_nt:{type:Number,default:0},gia_ban:{type:Number,default:0},gia_ban_nt:{type:Number,default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},ty_le_ck:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},ma_thue:String,thue_suat:{type:Number,default:0},tien_thue:{type:Number,default:0},tien_thue_nt:{type:Number,default:0},promotion:Schema.Types.Mixed,dien_giai:{type:String,maxlength:1024},ten_vt_vat:String,ma_bp:{type:String,
4
- uppercase:!0,default:"",maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},han_sd:{type:Date},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt3:{type:String,default:"",uppercase:!0,
5
- maxlength:32},exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={tk_vt:validAccount.existsTk,tk_gv:validAccount.existsTk,tk_dt:validAccount.existsTk,tk_ck:validAccount.existsTk,ma_vt:validVt.existsVt,ma_kho:validVt.existsKho,ma_dvt:validator.existsDvt};
3
+ default:0},tien_xuat_nt:{type:Number,default:0},gia_ban:{type:Number,default:0},gia_ban_nt:{type:Number,default:0},gia_ban_niem_yet_nt:Number,tien:{type:Number,default:0},tien_nt:{type:Number,default:0},ty_le_ck:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},ma_thue:String,thue_suat:{type:Number,default:0},tien_thue:{type:Number,default:0},tien_thue_nt:{type:Number,default:0},promotion:Schema.Types.Mixed,dien_giai:{type:String,maxlength:1024},ten_vt_vat:String,
4
+ ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},han_sd:{type:Date},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt3:{type:String,default:"",
5
+ uppercase:!0,maxlength:32},ty_le_hoa_hong:Number,tien_hoa_hong:Number,chuyen_ngay:Boolean,tk_no_hoa_hong:String,tk_co_hoa_hong:String,ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,chuyen_ngay_gt:Boolean,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,ty_le_hoa_hong_ctv:Number,tien_hoa_hong_ctv:Number,chuyen_ngay_ctv:Boolean,tk_cn_ctv:String,tk_cp_ctv:String,ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,chuyen_ngay_ql:Boolean,tk_no_hoa_hong_ql:String,tk_co_hoa_hong_ql:String,exfields_detail:Schema.Types.Mixed,
6
+ line:{type:Number,default:0}});detailSchema.validate={tk_vt:validAccount.existsTk,tk_gv:validAccount.existsTk,tk_dt:validAccount.existsTk,tk_ck:validAccount.existsTk,ma_vt:validVt.existsVt,ma_kho:validVt.existsKho,ma_dvt:validator.existsDvt};
6
7
  const hd2Schema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,default:"HD2",required:!0,uppercase:!0,maxlength:32},ma_gd:{type:String,default:"0",maxlength:32},so_ct:{type:String,required:!0,uppercase:!0,trim:!0,maxlength:32},ngay_ct:{type:Date,default:Date.now,required:!0},ma_nt:{type:String,required:"ma_nt is required",default:"VND",trim:!0,uppercase:!0,maxlength:32},ty_gia:{type:Number,required:!0,min:0,default:1},
7
8
  ong_ba:{type:String,maxlength:1024},ma_kh:{type:String,uppercase:!0,required:!0,default:"",maxlength:32},ten_kh:String,ma_so_thue:{type:String,maxlength:1024},tk_no:{type:String,uppercase:!0,required:!0,default:"",maxlength:32},ma_hoa_don:{type:String,default:"",uppercase:!0,trim:!0,maxlength:32},ky_hieu_hoa_don:{type:String,default:"",uppercase:!0,trim:!0,maxlength:32},so_hd:{type:String,uppercase:!0,maxlength:32},so_seri:{type:String,uppercase:!0,maxlength:32},ngay_hd:{type:Date,uppercase:!0},ma_thue:{type:String,
8
9
  uppercase:!0,maxlength:32},thue_suat:{type:Number,default:0},tk_thue_co:{type:String,uppercase:!0,maxlength:32},dia_chi:{type:String,default:"",maxlength:1024},ten_vt:{type:String,default:"",maxlength:1024},dien_giai_thue:{type:String,default:"",maxlength:1024},tien_thue_dc_nt:Number,t_thue:{type:Number,default:0},t_thue_nt:{type:Number,default:0},han_tt:{type:Number,default:0},hinh_thuc_tt:{type:String,maxlength:1024},dien_giai:{type:String,default:"",maxlength:1024},exfields:Schema.Types.Mixed,
9
10
  trang_thai:{type:String,maxlength:32},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],details:{type:[detailSchema]},promotion:Schema.Types.Mixed,id_contract:{type:String,maxlength:1024},id_dh2:{type:String,maxlength:1024},ma_kho:{type:String,uppercase:!0,
10
- maxlength:32},ma_kh_hoa_hong:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong:Number,tien_hoa_hong:Number,tk_no_hoa_hong:String,tk_co_hoa_hong:String,tu_tinh_hoa_hong:Boolean,ty_le_ck_hd:{type:Number,default:0},tien_ck_hd:{type:Number,default:0},tk_ck:String,result_export_einvoice:Schema.Types.Mixed,ma_bp:{type:String,uppercase:!0,maxlength:32},ma_nv:{type:String,uppercase:!0,maxlength:32},ma_phi:{type:String,uppercase:!0,maxlength:32},ma_hd:{type:String,uppercase:!0,maxlength:32},ma_dt:{type:String,
11
- uppercase:!0,maxlength:32},ma_lo:{type:String,uppercase:!0,maxlength:32}});hd2Schema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,tk_no:validAccount.existsTk,ma_thue:validator.existsVat,tk_thue_co:validAccount.existsTk};hd2Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});hd2Schema.index({dien_giai:"text",ma_kh:"text",ten_kh:"text",so_ct:"text"},{name:"hd2_index_text"});hd2Schema.index({ma_ct:1});hd2Schema.index({ma_kh:1});
12
- hd2Schema.index({ma_kho:1});hd2Schema.index({"details.ma_vt":1});hd2Schema.index({id_dh2:1});hd2Schema.index({id_contract:1});hd2Schema.index({user_created:1,date_created:-1});hd2Schema.index({date_updated:-1});hd2Schema.index({status:1});hd2Schema.index({user_created:1,visible_to:1,visible_to_users:1});hd2Schema.index({trang_thai:1});module.exports=mongoose.models.hd2||mongoose.model("hd2",hd2Schema);
11
+ maxlength:32},ty_le_ck_hd:{type:Number,default:0},tien_ck_hd:{type:Number,default:0},tk_ck:String,result_export_einvoice:Schema.Types.Mixed,ma_nv:{type:String,uppercase:!0,maxlength:32},user_nv:String,ma_kh_hoa_hong:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong:Number,tien_hoa_hong:Number,tk_no_hoa_hong:String,tk_co_hoa_hong:String,tu_tinh_hoa_hong:Boolean,chuyen_ngay:Boolean,da_chuyen_hoa_hong:Boolean,user_gt:String,introduce_code:String,ma_kh_hoa_hong_gt:{type:String,uppercase:!0,maxlength:32},
12
+ ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,chuyen_ngay_gt:Boolean,da_chuyen_hoa_hong_gt:Boolean,user_ctv:String,ma_ctv:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_ctv:Number,thu_nhap_ctv:Number,tk_cp_ctv:String,tk_cn_ctv:String,chuyen_ngay_ctv:Boolean,da_chuyen_hoa_hong_ctv:Boolean,user_ql:String,ma_kh_hoa_hong_ql:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,tk_no_hoa_hong_ql:String,tk_co_hoa_hong_ql:String,
13
+ chuyen_ngay_ql:Boolean,da_chuyen_hoa_hong_ql:Boolean,ma_bp:{type:String,uppercase:!0,maxlength:32},ma_phi:{type:String,uppercase:!0,maxlength:32},ma_hd:{type:String,uppercase:!0,maxlength:32},ma_dt:{type:String,uppercase:!0,maxlength:32},ma_lo:{type:String,uppercase:!0,maxlength:32}});hd2Schema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,tk_no:validAccount.existsTk,ma_thue:validator.existsVat,tk_thue_co:validAccount.existsTk};
14
+ hd2Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});hd2Schema.index({dien_giai:"text",ma_kh:"text",ten_kh:"text",so_ct:"text"},{name:"hd2_index_text"});hd2Schema.index({ma_ct:1});hd2Schema.index({ma_kh:1});hd2Schema.index({ma_kho:1});hd2Schema.index({"details.ma_vt":1});hd2Schema.index({id_dh2:1});hd2Schema.index({id_contract:1});hd2Schema.index({user_created:1,date_created:-1});hd2Schema.index({date_updated:-1});hd2Schema.index({status:1});hd2Schema.index({user_created:1,visible_to:1,visible_to_users:1});
15
+ hd2Schema.index({trang_thai:1});module.exports=mongoose.models.hd2||mongoose.model("hd2",hd2Schema);
@@ -39,8 +39,10 @@ const fieldScheme = new global.Schema(
39
39
  ref_label:{type:String,trim:true},
40
40
  ref_label_as:{type:String,trim:true},
41
41
  ref_search_fields:{type:String,trim:true},
42
+ ref_data_fields:{type:String,trim:true},
42
43
  ref_condition:{type:String,trim:true},
43
44
  multiple:Boolean,
45
+
44
46
 
45
47
  not_display:global.Schema.Types.Mixed,
46
48
  not_input:global.Schema.Types.Mixed,
@@ -250,7 +252,7 @@ model.createSchema = (info)=>{
250
252
  return mySchema;
251
253
  }
252
254
  model.updateModel = (info,_newModel)=>{
253
- //console.log("update model...")
255
+
254
256
  if(info.toObject) info = info.toObject();
255
257
  if(!info.create_model) return null;
256
258
  let model_code = info.api_code || info.model_code || info.code;
@@ -260,10 +262,9 @@ model.updateModel = (info,_newModel)=>{
260
262
  console.error("model does not have schema",_newModel);
261
263
  return;
262
264
  }
263
-
265
+ console.log("update model...",model_code);
264
266
  const api_code = info.api_code || info.code;
265
- const _newList = global.controllers[api_code.toUpperCase()]
266
-
267
+ const _newList = global.controllers[api_code.toUpperCase()];
267
268
  let require_paths = Object.keys(requireFields);
268
269
  let fields = [...info.fields];
269
270
  //add ref fields
@@ -277,19 +278,21 @@ model.updateModel = (info,_newModel)=>{
277
278
  }
278
279
  })
279
280
  //console.log("ref fields",fields_have_ref);
280
-
281
281
  fields = fields.concat(fields_have_ref);
282
282
  //
283
283
  fields.filter(f=>f.type!=="Link" && f.type!=="Files" && f.type!=="Action" && f.type!=="Group" && require_paths.indexOf(f.name)<0).forEach(field=>{
284
284
  if(field.toObject) field = field.toObject();
285
+ const _field = {...field};
285
286
  if(underscore.has(_newModel.schema.paths,field.name)){
286
- if(_newList && !_newList.is_dynamic_list) return;
287
+ if(_newModel.schema.paths[field.name].options && !_newModel.schema.paths[field.name].options.isDynamic){
288
+ return;
289
+ }
287
290
  if(field.type==="Array" || field.type==="Mixed"){
288
291
  return;
289
292
  }
290
293
  _newModel.schema.remove(field.name);
291
294
  }
292
- let _field = {...field};
295
+
293
296
  if(_field.type=="DateTime" || _field.type=="Time") _field.type= "Date";
294
297
  if(_field.type=="File" || _field.type=="OtherFile") _field.type= "Mixed";
295
298
  if(_field.type=="Array") _field.type= "Mixed";
@@ -298,7 +301,11 @@ model.updateModel = (info,_newModel)=>{
298
301
 
299
302
  if(_field.type=="String") _field.trim = true;
300
303
 
301
- _field.required = false;
304
+ if(model_code!=info.code){
305
+ _field.required = false;//phai luon dat la false neu khong se bi dung giua cac api khac dung chung model
306
+ }
307
+
308
+ _field.isDynamic = true;
302
309
  delete _field.name;
303
310
  delete _field.header;
304
311
  delete _field.header2;
@@ -0,0 +1 @@
1
+ 'use strict';const originimportidSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},old_id:{type:String},new_id:{type:String}});originimportidSchema.index({id_app:1,old_id:1},{unique:!0});originimportidSchema.index({new_id:1});const model=mongoose.models.originimportid||mongoose.model("originimportid",originimportidSchema);module.exports=model;
@@ -1,16 +1,18 @@
1
1
  'use strict';const moment=require("moment"),validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),detailSchema=new global.Schema({ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024},ma_dvt:{type:String,required:!0,maxlength:32},ton_kho:{type:Number,default:0},sl_xuat:{type:Number,default:0},px_gia_dd:{type:Boolean,default:!1},gia_von:{type:Number,default:0},gia_von_nt:{type:Number,default:0},tien_xuat:{type:Number,default:0},tien_xuat_nt:{type:Number,default:0},gia_mua:{type:Number,
2
- default:0},tien_xuat_tmp:{type:Number,default:0},gia_ban:{type:Number,default:0},gia_ban_nt:{type:Number,default:0},tien_hang:{type:Number,default:0},tien_hang_nt:{type:Number,default:0},ty_le_ck:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},cs_tien_ck:{type:Number,default:0},cs_ty_le_ck:{type:Number,default:0},cs_sl_ap_dung:{type:Number,default:0},cs_gt_hd_tu:{type:Number,default:0},cs_gt_hd_den:{type:Number,default:0},tien:{type:Number,default:0},tien_nt:{type:Number,
3
- default:0},gia_ban_thuc:{type:Number,default:0},ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},tk_vt:{type:String,uppercase:!0,maxlength:32},tk_dt:{type:String,uppercase:!0,maxlength:32},tk_gv:{type:String,uppercase:!0,maxlength:32},tk_ck:{type:String,uppercase:!0,
4
- maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},han_sd:{type:Date},ma_vt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32},thuoc_tinh:Schema.Types.Mixed,tien_evoucher_duoc_pb:{type:Number,default:0},exfields_detail:global.Schema.Types.Mixed,tasks:[Schema.Types.Mixed],days_of_week:[{index:Number,name:String,
5
- sel:Boolean,ghi_chu:String}],ngay_bat_dau:{type:Date},ngay_ket_thuc:{type:Date},tu_gio:{type:Date},den_gio:{type:Date},so_lan:Number,diem_thuong:{type:Number,default:0},tk_km_no:{type:String},tk_km_co:{type:String},km_yn_for:String,id_cs:String,collection_cs:String,freeship:Schema.Types.Mixed,combo:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
2
+ default:0},tien_xuat_tmp:{type:Number,default:0},gia_ban:{type:Number,default:0},gia_ban_nt:{type:Number,default:0},tien_hang:{type:Number,default:0},tien_hang_nt:{type:Number,default:0},ty_le_ck:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},gia_ban_niem_yet_nt:{type:Number,default:0},cs_tien_ck:{type:Number,default:0},cs_ty_le_ck:{type:Number,default:0},cs_sl_ap_dung:{type:Number,default:0},cs_gt_hd_tu:{type:Number,default:0},cs_gt_hd_den:{type:Number,
3
+ default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},ty_le_hoa_hong:Number,tien_hoa_hong:Number,chuyen_ngay:Boolean,tk_no_hoa_hong:String,tk_co_hoa_hong:String,ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,chuyen_ngay_gt:Boolean,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,ty_le_hoa_hong_ctv:Number,tien_hoa_hong_ctv:Number,chuyen_ngay_ctv:Boolean,tk_cn_ctv:String,tk_cp_ctv:String,ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,chuyen_ngay_ql:Boolean,tk_no_hoa_hong_ql:String,
4
+ tk_co_hoa_hong_ql:String,gia_ban_thuc:{type:Number,default:0},ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},tk_vt:{type:String,uppercase:!0,maxlength:32},tk_dt:{type:String,uppercase:!0,maxlength:32},tk_gv:{type:String,uppercase:!0,maxlength:32},tk_ck:{type:String,
5
+ uppercase:!0,maxlength:32},ma_kho:{type:String,uppercase:!0,default:"",maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},han_sd:{type:Date},ma_vt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32},thuoc_tinh:Schema.Types.Mixed,tien_evoucher_duoc_pb:{type:Number,default:0},exfields_detail:global.Schema.Types.Mixed,
6
+ tasks:[Schema.Types.Mixed],days_of_week:[{index:Number,name:String,sel:Boolean,ghi_chu:String}],ngay_bat_dau:{type:Date},ngay_ket_thuc:{type:Date},tu_gio:{type:Date},den_gio:{type:Date},so_lan:Number,diem_thuong:{type:Number,default:0},tk_km_no:{type:String},tk_km_co:{type:String},km_yn_for:String,id_cs:String,collection_cs:String,freeship:Schema.Types.Mixed,combo:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
6
7
  const ctcpbhSchema=new global.Schema({ma_cp:{type:String,uppercase:!0,required:!0},dien_giai:{type:String,maxlength:1024},tien_cp_nt:{type:Number,default:0},tien_cp:{type:Number,default:0},line:{type:Number,default:0}}),so1Schema=new global.Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,maxlength:1024},ma_ct:{type:String,default:"SO1",required:!0,uppercase:!0,maxlength:32},ma_gd:{type:String,default:"0",maxlength:32},so_ct:{type:String,uppercase:!0,trim:!0,maxlength:32},
7
- ngay_ct:{type:Date,default:Date.now,required:!0},ma_nt:{type:String,required:"ma_nt is required",default:"VND",trim:!0,uppercase:!0,maxlength:32},ty_gia:{type:Number,required:!0,min:0,default:1},trang_thai:{type:String,default:"1",maxlength:32},ma_kh:{type:String,uppercase:!0,maxlength:32},ten_kh:String,of_user:{type:String,maxlength:128},ma_kho:{type:String,uppercase:!0,maxlength:32},ten_kho:String,user_nv_goi_hang:{type:String,maxlength:128},user_nv_giao_hang:{type:String,maxlength:128},ngay_giao_hang:Date,
8
- ngay_hoan_thanh:Date,ngay_tra_lai:Date,vi_tri_giao_hang:global.Schema.Types.Mixed,ten_nguoi_nhan:{type:String,maxlength:1024},dien_thoai:{type:String,maxlength:1024},email:{type:String,maxlength:1024},dia_chi:{type:String,maxlength:1024},xa_phuong:{type:String,maxlength:1024},quan_huyen:{type:String,maxlength:1024},tinh_thanh:{type:String,maxlength:1024},quoc_gia:{type:String,default:"VN",maxlength:2},post_code:{type:String,maxlength:1024},location:global.Schema.Types.Mixed,note_ship:{type:String,
9
- maxlength:1024},pt_giao_hang:{type:String,default:"1",maxlength:1024},dich_vu_giao_hang:{type:String,maxlength:1024},trang_thai_giao_hang:{type:String,maxlength:1024},ma_kiem_soat:{type:String,maxlength:1024},ly_do_that_bai:{type:String,maxlength:1024},ly_do_huy:{type:String,maxlength:1024},ma_nv:String,user_nv:String,ma_kh_hoa_hong:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong:Number,tien_hoa_hong:Number,tk_no_hoa_hong:String,tk_co_hoa_hong:String,tu_tinh_hoa_hong:Boolean,chuyen_ngay:Boolean,
10
- da_chuyen_hoa_hong:Boolean,user_gt:String,introduce_code:String,ma_kh_hoa_hong_gt:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,chuyen_ngay_gt:Boolean,da_chuyen_hoa_hong_gt:Boolean,dien_giai:{type:String,default:"",maxlength:1024},exfields:global.Schema.Types.Mixed,stt_rec:String,ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},profile:global.Schema.Types.Mixed,discout_code:{type:String,maxlength:32},
11
- ty_le_ck_hd:{type:Number,default:0},tien_ck_hd:{type:Number,default:0},ma_freeship:String,tien_freeship:Number,tien_phi_vc:Number,sender_email:{type:String,maxlength:128},id_trans:{type:String,maxlength:1024},paymentByPoints:{type:Number,default:0},exchangeRate:Number,tien_paymentByPoints:{type:Number,default:0},evouchers:[global.Schema.Types.Mixed],tien_evoucher:Number,tk_no_evoucher:String,tk_co_evoucher:String,da_tra:{type:Number,default:0},tien_con_lai:{type:Number,default:0},pt_thanh_toan:{type:String,
12
- maxlength:1024},note_payment:{type:String,maxlength:1024},virtual_payment_client_url:{type:String,maxlength:2024},again_link:{type:String,maxlength:2024},payment_service:String,payment_id:String,payment_getway_lang:{type:String,maxlength:1024},details:{type:[detailSchema]},ctcpbhs:[ctcpbhSchema],shared:Boolean,gio:Number,ngay:Number,thang:Number,quy:Number,nam:Number,online:Boolean,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},
13
- user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String]});so1Schema.validate={ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,ma_kho:validVt.existsKho};so1Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});so1Schema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text",ma_kho:"text",ten_kho:"text"},{name:"so1_index_text"});so1Schema.index({ma_ct:1});
14
- so1Schema.index({ma_kh:1});so1Schema.index({ma_kho:1});so1Schema.index({ma_nv:1});so1Schema.index({"details.ma_vt":1});so1Schema.index({"details.id_cs":1});so1Schema.index({trang_thai:1});so1Schema.index({trang_thai_giao_hang:1});so1Schema.index({user_nv_giao_hang:1});so1Schema.index({user_created:1,date_created:-1});so1Schema.index({date_updated:-1});so1Schema.index({gio:1});so1Schema.index({ngay:1});so1Schema.index({thang:1});so1Schema.index({quy:1});so1Schema.index({nam:-1});so1Schema.index({status:1});
15
- so1Schema.index({online:1});so1Schema.index({user_created:1,visible_to:1,visible_to_users:1});so1Schema.pre("save",function($next$$){let $ngay_ct$$=moment(this.ngay_ct);this.gio=$ngay_ct$$.get("hours");this.ngay=$ngay_ct$$.get("dates");this.quy=$ngay_ct$$.get("quarters");this.thang=$ngay_ct$$.get("months")+1;this.nam=$ngay_ct$$.get("year");$next$$()});const model=global.mongoose.models.so1||global.mongoose.model("so1",so1Schema);model.referenceKeys={_id:[{model:"socai",key:"id_ct_goc",error:"Phi\u1ebfu n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c ho\u1ea1ch to\u00e1n"}]};
8
+ ngay_ct:{type:Date,default:Date.now,required:!0},ma_nt:{type:String,required:"ma_nt is required",default:"VND",trim:!0,uppercase:!0,maxlength:32},ty_gia:{type:Number,required:!0,min:0,default:1},trang_thai:{type:String,default:"1",maxlength:32},ma_kh:{type:String,uppercase:!0,maxlength:32},ten_kh:String,of_user:{type:String,maxlength:128},ma_kho:{type:String,uppercase:!0,maxlength:32},ten_kho:String,ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},user_nv_goi_hang:{type:String,maxlength:128},
9
+ user_nv_giao_hang:{type:String,maxlength:128},ngay_giao_hang:Date,ngay_hoan_thanh:Date,ngay_tra_lai:Date,vi_tri_giao_hang:global.Schema.Types.Mixed,ten_nguoi_nhan:{type:String,maxlength:1024},dien_thoai:{type:String,maxlength:1024},email:{type:String,maxlength:1024},dia_chi:{type:String,maxlength:1024},xa_phuong:{type:String,maxlength:1024},quan_huyen:{type:String,maxlength:1024},tinh_thanh:{type:String,maxlength:1024},quoc_gia:{type:String,default:"VN",maxlength:2},post_code:{type:String,maxlength:1024},
10
+ location:global.Schema.Types.Mixed,note_ship:{type:String,maxlength:1024},pt_giao_hang:{type:String,default:"1",maxlength:1024},dich_vu_giao_hang:{type:String,maxlength:1024},trang_thai_giao_hang:{type:String,maxlength:1024},ma_kiem_soat:{type:String,maxlength:1024},ly_do_that_bai:{type:String,maxlength:1024},ly_do_huy:{type:String,maxlength:1024},ma_nv:String,user_nv:String,ma_kh_hoa_hong:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong:Number,tien_hoa_hong:Number,tk_no_hoa_hong:String,tk_co_hoa_hong:String,
11
+ tu_tinh_hoa_hong:Boolean,chuyen_ngay:Boolean,da_chuyen_hoa_hong:Boolean,user_gt:String,introduce_code:String,ma_kh_hoa_hong_gt:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,chuyen_ngay_gt:Boolean,da_chuyen_hoa_hong_gt:Boolean,user_ctv:String,ma_ctv:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_ctv:Number,thu_nhap_ctv:Number,tk_cp_ctv:String,tk_cn_ctv:String,chuyen_ngay_ctv:Boolean,da_chuyen_hoa_hong_ctv:Boolean,
12
+ user_ql:String,ma_kh_hoa_hong_ql:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,tk_no_hoa_hong_ql:String,tk_co_hoa_hong_ql:String,chuyen_ngay_ql:Boolean,da_chuyen_hoa_hong_ql:Boolean,dien_giai:{type:String,default:"",maxlength:1024},exfields:global.Schema.Types.Mixed,stt_rec:String,ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},profile:global.Schema.Types.Mixed,discout_code:{type:String,maxlength:32},ty_le_ck_hd:{type:Number,default:0},tien_ck_hd:{type:Number,
13
+ default:0},ma_freeship:String,tien_freeship:Number,tien_phi_vc:Number,sender_email:{type:String,maxlength:128},id_trans:{type:String,maxlength:1024},paymentByPoints:{type:Number,default:0},exchangeRate:Number,tien_paymentByPoints:{type:Number,default:0},evouchers:[global.Schema.Types.Mixed],tien_evoucher:Number,tk_no_evoucher:String,tk_co_evoucher:String,da_tra:{type:Number,default:0},tien_con_lai:{type:Number,default:0},pt_thanh_toan:{type:String,maxlength:1024},note_payment:{type:String,maxlength:1024},
14
+ virtual_payment_client_url:{type:String,maxlength:2024},again_link:{type:String,maxlength:2024},payment_service:String,payment_id:String,payment_getway_lang:{type:String,maxlength:1024},details:{type:[detailSchema]},ctcpbhs:[ctcpbhSchema],shared:Boolean,gio:Number,ngay:Number,thang:Number,quy:Number,nam:Number,online:Boolean,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,
15
+ default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String]});so1Schema.validate={ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,ma_kho:validVt.existsKho};so1Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});so1Schema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text",ma_kho:"text",ten_kho:"text"},{name:"so1_index_text"});so1Schema.index({ma_ct:1});so1Schema.index({ma_kh:1});so1Schema.index({ma_kho:1});
16
+ so1Schema.index({ma_bp:1});so1Schema.index({ma_nv:1});so1Schema.index({"details.ma_vt":1});so1Schema.index({"details.id_cs":1});so1Schema.index({trang_thai:1});so1Schema.index({trang_thai_giao_hang:1});so1Schema.index({user_nv_giao_hang:1});so1Schema.index({user_created:1,date_created:-1});so1Schema.index({date_updated:-1});so1Schema.index({gio:1});so1Schema.index({ngay:1});so1Schema.index({thang:1});so1Schema.index({quy:1});so1Schema.index({nam:-1});so1Schema.index({status:1});so1Schema.index({online:1});
17
+ so1Schema.index({user_created:1,visible_to:1,visible_to_users:1});so1Schema.pre("save",function($next$$){let $ngay_ct$$=moment(this.ngay_ct);this.gio=$ngay_ct$$.get("hours");this.ngay=$ngay_ct$$.get("dates");this.quy=$ngay_ct$$.get("quarters");this.thang=$ngay_ct$$.get("months")+1;this.nam=$ngay_ct$$.get("year");$next$$()});const model=global.mongoose.models.so1||global.mongoose.model("so1",so1Schema);model.referenceKeys={_id:[{model:"socai",key:"id_ct_goc",error:"Phi\u1ebfu n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c ho\u1ea1ch to\u00e1n"}]};
16
18
  module.exports=model;
@@ -5,7 +5,9 @@ ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt2:{type:S
5
5
  default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt2_sp:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt3_sp:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_cum_chi_tiet:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ten_cum_chi_tiet:{type:String,default:"",maxlength:1024,trim:!0},ma_cong_doan:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},id_lenhsx:{type:String,maxlength:1024},id_cs:{type:String,maxlength:1024},id_link:String,ma_ct_link:String,
6
6
  so_ct_link:String,id_ct_goc:String,ma_ct_goc:String,so_ct_goc:String,ngay_ct_goc:Date,pt_thanh_toan_goc:String,pt_thanh_toan:String,pt_thanh_toan2:String,trang_thai:{type:String,maxlength:32},nh_dk:{type:Number,default:0},id_kbbtpb:{type:String,maxlength:1024},exfields:Schema.Types.Mixed,exfields_detail:Schema.Types.Mixed,flag:{type:String,maxlength:1024},gio:Number,ngay:Number,thang:Number,quy:Number,nam:Number,ma_kenh:String,ma_td1:String,ma_td2:String,ma_td3:String,ma_td4:String,ma_td5:String,
7
7
  ma_td6:String,ma_td7:String,ma_td8:String,ma_td9:String,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}},{toJSON:{virtuals:!0}});
8
- socaiSchema.pre("save",function($next$$){this.tien="VND"==this.ma_nt?this.tien_nt=Math.roundBy(this.tien_nt,0):Math.roundBy(this.tien,0);let $ngay_ct$$=moment(this.ngay_ct);this.gio=$ngay_ct$$.get("hours");this.ngay=$ngay_ct$$.get("dates");this.quy=$ngay_ct$$.get("quarters");this.thang=$ngay_ct$$.get("months")+1;this.nam=$ngay_ct$$.get("year");$next$$()});socaiSchema.index({id_app:1});socaiSchema.index({ma_dvcs:1});socaiSchema.index({so_ct:1});socaiSchema.index({ngay_ct:1});
8
+ socaiSchema.pre("save",function($next$$){this.tien="VND"==this.ma_nt?this.tien_nt=Math.roundBy(this.tien_nt,0):Math.roundBy(this.tien,0);let $ngay_ct$$=moment(this.ngay_ct);this.gio=$ngay_ct$$.get("hours");this.ngay=$ngay_ct$$.get("dates");this.quy=$ngay_ct$$.get("quarters");this.thang=$ngay_ct$$.get("months")+1;this.nam=$ngay_ct$$.get("year");$next$$()});
9
+ socaiSchema.post("save",async function($doc$$){if(0<=["SO1","HD2","HD1","PBL"].indexOf($doc$$.ma_ct)){if($doc$$.ma_kh_no){var $dhgn_dhgn$$=await global.getModel("socai").findOne({ma_kh:$doc$$.ma_kh_no,id_app:$doc$$.id_app},{ngay_ct:1}).sort({ngay_ct:-1});if($dhgn_dhgn$$){var $so_ngay_da_mua_so_ngay_da_mua$$=moment().diff(moment($dhgn_dhgn$$.ngay_ct),"days");model.updateOne({ma_kh:$doc$$.ma_kh_no,id_app:$doc$$.id_app},{ngay_mua_gan_nhat:$dhgn_dhgn$$.ngay_ct,so_ngay_da_mua:$so_ngay_da_mua_so_ngay_da_mua$$})}}$doc$$.ma_kh_co&&
10
+ $doc$$.ma_kh_co!=$doc$$.ma_kh_no&&($dhgn_dhgn$$=await global.getModel("socai").findOne({ma_kh:$doc$$.ma_kh_co,id_app:$doc$$.id_app},{ngay_ct:1}).sort({ngay_ct:-1}))&&($so_ngay_da_mua_so_ngay_da_mua$$=moment().diff(moment($dhgn_dhgn$$.ngay_ct),"days"),model.updateOne({ma_kh:$doc$$.ma_kh_co,id_app:$doc$$.id_app},{ngay_mua_gan_nhat:$dhgn_dhgn$$.ngay_ct,so_ngay_da_mua:$so_ngay_da_mua_so_ngay_da_mua$$}))}});socaiSchema.index({id_app:1});socaiSchema.index({ma_dvcs:1});socaiSchema.index({so_ct:1});socaiSchema.index({ngay_ct:1});
9
11
  socaiSchema.index({so_ct:1,ngay_ct:1});socaiSchema.index({gio:1});socaiSchema.index({ngay:1});socaiSchema.index({thang:1});socaiSchema.index({quy:1});socaiSchema.index({nam:-1});socaiSchema.index({ma_ct:1});socaiSchema.index({id_ct:1});socaiSchema.index({ma_ct_goc:1});socaiSchema.index({id_ct_goc:1});socaiSchema.index({tk_no:1});socaiSchema.index({tk_co:1});socaiSchema.index({ma_kh_no:1});socaiSchema.index({ma_kh_co:1});socaiSchema.index({ma_nt:1});socaiSchema.index({ma_bp:1});socaiSchema.index({ma_phi:1});
10
12
  socaiSchema.index({ma_hd:1});socaiSchema.index({ma_dt:1});socaiSchema.index({ma_nv:1});socaiSchema.index({ma_sp:1});socaiSchema.index({ma_vt:1});socaiSchema.index({ma_kenh:1});socaiSchema.index({ma_td1:1});socaiSchema.index({ma_td2:1});socaiSchema.index({ma_td3:1});socaiSchema.index({ma_td4:1});socaiSchema.index({ma_td5:1});socaiSchema.index({ma_td6:1});socaiSchema.index({ma_td7:1});socaiSchema.index({ma_td8:1});socaiSchema.index({ma_td9:1});socaiSchema.index({ma_lo:1});socaiSchema.index({han_sd:-1});
11
13
  socaiSchema.index({ma_tt1:1});socaiSchema.index({ma_tt2:1});socaiSchema.index({ma_tt3:1});socaiSchema.index({id_lenhsx:1});socaiSchema.index({flag:1});socaiSchema.index({id_link:1});socaiSchema.index({id_cs:1});socaiSchema.index({id_app:1,id_ct:1,so_ct:-1,ngay_ct:-1,ma_kh_no:1,ma_kh_co:1,tk_no:1,tk_co:1});socaiSchema.index({dien_giai:"text"});socaiSchema.index({status:1});socaiSchema.index({user_created:1,visible_to:1,visible_to_users:1});socaiSchema.index({trang_thai:1});
@@ -1,7 +1,7 @@
1
- 'use strict';const taskSchema=new Schema({id_app:{type:String,required:!0},ten_cv:{type:String,required:!0},id_link:{type:String},id_job:{type:String},id_ct:{type:String},id_kh:{type:String,default:""},id_dt:{type:String,default:""},ten_kh:String,id_bp:{type:String,default:""},ten_bp:String,id_lh:{type:String,default:""},id_dokho:{type:String},diem_toi_thieu:Number,diem_toi_da:Number,diem_du_tinh:Number,chia_diem:Boolean,mieu_ta:{type:String},ghi_chu:{type:String},nh_cv:{type:String},ten_nh_cv:String,
2
- ma_loai_cv:String,phu_trach:{type:String,lowercase:!0},ten_phu_trach:String,location:{type:String},attends:[String],attend_groups:[String],nguoi_kiem_tra:String,nguoi_thuc_hien:String,start_date:{type:Date},due_date:{type:Date},finished_date:{type:Date},nhac_nho_truoc:{type:Number,default:60},reminder:{type:Date},repeat:{type:Number,default:0},priority:{type:Number,default:1},progress:{type:Number,default:0},percent:{type:Number,default:0,max:100},exfields:Schema.Types.Mixed,labels:[String],todos:Schema.Types.Mixed,
3
- stt:{type:Number,default:0},saved:Boolean,ma_ct:{type:String,uppercase:!0},so_ct:{type:String,uppercase:!0},ngay_ct:Date,ma_nt:{type:String,uppercase:!0},ty_gia:Number,thu_phi:Number,da_thu:Number,tk_no:{type:String,uppercase:!0},tk_co:{type:String,uppercase:!0},phi_dich_vu_1_lan:Number,ty_le_hoa_hong:Number,tien_hoa_hong:Number,tk_no_hh:{type:String,uppercase:!0},tk_co_hh:{type:String,uppercase:!0},ma_dvcs:String,group_id_link:String,group_name_link:String,status:{type:Boolean,default:!0},date_created:{type:Date,
4
- default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String]});taskSchema.index({id_app:1});taskSchema.index({id_app:1,ten_cv:1});taskSchema.index({id_app:1,start_date:-1});taskSchema.index({id_app:1,due_date:-1});
1
+ 'use strict';const taskSchema=new Schema({id_app:{type:String,required:!0},ten_cv:{type:String,required:!0},id_link:{type:String},id_job:{type:String},id_ct:{type:String},id_kh:{type:String,default:""},id_dt:{type:String,default:""},ten_kh:String,id_bp:{type:String,default:""},ten_bp:String,id_lh:{type:String,default:""},id_dokho:{type:String},diem_toi_thieu:Number,diem_toi_da:Number,diem_du_tinh:Number,chia_diem:Boolean,he_so_chia_diem:Schema.Types.Mixed,mieu_ta:{type:String},ghi_chu:{type:String},
2
+ nh_cv:{type:String},ten_nh_cv:String,ma_loai_cv:String,phu_trach:{type:String,lowercase:!0},ten_phu_trach:String,location:{type:String},attends:[String],attend_groups:[String],nguoi_kiem_tra:String,nguoi_thuc_hien:String,start_date:{type:Date},due_date:{type:Date},finished_date:{type:Date},nhac_nho_truoc:{type:Number,default:60},reminder:{type:Date},repeat:{type:Number,default:0},priority:{type:Number,default:1},progress:{type:Number,default:0},percent:{type:Number,default:0,max:100},exfields:Schema.Types.Mixed,
3
+ labels:[String],todos:Schema.Types.Mixed,stt:{type:Number,default:0},saved:Boolean,ma_ct:{type:String,uppercase:!0},so_ct:{type:String,uppercase:!0},ngay_ct:Date,ma_nt:{type:String,uppercase:!0},ty_gia:Number,thu_phi:Number,da_thu:Number,tk_no:{type:String,uppercase:!0},tk_co:{type:String,uppercase:!0},phi_dich_vu_1_lan:Number,ty_le_hoa_hong:Number,tien_hoa_hong:Number,tk_no_hh:{type:String,uppercase:!0},tk_co_hh:{type:String,uppercase:!0},ma_dvcs:String,group_id_link:String,group_name_link:String,
4
+ status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String]});taskSchema.index({id_app:1});taskSchema.index({id_app:1,ten_cv:1});taskSchema.index({id_app:1,start_date:-1});taskSchema.index({id_app:1,due_date:-1});
5
5
  taskSchema.index({ten_cv:"text",phu_trach:"text",ten_phu_trach:"text",ten_nh_cv:"text",ten_bp:"text",ten_kh:"text"},{name:"task_index_text"});taskSchema.index({id_app:1,nh_cv:1});taskSchema.index({id_app:1,phu_trach:1,ten_phu_trach:1});taskSchema.index({phu_trach:1});taskSchema.index({user_created:1});taskSchema.index({date_created:-1});taskSchema.index({date_updated:-1});taskSchema.index({id_app:1,labels:1});taskSchema.index({id_app:1,nguoi_thuc_hien:1});taskSchema.index({id_app:1,nguoi_kiem_tra:1});
6
6
  taskSchema.index({id_ct:1});taskSchema.index({ma_loai_cv:1});taskSchema.index({id_kh:1});taskSchema.index({id_bp:1});taskSchema.index({id_app:1,so_ct:1});taskSchema.index({id_link:1});taskSchema.index({id_job:1});taskSchema.index({progress:1});taskSchema.index({id_app:1,saved:1});taskSchema.index({saved:1});taskSchema.index({attends:1});taskSchema.index({id_app:1,attends:1});taskSchema.index({status:1});taskSchema.index({user_created:1,visible_to:1,visible_to_users:1});
7
7
  const model=mongoose.models.task||mongoose.model("task",taskSchema);module.exports=model;
@@ -2,5 +2,5 @@
2
2
  default:0},du_nt00:{type:Number,default:0},kc_yn:{type:Boolean,default:!1},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});tontucthoiScheam.index({id_app:1,nam:1,ma_dvcs:1,ma_vt:1,ma_kho:1,ma_lo:1,ma_tt1:1,ma_tt2:1,ma_tt3:1},{name:"tontucthoi_index_1"});tontucthoiScheam.index({status:1});tontucthoiScheam.index({user_created:1,visible_to:1,visible_to_users:1});
3
3
  const tontucthoi=mongoose.models.tontucthoi||mongoose.model("tontucthoi",tontucthoiScheam),ckvt=require("../libs/ckvt"),underscore=require("underscore"),async=require("async");
4
4
  tontucthoi.tinhTonTucThoi=function($sks$$,$cb$$){$cb$$||($cb$$=function($e$$){$e$$&&console.log("error when calc tontucthoi",$e$$)});underscore.isArray($sks$$)||($sks$$=[$sks$$]);async.mapSeries($sks$$,function($sk$$,$cb$$){if(!$sk$$)return $cb$$();let $query$$={id_app:$sk$$.id_app,ma_vt:$sk$$.ma_vt};tontucthoi.deleteMany($query$$,function($e$jscomp$2$$){if($e$jscomp$2$$)return $cb$$("remove tonkhotucthoi");$query$$.groupBy="id_app ma_vt ma_kho ma_dvcs ma_lo ma_tt1 ma_tt2 ma_tt3 han_sd".split(" ");
5
- $query$$.ngay=new Date;ckvt($query$$,async function($e$jscomp$1$$,$rs$$){if($e$jscomp$1$$)return $cb$$("error when calc tontucthoi\n"+$e$jscomp$1$$);$rs$$=$rs$$.filter($r$$=>$r$$.ma_vt&&$r$$.ma_kho&&$r$$.id_app);await $rs$$.asyncJoinModel2(null,global.getModel("dmkho"),{where:$item$$=>({id_app:$item$$.id_app,ma_kho:$item$$.ma_kho}),fields:"la_kho_online"});$rs$$&&0<$rs$$.length?tontucthoi.create($rs$$,async function($e$jscomp$0$$){if($e$jscomp$0$$)return $cb$$($e$jscomp$0$$);if($e$jscomp$0$$=await global.getModel("dmvt").findOne({id_app:$sk$$.id_app,
6
- ma_vt:$sk$$.ma_vt}))$e$jscomp$0$$.ton_kho_online_hien_tai=$rs$$.filter($r$$=>$r$$.la_kho_online).map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0),$e$jscomp$0$$.save($e$$=>{$e$$&&console.error($e$$)});$cb$$(null,$rs$$)}):$cb$$()})})},function($e$$,$rs$$){$cb$$($e$$,$rs$$)})};module.exports=tontucthoi;
5
+ $query$$.ngay=new Date;ckvt($query$$,async function($e$jscomp$1$$,$rs$$){if($e$jscomp$1$$)return $cb$$("error when calc tontucthoi\n"+$e$jscomp$1$$);$rs$$=$rs$$.filter($r$$=>$r$$.ma_vt&&$r$$.ma_kho&&$r$$.id_app);await $rs$$.asyncJoinModel2(null,global.getModel("dmkho"),{where:$item$$=>({id_app:$item$$.id_app,ma_kho:$item$$.ma_kho}),fields:"la_kho_online"});$rs$$&&0<$rs$$.length?tontucthoi.create($rs$$,async function($e$jscomp$0$$){if($e$jscomp$0$$)return $cb$$($e$jscomp$0$$);$e$jscomp$0$$=$rs$$.filter($r$$=>
6
+ $r$$.la_kho_online).map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);global.getModel("dmvt").updateOne({id_app:$sk$$.id_app,ma_vt:$sk$$.ma_vt},{ton_kho_online_hien_tai:$e$jscomp$0$$}).then(()=>{}).catch($e$$=>{$e$$&&console.error($e$$)});$cb$$(null,$rs$$)}):$cb$$()})})},function($e$$,$rs$$){$cb$$($e$$,$rs$$)})};module.exports=tontucthoi;
@@ -1,5 +1,5 @@
1
- 'use strict';const usergroupSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},group_name:{type:String,required:!0,maxlength:1024},phu_trach:{type:String,maxlength:1024,trim:!0},is_customer_group:{type:Boolean,default:!1},is_employee_group:{type:Boolean,default:!1},is_partner_group:{type:Boolean,default:!1},tang_duoc_gioi_thieu:Number,tang_gioi_thieu:Number,ty_le_hoa_hong:Number,tang_gioi_thieu_pt:Number,ty_le_hoa_hong_pt:Number,tang_gioi_thieu_denom:String,group_mother:String,status:{type:Boolean,
2
- default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String]});usergroupSchema.index({id_app:1,is_customer_group:1});usergroupSchema.index({id_app:1,is_employee_group:1});usergroupSchema.index({phu_trach:1});usergroupSchema.index({group_name:1});
3
- usergroupSchema.index({group_mother:1});usergroupSchema.index({status:1});usergroupSchema.index({user_created:1,visible_to:1,visible_to_users:1});usergroupSchema.index({group_name:"text"});const model=mongoose.models.usergroup||mongoose.model("usergroup",usergroupSchema);model.referenceKeys={_id:[{model:"participant",key:"group_id",error:"Kh\u00f4ng th\u1ec3 x\u00f3a nh\u00f3m n\u00e0y."}]};
4
- model.getInfo=async($id_app$$,$condition$$,$fields$$)=>{$condition$$.id_app=$id_app$$;return new Promise(($resolve$$,$reject$$)=>{model.findOne($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$||!$rs$$)return $reject$$(Error($e$$?$e$$.message:`Can't find user group:${$condition$$}`));$resolve$$($fields$$?$rs$$[$fields$$]:$rs$$)})})};
1
+ 'use strict';const usergroupSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},group_name:{type:String,required:!0,maxlength:1024},phu_trach:{type:String,maxlength:1024,trim:!0},is_customer_group:{type:Boolean,default:!1},is_employee_group:{type:Boolean,default:!1},is_partner_group:{type:Boolean,default:!1},tang_duoc_gioi_thieu:Number,tang_gioi_thieu:Number,ty_le_hoa_hong:Number,tang_gioi_thieu_pt:Number,ty_le_hoa_hong_pt:Number,tang_gioi_thieu_denom:String,group_mother:String,loai_nh:{type:Number,
2
+ default:1},bac:Number,sysorder:String,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String]});usergroupSchema.index({id_app:1,is_customer_group:1});usergroupSchema.index({id_app:1,is_employee_group:1});
3
+ usergroupSchema.index({phu_trach:1});usergroupSchema.index({group_name:1});usergroupSchema.index({group_mother:1});usergroupSchema.index({loai_nh:1});usergroupSchema.index({bac:1});usergroupSchema.index({sysorder:1});usergroupSchema.index({status:1});usergroupSchema.index({user_created:1,visible_to:1,visible_to_users:1});usergroupSchema.index({group_name:"text"});const model=mongoose.models.usergroup||mongoose.model("usergroup",usergroupSchema);
4
+ model.referenceKeys={_id:[{model:"participant",key:"group_id",error:"Kh\u00f4ng th\u1ec3 x\u00f3a nh\u00f3m n\u00e0y."}]};model.getInfo=async($id_app$$,$condition$$,$fields$$)=>{$condition$$.id_app=$id_app$$;return new Promise(($resolve$$,$reject$$)=>{model.findOne($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$||!$rs$$)return $reject$$(Error($e$$?$e$$.message:`Can't find user group:${$condition$$}`));$resolve$$($fields$$?$rs$$[$fields$$]:$rs$$)})})};
5
5
  model.getList=async($id_app$$,$condition$$)=>{$condition$$.id_app=$id_app$$;return new Promise(($resolve$$,$reject$$)=>{model.find($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));$resolve$$($rs$$||[])})})};module.exports=model;
@@ -2,37 +2,37 @@
2
2
  spend,getTxStatus,txQuery,bcQuery,tdQuery,initSocket,createTx,getLatestHash,getHashById,mining}=require("../../libs/blockchainconnect");
3
3
  module.exports=function($contr_router$$){initSocket("MAINNET");initSocket("TESTNET");$contr_router$$=new controller($contr_router$$,model,"asskey",{unique:["address"],sort:{date_created:1},notNeedRight:!0,requireOtp:($data$$,$options$$)=>"delete"==$options$$.action?!0:!1,onFinding:async($obj$$,$condition$$,$next$$,$options$$={})=>{$options$$.req&&$options$$.req.query&&!$options$$.req.query.has_balance&&($options$$.req.query.has_balance=$condition$$.has_balance);delete $condition$$.has_balance;if($options$$.req&&
4
4
  $options$$.req.query&&!$options$$.req.query.count&&0===await model.countDocuments({user_created:$obj$$.email,id_app:$obj$$.current_id_app,wallet_type:{$ne:1}})){$obj$$=new model({user_created:$obj$$.email,username:$obj$$.email,id_app:$obj$$.current_id_app});$options$$=await DirectSecp256k1HdWallet.generate(24,{prefix:configs.ADDRESS_PREFIX});let $accounts$$=await $options$$.getAccounts();$obj$$.address=$accounts$$[0].address;$obj$$.mnemonic=$options$$.mnemonic;$obj$$.name="T\u00e0i kho\u1ea3n ch\u00ednh";
5
- $obj$$.asset=configs.MAIN_DENOM;await $obj$$.save()}$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$,$options$$={})=>{let $network$$="MAINNET",$app$$=await global.getModel("app").findOne({_id:$user$$.current_id_app},{wallet_network:1}).lean();$app$$&&$app$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$$.wallet_network]&&($network$$=$app$$.wallet_network);await $items$$.asyncJoinModel2(null,User,{where:{username:"email"},fields:{fullname:"name"}});$options$$.req&&$options$$.req.query&&
6
- $options$$.req.query.has_balance?async.mapSeries($items$$,($item$$,$callback$$)=>{setImmediate(async()=>{delete $item$$.mnemonic;delete $item$$.private_key;$item$$.name=$item$$.name.replace("V\u00ed","T\u00e0i kho\u1ea3n").replace("v\u00ed","t\u00e0i kho\u1ea3n");try{let $bls$$=await bankBalancesGet($item$$.address,$network$$);await $bls$$.filter($b$$=>$b$$.denom!==configs.MAIN_DENOM).asyncJoinModel2($user$$.current_id_app,assinvestment,{where:{denom:"token"},fields:[{price:"gia"},"id_product","id_period"]});
7
- $bls$$.forEach($r$$=>{$r$$.amount=Number($r$$.amount);$r$$.price=$r$$.price||1;$r$$.value=$r$$.price*$r$$.amount;delete $r$$.key});$item$$.balances=$bls$$;$callback$$(null,$item$$)}catch($e$$){$callback$$($e$$)}})},$e$$=>$next$$($e$$)):async.mapSeries($items$$,($item$$,$callback$$)=>{setImmediate(()=>{delete $item$$.mnemonic;delete $item$$.private_key;$item$$.name=$item$$.name.replace("V\u00ed","T\u00e0i kho\u1ea3n").replace("v\u00ed","t\u00e0i kho\u1ea3n");$callback$$()})},()=>{$next$$(null,$items$$)})}});
8
- $contr_router$$.creating=async($user$$,$obj$$,$next$$)=>{if(3<=await model.countDocuments({user_created:$user$$.email,id_app:$user$$.current_id_app,asset:{$nin:["BTC","ETH"]}}))return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 t\u1ea1o th\u00eam v\u00ed m\u1edbi");$obj$$.username||($obj$$.username=$user$$.email);try{let $wallet$$;if($obj$$.mnemonic){if(await model.findOne({id_app:$user$$.current_id_app,mnemonic:$obj$$.mnemonic}))return $next$$("This wallet was added to your account");$wallet$$=await DirectSecp256k1HdWallet.fromMnemonic($obj$$.mnemonic,
9
- {prefix:configs.ADDRESS_PREFIX})}else $wallet$$=await DirectSecp256k1HdWallet.generate(24,{prefix:configs.ADDRESS_PREFIX});let $accounts$$=await $wallet$$.getAccounts();$obj$$.address=$accounts$$[0].address;$obj$$.mnemonic=$wallet$$.mnemonic;$next$$(null,$obj$$)}catch($e$$){$next$$($e$$.message||$e$$.error||$e$$)}};$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created&&!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("Can't delete this key");global.client_cosmos=
10
- global.client_cosmos||{};delete global.client_cosmos[$obj$$._id.toString()];Receiver.deleteMany({address:$obj$$.address});$fn$$(null,$obj$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){$fn$$("Can't update this wallet")};$contr_router$$.createRoute(":address/balance",async($req$$,$fn$$)=>{let $address$$=$req$$.params.address,$network$$="MAINNET",$app$$=await global.getModel("app").findOne({_id:$req$$.user.current_id_app}).lean();$app$$&&$app$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$$.wallet_network]&&
11
- ($network$$=$app$$.wallet_network);try{const $bls$$=await bankBalancesGet($address$$,$network$$);await $bls$$.filter($b$$=>$b$$.denom!==configs.MAIN_DENOM).asyncJoinModel2($req$$.user.current_id_app,assinvestment,{where:{denom:"token"},asyncSetFields:async($item$$,$investment_ref$$,$callback$$)=>{$item$$.price=$investment_ref$$.gia;$investment_ref$$={...$investment_ref$$};var $ivs_tong_so_luong$$=await bcQuery("investment/"+$investment_ref$$.id,$network$$);$investment_ref$$.da_dao_han=$ivs_tong_so_luong$$.Investment.daDaoHan;
12
- $investment_ref$$.token=$ivs_tong_so_luong$$.Investment.token;$investment_ref$$.ngay_dao_han=Number($ivs_tong_so_luong$$.Investment.ngayDaoHan)?new Date(1E3*Number($ivs_tong_so_luong$$.Investment.ngayDaoHan)):null;$investment_ref$$.ngay_phat_hanh=new Date(1E3*Number($ivs_tong_so_luong$$.Investment.ngayPhatHanh));$investment_ref$$.id_product=$ivs_tong_so_luong$$.Investment.idProduct;$investment_ref$$.product_token=$ivs_tong_so_luong$$.Investment.productToken;$investment_ref$$.gia=Number($ivs_tong_so_luong$$.Investment.gia);
13
- $investment_ref$$.so_luong=Number($ivs_tong_so_luong$$.Investment.soLuong);$investment_ref$$.da_rut_von=Number($ivs_tong_so_luong$$.Investment.daRutVon);$investment_ref$$.lai_suat_cam_ket=Number($ivs_tong_so_luong$$.Investment.laiSuatCamKet);$investment_ref$$.lai_suat_truoc_han=Number($ivs_tong_so_luong$$.Investment.laiSuatTruocHan);$investment_ref$$.ky_han=Number($ivs_tong_so_luong$$.Investment.kyHan);$investment_ref$$.cho_phep_rut_von=$ivs_tong_so_luong$$.Investment.choPhepRutVon;$investment_ref$$.cho_phep_chuyen_nhuong=
14
- $ivs_tong_so_luong$$.Investment.choPhepChuyenNhuong;$investment_ref$$.denom=$ivs_tong_so_luong$$.Investment.denom;$investment_ref$$.da_dao_han=$ivs_tong_so_luong$$.Investment.daDaoHan;$investment_ref$$.lai_da_tra=Number($ivs_tong_so_luong$$.Investment.laiDaTra);await [$investment_ref$$].asyncJoinModel2($req$$.user.current_id_app,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham","logo","hinh_anh",{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},
15
- {tong_so_token_phat_hanh:"tong_so_token"}]});await [$investment_ref$$].asyncJoinModel2($req$$.user.current_id_app,assperiod,{where:{id_period:"id",id_product:"id_product"},fields:"ten_lh_dt ten_ky_han id_rpt ky_han ky_tinh_lai loi_nhuan_duoc_chia goi_dau_tu tru_lai_da_tra".split(" ")});$investment_ref$$.wallet_address=$address$$;$ivs_tong_so_luong$$=$investment_ref$$.so_luong;$investment_ref$$.so_luong=$item$$.amount;$investment_ref$$.con_lai=$item$$.amount;$investment_ref$$.lai_da_tra&&0<$ivs_tong_so_luong$$&&
16
- ($investment_ref$$.lai_da_tra_1_token=Math.roundBy($investment_ref$$.lai_da_tra/$ivs_tong_so_luong$$),$investment_ref$$.lai_da_tra=$investment_ref$$.lai_da_tra_1_token*$investment_ref$$.con_lai);$investment_ref$$.tong_gia_tri=$investment_ref$$.so_luong*$investment_ref$$.gia;$investment_ref$$.lai_du_tinh=Math.roundBy($investment_ref$$.lai_suat_cam_ket/365/100*$investment_ref$$.tong_gia_tri*$investment_ref$$.ky_han);$investment_ref$$.tong_gia_tri_dao_han=$investment_ref$$.tong_gia_tri+$investment_ref$$.lai_du_tinh;
17
- $investment_ref$$.ky_han&&!$investment_ref$$.co_phan?($investment_ref$$.so_ngay_hien_tai=Math.roundBy(((new Date).getTime()-(new Date($investment_ref$$.ngay_phat_hanh)).getTime())/864E5),$investment_ref$$.tien_lai_hien_tai=Math.roundBy(($investment_ref$$.lai_suat_cam_ket||0)/365/100*$investment_ref$$.so_ngay_hien_tai*$investment_ref$$.tong_gia_tri),$investment_ref$$.tien_lai_truoc_han_hien_tai=Math.roundBy(($investment_ref$$.lai_suat_truoc_han||0)/365/100*$investment_ref$$.so_ngay_hien_tai*$investment_ref$$.tong_gia_tri)):
18
- ($investment_ref$$.tien_lai_hien_tai=0,$investment_ref$$.so_ngay_hien_tai=0);$investment_ref$$.gia_ban_de_xuat=$investment_ref$$.so_luong?Math.roundBy(($investment_ref$$.tong_gia_tri+$investment_ref$$.tien_lai_hien_tai)/$investment_ref$$.so_luong):0;if($investment_ref$$.goi_dau_tu)try{$investment_ref$$.market_value=await assinvestment.getInvestmentMarketValue($investment_ref$$.id_app,$investment_ref$$.token)}catch($e$$){console.error($e$$)}$item$$.investment=$investment_ref$$;$callback$$()}});$bls$$.forEach($r$$=>
19
- {$r$$.amount=Number($r$$.amount);$r$$.price=$r$$.price||1;$r$$.value=$r$$.price*$r$$.amount;delete $r$$.key});$fn$$(null,$bls$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});const $handleResult$$=$assreq_data$$=>{$assreq_data$$._id&&($assreq_data$$.trans_id=$assreq_data$$._id.toString());delete $assreq_data$$.trang_thai;delete $assreq_data$$._id;delete $assreq_data$$.__v;delete $assreq_data$$.transaction;delete $assreq_data$$.id_app;
20
- delete $assreq_data$$.exfields;delete $assreq_data$$.status;delete $assreq_data$$.date_created;delete $assreq_data$$.date_updated;delete $assreq_data$$.user_created;delete $assreq_data$$.user_updated;return $assreq_data$$},$permission$$=require("../../libs/permission");$contr_router$$.createRoute("spend",async($req$$,$fn$$)=>{var $address$$=await global.getModel("assuser_identity").findOne({id_app:$req$$.user.current_id_app,user_created:$req$$.user.email}).lean();if(!$address$$)return $fn$$({error:"B\u1ea1n c\u1ea7n x\u00e1c th\u1ef1c th\u00f4ng tin ng\u01b0\u1eddi d\u00f9ng tr\u01b0\u1edbc khi th\u1ef1c hi\u1ec7n giao d\u1ecbch"});
21
- if("1"!==$address$$.trang_thai)return $fn$$({error:"H\u1ed3 s\u01a1 th\u00f4ng tin c\u1ee7a b\u1ea1n ch\u01b0a \u0111\u01b0\u1ee3c duy\u1ec7t"});let $data$$=$req$$.body;$address$$=$data$$.from;const $to_address$$=$data$$.to||$data$$.receiver_address;let {denom:$denom$$,amount:$amount$$,memo:$memo$$}=$data$$;if(!($address$$&&$to_address$$&&$denom$$&&$amount$$))return $fn$$({error:"Data miss 'from' or 'to' or 'denom' or 'amount'"});if($address$$===$to_address$$)return $fn$$({error:"\u0110\u1ecba ch\u1ec9 v\u00ed g\u1eedi v\u00e0 nh\u1eadn ph\u1ea3i kh\u00e1c nhau"});
22
- try{await $permission$$.verifyOTP($req$$.user.email,$data$$["otp-id"],$data$$["otp-code"])}catch($e$$){return $fn$$({error:$e$$.message||$e$$.error||$e$$,code:4001})}if($data$$.assrequest_id){if(!global.mongoose.Types.ObjectId.isValid($data$$.assrequest_id))return $fn$$({error:"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7"});var $_url_assreq$$=await assrequest.findOne({_id:$data$$.assrequest_id,amount:$amount$$,denom:$denom$$,receiver_address:$to_address$$,request_id:$data$$.request_id,
23
- order_id:$data$$.order_id});if(!$_url_assreq$$)return $fn$$({error:"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7"});if("1"===$_url_assreq$$.trang_thai)return $fn$$({error:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n"});if("9"===$_url_assreq$$.trang_thai)return $fn$$({error:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb h\u1ee7y"});$memo$$=$memo$$||$data$$.order_info}try{const $rs$$=await spend($req$$.user.current_id_app,$req$$.user.token,$address$$,
24
- $to_address$$,{denom:$denom$$,amount:$amount$$,memo:$memo$$});if($rs$$.code)return 5===$rs$$.code?$fn$$({error:"B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"}):$fn$$({error:$rs$$.rawLog});let $walletReceiver$$=await model.findOne({id_app:$req$$.user.current_id_app,address:$to_address$$});if($walletReceiver$$){let $_userReceiver$$=await User.findOne({email:$walletReceiver$$.username});Receiver.findOne({id_app:$req$$.user.current_id_app,address:$to_address$$,
25
- user_created:$req$$.user.email},($e$$,$rs$$)=>{$rs$$||Receiver.create({id_app:$req$$.user.current_id_app,name:$data$$.name||($_userReceiver$$||{}).name,address:$to_address$$,user_created:$req$$.user.email})})}if($_url_assreq$$){$_url_assreq$$.trang_thai="1";$_url_assreq$$.sender_address=$address$$;$_url_assreq$$.sender_name=$data$$.sender_name||$req$$.user.name;$_url_assreq$$.sender_user=$req$$.user.email;$_url_assreq$$.sender_date=new Date;$_url_assreq$$.transaction=$rs$$;$_url_assreq$$.date_updated=
26
- new Date;await $_url_assreq$$.save();let $ctrlReq$$=global.controllers.ASSREQUEST,$assreq_views$$=await $ctrlReq$$.asyncView($req$$.user,[$_url_assreq$$.toObject()],{req:$req$$});controller.pushNotification($ctrlReq$$,$assreq_views$$[0]);const $assreq_data$$=$_url_assreq$$.toObject();$assreq_data$$.is_success=!0;$assreq_data$$.message="Giao d\u1ecbch th\u00e0nh c\u00f4ng";let $returnData$$=$handleResult$$($assreq_data$$);if($assreq_data$$.return_url){$_url_assreq$$="";for(let $key$$ in $returnData$$)$_url_assreq$$=
27
- $_url_assreq$$?`${$_url_assreq$$}&${$key$$}=${encodeURIComponent($returnData$$[$key$$])}`:`${$key$$}=${encodeURIComponent($returnData$$[$key$$])}`;$_url_assreq$$=`${$assreq_data$$.return_url}?${$_url_assreq$$}`;$returnData$$.return_url=$_url_assreq$$}return $fn$$(null,$returnData$$)}$fn$$(null,$rs$$)}catch($e$$){console.error($e$$),$fn$$({error:$e$$.message||$e$$.error||$e$$})}},{method:"POST"});$contr_router$$.createRoute(":address/info",async($req$$,$fn$$)=>{let $address$$=$req$$.params.address;
28
- try{let $info$$=await getKeyInfo($req$$.user.current_id_app,$req$$.user.email,$address$$);$fn$$(null,$info$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute(":address/download",async($req$$,$fn$$)=>{if(!$req$$.query["otp-id"]||!$req$$.query["otp-code"])return $fn$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u otp-id v\u00e0 otp-code");try{await $permission$$.verifyOTP($req$$.user.email,$req$$.query["otp-id"],
29
- $req$$.query["otp-code"])}catch($e$$){return $fn$$($e$$.message||$e$$.error||$e$$)}let $address$$=$req$$.params.address;try{let $wallet$$=await getWallet($req$$.user.current_id_app,$req$$.user.email,$address$$);$fn$$(null,$wallet$$.mnemonic)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute("txs/:tx_id",async($req$$,$fn$$)=>{let $network$$="MAINNET",$app$$=await global.getModel("app").findOne({_id:$req$$.user.current_id_app}).lean();
30
- $app$$&&$app$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$$.wallet_network]&&($network$$=$app$$.wallet_network);$req$$=$req$$.params.tx_id;let $rs$$;try{$rs$$=await getTxStatus($req$$,$network$$),$fn$$(null,$rs$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute("txs",async($req$$,$fn$$)=>{let $network$$="MAINNET";var $app$$=await global.getModel("app").findOne({_id:$req$$.user.current_id_app}).lean();
31
- $app$$&&$app$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$$.wallet_network]&&($network$$=$app$$.wallet_network);$app$$=$req$$.query.page||"1";let $limit$$=$req$$.query.limit||"20",$events$$;for(let $key$$ in $req$$.query)"page"!==$key$$&&"limit"!==$key$$&&"access_token"!==$key$$&&"id_app"!==$key$$&&($events$$=$events$$?`${$events$$}&${$key$$}=${$req$$.query[$key$$]}`:`${$key$$}=${$req$$.query[$key$$]}`);let $rs$$;try{$rs$$=await txQuery($events$$,$app$$,$limit$$,$network$$),$fn$$(null,$rs$$)}catch($e$$){if($e$$.message&&
32
- $e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute("query",async($req$$,$fn$$)=>{let $urlQuery$$=$req$$.query.path;if(!$urlQuery$$)return $fn$$({error:"query path is required"});let $network$$="MAINNET";var $app$jscomp$4_limit$$=await global.getModel("app").findOne({_id:$req$$.user.current_id_app}).lean();$app$jscomp$4_limit$$&&$app$jscomp$4_limit$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$jscomp$4_limit$$.wallet_network]&&
33
- ($network$$=$app$jscomp$4_limit$$.wallet_network);$app$jscomp$4_limit$$=$req$$.query.type;let $rs$$;try{"td"===$app$jscomp$4_limit$$||0<=$urlQuery$$.indexOf("block_search")||0<=$urlQuery$$.indexOf("tx_search")?$rs$$=await tdQuery($urlQuery$$,$network$$):($app$jscomp$4_limit$$=20,$req$$.query.limit&&($app$jscomp$4_limit$$=Number($req$$.query.limit),isNaN($app$jscomp$4_limit$$)&&($app$jscomp$4_limit$$=20)),$urlQuery$$=0>$urlQuery$$.indexOf("?")?$urlQuery$$+"?pagination.limit="+$app$jscomp$4_limit$$:
34
- $urlQuery$$+"&pagination.limit="+$app$jscomp$4_limit$$,$req$$.query.page&&isNaN(Number($req$$.query.page)),$app$jscomp$4_limit$$*=0,$urlQuery$$=0>$urlQuery$$.indexOf("?")?$urlQuery$$+"?pagination.offset="+$app$jscomp$4_limit$$:$urlQuery$$+"&pagination.offset="+$app$jscomp$4_limit$$,$req$$.query.reverse&&($urlQuery$$=0>$urlQuery$$.indexOf("?")?$urlQuery$$+"?pagination.reverse=true":$urlQuery$$+"&pagination.reverse=true"),$rs$$=await bcQuery($urlQuery$$,$network$$)),$fn$$(null,$rs$$)}catch($e$$){if($e$$.message&&
35
- $e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute("txs",async($req$$,$fn$$)=>{let {values:$values$$,fields:$fields$$,typeUrl:$typeUrl$$,type:$type$$,from_address:$from_address$$,fee:$fee$$,memo:$memo$$}=$req$$.body;if(0>$typeUrl$$.indexOf("MsgCreateFindhash"))try{await $permission$$.verifyOTP($req$$.user.email,$req$$.body["otp-id"],$req$$.body["otp-code"])}catch($e$$){return $fn$$({error:$e$$.message||$e$$.error||$e$$,code:4001})}createTx($req$$.user.current_id_app,
36
- $req$$.user.token,{values:$values$$,fields:$fields$$,typeUrl:$typeUrl$$,type:$type$$,from_address:$from_address$$,fee:$fee$$,memo:$memo$$}).then($rs$$=>{if($rs$$.code)return 5===$rs$$.code?$fn$$({error:"B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"}):$fn$$({error:$rs$$.rawLog});$fn$$(null,$rs$$)}).catch($e$$=>{$fn$$($e$$)})},{method:"POST"});$contr_router$$.createRoute("findhash/:id",async($app$jscomp$5_req$$,$fn$$)=>{let $id$$=$app$jscomp$5_req$$.params.id,
37
- $network$$="MAINNET";($app$jscomp$5_req$$=await global.getModel("app").findOne({_id:$app$jscomp$5_req$$.user.current_id_app}).lean())&&$app$jscomp$5_req$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$jscomp$5_req$$.wallet_network]&&($network$$=$app$jscomp$5_req$$.wallet_network);try{if("latest"===$id$$){let $lastest$$=await getLatestHash($network$$);if(!$lastest$$)return $fn$$("Not found latest hash");$fn$$(null,$lastest$$)}else{let $hash$$=await getHashById($id$$,$network$$);$fn$$(null,$hash$$)}}catch($e$$){$fn$$($e$$.message||
38
- $e$$.error||$e$$)}},{method:"GET"});$contr_router$$.createRoute("test-mining/:creator",async($req$$,$fn$$)=>{if("invncur@gmail.com"!==$req$$.user.email)return $fn$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p th\u1ef1c hi\u1ec7n ch\u1ee9c n\u0103ng n\u00e0y");mining($req$$.user.current_id_app,$req$$.user.email,$req$$.params.creator,$fn$$)},{method:"GET"});$contr_router$$.route()};
5
+ $obj$$.asset=configs.MAIN_DENOM;try{await $obj$$.save()}catch($e$$){console.error($e$$)}}$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$,$options$$={})=>{let $network$$="MAINNET",$app$$=await global.getModel("app").findOne({_id:$user$$.current_id_app},{wallet_network:1}).lean();$app$$&&$app$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$$.wallet_network]&&($network$$=$app$$.wallet_network);await $items$$.asyncJoinModel2(null,User,{where:{username:"email"},fields:{fullname:"name"}});
6
+ $options$$.req&&$options$$.req.query&&$options$$.req.query.has_balance?async.mapSeries($items$$,($item$$,$callback$$)=>{setImmediate(async()=>{delete $item$$.mnemonic;delete $item$$.private_key;$item$$.name=$item$$.name.replace("V\u00ed","T\u00e0i kho\u1ea3n").replace("v\u00ed","t\u00e0i kho\u1ea3n");try{let $bls$$=await bankBalancesGet($item$$.address,$network$$);await $bls$$.filter($b$$=>$b$$.denom!==configs.MAIN_DENOM).asyncJoinModel2($user$$.current_id_app,assinvestment,{where:{denom:"token"},
7
+ fields:[{price:"gia"},"id_product","id_period"]});$bls$$.forEach($r$$=>{$r$$.amount=Number($r$$.amount);$r$$.price=$r$$.price||1;$r$$.value=$r$$.price*$r$$.amount;delete $r$$.key});$item$$.balances=$bls$$;$callback$$(null,$item$$)}catch($e$$){$callback$$($e$$)}})},$e$$=>$next$$($e$$)):async.mapSeries($items$$,($item$$,$callback$$)=>{setImmediate(()=>{delete $item$$.mnemonic;delete $item$$.private_key;$item$$.name=$item$$.name.replace("V\u00ed","T\u00e0i kho\u1ea3n").replace("v\u00ed","t\u00e0i kho\u1ea3n");
8
+ $callback$$()})},()=>{$next$$(null,$items$$)})}});$contr_router$$.creating=async($user$$,$obj$$,$next$$)=>{if(3<=await model.countDocuments({user_created:$user$$.email,id_app:$user$$.current_id_app,asset:{$nin:["BTC","ETH"]}}))return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 t\u1ea1o th\u00eam v\u00ed m\u1edbi");$obj$$.username||($obj$$.username=$user$$.email);try{let $wallet$$;if($obj$$.mnemonic){if(await model.findOne({id_app:$user$$.current_id_app,mnemonic:$obj$$.mnemonic}))return $next$$("This wallet was added to your account");
9
+ $wallet$$=await DirectSecp256k1HdWallet.fromMnemonic($obj$$.mnemonic,{prefix:configs.ADDRESS_PREFIX})}else $wallet$$=await DirectSecp256k1HdWallet.generate(24,{prefix:configs.ADDRESS_PREFIX});let $accounts$$=await $wallet$$.getAccounts();$obj$$.address=$accounts$$[0].address;$obj$$.mnemonic=$wallet$$.mnemonic;$next$$(null,$obj$$)}catch($e$$){$next$$($e$$.message||$e$$.error||$e$$)}};$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created&&!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("Can't delete this key");
10
+ global.client_cosmos=global.client_cosmos||{};delete global.client_cosmos[$obj$$._id.toString()];Receiver.deleteMany({address:$obj$$.address});$fn$$(null,$obj$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){$fn$$("Can't update this wallet")};$contr_router$$.createRoute(":address/balance",async($req$$,$fn$$)=>{let $address$$=$req$$.params.address,$network$$="MAINNET",$app$$=await global.getModel("app").findOne({_id:$req$$.user.current_id_app}).lean();$app$$&&$app$$.wallet_network&&
11
+ configs.BLOCKCHAIN_NETWORKS[$app$$.wallet_network]&&($network$$=$app$$.wallet_network);try{const $bls$$=await bankBalancesGet($address$$,$network$$);await $bls$$.filter($b$$=>$b$$.denom!==configs.MAIN_DENOM).asyncJoinModel2($req$$.user.current_id_app,assinvestment,{where:{denom:"token"},asyncSetFields:async($item$$,$investment_ref$$,$callback$$)=>{$item$$.price=$investment_ref$$.gia;$investment_ref$$={...$investment_ref$$};var $ivs_tong_so_luong$$=await bcQuery("investment/"+$investment_ref$$.id,
12
+ $network$$);$investment_ref$$.da_dao_han=$ivs_tong_so_luong$$.Investment.daDaoHan;$investment_ref$$.token=$ivs_tong_so_luong$$.Investment.token;$investment_ref$$.ngay_dao_han=Number($ivs_tong_so_luong$$.Investment.ngayDaoHan)?new Date(1E3*Number($ivs_tong_so_luong$$.Investment.ngayDaoHan)):null;$investment_ref$$.ngay_phat_hanh=new Date(1E3*Number($ivs_tong_so_luong$$.Investment.ngayPhatHanh));$investment_ref$$.id_product=$ivs_tong_so_luong$$.Investment.idProduct;$investment_ref$$.product_token=$ivs_tong_so_luong$$.Investment.productToken;
13
+ $investment_ref$$.gia=Number($ivs_tong_so_luong$$.Investment.gia);$investment_ref$$.so_luong=Number($ivs_tong_so_luong$$.Investment.soLuong);$investment_ref$$.da_rut_von=Number($ivs_tong_so_luong$$.Investment.daRutVon);$investment_ref$$.lai_suat_cam_ket=Number($ivs_tong_so_luong$$.Investment.laiSuatCamKet);$investment_ref$$.lai_suat_truoc_han=Number($ivs_tong_so_luong$$.Investment.laiSuatTruocHan);$investment_ref$$.ky_han=Number($ivs_tong_so_luong$$.Investment.kyHan);$investment_ref$$.cho_phep_rut_von=
14
+ $ivs_tong_so_luong$$.Investment.choPhepRutVon;$investment_ref$$.cho_phep_chuyen_nhuong=$ivs_tong_so_luong$$.Investment.choPhepChuyenNhuong;$investment_ref$$.denom=$ivs_tong_so_luong$$.Investment.denom;$investment_ref$$.da_dao_han=$ivs_tong_so_luong$$.Investment.daDaoHan;$investment_ref$$.lai_da_tra=Number($ivs_tong_so_luong$$.Investment.laiDaTra);await [$investment_ref$$].asyncJoinModel2($req$$.user.current_id_app,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham","logo","hinh_anh",
15
+ {gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},{tong_so_token_phat_hanh:"tong_so_token"}]});await [$investment_ref$$].asyncJoinModel2($req$$.user.current_id_app,assperiod,{where:{id_period:"id",id_product:"id_product"},fields:"ten_lh_dt ten_ky_han id_rpt ky_han ky_tinh_lai loi_nhuan_duoc_chia goi_dau_tu tru_lai_da_tra".split(" ")});$investment_ref$$.wallet_address=$address$$;$ivs_tong_so_luong$$=$investment_ref$$.so_luong;$investment_ref$$.so_luong=$item$$.amount;
16
+ $investment_ref$$.con_lai=$item$$.amount;$investment_ref$$.lai_da_tra&&0<$ivs_tong_so_luong$$&&($investment_ref$$.lai_da_tra_1_token=Math.roundBy($investment_ref$$.lai_da_tra/$ivs_tong_so_luong$$),$investment_ref$$.lai_da_tra=$investment_ref$$.lai_da_tra_1_token*$investment_ref$$.con_lai);$investment_ref$$.tong_gia_tri=$investment_ref$$.so_luong*$investment_ref$$.gia;$investment_ref$$.lai_du_tinh=Math.roundBy($investment_ref$$.lai_suat_cam_ket/365/100*$investment_ref$$.tong_gia_tri*$investment_ref$$.ky_han);
17
+ $investment_ref$$.tong_gia_tri_dao_han=$investment_ref$$.tong_gia_tri+$investment_ref$$.lai_du_tinh;$investment_ref$$.ky_han&&!$investment_ref$$.co_phan?($investment_ref$$.so_ngay_hien_tai=Math.roundBy(((new Date).getTime()-(new Date($investment_ref$$.ngay_phat_hanh)).getTime())/864E5),$investment_ref$$.tien_lai_hien_tai=Math.roundBy(($investment_ref$$.lai_suat_cam_ket||0)/365/100*$investment_ref$$.so_ngay_hien_tai*$investment_ref$$.tong_gia_tri),$investment_ref$$.tien_lai_truoc_han_hien_tai=Math.roundBy(($investment_ref$$.lai_suat_truoc_han||
18
+ 0)/365/100*$investment_ref$$.so_ngay_hien_tai*$investment_ref$$.tong_gia_tri)):($investment_ref$$.tien_lai_hien_tai=0,$investment_ref$$.so_ngay_hien_tai=0);$investment_ref$$.gia_ban_de_xuat=$investment_ref$$.so_luong?Math.roundBy(($investment_ref$$.tong_gia_tri+$investment_ref$$.tien_lai_hien_tai)/$investment_ref$$.so_luong):0;if($investment_ref$$.goi_dau_tu)try{$investment_ref$$.market_value=await assinvestment.getInvestmentMarketValue($investment_ref$$.id_app,$investment_ref$$.token)}catch($e$$){console.error($e$$)}$item$$.investment=
19
+ $investment_ref$$;$callback$$()}});$bls$$.forEach($r$$=>{$r$$.amount=Number($r$$.amount);$r$$.price=$r$$.price||1;$r$$.value=$r$$.price*$r$$.amount;delete $r$$.key});$fn$$(null,$bls$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});const $handleResult$$=$assreq_data$$=>{$assreq_data$$._id&&($assreq_data$$.trans_id=$assreq_data$$._id.toString());delete $assreq_data$$.trang_thai;delete $assreq_data$$._id;delete $assreq_data$$.__v;
20
+ delete $assreq_data$$.transaction;delete $assreq_data$$.id_app;delete $assreq_data$$.exfields;delete $assreq_data$$.status;delete $assreq_data$$.date_created;delete $assreq_data$$.date_updated;delete $assreq_data$$.user_created;delete $assreq_data$$.user_updated;return $assreq_data$$},$permission$$=require("../../libs/permission");$contr_router$$.createRoute("spend",async($req$$,$fn$$)=>{var $address$$=await global.getModel("assuser_identity").findOne({id_app:$req$$.user.current_id_app,user_created:$req$$.user.email}).lean();
21
+ if(!$address$$)return $fn$$({error:"B\u1ea1n c\u1ea7n x\u00e1c th\u1ef1c th\u00f4ng tin ng\u01b0\u1eddi d\u00f9ng tr\u01b0\u1edbc khi th\u1ef1c hi\u1ec7n giao d\u1ecbch"});if("1"!==$address$$.trang_thai)return $fn$$({error:"H\u1ed3 s\u01a1 th\u00f4ng tin c\u1ee7a b\u1ea1n ch\u01b0a \u0111\u01b0\u1ee3c duy\u1ec7t"});let $data$$=$req$$.body;$address$$=$data$$.from;const $to_address$$=$data$$.to||$data$$.receiver_address;let {denom:$denom$$,amount:$amount$$,memo:$memo$$}=$data$$;if(!($address$$&&$to_address$$&&
22
+ $denom$$&&$amount$$))return $fn$$({error:"Data miss 'from' or 'to' or 'denom' or 'amount'"});if($address$$===$to_address$$)return $fn$$({error:"\u0110\u1ecba ch\u1ec9 v\u00ed g\u1eedi v\u00e0 nh\u1eadn ph\u1ea3i kh\u00e1c nhau"});try{await $permission$$.verifyOTP($req$$.user.email,$data$$["otp-id"],$data$$["otp-code"])}catch($e$$){return $fn$$({error:$e$$.message||$e$$.error||$e$$,code:4001})}if($data$$.assrequest_id){if(!global.mongoose.Types.ObjectId.isValid($data$$.assrequest_id))return $fn$$({error:"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7"});
23
+ var $_url_assreq$$=await assrequest.findOne({_id:$data$$.assrequest_id,amount:$amount$$,denom:$denom$$,receiver_address:$to_address$$,request_id:$data$$.request_id,order_id:$data$$.order_id});if(!$_url_assreq$$)return $fn$$({error:"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7"});if("1"===$_url_assreq$$.trang_thai)return $fn$$({error:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n"});if("9"===$_url_assreq$$.trang_thai)return $fn$$({error:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb h\u1ee7y"});
24
+ $memo$$=$memo$$||$data$$.order_info}try{const $rs$$=await spend($req$$.user.current_id_app,$req$$.user.token,$address$$,$to_address$$,{denom:$denom$$,amount:$amount$$,memo:$memo$$});if($rs$$.code)return 5===$rs$$.code?$fn$$({error:"B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"}):$fn$$({error:$rs$$.rawLog});let $walletReceiver$$=await model.findOne({id_app:$req$$.user.current_id_app,address:$to_address$$});if($walletReceiver$$){let $_userReceiver$$=
25
+ await User.findOne({email:$walletReceiver$$.username});Receiver.findOne({id_app:$req$$.user.current_id_app,address:$to_address$$,user_created:$req$$.user.email},($e$$,$rs$$)=>{$rs$$||Receiver.create({id_app:$req$$.user.current_id_app,name:$data$$.name||($_userReceiver$$||{}).name,address:$to_address$$,user_created:$req$$.user.email})})}if($_url_assreq$$){$_url_assreq$$.trang_thai="1";$_url_assreq$$.sender_address=$address$$;$_url_assreq$$.sender_name=$data$$.sender_name||$req$$.user.name;$_url_assreq$$.sender_user=
26
+ $req$$.user.email;$_url_assreq$$.sender_date=new Date;$_url_assreq$$.transaction=$rs$$;$_url_assreq$$.date_updated=new Date;await $_url_assreq$$.save();let $ctrlReq$$=global.controllers.ASSREQUEST,$assreq_views$$=await $ctrlReq$$.asyncView($req$$.user,[$_url_assreq$$.toObject()],{req:$req$$});controller.pushNotification($ctrlReq$$,$assreq_views$$[0]);const $assreq_data$$=$_url_assreq$$.toObject();$assreq_data$$.is_success=!0;$assreq_data$$.message="Giao d\u1ecbch th\u00e0nh c\u00f4ng";let $returnData$$=
27
+ $handleResult$$($assreq_data$$);if($assreq_data$$.return_url){$_url_assreq$$="";for(let $key$$ in $returnData$$)$_url_assreq$$=$_url_assreq$$?`${$_url_assreq$$}&${$key$$}=${encodeURIComponent($returnData$$[$key$$])}`:`${$key$$}=${encodeURIComponent($returnData$$[$key$$])}`;$_url_assreq$$=`${$assreq_data$$.return_url}?${$_url_assreq$$}`;$returnData$$.return_url=$_url_assreq$$}return $fn$$(null,$returnData$$)}$fn$$(null,$rs$$)}catch($e$$){console.error($e$$),$fn$$({error:$e$$.message||$e$$.error||$e$$})}},
28
+ {method:"POST"});$contr_router$$.createRoute(":address/info",async($req$$,$fn$$)=>{let $address$$=$req$$.params.address;try{let $info$$=await getKeyInfo($req$$.user.current_id_app,$req$$.user.email,$address$$);$fn$$(null,$info$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute(":address/download",async($req$$,$fn$$)=>{if(!$req$$.query["otp-id"]||!$req$$.query["otp-code"])return $fn$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u otp-id v\u00e0 otp-code");
29
+ try{await $permission$$.verifyOTP($req$$.user.email,$req$$.query["otp-id"],$req$$.query["otp-code"])}catch($e$$){return $fn$$($e$$.message||$e$$.error||$e$$)}let $address$$=$req$$.params.address;try{let $wallet$$=await getWallet($req$$.user.current_id_app,$req$$.user.email,$address$$);$fn$$(null,$wallet$$.mnemonic)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute("txs/:tx_id",async($req$$,$fn$$)=>{let $network$$=
30
+ "MAINNET",$app$$=await global.getModel("app").findOne({_id:$req$$.user.current_id_app}).lean();$app$$&&$app$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$$.wallet_network]&&($network$$=$app$$.wallet_network);$req$$=$req$$.params.tx_id;let $rs$$;try{$rs$$=await getTxStatus($req$$,$network$$),$fn$$(null,$rs$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute("txs",async($req$$,$fn$$)=>{let $network$$=
31
+ "MAINNET";var $app$$=await global.getModel("app").findOne({_id:$req$$.user.current_id_app}).lean();$app$$&&$app$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$$.wallet_network]&&($network$$=$app$$.wallet_network);$app$$=$req$$.query.page||"1";let $limit$$=$req$$.query.limit||"20",$events$$;for(let $key$$ in $req$$.query)"page"!==$key$$&&"limit"!==$key$$&&"access_token"!==$key$$&&"id_app"!==$key$$&&($events$$=$events$$?`${$events$$}&${$key$$}=${$req$$.query[$key$$]}`:`${$key$$}=${$req$$.query[$key$$]}`);
32
+ let $rs$$;try{$rs$$=await txQuery($events$$,$app$$,$limit$$,$network$$),$fn$$(null,$rs$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute("query",async($req$$,$fn$$)=>{let $urlQuery$$=$req$$.query.path;if(!$urlQuery$$)return $fn$$({error:"query path is required"});let $network$$="MAINNET";var $app$jscomp$4_limit$$=await global.getModel("app").findOne({_id:$req$$.user.current_id_app}).lean();$app$jscomp$4_limit$$&&
33
+ $app$jscomp$4_limit$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$jscomp$4_limit$$.wallet_network]&&($network$$=$app$jscomp$4_limit$$.wallet_network);$app$jscomp$4_limit$$=$req$$.query.type;let $rs$$;try{"td"===$app$jscomp$4_limit$$||0<=$urlQuery$$.indexOf("block_search")||0<=$urlQuery$$.indexOf("tx_search")?$rs$$=await tdQuery($urlQuery$$,$network$$):($app$jscomp$4_limit$$=20,$req$$.query.limit&&($app$jscomp$4_limit$$=Number($req$$.query.limit),isNaN($app$jscomp$4_limit$$)&&($app$jscomp$4_limit$$=
34
+ 20)),$urlQuery$$=0>$urlQuery$$.indexOf("?")?$urlQuery$$+"?pagination.limit="+$app$jscomp$4_limit$$:$urlQuery$$+"&pagination.limit="+$app$jscomp$4_limit$$,$req$$.query.page&&isNaN(Number($req$$.query.page)),$app$jscomp$4_limit$$*=0,$urlQuery$$=0>$urlQuery$$.indexOf("?")?$urlQuery$$+"?pagination.offset="+$app$jscomp$4_limit$$:$urlQuery$$+"&pagination.offset="+$app$jscomp$4_limit$$,$req$$.query.reverse&&($urlQuery$$=0>$urlQuery$$.indexOf("?")?$urlQuery$$+"?pagination.reverse=true":$urlQuery$$+"&pagination.reverse=true"),
35
+ $rs$$=await bcQuery($urlQuery$$,$network$$)),$fn$$(null,$rs$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute("txs",async($req$$,$fn$$)=>{let {values:$values$$,fields:$fields$$,typeUrl:$typeUrl$$,type:$type$$,from_address:$from_address$$,fee:$fee$$,memo:$memo$$}=$req$$.body;if(0>$typeUrl$$.indexOf("MsgCreateFindhash"))try{await $permission$$.verifyOTP($req$$.user.email,$req$$.body["otp-id"],$req$$.body["otp-code"])}catch($e$$){return $fn$$({error:$e$$.message||
36
+ $e$$.error||$e$$,code:4001})}createTx($req$$.user.current_id_app,$req$$.user.token,{values:$values$$,fields:$fields$$,typeUrl:$typeUrl$$,type:$type$$,from_address:$from_address$$,fee:$fee$$,memo:$memo$$}).then($rs$$=>{if($rs$$.code)return 5===$rs$$.code?$fn$$({error:"B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"}):$fn$$({error:$rs$$.rawLog});$fn$$(null,$rs$$)}).catch($e$$=>{$fn$$($e$$)})},{method:"POST"});$contr_router$$.createRoute("findhash/:id",
37
+ async($app$jscomp$5_req$$,$fn$$)=>{let $id$$=$app$jscomp$5_req$$.params.id,$network$$="MAINNET";($app$jscomp$5_req$$=await global.getModel("app").findOne({_id:$app$jscomp$5_req$$.user.current_id_app}).lean())&&$app$jscomp$5_req$$.wallet_network&&configs.BLOCKCHAIN_NETWORKS[$app$jscomp$5_req$$.wallet_network]&&($network$$=$app$jscomp$5_req$$.wallet_network);try{if("latest"===$id$$){let $lastest$$=await getLatestHash($network$$);if(!$lastest$$)return $fn$$("Not found latest hash");$fn$$(null,$lastest$$)}else{let $hash$$=
38
+ await getHashById($id$$,$network$$);$fn$$(null,$hash$$)}}catch($e$$){$fn$$($e$$.message||$e$$.error||$e$$)}},{method:"GET"});$contr_router$$.createRoute("test-mining/:creator",async($req$$,$fn$$)=>{if("invncur@gmail.com"!==$req$$.user.email)return $fn$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p th\u1ef1c hi\u1ec7n ch\u1ee9c n\u0103ng n\u00e0y");mining($req$$.user.current_id_app,$req$$.user.email,$req$$.params.creator,$fn$$)},{method:"GET"});$contr_router$$.route()};
@@ -1,7 +1,14 @@
1
- 'use strict';const model=global.getModel("customer"),User=global.getModel("user"),Trangthai=global.getModel("trangthai"),Participant=global.getModel("participant"),Usergroup=global.getModel("usergroup"),validator=require("validator"),group=global.getModel("group"),async=require("async"),controller=require("../../controllers/controller"),customer=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"customer",{sort:{date_updated:-1},unique:["ma_kh"],onView:function($user$$,
2
- $items$$,$next$$){$items$$.forEach($item$$=>{$item$$.email&&!validator.isEmail($item$$.email)&&($item$$.email="");delete $item$$.default_password});async.series({pt:$callback$$=>{$items$$.filter($item$$=>$item$$.phu_trach).joinModel2(null,User,[{where:{phu_trach:"email"},fields:[{ten_phu_trach:"name"}]}],function(){$callback$$()})},group:$callback$$=>{$items$$.filter($item$$=>$item$$.nh_kh).joinModel2($user$$.current_id_app,group,[{where:{nh_kh:"_id"},fields:[{ten_nh_kh:"group_name"}]}],function(){$callback$$()})},
3
- nguon:$callback$$=>{$items$$.filter($item$$=>$item$$.nguon_kh).joinModel2($user$$.current_id_app,global.getModel("dmnguonkh"),[{where:{nguon_kh:"_id"},fields:[{ten_nguon_kh:"ten_nguon_kh"}]}],function(){$callback$$()})},u:$callback$$=>{$items$$.filter($item$$=>$item$$.of_user).joinModel2(null,User,[{where:{of_user:"email"},fields:[{user_name:"name"}]}],function(){$callback$$()})},tt:$callback$$=>{$items$$.filter($item$$=>$item$$.trang_thai).joinModel2(null,Trangthai,[{where:$item$$=>({ma_trang_thai:$item$$.trang_thai,
4
- ma_ct:"CUSTOMER"}),fields:["ten_trang_thai","color"]}],function(){$callback$$()})}},()=>{$next$$(null,$items$$)})}});$contr_router$$.validating=async($id_app_user$$,$obj$$,$next$$)=>{if(!$obj$$.ma_kh&&$obj$$.ten_kh){$id_app_user$$=$id_app_user$$.current_id_app;try{let $ma_kh$$=await model.asyncCreateCustomerCode($id_app_user$$,$obj$$.ten_kh);$obj$$.ma_kh=$ma_kh$$;$next$$(null,$obj$$)}catch($e$$){console.error($e$$),$next$$($e$$)}}else $next$$(null,$obj$$)};$contr_router$$.route();$contr_router$$.on("saved",
5
- async $data$$=>{let $_usergroup$$;try{$_usergroup$$=await Usergroup.getInfo($data$$.id_app,{is_customer_group:!0})}catch($e$$){return}$data$$.of_user&&$_usergroup$$&&User.findOne({email:$data$$.of_user},($e$jscomp$1$$,$rs$$)=>{if($rs$$)Participant.createParticipant({id_app:$data$$.id_app,email:$data$$.of_user,group_id:$_usergroup$$._id,active:!0},$e$$=>{if($e$$)return console.log("can't add user",$data$$.of_user,"to company")});else{var $result$$=new User;$result$$.email=$data$$.of_user;$result$$.name=
6
- $data$$.ten_kh;$result$$.email2=$data$$.email;$result$$.local={};$result$$.local.email=$result$$.email;$result$$.local.name=$result$$.name;$result$$.local.picture="/images/avatar.jpg";$result$$.local.password=$result$$.generateHash($result$$.email+($data$$.default_password||$result$$.email+"@123456"));$result$$.save($e$jscomp$0$$=>{if($e$jscomp$0$$)return console.log($e$jscomp$0$$.message);Participant.createParticipant({id_app:$data$$.id_app,email:$result$$.email,group_id:$_usergroup$$._id,active:!0},
7
- $e$$=>{if($e$$)return console.log("can't add user",$result$$.email,"to company")})})}})})};module.exports=customer;
1
+ 'use strict';const model=global.getModel("customer"),dmnhkh=global.getModel("group"),User=global.getModel("user"),Trangthai=global.getModel("trangthai"),Participant=global.getModel("participant"),Usergroup=global.getModel("usergroup"),validator=require("validator"),group=global.getModel("group"),async=require("async"),controller=require("../../controllers/controller"),getAllChildrenUserGroup=async $chil_nh_kh_nh_vt_cons$$=>{let $rs$$=[$chil_nh_kh_nh_vt_cons$$];$chil_nh_kh_nh_vt_cons$$=(await Usergroup.find({group_mother:$chil_nh_kh_nh_vt_cons$$,
2
+ status:!0},{_id:1,group_mother:1}).lean()).filter($n$$=>$n$$._id.toString()!=$n$$.group_mother).map($d$$=>$d$$._id);0<$chil_nh_kh_nh_vt_cons$$.length&&($chil_nh_kh_nh_vt_cons$$=await Promise.all($chil_nh_kh_nh_vt_cons$$.map($nh$$=>getAllChildrenUserGroup($nh$$))),$chil_nh_kh_nh_vt_cons$$=$chil_nh_kh_nh_vt_cons$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]),$rs$$=[...$chil_nh_kh_nh_vt_cons$$,...$rs$$]);return $rs$$},getAllChildrenGroup=async $chil$jscomp$1_nh_kh$jscomp$1_nh_vt_cons$$=>{let $rs$$=[$chil$jscomp$1_nh_kh$jscomp$1_nh_vt_cons$$];
3
+ $chil$jscomp$1_nh_kh$jscomp$1_nh_vt_cons$$=(await dmnhkh.find({group_mother:$chil$jscomp$1_nh_kh$jscomp$1_nh_vt_cons$$,status:!0,group_type:"CUSTOMER"},{_id:1,group_mother:1}).lean()).filter($n$$=>$n$$._id.toString()!=$n$$.group_mother).map($d$$=>$d$$._id);0<$chil$jscomp$1_nh_kh$jscomp$1_nh_vt_cons$$.length&&($chil$jscomp$1_nh_kh$jscomp$1_nh_vt_cons$$=await Promise.all($chil$jscomp$1_nh_kh$jscomp$1_nh_vt_cons$$.map($nh$$=>getAllChildrenGroup($nh$$))),$chil$jscomp$1_nh_kh$jscomp$1_nh_vt_cons$$=$chil$jscomp$1_nh_kh$jscomp$1_nh_vt_cons$$.reduce(($a$$,
4
+ $b$$)=>$a$$.concat($b$$),[]),$rs$$=[...$chil$jscomp$1_nh_kh$jscomp$1_nh_vt_cons$$,...$rs$$]);return $rs$$},customer=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"customer",{sort:{date_updated:-1},unique:["ma_kh"],onFinding:function($user$$,$condition$$,$next$$){async.parallel({user_group:$callback$$=>{$condition$$.user_group?getAllChildrenUserGroup($condition$$.user_group).then($groups$$=>{global.getModel("participant").find({id_app:$user$$.current_id_app,group_id:{$in:$groups$$}},
5
+ {email:1}).then($ps$$=>{$condition$$.phu_trach={$in:$ps$$.map($p$$=>$p$$.email)};delete $condition$$.user_group;$callback$$()}).catch($e$$=>{$callback$$($e$$)})}).catch($e$$=>{$callback$$($e$$)}):$callback$$()},user_of_bp:$callback$$=>{$condition$$.ma_bp?global.getModel("dmbp").getUsersByMaBP($user$$.current_id_app,$condition$$.ma_bp).then($users$$=>{console.log("users of department",$users$$);$condition$$.phu_trach={$in:$users$$};delete $condition$$.ma_bp;$callback$$()}).catch($e$$=>{$callback$$($e$$)}):
6
+ $callback$$()},nh_kh:$callback$$=>{$condition$$.nh_kh&&"string"==typeof $condition$$.nh_kh?getAllChildrenGroup($condition$$.nh_kh).then($nh_vt$$=>{$condition$$.nh_kh={$in:[...(new Set($nh_vt$$))]};$callback$$()}):$callback$$()},nh_kh2:$callback$$=>{$condition$$.nh_kh2&&"string"==typeof $condition$$.nh_kh2?getAllChildrenGroup($condition$$.nh_kh2).then($nh_vt$$=>{$condition$$.nh_kh2={$in:[...(new Set($nh_vt$$))]};$callback$$()}):$callback$$()},nh_kh3:$callback$$=>{$condition$$.nh_kh3&&"string"==typeof $condition$$.nh_kh3?
7
+ getAllChildrenGroup($condition$$.nh_kh3).then($nh_vt$$=>{$condition$$.nh_kh3={$in:[...(new Set($nh_vt$$))]};$callback$$()}):$callback$$()},nh_kh4:$callback$$=>{$condition$$.nh_kh4&&"string"==typeof $condition$$.nh_kh4?getAllChildrenGroup($condition$$.nh_kh4).then($nh_vt$$=>{$condition$$.nh_kh4={$in:[...(new Set($nh_vt$$))]};$callback$$()}):$callback$$()},nh_kh5:$callback$$=>{$condition$$.nh_kh5&&"string"==typeof $condition$$.nh_kh5?getAllChildrenGroup($condition$$.nh_kh5).then($nh_vt$$=>{$condition$$.nh_kh5=
8
+ {$in:[...(new Set($nh_vt$$))]};$callback$$()}):$callback$$()}},()=>{$next$$(null,$condition$$)})},onView:function($user$$,$items$$,$next$$,$options$$){$items$$.forEach($item$$=>{$item$$.email&&!validator.isEmail($item$$.email)&&($item$$.email="");delete $item$$.default_password});async.series({pt:$callback$$=>{$items$$.filter($item$$=>$item$$.phu_trach).joinModel2(null,User,[{where:{phu_trach:"email"},fields:[{ten_phu_trach:"name"}]}],function(){$callback$$()})},group:$callback$$=>{$items$$.filter($item$$=>
9
+ $item$$.nh_kh).joinModel2($user$$.current_id_app,group,[{where:{nh_kh:"_id"},fields:[{ten_nh_kh:"group_name"}]}],function(){$callback$$()})},u:$callback$$=>{$items$$.filter($item$$=>$item$$.of_user).joinModel2(null,User,[{where:{of_user:"email"},fields:[{user_name:"name"}]}],function(){$callback$$()})},tt:$callback$$=>{$items$$.filter($item$$=>$item$$.trang_thai).joinModel2(null,Trangthai,[{where:$item$$=>({ma_trang_thai:$item$$.trang_thai,ma_ct:"CUSTOMER"}),fields:["ten_trang_thai","color"]}],function(){$callback$$()})},
10
+ ngay_mua:$callback$jscomp$0$$=>{$options$$&&$options$$.req&&$options$$.req.query&&(!$options$$.req.query.fields||0<=$options$$.req.query.fields.indexOf("ngay_mua_gan_nhat"))&&model.updateActives?async.map($items$$.filter($item$$=>void 0===$item$$.ngay_mua_gan_nhat||void 0===$item$$.ngay_tuong_tac_gan_nhat),($item$$,$callback$$)=>{model.updateActives($item$$).then($rs$$=>{$item$$.ngay_mua_gan_nhat=$rs$$.ngay_mua_gan_nhat;$item$$.so_ngay_da_mua=$rs$$.so_ngay_da_mua;$callback$$()}).catch($e$$=>{console.error($e$$);
11
+ $callback$$()})},()=>{$callback$jscomp$0$$()}):$callback$jscomp$0$$()}},()=>{$next$$(null,$items$$)})}});$contr_router$$.validating=async($id_app_user$$,$obj$$,$next$$)=>{if(!$obj$$.ma_kh&&$obj$$.ten_kh){$id_app_user$$=$id_app_user$$.current_id_app;try{let $ma_kh$$=await model.asyncCreateCustomerCode($id_app_user$$,$obj$$.ten_kh);$obj$$.ma_kh=$ma_kh$$;$next$$(null,$obj$$)}catch($e$$){console.error($e$$),$next$$($e$$)}}else $next$$(null,$obj$$)};$contr_router$$.route();$contr_router$$.on("saved",async $data$$=>
12
+ {let $_usergroup$$;try{$_usergroup$$=await Usergroup.getInfo($data$$.id_app,{is_customer_group:!0})}catch($e$$){return}$data$$.of_user&&$_usergroup$$&&User.findOne({email:$data$$.of_user},($e$jscomp$1$$,$rs$$)=>{if($rs$$)Participant.createParticipant({id_app:$data$$.id_app,email:$data$$.of_user,group_id:$_usergroup$$._id,active:!0},$e$$=>{if($e$$)return console.log("can't add user",$data$$.of_user,"to company")});else{var $result$$=new User;$result$$.email=$data$$.of_user;$result$$.name=$data$$.ten_kh;
13
+ $result$$.email2=$data$$.email;$result$$.local={};$result$$.local.email=$result$$.email;$result$$.local.name=$result$$.name;$result$$.local.picture="/images/avatar.jpg";$result$$.local.password=$result$$.generateHash($result$$.email+($data$$.default_password||$result$$.email+"@123456"));$result$$.save($e$jscomp$0$$=>{if($e$jscomp$0$$)return console.log($e$jscomp$0$$.message);Participant.createParticipant({id_app:$data$$.id_app,email:$result$$.email,group_id:$_usergroup$$._id,active:!0},$e$$=>{if($e$$)return console.log("can't add user",
14
+ $result$$.email,"to company")})})}})})};module.exports=customer;
@@ -1,3 +1,7 @@
1
- 'use strict';const model=global.getModel("dmbp"),Participant=global.getModel("participant"),controller=require("../../controllers/controller"),async=require("async");
2
- module.exports=function($router$$){(new controller($router$$,model,"dmbp",{sort:{stt:1,ma_bp:1},unique:["ma_bp"],onView:function($user$$,$items$$,$next$$){async.series({pt:function($callback$$){$items$$.joinModel2($user$$.current_id_app,Participant,[{where:{phu_trach:"email"},fields:[{ten_phu_trach:"name"}]}],function(){$callback$$(null,$items$$)})},ph:function($callback$$){$items$$.joinModel2($user$$.current_id_app,Participant,[{where:{phoi_hop:"email"},fields:[{ten_phoi_hop:"name"}]}],function(){$callback$$(null,
3
- $items$$)})}},()=>{$next$$(null,$items$$)})}})).route()};
1
+ 'use strict';const model=global.getModel("dmbp"),Participant=global.getModel("participant"),controller=require("../../controllers/controller"),async=require("async"),getSysorder=function($item$$,$callback$$){let $sysorder$$=($item$$.stt||"0")+"-"+$item$$.ma_bp;$item$$.ma_bp_me?model.findOne({ma_bp:$item$$.ma_bp_me,id_app:$item$$.id_app}).lean().exec(function($e$$,$item_me$$){$item_me$$?getSysorder($item_me$$,function($rs$$){$sysorder$$=$rs$$+"---"+$sysorder$$;$callback$$($sysorder$$)}):$callback$$($sysorder$$)}):
2
+ $callback$$($sysorder$$)};
3
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"dmbp",{sort:{sysorder:1},unique:["ma_bp"],onView:function($user$$,$items$$,$next$$){async.series({pt:function($callback$$){$items$$.filter($item$$=>$item$$.phu_trach).joinModel2($user$$.current_id_app,Participant,[{where:{phu_trach:"email"},fields:[{ten_phu_trach:"name"}]}],function(){$callback$$(null,$items$$)})},ph:function($callback$$){$items$$.filter($item$$=>$item$$.phoi_hop).joinModel2($user$$.current_id_app,Participant,
4
+ [{where:{phoi_hop:"email"},fields:[{ten_phoi_hop:"name"}]}],function(){$callback$$(null,$items$$)})}},()=>{$next$$(null,$items$$)})}});$contr_router$$.route();$contr_router$$.deleting=function($user$$,$obj$$,$next$$){if(0===$obj$$.loai_nh)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a nh\u00f3m m\u1eb9"));$next$$(null,$obj$$)};$contr_router$$.created=function($user$$,$obj$$,$next$$){getSysorder($obj$$,function($rs$$){$obj$$.sysorder=$rs$$;$obj$$.bac=$rs$$.split("---").length;
5
+ model.findOneAndUpdate({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:1}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.updated=function($user$$,$obj$$,$next$$){getSysorder($obj$$,async function($loai_nh_rs$$){$obj$$.sysorder=$loai_nh_rs$$;$obj$$.bac=$loai_nh_rs$$.split("---").length;$loai_nh_rs$$=1;await model.findOne({ma_bp_me:$obj$$.ma_bp.toString(),id_app:$obj$$.id_app})&&($loai_nh_rs$$=0);$obj$$.loai_nh=$loai_nh_rs$$;model.findOneAndUpdate({_id:$obj$$._id},
6
+ {$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:$loai_nh_rs$$}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.on("saved",function($obj$jscomp$0$$){const $ma_bp_me$$=$obj$jscomp$0$$.ma_bp_me;$ma_bp_me$$&&model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,ma_bp:$ma_bp_me$$},{$set:{loai_nh:0}},function($error$$,$obj$$){$error$$?console.error($error$$):$obj$$?console.log("updated "+$obj$$._id):console.log("Not found mother account:"+$ma_bp_me$$)})});$contr_router$$.on("deleted",
7
+ function($obj$jscomp$0$$){$obj$jscomp$0$$.ma_bp_me&&model.findOne({ma_bp_me:$obj$jscomp$0$$.ma_bp_me,id_app:$obj$jscomp$0$$.id_app},function($error$jscomp$0$$,$acc$$){$error$jscomp$0$$||$acc$$||model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,ma_bp:$obj$jscomp$0$$.ma_bp_me},{$set:{loai_nh:1}},function($error$$,$obj$$){$error$$||$obj$$&&console.log("updated "+$obj$$._id)})})})};
@@ -1 +1,5 @@
1
- 'use strict';const model=global.getModel("group"),controller=require("../../controllers/controller"),dmnhkh=function($router$$){(new controller($router$$,model,"dmnhkh",{sort:{group_name:1},findExact:{group_type:1},keyValues:{group_type:"CUSTOMER"}})).route()};module.exports=dmnhkh;
1
+ 'use strict';const model=global.getModel("group"),controller=require("../../controllers/controller"),getSysorder=function($item$$,$callback$$){let $sysorder$$=$item$$._id.toString();$item$$.group_mother?model.findOne({_id:$item$$.group_mother}).lean().exec(function($e$$,$item_me$$){$item_me$$?getSysorder($item_me$$,function($rs$$){$sysorder$$=$rs$$+"---"+$sysorder$$;$callback$$($sysorder$$)}):$callback$$($sysorder$$)}):$callback$$($sysorder$$)},dmnhkh=function($contr_router$$){$contr_router$$=new controller($contr_router$$,
2
+ model,"dmnhkh",{sort:{sysorder:1},findExact:{group_type:1},keyValues:{group_type:"CUSTOMER"}});$contr_router$$.route();$contr_router$$.deleting=function($user$$,$obj$$,$next$$){if(0===$obj$$.loai_nh)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a nh\u00f3m m\u1eb9"));$next$$(null,$obj$$)};$contr_router$$.created=function($user$$,$obj$$,$next$$){getSysorder($obj$$,function($rs$$){$obj$$.sysorder=$rs$$;$obj$$.bac=$rs$$.split("---").length;model.findOneAndUpdate({_id:$obj$$._id},
3
+ {$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:1}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.updated=function($user$$,$obj$$,$next$$){getSysorder($obj$$,async function($loai_nh_rs$$){$obj$$.sysorder=$loai_nh_rs$$;$obj$$.bac=$loai_nh_rs$$.split("---").length;$loai_nh_rs$$=1;await model.findOne({group_mother:$obj$$._id.toString()})&&($loai_nh_rs$$=0);$obj$$.loai_nh=$loai_nh_rs$$;model.findOneAndUpdate({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,
4
+ loai_nh:$loai_nh_rs$$}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.on("saved",function($obj$jscomp$0$$){const $group_mother$$=$obj$jscomp$0$$.group_mother;$group_mother$$&&model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,_id:$group_mother$$},{$set:{loai_nh:0}},function($error$$,$obj$$){$error$$?console.error($error$$):$obj$$?console.log("updated "+$obj$$._id):console.log("Not found mother account:"+$group_mother$$)})});$contr_router$$.on("deleted",function($obj$jscomp$0$$){$obj$jscomp$0$$.group_mother&&
5
+ model.findOne({group_mother:$obj$jscomp$0$$.group_mother},function($error$jscomp$0$$,$acc$$){$error$jscomp$0$$||$acc$$||model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,_id:$obj$jscomp$0$$.group_mother},{$set:{loai_nh:1}},function($error$$,$obj$$){$error$$||$obj$$&&console.log("updated "+$obj$$._id)})})})};module.exports=dmnhkh;
@@ -1,6 +1,6 @@
1
1
  'use strict';const model=global.getModel("dmnvt"),controller=require("../../controllers/controller"),underscore=require("underscore");
2
- module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"dmnvt",{sort:{stt:1,ten_nh:1},onView:function($user$$,$items$$,$next$$){$items$$.joinModel($user$$.current_id_app,model,[{akey:"nh_me",bkey:"_id",fields:[{name:"ten_nh_me",value:"ten_nvt"}]}],function(){$items$$=underscore.sortBy($items$$,function($item$$){return $item$$.sysorder});$next$$(null,$items$$)})}});const $getSysorder$$=function($item$$,$callback$$){let $sysorder$$=$item$$._id.toString();$item$$.nh_me?
3
- model.findOne({_id:$item$$.nh_me}).lean().exec(function($e$$,$item_me$$){$item_me$$?$getSysorder$$($item_me$$,function($rs$$){$sysorder$$=$rs$$+"-"+$sysorder$$;$callback$$($sysorder$$)}):$callback$$($sysorder$$)}):$callback$$($sysorder$$)};$contr_router$$.route();$contr_router$$.deleting=function($user$$,$obj$$,$next$$){if(0===$obj$$.loai_nh)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a nh\u00f3m m\u1eb9"));$next$$(null,$obj$$)};$contr_router$$.created=function($user$$,$obj$$,
4
- $next$$){$getSysorder$$($obj$$,function($rs$$){$obj$$.sysorder=$rs$$;$obj$$.bac=$rs$$.split("-").length;model.findOneAndUpdate({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.updated=function($user$$,$obj$$,$next$$){$getSysorder$$($obj$$,function($rs$$){$obj$$.sysorder=$rs$$;$obj$$.bac=$rs$$.split("-").length;model.findOneAndUpdate({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder}},function($e$$){$e$$&&
5
- console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.on("saved",function($obj$jscomp$0$$){var $nh_me$$=$obj$jscomp$0$$.nh_me;$nh_me$$&&model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,_id:$nh_me$$},{$set:{loai_nh:0}},function($error$$,$obj$$){$error$$?console.error($error$$):$obj$$?console.log("updated "+$obj$$._id):console.log("Not found mother account:"+$nh_me$$)})});$contr_router$$.on("deleted",function($obj$jscomp$0$$){$obj$jscomp$0$$.nh_me&&model.findOne({nh_me:$obj$jscomp$0$$.nh_me},
6
- function($error$jscomp$0$$,$acc$$){$error$jscomp$0$$||$acc$$||model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,_id:$obj$jscomp$0$$.nh_me},{$set:{loai_nh:1}},function($error$$,$obj$$){$error$$||$obj$$&&console.log("updated "+$obj$$._id)})})})};
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"dmnvt",{sort:{sysorder:1},onView:function($user$$,$items$$,$next$$){$items$$.joinModel($user$$.current_id_app,model,[{akey:"nh_me",bkey:"_id",fields:[{name:"ten_nh_me",value:"ten_nvt"}]}],function(){$items$$=underscore.sortBy($items$$,function($item$$){return $item$$.sysorder});$next$$(null,$items$$)})}});const $getSysorder$$=function($item$$,$callback$$){let $sysorder$$=($item$$.stt||"0")+$item$$._id.toString();
3
+ $item$$.nh_me?model.findOne({_id:$item$$.nh_me}).lean().exec(function($e$$,$item_me$$){$item_me$$?$getSysorder$$($item_me$$,function($rs$$){$sysorder$$=$rs$$+"-"+$sysorder$$;$callback$$($sysorder$$)}):$callback$$($sysorder$$)}):$callback$$($sysorder$$)};$contr_router$$.route();$contr_router$$.deleting=function($user$$,$obj$$,$next$$){if(0===$obj$$.loai_nh)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a nh\u00f3m m\u1eb9"));$next$$(null,$obj$$)};$contr_router$$.created=function($user$$,
4
+ $obj$$,$next$$){$getSysorder$$($obj$$,function($rs$$){$obj$$.sysorder=$rs$$;$obj$$.bac=$rs$$.split("-").length;model.findOneAndUpdate({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:1}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.updated=function($user$$,$obj$$,$next$$){$getSysorder$$($obj$$,async function($loai_nh_rs$$){$obj$$.sysorder=$loai_nh_rs$$;$obj$$.bac=$loai_nh_rs$$.split("-").length;$loai_nh_rs$$=1;await model.findOne({nh_me:$obj$$._id.toString()})&&
5
+ ($loai_nh_rs$$=0);$obj$$.loai_nh=$loai_nh_rs$$;model.findOneAndUpdate({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:$loai_nh_rs$$}},function($e$$){$e$$&&console.log($e$$)});$next$$(null,$obj$$)})};$contr_router$$.on("saved",function($obj$jscomp$0$$){const $nh_me$$=$obj$jscomp$0$$.nh_me;$nh_me$$&&model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,_id:$nh_me$$},{$set:{loai_nh:0}},function($error$$,$obj$$){$error$$?console.error($error$$):$obj$$?console.log("updated "+$obj$$._id):
6
+ console.log("Not found mother account:"+$nh_me$$)})});$contr_router$$.on("deleted",function($obj$jscomp$0$$){$obj$jscomp$0$$.nh_me&&model.findOne({nh_me:$obj$jscomp$0$$.nh_me,id_app:$obj$jscomp$0$$.id_app},function($error$jscomp$0$$,$acc$$){$error$jscomp$0$$||$acc$$||model.findOneAndUpdate({id_app:$obj$jscomp$0$$.id_app,_id:$obj$jscomp$0$$.nh_me},{$set:{loai_nh:1}},function($error$$,$obj$$){$error$$||$obj$$&&console.log("updated "+$obj$$._id)})})})};