flexbiz-server
Version:
Flexible Server
14 lines (13 loc) • 6.69 kB
JavaScript
const model=global.getModel("dmnv"),dmbp=global.getModel("dmbp"),dmdoi=global.getModel("dmdoi"),dmto=global.getModel("dmto"),dmnhnv=global.getModel("dmnhnv"),User=global.getModel("user"),Usergroup=global.getModel("usergroup"),Participant=global.getModel("participant"),group=global.getModel("group"),async=require("async"),controller=require("../../controllers/controller"),dmnv=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"dmnv",{sort:{ma_bp:1,ma_doi:1,ma_to:1,ten_nv:1},
unique:["ma_nv"],onCreating:async($ex$jscomp$0$$,$data$$,$next$$)=>{if($data$$.user){let $ex$$=await model.findOne({id_app:$ex$jscomp$0$$.current_id_app,user:$data$$.user}).lean();if($ex$$)return $next$$("T\u00ean \u0111\u0103ng nh\u1eadp '"+$data$$.user+"' \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng cho nh\u00e2n vi\u00ean "+$ex$$.ten_nv)}if($data$$.device_user_id&&($ex$jscomp$0$$=await model.findOne({id_app:$ex$jscomp$0$$.current_id_app,device_user_id:$data$$.device_user_id}).lean()))return $next$$("M\u00e3 tr\u00ean m\u00e1y ch\u1ea5m c\u00f4ng '"+
$data$$.device_user_id+"' \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng cho nh\u00e2n vi\u00ean "+$ex$jscomp$0$$.ten_nv);$next$$(null,$data$$)},onUpdating:async($ex$jscomp$3_user$$,$data$$,$obj$$,$next$$)=>{if($data$$.user&&$data$$.user!==$obj$$.user){let $ex$$=await model.findOne({id_app:$ex$jscomp$3_user$$.current_id_app,user:$data$$.user}).lean();if($ex$$)return $next$$("T\u00ean \u0111\u0103ng nh\u1eadp '"+$data$$.user+"' \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng cho nh\u00e2n vi\u00ean "+
$ex$$.ten_nv)}if($data$$.device_user_id&&$data$$.device_user_id!==$obj$$.device_user_id&&($ex$jscomp$3_user$$=await model.findOne({id_app:$ex$jscomp$3_user$$.current_id_app,device_user_id:$data$$.device_user_id}).lean()))return $next$$("M\u00e3 tr\u00ean m\u00e1y ch\u1ea5m c\u00f4ng '"+$data$$.device_user_id+"' \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng cho nh\u00e2n vi\u00ean "+$ex$jscomp$3_user$$.ten_nv);$next$$(null,$data$$,$obj$$)},onView:($user$$,$items$$,$next$$)=>{$items$$.forEach($item$$=>
{delete $item$$.default_password});async.parallel([$callback$$=>{$items$$.filter($item$$=>$item$$.phu_trach).joinModel2(null,User,[{where:{phu_trach:"email"},fields:[{name:"ten_phu_trach",value:"name"}]}],function(){$callback$$(null,$items$$)})},$callback$$=>{$items$$.filter($item$$=>$item$$.ma_bp).joinModel2($user$$.current_id_app,dmbp,[{where:{ma_bp:"ma_bp"},fields:"ten_bp"}],function(){$callback$$(null,$items$$)})},$callback$$=>{$items$$.filter($item$$=>$item$$.ma_doi).joinModel2($user$$.current_id_app,
dmdoi,[{where:{ma_bp:"ma_bp",ma_doi:"ma_doi"},fields:"ten_doi"}],function(){$callback$$(null,$items$$)})},$callback$$=>{$items$$.filter($item$$=>$item$$.ma_to).joinModel2($user$$.current_id_app,dmto,[{where:{ma_bp:"ma_bp",ma_doi:"ma_doi",ma_to:"ma_to"},fields:"ten_to"}],function(){$callback$$(null,$items$$)})},$callback$$=>{$items$$.filter($item$$=>$item$$.ma_nh_nv).joinModel2($user$$.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(){$callback$$(null,$items$$)})},$callback$$=>{$items$$.filter($item$$=>$item$$.chuc_vu).joinModel2($user$$.current_id_app,group,[{where:{chuc_vu:"_id"},fields:[{ten_chuc_vu:"group_name"},{color:"color"},{muc_tieu_bieu:"muc_tieu_bieu"}]}],function(){$callback$$(null,$items$$)})},$callback$$=>{async.mapLimit($items$$,20,($item$$,$callback$$)=>{($item$$.bo_phan||[]).filter($item$$=>$item$$.chuc_vu).joinModel2($user$$.current_id_app,group,[{where:{chuc_vu:"_id"},fields:[{ten_chuc_vu:"group_name"},
{color:"color"},{muc_tieu_bieu:"muc_tieu_bieu"}]}],function(){$callback$$(null,$items$$)})},()=>{$callback$$(null,$items$$)})},$callback$$=>{async.mapLimit($items$$,20,($item$$,$callback$$)=>{($item$$.bo_phan||[]).filter($item$$=>$item$$.ma_bp).joinModel2($user$$.current_id_app,dmbp,[{where:{ma_bp:"ma_bp"},fields:[{ten_bp:"ten_bp"}]}],function(){$callback$$(null,$items$$)})},()=>{$callback$$(null,$items$$)})}],()=>{$items$$.filter($item$$=>$item$$.bo_phan).forEach($item$$=>{$item$$.bo_phan.forEach($bp$$=>
{$bp$$.active=!$bp$$.den_ngay||$bp$$.den_ngay>=new Date;$bp$$.active&&($item$$.ma_bp=$item$$.map_bp||$bp$$.ma_bp,$item$$.ten_bp=$item$$.ten_bp||$bp$$.ten_bp,$item$$.phu_trach=$item$$.phu_trach||$bp$$.phu_trach,$item$$.chuc_vu=$item$$.chuc_vu||$bp$$.chuc_vu)})});$next$$(null,$items$$)})},onImport:($user$$,$data$$,$columns$$,$next$$)=>{async.mapLimit($data$$,20,function($r$$,$callback$$){async.series({nhom:function($callback$$){$r$$.group_name&&!$r$$.nh_kh?group.findOneAndUpdate({id_app:$user$$.current_id_app,
group_type:"DMNV",group_name:{$regex:$r$$.group_name,$options:"i"}},{group_name:$r$$.group_name,group_type:"DMNV",status:!0},{new:!0,upsert:!0},function($e$$,$n$$){if($e$$)return $callback$$($e$$);$r$$.nh_nv=$n$$._id.toString();$callback$$(null)}):$callback$$()}},function(){$callback$$()})},function(){$next$$()})},onQuery:($req$$,$next$$)=>{if($req$$.obj&&$req$$.obj.user===$req$$.user.email)return $req$$.permission=!0,$next$$();$req$$.permission||($req$$.condition={user:$req$$.user.email});$req$$.permission=
!0;$next$$()}});$contr_router$$.validating=async($id_app_user$$,$obj$$,$next$$,$options$$={})=>{if($options$$.action=="add"&&!$obj$$.ma_nv&&$obj$$.ten_nv){$id_app_user$$=$id_app_user$$.current_id_app;try{let $ma_nv$$=await model.asyncCreateEmployeeCode($id_app_user$$,$obj$$.ten_nv);$obj$$.ma_nv=$ma_nv$$;$next$$(null,$obj$$)}catch($e$$){Logger.error($e$$),$next$$($e$$)}}else $next$$(null,$obj$$)};$contr_router$$.route();$contr_router$$.on("saved",async $data$$=>{let $_usergroup$$;try{$_usergroup$$=
await Usergroup.getInfo($data$$.id_app,{is_employee_group:!0})}catch($e$$){return}$data$$.user&&$_usergroup$$&&User.findOne({email:$data$$.user},($e$$,$rs$$)=>{if($rs$$)Participant.createParticipant({id_app:$data$$.id_app,email:$data$$.user,group_id:$_usergroup$$._id,active:!0},$e$$=>{if($e$$)return Logger.info("can't add user",$data$$.user,"to company")});else{var $result$$=new User;$result$$.email=$data$$.user;$result$$.name=$data$$.ten_nv;$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$$=>{if($e$$)return Logger.info($e$$.message);Participant.createParticipant({id_app:$data$$.id_app,email:$result$$.email,group_id:$_usergroup$$._id,active:!0},$e$$=>{if($e$$)return Logger.info("can't add user",$result$$.email,"to company")})})}})})};module.exports=dmnv;