kpiplus
Version:
KPI+
1 lines • 1.69 kB
JavaScript
var model=require("../../models/customer"),groupModel=require("../../models/group"),app=require("../../models/app"),User=require("../../models/user"),arrays=require("../../libs/array-funcs"),permission=require("../../libs/permission"),group=require("../../models/group"),async=require("async"),request=require("request"),controller=require("../../controllers/controller"),_=require("underscore"),createdOrUpdated=function(e,r,n){var u=e.current_id_app;if(r.ma_kh)n(null,r);else{var o=r._id.toString().toUpperCase();o=o.substring(o.length-16),model.createCustomerCode(u,o,0,function(e,u){if(e)return n(e);model.findByIdAndUpdate(r._id,{$set:{ma_kh:u}},function(e,r){return e?n(e):r?(r.ma_kh=u,n(null,r)):n(new Error("customer is not exists"))})})}},customer=function(e){var r=this.contr=new controller(e,model,"customer",{sort:{date_updated:-1},unique:["ma_kh"],codeSync:"list/dmkh",keySync:"ma_kh",onView:function(e,r,n){async.parallel({pt:e=>{r.joinModel2(null,User,[{where:{email:"phu_trach"},fields:[{ten_phu_trach:"name"}]}],function(r){e()})},group:n=>{r.joinModel2(e.current_id_app,group,[{where:{nh_kh:"_id"},fields:[{ten_nh_kh:"group_name"}]}],function(e){n()})}},(e,u)=>{n(null,r)})},onFinding:function(e,r,n){permission.getRightByItem(e.current_id_app,groupModel,e.email,function(u,o,t){return u?n(u):t?n(null,r):(o.id_app=e.current_id_app,o.group_type="CUSTOMER",void groupModel.find(o,{_id:1}).lean().exec((e,u)=>{if(e)return n(e);let o=_.pluck(u,"_id");o.push(""),o.push(null),r.nh_kh={$in:o},n(null,r)}))})}});r.route(),r.creating=function(e,r,n){r.ma_kh||(r.ma_kh=r.ten_kh.toUpperCase()),n(null,r)},r.created=createdOrUpdated,r.updated=createdOrUpdated};module.exports=customer;