UNPKG

flexbiz-server

Version:

Flexible Server

18 lines (17 loc) 7.61 kB
const bpSchema=new Schema({ma_bp:{type:String,uppercase:!0,trim:!0,required:!0,maxlength:32},chuc_vu:{type:String,trim:!0,maxlength:1024},cong_viec:{type:String,trim:!0,maxlength:1024},phu_trach:{type:String,maxlength:1024},tu_ngay:{type:Date,default:Date.now},den_ngay:{type:Date},line:{type:Number,default:0}}),dmnvSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_nv:{type:String,required:!0,uppercase:!0,trim:!0,maxlength:32},ten_nv:{type:String,required:"Y\u00eau c\u1ea7u nh\u1eadp t\u00ean nh\u00e2n vi\u00ean", trim:!0,maxlength:1024},device_user_id:String,trusted_device_id:String,ma_so_thue:{type:String,maxlength:32},phu_trach:{type:String,maxlength:1024,trim:!0},nh_nv:{type:String,trim:!0,maxlength:32},ma_nh_nv:{type:String,uppercase:!0,trim:!0,default:"",maxlength:32},ma_kh:String,ten_kh:String,ma_doi:{type:String,uppercase:!0,trim:!0,default:"",maxlength:32},ma_to:{type:String,uppercase:!0,trim:!0,default:"",maxlength:32},nguoi_danh_gia:[{ma_doi_tuong_danh_gia:String,user:String,line:Number}],ma_bp:{type:String, uppercase:!0,trim:!0,default:"",maxlength:32},ten_bp:String,ma_cn:String,ma_kho:{type:String,uppercase:!0,trim:!0,default:"",maxlength:32},ten_kho:String,chuc_vu:{type:String,trim:!0,maxlength:1024},cong_viec:{type:String,trim:!0,maxlength:1024},cong_viec_chi_tiet:{type:String,trim:!0},trinh_do_hoc_van:String,trinh_do_chuyen_mon:String,bo_phan:[bpSchema],noi_sinh:{type:String,maxlength:1024},ngay_sinh:{type:Date},nguyen_quan:{type:String,maxlength:1024},ho_khau:{type:String,maxlength:1024},dia_chi:{type:String, maxlength:1024},dien_thoai:{type:String,maxlength:1024},fax:{type:String,maxlength:1024},email:{type:String,maxlength:1024},website:{type:String,maxlength:1024},dan_toc:{type:String,maxlength:1024},ton_giao:{type:String,maxlength:1024},cmnd:{type:String,maxlength:1024},ngay_cap:Date,noi_cap:{type:String,maxlength:1024},gioi_tinh:{type:String,maxlength:1024},tinh_trang_hon_nhan:{type:String,maxlength:1024},quoc_tich:{type:String,maxlength:1024},lam_viec:{type:Boolean,default:!0},cham_cong:{type:Boolean, default:!0},tinh_luong:{type:Boolean,default:!0},bhxh:{type:Boolean,default:!0},bhyt:{type:Boolean,default:!0},bhtn:{type:Boolean,default:!0},luong_co_ban:{type:Number,default:0},luong_ngay_cong:{type:Number,default:0},luong_ngay_cong2:{type:Number,default:0},luong_ngay_cong3:{type:Number,default:0},luong_bhxh:{type:Number,default:0},ngay_tinh_bhxh:Date,phu_cap:[],luong_thu_viec:{type:Number,default:0},thu_viec_tu_ngay:Date,thu_viec_den_ngay:Date,ngay_bat_dau_lam:Date,ngay_nghi_viec:Date,so_ngay_duoc_nghi_phep_nam:Number, ttncn_mst:String,ttncn_so_nguoi_phu_thuoc:Number,ttncn_muc_gt_phu_thuoc:Number,ttncn_so_thang_gt_ban_than:Number,ttncn_muc_gt_ban_than:Number,so_tk_ngan_hang:String,ten_chu_tk_ngan_hang:String,phat_hanh_boi_ngan_hang:String,user:{type:String,lowercase:!0,maxlength:1024,set:function($user$$){this._previous_user=this.user;return $user$$}},group_user:String,default_password:{type:String,maxlength:1024},ghi_chu:{type:String,trim:!0,maxlength:1024},picture:String,location:Schema.Types.Mixed,exfields:Schema.Types.Mixed, status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String},user_updated:{type:String},visible_to:{type:Number,default:0},visible_to_users:[String]},{toJSON:{virtuals:!0}}); dmnvSchema.pre("save",function($next$$){if(!this.user)return $next$$();const $self$$=this;this.isNew||this.user!=this._previous_user?mongoose.models.dmnv.countDocuments({id_app:this.id_app,user:this.user,ma_nv:{$ne:this.ma_nv}},($e$$,$count$$)=>{$count$$>0?$next$$(Error(`Ng\u01b0\u1eddi s\u1eed d\u1ee5ng '${$self$$.user}' \u0111\u00e3 \u0111\u01b0\u1ee3c g\u1eafn cho m\u1ed9t nh\u00e2n vi\u00ean kh\u00e1c`)):$next$$()}):$next$$()}); (global.configs||{}).createIndexes&&(dmnvSchema.index({id_app:1,ma_nv:1},{unique:!0}),dmnvSchema.index({id_app:1,status:1}),dmnvSchema.index({id_app:1,phu_trach:1,status:1}),dmnvSchema.index({id_app:1,ma_bp:1,ten_bp:1,status:1}),dmnvSchema.index({id_app:1,ma_kh:1,ten_kh:1,status:1}),dmnvSchema.index({id_app:1,nh_nv:1,status:1}),dmnvSchema.index({id_app:1,phu_trach:1,user:1}),dmnvSchema.index({id_app:1,trusted_device_id:1}),dmnvSchema.index({id_app:1,device_user_id:1,status:1}),dmnvSchema.index({id_app:1, group_user:1,status:1}),dmnvSchema.index({id_app:1,ten_nv:1,ma_so_thue:1,ma_nv:1,chuc_vu:1,status:1}),dmnvSchema.index({id_app:1,user:1,phu_trach:1,user_created:1,visible_to:1,visible_to_users:1,status:1}),dmnvSchema.index({id_app:1,user:1,phu_trach:1,user_created:1,visible_to:1,visible_to_users:1,status:1,ma_nv:1,ten_nv:1}),dmnvSchema.index({id_app:1,user:1,phu_trach:1,user_created:1,visible_to:1,visible_to_users:1,status:1,ma_bp:1}),dmnvSchema.index({id_app:1,user:1,phu_trach:1,user_created:1,visible_to:1, visible_to_users:1,status:1,ma_kh:1}),dmnvSchema.index({id_app:1,user:1,phu_trach:1,user_created:1,visible_to:1,visible_to_users:1,status:1,device_user_id:1}),dmnvSchema.index({id_app:1,user:1,phu_trach:1,user_created:1,visible_to:1,visible_to_users:1,status:1,nh_nv:1}),dmnvSchema.index({id_app:1,ma_nv:"text",ten_nv:"text",ma_bp:"text",ten_bp:"text",chuc_vu:"text"},{name:"dmnv_index_text"}));const model=mongoose.models.dmnv||mongoose.model("dmnv",dmnvSchema); if((global.configs||{}).createIndexes)model.on("index",async function($err$$){$err$$?(Logger.error("Employee index error",$err$$),(await model.aggregate([{$group:{_id:{id_app:"$id_app",ma_nv:"$ma_nv"},count:{$sum:1},ids:{$push:"$_id"}}},{$match:{count:{$gt:1}}}])).forEach($d$$=>{console.info("employee duplication",$d$$._id,$d$$.ids);$d$$.ids.forEach(($id$$,$index$$)=>{$index$$>0&&console.info("you should delete employee",$id$$)})})):console.info("emplyeee indexing complete")}); model.referenceKeys={ma_nv:[{model:"chamcong",key:"ma_nv",error:"Nh\u00e2n vi\u00ean ${obj.ma_nv} - ${obj.ten_nv} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong b\u1ea3ng ch\u1ea5m c\u00f4ng"},{model:"bangtinhluong",key:"ma_nv",error:"Nh\u00e2n vi\u00ean ${obj.ma_nv} - ${obj.ten_nv} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong b\u1ea3ng t\u00ednh l\u01b0\u01a1ng"},{model:"socai",key:"ma_nv",error:"Nh\u00e2n vi\u00ean ${obj.ma_nv} - ${obj.ten_nv} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong s\u1ed5 c\u00e1i"}, {model:"phieudanhgia",key:"ma_nv",error:"Nh\u00e2n vi\u00ean ${obj.ma_nv} - ${obj.ten_nv} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong phi\u1ebfu \u0111\u00e1nh gi\u00e1 nh\u00e2n vi\u00ean"}]}; model.createEmployeeCode=function($id_app$$,$ma_nv$$,$lanthu$$,$callback$$){$ma_nv$$=$ma_nv$$.replace(/[^\w\s]/gi,"").split(" ").join("").toUpperCase();model.findOne({ma_nv:$ma_nv$$,id_app:$id_app$$},function($e$$,$rs$$){if($e$$)return $callback$$($e$$);if($rs$$)$lanthu$$+=1,$ma_nv$$=$ma_nv$$.substring(0,$ma_nv$$.length-$lanthu$$.toString().length)+$lanthu$$.toString(),model.createEmployeeCode($id_app$$,$ma_nv$$,$lanthu$$,$callback$$);else return $callback$$(null,$ma_nv$$)})}; model.asyncCreateEmployeeCode=async($id_app$$,$ma_nv$$,$lanthu$$)=>{$lanthu$$||=0;$ma_nv$$.length>32&&($ma_nv$$=$ma_nv$$.substring(0,32));return new Promise($resolve$$=>{model.createEmployeeCode($id_app$$,$ma_nv$$,$lanthu$$,($e$$,$rs$$)=>{$resolve$$($rs$$||"")})})}; model.getInfo=async($id_app$$,$condition$$,$fields$$)=>{$condition$$.id_app=$id_app$$;return new Promise(($resolve$$,$reject$$)=>{model.findOne($condition$$).lean().then($rs$$=>{if(!$rs$$)return $reject$$(Error("Can't find data"));$resolve$$($fields$$?$rs$$[$fields$$]:$rs$$)}).catch($e$$=>{$reject$$($e$$)})})};module.exports=model;