UNPKG

flexbiz-server

Version:

Flexible Server

8 lines (7 loc) 3.45 kB
const model=global.getModel("strategickpi"),User=global.getModel("user"),strategicobjective=global.getModel("strategicobjective"),dmbp=global.getModel("dmbp"),msg2=global.getModel("message2"),task=global.getModel("task"),checkinactivity=global.getModel("checkinkpi"),controller=require("../../controllers/controller"),{onAfterCommit}=require("../../libs/sessionContext"),createCheckin=async $item$$=>{onAfterCommit(async()=>{let $checkin_month$$=[];for(let $m$$=0;$m$$<12;$m$$++)$checkin_month$$.push($m$$+ 1);let $remain_value$$=Math.abs($item$$.target_value-$item$$.current_value);$item$$.aim===2&&($checkin_month$$=$checkin_month$$.sort(($a$$,$b$$)=>$b$$-$a$$));await Promise.all($checkin_month$$.map($month$$=>{let $yearly_target$$=0;$remain_value$$&&($yearly_target$$=Math.roundBy($month$$/12*$remain_value$$));return checkinactivity.create({id_app:$item$$.id_app,id_link:$item$$._id.toString(),month:$month$$,year:$item$$.year,trang_thai:"0",phu_trach:$item$$.phu_trach,yearly_target:$yearly_target$$,target_value:$yearly_target$$, score:0,attends:$item$$.attends})}))})},strategickpi=function($router$$){(new controller($router$$,model,"strategickpi",{sort:{year:1},unique:["id_link","year"],onView:async($user$$,$items$$,$next$$)=>{$items$$=await Promise.all($items$$.map($item$$=>model.asyncGetScore($item$$)));await $items$$.asyncJoinModel2($user$$.current_id_app,strategicobjective,{where:{id_link:"_id"},fields:{strategicobjective_title:"title"}});await $items$$.asyncJoinModel2(null,User,{where:{phu_trach:"email"},fields:{ten_phu_trach:"name"}}); await $items$$.asyncJoinModel2($user$$.current_id_app,dmbp,{where:{ma_bp:"ma_bp"},fields:{ten_bp:"ten_bp"}});$next$$(null,$items$$)},onCreating:async($user$$,$obj$$,$next$$)=>{switch($obj$$.aim){case 1:if($obj$$.target_value<$obj$$.current_value)return $next$$("Gi\u00e1 tr\u1ecb m\u1ee5c ti\u00eau ph\u1ea3i l\u1edbn h\u01a1n gi\u00e1 tr\u1ecb hi\u1ec7n t\u1ea1i");break;case 2:if($obj$$.target_value<$obj$$.current_value)return $next$$("Gi\u00e1 tr\u1ecb m\u1ee5c ti\u00eau ph\u1ea3i nh\u1ecf h\u01a1n gi\u00e1 tr\u1ecb hi\u1ec7n t\u1ea1i")}$next$$(null, $obj$$)},onCreated:async($user$$,$item$$,$next$$)=>{await createCheckin($item$$);return $next$$(null,$item$$)},onUpdating:async($target_value_user$$,$data$$,$obj$$,$next$$)=>{$target_value_user$$=$data$$.target_value||$obj$$.target_value;let $current_value$$=$data$$.current_value||$obj$$.current_value;switch($data$$.aim||$obj$$.aim){case 1:if($target_value_user$$<$current_value$$)return $next$$("Gi\u00e1 tr\u1ecb m\u1ee5c ti\u00eau ph\u1ea3i l\u1edbn h\u01a1n gi\u00e1 tr\u1ecb hi\u1ec7n t\u1ea1i"); break;case 2:if($target_value_user$$<$current_value$$)return $next$$("Gi\u00e1 tr\u1ecb m\u1ee5c ti\u00eau ph\u1ea3i nh\u1ecf h\u01a1n gi\u00e1 tr\u1ecb hi\u1ec7n t\u1ea1i")}if($data$$.year&&$data$$.year!==$obj$$.year||$data$$.aim&&$data$$.aim!==$obj$$.aim)Logger.info("delete old checkins"),await checkinactivity.deleteMany({id_link:$obj$$._id.toString()});$next$$(null,$data$$,$obj$$)},onUpdated:async($user$$,$obj$$,$next$$)=>{(await checkinactivity.find({id_link:$obj$$._id.toString()})).length=== 0&&await createCheckin($obj$$);return $next$$(null,$obj$$)},onDeleted:($user$$,$item$$,$next$$)=>{checkinactivity.deleteMany({id_link:$item$$._id.toString()});msg2.deleteMany({id_link:$item$$._id.toString()});task.deleteMany({id_link:$item$$._id.toString()});$next$$(null,$item$$)}})).route()};module.exports=strategickpi;