flexbiz-server
Version:
Flexible Server
7 lines (6 loc) • 2.39 kB
JavaScript
const async=require("async"),dkphep=require("./dknphep"),underscore=require("underscore"),moment=require("moment"),utils=require("./utils");
module.exports=function($condition$$,$fn$$){if($condition$$&&$condition$$.tu_ngay&&$condition$$.den_ngay&&$condition$$.id_app){var $id_app$$=$condition$$.id_app,$groupBy$$=$condition$$.groupBy;if(!underscore.isArray($groupBy$$))try{$groupBy$$=JSON.parse($groupBy$$)}catch($e$$){Logger.error($e$$)}$groupBy$$||=["email"];async.parallel({dn:function($callback$$){dkphep($condition$$,function($error$$,$result$$){if($error$$)return $callback$$($error$$);$callback$$(null,$result$$)})},phep:function($callback$$){setImmediate(async()=>
{try{let $query$$={id_app:$id_app$$,ngay_bat_dau_lam:{$lt:$condition$$.den_ngay}};$condition$$.email&&($query$$.user=$condition$$.emai);let $ngay_phep$$=(await global.getModel("dmnv").find($query$$).lean()).filter($nv$$=>$nv$$.user&&$nv$$.ngay_bat_dau_lam).map($nv$$=>{let $so_ngay_phep$$=utils.round(Math.min(moment($condition$$.den_ngay).diff(moment($condition$$.tu_ngay),"days"),moment($condition$$.den_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$$)}catch($e$$){$callback$$($e$$)}})},nghi:function($callback$$){let $query$$={id_app:$id_app$$,trang_thai:"5",tu_ngay:{$gte:$condition$$.tu_ngay,$lte:$condition$$.den_ngay}};$condition$$.email&&($query$$.user_created=$condition$$.email);global.getModel("dknphep").find($query$$).lean().then(function($pss$$){$pss$$.forEach($p$$=>{$p$$.email=$p$$.user_created;let $da_nghi$$=moment($condition$$.den_ngay).diff(moment($p$$.tu_ngay),"days");$da_nghi$$>=0&&($da_nghi$$+=
1);$p$$.loai_nghi=="2"&&($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$$)}).catch($error$$=>{$callback$$($error$$)})}},function($error$$,$results$$){$error$$?$fn$$($error$$):[...$results$$.dn,...$results$$.nghi,...$results$$.phep].groupBy($groupBy$$,[{name:"ton_dau",value:"ton00"},"so_ngay_phep","so_ngay_nghi"],($e$$,$groups$$)=>{if($e$$)return $fn$$($e$$);for(let $r$$ of $groups$$)$r$$.ton_cuoi=$r$$.ton_dau+
$r$$.so_ngay_phep-$r$$.so_ngay_nghi;$fn$$(null,$groups$$)})})}else $fn$$("L\u1ed7i: B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: tu_ngay,den_ngay,id_app")};