UNPKG

flexbiz-server

Version:

Flexible Server

16 lines (15 loc) 6.6 kB
'use strict';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,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_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_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,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$$)=>{0<$count$$?$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$$()});const model=mongoose.models.dmnv||mongoose.model("dmnv",dmnvSchema); (global.configs||{}).createIndexes&&(dmnvSchema.index({ma_nv:"text",ten_nv:"text",ma_bp:"text",ten_bp:"text",chuc_vu:"text"},{name:"dmnv_index_text"}),dmnvSchema.index({status:1}),dmnvSchema.index({user_created:1,visible_to:1,visible_to_users:1}),dmnvSchema.index({phu_trach:1}),dmnvSchema.index({ma_bp:1}),dmnvSchema.index({ten_bp:1}),dmnvSchema.index({ma_kh:1}),dmnvSchema.index({ten_kh:1}),dmnvSchema.index({chuc_vu:1}),dmnvSchema.index({id_app:1,ma_nv:1},{unique:!0}),dmnvSchema.index({id_app:1,device_user_id:1}), dmnvSchema.index({ten_nv:1}),dmnvSchema.index({ma_so_thue:1}),dmnvSchema.index({user:1}),model.on("index",async function($err$$){$err$$?(console.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$$)=>{0<$index$$&&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$$||($lanthu$$=0);32<$ma_nv$$.length&&($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().exec(($e$$,$rs$$)=>{if($e$$||!$rs$$)return $reject$$(Error($e$$?$e$$.message:"Can't find data"));$resolve$$($fields$$?$rs$$[$fields$$]:$rs$$)})})};module.exports=model;