flexbiz-server
Version:
Flexible Server
9 lines (8 loc) • 3.74 kB
JavaScript
const model=global.getModel("checkinactivity"),keyresult=global.getModel("keyresult"),socai=global.getModel("socai"),task=global.getModel("task"),trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),{round}=require("../../libs/utils"),Numeral=require("numeral"),moment=require("moment"),checkinactivity=function($router$$){(new controller($router$$,model,"checkinactivity",{sort:{date:1},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2(null,
trangthai,{where:$item$$=>({ma_ct:"CHECKINACTIVITY",ma_trang_thai:$item$$.trang_thai}),fields:["ten_trang_thai","color"]});await $items$$.asyncJoinModel2($user$$.current_id_app,keyresult,{where:$item$$=>({_id:$item$$.id_link}),fields:["target_value","current_value","measure_as","update_interval","aim"]});$items$$.forEach($item$$=>{$item$$.measure_title=["s\u1ed1 l\u01b0\u1ee3ng","VND","%"][$item$$.measure_as-1];$item$$.interval_title=["ng\u00e0y","tu\u1ea7n","th\u00e1ng","qu\u00fd"][$item$$.update_interval-
1];$item$$.target_title=`${Numeral($item$$.target_value).format()} ${$item$$.measure_title}/${$item$$.interval_title}`;let $target_remain$$=Math.abs($item$$.current_value-$item$$.target_value);if($target_remain$$)switch($item$$.aim){case 1:$item$$.percent=$item$$.score<$item$$.current_value||!$item$$.score?0:round(($item$$.score-$item$$.current_value)/$target_remain$$,2)*100;break;case 2:$item$$.percent=$item$$.score>$item$$.current_value||!$item$$.score?0:round((-$item$$.score+$item$$.current_value)/
$target_remain$$,2)*100;break;case 3:$item$$.score<$item$$.current_value||!$item$$.score?$item$$.percent=0:($item$$.percent=round($item$$.score-$item$$.current_value/$item$$.target_value,2)*100,$item$$.percent>100&&($item$$.percent=100-($item$$.percent-100)))}else $item$$.percent=0});$next$$(null,$items$$)},onUpdating:async($key$jscomp$10_user$$,$data$$,$obj$$,$next$$)=>{$key$jscomp$10_user$$=await keyresult.findOne({id_app:$obj$$.id_app,_id:$obj$$.id_link}).lean();if(!$key$jscomp$10_user$$)return Logger.error("Not found keyresult"),
$next$$(null,$data$$,$obj$$);switch($key$jscomp$10_user$$.update_source){case "1":return Logger.info("checkin by input data"),$next$$(null,$data$$,$obj$$);case "2":Logger.info("checkin by socai");if($key$jscomp$10_user$$.tk_no||$key$jscomp$10_user$$.tk_co){var $condition_tu_ngay$$={id_app:$obj$$.id_app,tk_no:$key$jscomp$10_user$$.tk_no,giam_tru_no:$key$jscomp$10_user$$.giam_tru_no,tk_co:$key$jscomp$10_user$$.tk_co,giam_tru_co:$key$jscomp$10_user$$.giam_tru_co,tu_ngay:moment($obj$$.from_date).startOf("date").toDate(),
den_ngay:$obj$$.date};try{$data$$.score=(await socai.getArise($condition_tu_ngay$$,{tien_nt:1})).map($r$$=>$r$$.tien_nt).reduce(($a$$,$b$$)=>$a$$+$b$$,0)}catch($e$$){Logger.error($e$$)}}return $next$$(null,$data$$,$obj$$);case "7":Logger.info("checkin by task points");try{$condition_tu_ngay$$=moment(new Date($obj$$.from_date)).startOf("date").toDate();const $den_ngay$$=moment(new Date($obj$$.date)).endOf("date").toDate();let $tasks$$=await task.find({progress:3,id_app:$key$jscomp$10_user$$.id_app,
id_link:$key$jscomp$10_user$$._id.toString(),start_date:{$gte:$condition_tu_ngay$$,$lte:$den_ngay$$},due_date:{$lte:$den_ngay$$}}).lean();await $tasks$$.filter($item$$=>$item$$.ma_loai_cv).asyncJoinModel2($obj$$.id_app,global.getModel("dmloaitask"),{where:"ma_loai_cv",fields:["he_so"]});$tasks$$.forEach($r$$=>{$r$$.diem=($r$$.diem_du_tinh||0)*($r$$.he_so||1)*($r$$.percent||100)/100});$data$$.score=$tasks$$.map($t$$=>$t$$.diem).reduce(($a$$,$b$$)=>$a$$+$b$$,0)}catch($e$$){Logger.error($e$$)}return $next$$(null,
$data$$,$obj$$);default:return Logger.info("Not have source"),$next$$(null,$data$$,$obj$$)}}})).route()};module.exports=checkinactivity;