flexbiz-server
Version:
Flexible Server
7 lines (6 loc) • 2.83 kB
JavaScript
'use strict';const model=global.getModel("strategicplan"),task=global.getModel("task"),Trangthai=global.getModel("trangthai"),User=global.getModel("user"),strategicgoal=global.getModel("strategicgoal"),strategicobjective=global.getModel("strategicobjective"),strategickpi=global.getModel("strategickpi"),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$$)},strategicplan=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"strategicplan",{onView:async($user$$,$items$$,$next$$)=>{await Promise.all($items$$.map($item$$=>(async()=>{var $num_krs_strategicplan_children$$=
await getChil($item$$._id);$num_krs_strategicplan_children$$.push($item$$._id.toString());var $krs_score_krs$$=await strategicgoal.find({id_link:{$in:$num_krs_strategicplan_children$$}});$num_krs_strategicplan_children$$=$krs_score_krs$$.length;$krs_score_krs$$=await Promise.all($krs_score_krs$$.map($ks$$=>strategicgoal.asyncGetScore($ks$$)));$item$$.score=$num_krs_strategicplan_children$$?round($krs_score_krs$$.map($ks$$=>$ks$$.score).reduce(($a$$,$b$$)=>$a$$+$b$$,0)/$num_krs_strategicplan_children$$,
2):0;$item$$.num_tasks=await task.countDocuments({id_job:$item$$._id.toString()});$item$$.goals=await strategicgoal.find({id_link:$item$$._id.toString()},{_id:1,title:1});$item$$.objectives=await strategicobjective.find({id_link:{$in:$item$$.goals.map($g$$=>$g$$._id.toString())}},{_id:1,title:1});$item$$.kpis=await strategickpi.find({id_link:{$in:$item$$.objectives.map($g$$=>$g$$._id.toString())}},{_id:1,name:1})})()));await $items$$.asyncJoinModel2(null,User,{where:{phu_trach:"email"},fields:{ten_phu_trach:"name"}});
await $items$$.asyncJoinModel2(null,Trangthai,{where:$item$$=>({ma_trang_thai:$item$$.trang_thai,ma_ct:"STRATEGICPLAN"}),fields:["ten_trang_thai","color"]});$next$$(null,$items$$)},onDeleted:($user$$,$obj$$,$next$$)=>{strategicgoal.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 strategicplans",$ids$$);$callback$$(null,[...$ids$$,$id_parent_req$$])});$contr_router$$.route()};module.exports=strategicplan;