kpiplus
Version:
KPI+
1 lines • 4.02 kB
JavaScript
var model=require("../../models/dmnv"),dmbp=require("../../models/dmbp"),dmdoi=require("../../models/dmdoi"),dmto=require("../../models/dmto"),dmnhnv=require("../../models/dmnhnv"),app=require("../../models/app"),User=require("../../models/user"),group=require("../../models/group"),arrays=require("../../libs/array-funcs"),async=require("async"),underscore=require("underscore"),controller=require("../../controllers/controller"),dmnv=function(e){var n=this.contr=new controller(e,model,"dmnv",{sort:{ma_bp:1,ma_doi:1,ma_to:1,ten_nv:1},unique:["ma_nv"],codeSync:"list/dmnv",keySync:"ma_nv",onCreating:(e,n,r)=>{n.ma_nv||(n.ma_nv="NV"+(new Date).getTime().toString()),n.user?model.findOne({id_app:e.current_id_app,user:n.user}).lean().exec((e,i)=>{i?r("Tên đăng nhập '"+n.user+"' đã tồn tại"):r(null,n)}):r(null,n)},onUpdating:(e,n,r,i)=>{n.user&&n.user!==r.user?model.findOne({id_app:e.current_id_app,user:n.user}).lean().exec((e,a)=>{a?i("Tên đăng nhập '"+n.user+"' đã tồn tại"):i(null,n,r)}):i(null,n,r)},onView:(e,n,r)=>{async.parallel([r=>{n.joinModel2(e.current_id_app,User,[{where:{email:"phu_trach"},fields:[{name:"name",value:"ten_phu_trach"}]}],function(e){r(null,n)})},r=>{n.joinModel2(e.current_id_app,dmbp,[{where:{ma_bp:"ma_bp"},fields:"ten_bp"}],function(e){r(null,n)})},r=>{n.joinModel2(e.current_id_app,dmdoi,[{where:{ma_bp:"ma_bp",ma_doi:"ma_doi"},fields:"ten_doi"}],function(e){r(null,n)})},r=>{n.joinModel2(e.current_id_app,dmto,[{where:{ma_bp:"ma_bp",ma_doi:"ma_doi",ma_to:"ma_to"},fields:"ten_to"}],function(e){r(null,n)})},r=>{n.joinModel2(e.current_id_app,dmnhnv,[{where:{ma_bp:"ma_bp",ma_doi:"ma_doi",ma_to:"ma_to",ma_nh_nv:"ma_nh_nv"},fields:"ten_nh_nv"}],function(e){r(null,n)})},r=>{n.joinModel2(e.current_id_app,group,[{where:{chuc_vu:"_id"},fields:[{ten_chuc_vu:"group_name"},{muc_tieu_bieu:"muc_tieu_bieu"}]}],function(e){r(null,n)})}],(e,i)=>{r(null,n)})},onImport:(e,n,r,i)=>{async.map(n,function(n,r){async.parallel({nhom:function(r){n.group_name&&!n.nh_kh?group.findOneAndUpdate({id_app:e.current_id_app,group_type:"DMNV",group_name:{$regex:n.group_name,$options:"i"}},{group_name:n.group_name,group_type:"DMNV",status:!0},{new:!0,upsert:!0},function(e,i){if(e)return r(e);n.nh_nv=i._id.toString(),r(null)}):r()}},function(e,n){r()})},function(e,n){i()})},onRightByItem:(e,n,r)=>{async.parallel({phu_trach_bp:n=>{dmbp.find({id_app:e.current_id_app,phu_trach:e.email}).lean().exec((e,r)=>{n(null,r)})},phu_trach_doi:n=>{dmdoi.find({id_app:e.current_id_app,phu_trach:e.email}).lean().exec((e,r)=>{n(null,r)})},phu_trach_to:n=>{dmto.find({id_app:e.current_id_app,phu_trach:e.email}).lean().exec((e,r)=>{n(null,r)})},phu_trach_nhom:n=>{dmnhnv.find({id_app:e.current_id_app,phu_trach:e.email}).lean().exec((e,r)=>{n(null,r)})}},(i,a)=>{if(i)return r(i);let u=underscore.pluck(a.phu_trach_bp,"ma_bp"),o=underscore.pluck(a.phu_trach_doi,"ma_doi"),p=underscore.pluck(a.phu_trach_to,"ma_to"),_=underscore.pluck(a.phu_trach_nhom,"ma_nh_nv");var l=[{user:e.email},{ma_bp:{$in:u}},{ma_doi:{$in:o}},{ma_to:{$in:p}},{ma_nh_nv:{$in:_}}];let t=[];for(let e in n){let r={};r[e]=n[e],t.push(r)}l.push({$and:t}),r(null,{$or:l})})},onQuery:(e,n)=>{if(e.obj&&e.obj.user===e.user.email)return e.permission=!0,n();e.permission||(e.condition={user:e.user.email}),e.permission=!0,n()}});n.route(),n.on("saved",function(e){e.user&&app.findOne({_id:e.id_app},(n,r)=>{if(n||!r)return console.log(n);if(!r.participants.find(n=>n.email===e.user)){let n={email:e.user,admin:!1,active:!0,group_id:e.exfields.group_id};r.participants.push(n),r.save(n=>{if(n)return console.log(n);User.findOne({email:e.user},function(n,r){if(n||r)return;let i=new User;i.email=e.user,i.local={},i.local.email=e.user,i.local.name=e.ten_nv,i.local.picture="/images/avatar.jpg";var a=e.user+"@123456";i.local.password=i.generateHash(a),i.save(function(n,r){n&&console.log(n),r&&app.emitEvent(e.id_app,"User:ADD",{body:"Đã thêm người dùng '"+e.user+"' mới tới hệ thống"})})})})}})})};module.exports=dmnv;