flexbiz-server
Version:
Flexible Server
6 lines (5 loc) • 2.3 kB
JavaScript
'use strict';const model=global.getModel("okr"),task=global.getModel("task"),dmbp=global.getModel("dmbp"),participant=global.getModel("participant"),keyresult=global.getModel("keyresult"),msg2=global.getModel("message2"),controller=require("../../controllers/controller"),{round}=require("../../libs/utils"),getChil=async $chils_id$$=>{$chils_id$$=await model.find({id_parent:$chils_id$$.toString()}).lean();$chils_id$$=$chils_id$$.map($c$$=>$c$$._id.toString());if(0<$chils_id$$.length){const $cs$$=(await Promise.all($chils_id$$.map($c$$=>
getChil($c$$)))).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$cs$$&&0<$cs$$.length&&($chils_id$$=[...$chils_id$$,...$cs$$])}return $chils_id$$.filter($a$$=>!!$a$$)},okr=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"okr",{onView:async($user$$,$items$$,$next$$)=>{await Promise.all($items$$.map($item$$=>(async()=>{var $krs_okr_children$$=await getChil($item$$._id);$krs_okr_children$$.push($item$$._id.toString());$krs_okr_children$$=await keyresult.find({id_link:{$in:$krs_okr_children$$}});
let $num_krs$$=$krs_okr_children$$.length,$score_krs$$=await Promise.all($krs_okr_children$$.map($ks$$=>keyresult.asyncGetScore($ks$$)));$item$$.score=$num_krs$$?round($score_krs$$.map($ks$$=>$ks$$.score).reduce(($a$$,$b$$)=>$a$$+$b$$,0)/$num_krs$$,2):0;await $items$$.asyncJoinModel2($user$$.current_id_app,participant,{where:{phu_trach:"email"},fields:{ten_phu_trach:"name"}});$item$$.num_tasks=await task.countDocuments({id_job:$item$$._id.toString()});$item$$.num_krs=$krs_okr_children$$.filter($k$$=>
$k$$.id_link===$item$$._id.toString()).length})()));await $items$$.filter($item$$=>$item$$.ma_bp).asyncJoinModel2($user$$.current_id_app,dmbp,{where:"ma_bp",fields:"ten_bp"});$next$$(null,$items$$)},onDeleted:($user$$,$obj$$,$next$$)=>{keyresult.deleteMany({id_link:$obj$$._id.toString()});msg2.deleteMany({id_link:$obj$$._id.toString()});task.deleteMany({id_job:$obj$$._id.toString()});$next$$(null,$obj$$)}});$contr_router$$.createRoute("chilrend-ids/:id_parent",async($id_parent_req$$,$callback$$)=>
{$id_parent_req$$=$id_parent_req$$.params.id_parent;const $ids$$=await getChil($id_parent_req$$);console.log("get id okrs",$ids$$);$callback$$(null,[...$ids$$,$id_parent_req$$])});$contr_router$$.route()};module.exports=okr;