flexbiz-server
Version:
Flexible Server
7 lines (6 loc) • 2.39 kB
JavaScript
'use strict';const checkinactivity=require("./checkinkpi"),task=require("./task"),{round}=require("../libs/utils"),strategickpiSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},id_link:{type:String,required:!0,maxlength:1024},name:{type:String,maxlength:1024},note:{type:String,maxlength:4E3},phu_trach:String,ten_phu_trach:String,attends:[],year:{type:Number,required:!0},update_source:String,measure_as:{type:Number,default:1},current_value:{type:Number,default:0},target_value:{type:Number,
default:0},aim:{type:Number,default:1},ma_bp:{type:String,required:!0},exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String]});
(global.configs||{}).createIndexes&&(strategickpiSchema.index({id_app:1,name:1}),strategickpiSchema.index({id_link:1}),strategickpiSchema.index({note:1}),strategickpiSchema.index({name:"text",phu_trach:"text",ten_phu_trach:"text",note:"text"},{name:"strategickpi_index_text"}),strategickpiSchema.index({status:1}),strategickpiSchema.index({user_created:1,visible_to:1,visible_to_users:1}),strategickpiSchema.index({phu_trach:1}),strategickpiSchema.index({ten_phu_trach:1}),strategickpiSchema.index({attends:1}));
const model=mongoose.models.strategickpi||mongoose.model("strategickpi",strategickpiSchema);
model.asyncGetScore=async $item$$=>{var $checkins_total_yearly_target$$=await checkinactivity.find({id_link:$item$$._id});$item$$.num_check_ins=$checkins_total_yearly_target$$.length;$item$$.num_tasks=await task.countDocuments({id_link:$item$$._id});$item$$.total_score=Math.abs($checkins_total_yearly_target$$.map($checkin$$=>($checkin$$.score||0)-($checkin$$.current_value||0)).reduce(($a$$,$b$$)=>$a$$+$b$$,0));$checkins_total_yearly_target$$=Math.abs($item$$.target_value-$item$$.current_value);switch($item$$.aim){case 1:$item$$.score=
$checkins_total_yearly_target$$&&$item$$.total_score?round($item$$.total_score/$checkins_total_yearly_target$$*100,2):0;break;case 2:$item$$.score=$checkins_total_yearly_target$$&&$item$$.total_score?round($item$$.total_score/$checkins_total_yearly_target$$*100,2):0;break;case 3:$item$$.score=0}return $item$$};module.exports=model;