UNPKG

flexbiz-server

Version:

Flexible Server

8 lines (7 loc) 3.38 kB
const model=global.getModel("usergroup"),participant=global.getModel("participant"),controller=require("../../controllers/controller"),{onAfterCommit}=require("../../libs/sessionContext"),{getCodeChildren}=require("../../libs/utils"),getSysorder=function($item$$,$callback$$){let $sysorder$$=$item$$._id.toString();$item$$.group_mother&&$item$$.group_mother!=$item$$._id.toString()?model.findOne({_id:$item$$.group_mother}).lean().exec(function($e$$,$item_me$$){$item_me$$?getSysorder($item_me$$,function($rs$$){$sysorder$$= $rs$$+"---"+$sysorder$$;$callback$$($sysorder$$)}):$callback$$($sysorder$$)}):$callback$$($sysorder$$)},usergroup=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"usergroup",{sort:{sysorder:1},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,participant,{where:{phu_trach:"email"},fields:{ten_phu_trach:"name"}});await $items$$.asyncJoinModel2($user$$.current_id_app,model,{where:{group_mother:"_id"},fields:{group_mother_name:"group_name"}}); $next$$(null,$items$$)},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{if($data$$.group_mother&&(await getCodeChildren(model,$obj$$.id_app,$obj$$._id.toString(),"_id","group_mother")).indexOf($data$$.group_mother)>=0)return $next$$("Kh\u00f4ng th\u1ec3 ch\u1ecdn nh\u00f3m n\u00e0y l\u00e0m nh\u00f3m m\u1eb9");$next$$(null,$data$$,$obj$$)},onCreated:async($user$$,$obj$$,$next$$)=>{onAfterCommit(async()=>{if($obj$$.group_mother){let $rights$$=await global.getModel("right").find({id_app:$obj$$.id_app, email:$obj$$.group_mother}).lean();$rights$$.length>0&&($rights$$.forEach($r$$=>{delete $r$$._id;delete $r$$.__v;$r$$.email=$obj$$._id.toString()}),await global.getModel("right").create($rights$$))}});getSysorder($obj$$,async function($rs$$){$obj$$.sysorder=$rs$$;$obj$$.bac=$rs$$.split("---").length;await model.updateOne({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:1}}).catch(console.error);$next$$(null,$obj$$)})},onUpdated:async($user$$,$obj$$,$next$$)=>{getSysorder($obj$$, async function($loai_nh_rs$$){$obj$$.sysorder=$loai_nh_rs$$;$obj$$.bac=$loai_nh_rs$$.split("---").length;$loai_nh_rs$$=1;await model.findOne({group_mother:$obj$$._id.toString()})&&($loai_nh_rs$$=0);$obj$$.loai_nh=$loai_nh_rs$$;await model.updateOne({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:$loai_nh_rs$$}}).catch(console.error);$next$$(null,$obj$$)})}});$contr_router$$.route();$contr_router$$.deleting=function($user$$,$obj$$,$next$$){if($obj$$.loai_nh===0)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a nh\u00f3m m\u1eb9")); $next$$(null,$obj$$)};$contr_router$$.deleted=async function($user$$,$obj$$,$next$$){onAfterCommit(async()=>{await global.getModel("right").deleteMany({id_app:$obj$$.id_app,email:$obj$$._id.toString()})});$next$$(null,$obj$$)};$contr_router$$.on("saved",async function($obj$$){const $group_mother$$=$obj$$.group_mother;$group_mother$$&&await model.updateOne({id_app:$obj$$.id_app,_id:$group_mother$$},{$set:{loai_nh:0}}).catch(console.error)});$contr_router$$.on("deleted",async function($obj$$){$obj$$.group_mother&& !await model.findOne({group_mother:$obj$$.group_mother}).catch(console.error)&&await model.updateOne({id_app:$obj$$.id_app,_id:$obj$$.group_mother},{$set:{loai_nh:1}}).catch(console.error)})};module.exports=usergroup;