flexbiz-server
Version:
Flexible Server
8 lines (7 loc) • 3.38 kB
JavaScript
'use strict';const model=global.getModel("keyresult"),User=global.getModel("user"),okr=global.getModel("okr"),msg2=global.getModel("message2"),task=global.getModel("task"),checkinactivity=global.getModel("checkinactivity"),controller=require("../../controllers/controller"),Moment=require("moment"),createCheckin=async $item$$=>{let $due_date$$=Moment($item$$.due_date).endOf("date"),$checkin_days$$=[],$next_checkin$$,$pre_checkin$$;for(;!$next_checkin$$||$next_checkin$$.toDate()<$due_date$$.toDate();){$next_checkin$$?
($pre_checkin$$=Moment($next_checkin$$.toDate()),$next_checkin$$=Moment($pre_checkin$$.toDate()),$pre_checkin$$.add(1,"days")):($pre_checkin$$=Moment($item$$.start_date).endOf("date"),$next_checkin$$=Moment($pre_checkin$$.toDate()));switch($item$$.update_interval){case 1:$next_checkin$$.add(1,"days");break;case 2:$next_checkin$$.add(1,"weeks");break;case 3:$next_checkin$$.add(1,"months");break;case 4:$next_checkin$$.add(1,"quarters");break;case 5:$next_checkin$$.add(6,"months");break;default:$next_checkin$$.add(1,
"years")}$next_checkin$$.toDate()>$due_date$$.toDate()&&($next_checkin$$=$due_date$$);$checkin_days$$.push({next_checkin:$next_checkin$$.toDate(),pre_checkin:$pre_checkin$$.startOf("date").toDate()})}await Promise.all($checkin_days$$.map($d$$=>checkinactivity.create({id_app:$item$$.id_app,id_link:$item$$._id.toString(),from_date:$d$$.pre_checkin,date:$d$$.next_checkin,trang_thai:"0",phu_trach:$item$$.phu_trach,score:0,attends:$item$$.attends})))},keyresult=function($router$$){(new controller($router$$,
model,"keyresult",{sort:{start_date:1},onView:async($user$$,$items$$,$next$$)=>{$items$$=await Promise.all($items$$.map($item$$=>model.asyncGetScore($item$$)));await $items$$.asyncJoinModel2($user$$.current_id_app,okr,{where:{id_link:"_id"},fields:{okr_title:"title"}});await $items$$.asyncJoinModel2(null,User,{where:{phu_trach:"email"},fields:{ten_phu_trach:"name"}});$next$$(null,$items$$)},onCreating:async($_okr_user$$,$obj$$,$next$$)=>{if(!$obj$$.start_date||!$obj$$.due_date)if($_okr_user$$=await okr.findOne({_id:$obj$$.id_link}))$obj$$.start_date=
$_okr_user$$.start_date,$obj$$.due_date=$_okr_user$$.due_date;$next$$(null,$obj$$)},onCreated:async($user$$,$item$$,$next$$)=>{await createCheckin($item$$);return $next$$(null,$item$$)},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{if($data$$.update_interval&&$data$$.update_interval!=$obj$$.update_interval||$data$$.start_date&&(new Date($data$$.start_date)).getTime()!==(new Date($obj$$.start_date)).getTime()||$data$$.due_date&&(new Date($data$$.due_date)).getTime()!==(new Date($obj$$.due_date)).getTime()){if(await checkinactivity.findOne({trang_thai:"1",
id_link:$obj$$._id.toString()}))return $next$$("Kh\u00f4ng th\u1ec3 s\u1eeda k\u1ebft qu\u1ea3 c\u1ed1t l\u00f5i n\u00e0y do n\u00f3 \u0111\u00e3 \u0111\u01b0\u1ee3c checkin");await checkinactivity.deleteMany({id_link:$obj$$._id.toString()})}$next$$(null,$data$$,$obj$$)},onUpdated:async($user$$,$obj$$,$next$$)=>{0===(await checkinactivity.find({id_link:$obj$$._id.toString()})).length&&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=keyresult;