flexbiz-server
Version:
Flexible Server
7 lines (6 loc) • 2.8 kB
JavaScript
'use strict';const async=require("async"),underscore=require("underscore"),utils=require("./utils"),moment=require("moment");
module.exports=async function($condition$$,$fn$$){!$condition$$.ngay&&$condition$$.den_ngay&&($condition$$.ngay=$condition$$.den_ngay);if($condition$$&&$condition$$.ngay&&$condition$$.id_app){var $ngay$$=moment(new Date($condition$$.ngay)).endOf("date").toDate(),$nam$$=$ngay$$.getFullYear(),$ngay_dn$$=moment().year($nam$$).startOf("year").toDate(),$id_app$$=$condition$$.id_app;async.series({dn:$callback$$=>{let $c_dk$$={id_app:$id_app$$,nam:$nam$$};$condition$$.email&&($c_dk$$.email=$condition$$.email);
global.getModel("cdnphep").find($c_dk$$).lean().exec(function($error$$,$results$$){$error$$?$callback$$($error$$):$callback$$(null,$results$$)})},ngay_phep:$callback$$=>{setImmediate(async()=>{var $ngay_phep_query$$={id_app:$id_app$$,ngay_bat_dau_lam:{$lte:$ngay$$}};$condition$$.email&&($ngay_phep_query$$.user=$condition$$.emai);$ngay_phep_query$$=(await global.getModel("dmnv").find($ngay_phep_query$$).lean()).filter($nv$$=>$nv$$.user&&$nv$$.ngay_bat_dau_lam).map($nv$$=>{let $so_ngay_phep$$=utils.round(Math.min(moment($ngay$$).diff(moment($ngay_dn$$),
"days"),moment($ngay$$).diff(moment($nv$$.ngay_bat_dau_lam),"days"))/30,0);return{email:$nv$$.user,so_ngay_phep:$so_ngay_phep$$,so_ngay_nghi:0}});$callback$$(null,$ngay_phep_query$$)})},ngay_nghi:$callback$$=>{let $query$$={id_app:$id_app$$,trang_thai:"5",tu_ngay:{$gte:$ngay_dn$$,$lt:$ngay$$}};$condition$$.email&&($query$$.user_created=$condition$$.email);global.getModel("dknphep").find($query$$).lean().exec(function($error$$,$pss$$){if($error$$)return $callback$$($error$$);$pss$$.forEach($p$$=>{$p$$.email=
$p$$.user_created;let $da_nghi$$=moment($ngay$$).diff(moment($p$$.tu_ngay),"days");0<=$da_nghi$$&&($da_nghi$$+=1);"2"==$p$$.loai_nghi&&($da_nghi$$=Math.max(0,$da_nghi$$-.5));$p$$.so_ngay_nghi=Math.min($p$$.so_ngay_nghi,$da_nghi$$);$p$$.so_ngay_phep=0});$callback$$(null,$pss$$)})}},($data_error$$,$groupBy_results$$)=>{if($data_error$$)return $fn$$($data_error$$);$data_error$$=[...$groupBy_results$$.dn,...$groupBy_results$$.ngay_nghi,...$groupBy_results$$.ngay_phep];($groupBy_results$$=$condition$$.groupBy)||
($groupBy_results$$=["email"]);if(!underscore.isArray($groupBy_results$$)&&0<=$groupBy_results$$.indexOf("["))try{$groupBy_results$$=JSON.parse($groupBy_results$$)}catch($e$$){console.error($e$$)}$data_error$$.groupBy($groupBy_results$$,["so_ngay_phep","so_ngay_nghi","ton00"],($e$$,$groups$$)=>{if($e$$)return $fn$$($e$$);for(let $r$$ of $groups$$)$r$$.ton00=utils.round($r$$.ton00+$r$$.so_ngay_phep-$r$$.so_ngay_nghi,1),$r$$.so_ngay_phep=0,$r$$.so_ngay_nghi=0;$fn$$(null,$groups$$)})})}else $fn$$("B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: ngay,id_app")};