flexbiz-server
Version:
Flexible Server
50 lines (48 loc) • 22.3 kB
JavaScript
'use strict';const fs=require("fs"),path=require("path"),async=require("async"),_=require("lodash"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),numeral=require("numeral"),excelReport=require("excel-report"),redisCache=require("../libs/redis-cache"),{evalute,JSONParser}=require("../libs/utils"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),utils=require("../libs/utils"),{ERRORS,deleteEmptyArray}=require("./controllerUtils"),
find=($ctrl$$,$req$$,$callback$jscomp$1$$)=>{let $model$$=$ctrl$$.model,$shareRoute$$=$req$$.shareRoute;async.series([function($callback$$){setImmediate(async()=>{var $body_query$$={};_.isObject($req$$.body)&&($body_query$$=$req$$.body);$body_query$$={...$req$$.query,...$body_query$$};$req$$.query=$body_query$$;if($body_query$$.sort)if("object"==typeof $body_query$$.sort)var $condition_sort$$=$body_query$$.sort;else try{$condition_sort$$=JSONParser($body_query$$.sort)}catch($e$$){return console.error("error parse json",
$e$$,$body_query$$.sort),$callback$$({error:`Sort ${$body_query$$.sort} is not valid`})}!$condition_sort$$&&$ctrl$$.sort&&($condition_sort$$=Object.assign({},$ctrl$$.sort));$req$$.sort=$condition_sort$$;$req$$.fetch_by_groups=$body_query$$.fetch_by_groups;delete $body_query$$.fetch_by_groups;$condition_sort$$={};let $or$$=[];for(let $k$$ in $body_query$$)if("id_app"!==$k$$&&"access_token"!==$k$$)if("_id"===$k$$&&global.mongoose.Types.ObjectId.isValid($body_query$$._id))try{let $id$$=global.mongoose.Types.ObjectId($body_query$$._id);
$or$$.push({_id:$id$$})}catch($error$$){console.error("find condition",$error$$)}else{if("q"===$k$$&&$body_query$$[$k$$])try{let $q$$=_.isObject($body_query$$[$k$$])?$body_query$$[$k$$]:JSONParser($body_query$$[$k$$]);$req$$.fetch_by_groups=$req$$.fetch_by_groups||$q$$.fetch_by_groups;delete $q$$.fetch_by_groups;for(let $key_q$$ in $q$$)"_id"===$key_q$$||$key_q$$.startsWith("$")||_.has($model$$.schema.paths,$key_q$$)||delete $q$$.key_q;if(Object.keys($q$$).includes("_id"))if(!$q$$._id)delete $q$$._id;
else if("object"!==typeof $q$$._id&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return console.error("Condition is not valid",$q$$),$callback$$({error:"Condition is not valid"});($condition_sort$$=$q$$)||($condition_sort$$={});continue}catch($e$$){return console.error("find condition",$e$$,$body_query$$[$k$$]),$callback$$({error:"Condition is not valid"})}if("fields"!==$k$$&&_.has($model$$.schema.paths,$k$$))if($ctrl$$.options.findExact[$k$$])$condition_sort$$[$k$$]=$body_query$$[$k$$];else{let $item$$=
{};"number"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]=Number($body_query$$[$k$$]):"date"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]=new Date($body_query$$[$k$$]):"string"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]={$regex:($body_query$$[$k$$]||"").trim().replace(/[.*+\-?^${}()|[\]\\]/g,"\\$&"),$options:"i"}:$item$$[$k$$]=$body_query$$[$k$$];$or$$.push($item$$)}else"$text"===$k$$&&$or$$.push({$text:{$search:$body_query$$[$k$$]}})}0!==
$or$$.length&&("$and"===$body_query$$.cType?$condition_sort$$.$and=$or$$:$condition_sort$$.$or=$or$$);$shareRoute$$||0==$ctrl$$.require_id_app||($condition_sort$$.id_app=$req$$.user.current_id_app);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition_sort$$,function($error$$,$condition$jscomp$0$$){setImmediate(()=>{if($error$$)return $callback$$({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$0$$,function($e$$,$condition$$){if($e$$)return console.error("dynamicFinding",
$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$callback$$()}):($req$$.condition=$condition$jscomp$0$$,$callback$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition_sort$$,function($e$$,$condition$$){if($e$$)return console.error("dynamicFinding",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$callback$$()}):($req$$.condition=$condition_sort$$,$callback$$())})},
function($callback$$){if($shareRoute$$)return $callback$$();setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.getRightByItem($req$$.user.current_id_app,$model$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $callback$$({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$,code:$e$jscomp$0$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $callback$$();$req$$.admin=
$admin$$;let $condition$$=$req$$.condition;$condition$$||($condition$$={});$condition$$.$and||($condition$$.$and=[]);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,$_condition$$,($e$$,$_condition$$)=>{setImmediate(()=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});_.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$);$req$$.condition_assign=$_condition$$;$req$$.condition=$condition$$;$callback$$()})});
else _.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$),$req$$.condition_assign=$_condition$$,$req$$.condition=$condition$$,$callback$$()})},$ctrl$$.name,{notNeedRight:$notNeedRight$$})})},function($callback$jscomp$0$$){if($shareRoute$$||$req$$.admin||!$req$$.condition_assign||0===Object.keys($req$$.condition_assign).length)return $callback$jscomp$0$$();setImmediate(()=>{if($ctrl$$.options.assignWiths){let $condition_assignwiths$$={};async.mapSeries($ctrl$$.options.assignWiths,
($col$$,$callback$$)=>{setImmediate(()=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($req$$.user.current_id_app,$m$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $callback$$({e:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$,code:$e$jscomp$0$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $callback$$();$_condition$$.id_app=$req$$.user.current_id_app;$req$$.condition[$col$$.ref_field]&&($_condition$$[$col$$.ref_field]=
$req$$.condition[$col$$.ref_field]);$m$$.find($_condition$$,{[$col$$.ref_field]:1}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return $callback$$($e$$);let $dsdt$$=$rs$$.map($r$$=>$r$$[$col$$.ref_field]);$dsdt$$.push("");$dsdt$$.push(null);$condition_assignwiths$$[$col$$.field]={$in:$dsdt$$};$callback$$()})})})},$col$$.ref_module)})},$e$$=>{setImmediate(()=>{if($e$$)return $callback$jscomp$0$$({error:$e$$.error||$e$$.message||$e$$});if(0<Object.keys($condition_assignwiths$$).length){let $condition$$=
$req$$.condition_assign||$req$$.condition;$condition$$.$and||($condition$$.$and=[]);let $$or$$=$condition$$.$and.find($a$$=>$a$$.$or);$$or$$?$$or$$.$or.push($condition_assignwiths$$):$condition$$.$and.push($condition_assignwiths$$)}$callback$jscomp$0$$()})})}else $callback$jscomp$0$$()})},function($callback$$){setImmediate(async()=>{if($shareRoute$$)return $callback$$();let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.hasRight($req$$.user.current_id_app,$req$$.user.email,
$ctrl$$.module,"view",function($error$$,$permission$$){setImmediate(()=>{if($ctrl$$.options.onQuery)$req$$.permission=$permission$$,$ctrl$$.options.onQuery($req$$,$e$$=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});if(!$req$$.permission)return $req$$.result=[],$callback$$("0");$callback$$()});else{if(!$permission$$)return $req$$.result=[],$callback$$("0");$callback$$()}})},{notNeedRight:$notNeedRight$$})})},function($callback$jscomp$0$$){setImmediate(async()=>{let $condition$jscomp$0$$=
$req$$.condition;$condition$jscomp$0$$||($condition$jscomp$0$$={});if($shareRoute$$){$condition$jscomp$0$$.shared=!0;var $data_log_fields_fields$$=(await global.getModel("app").find({sale_online:!0},{_id:1}).lean()).map($a$$=>$a$$._id);$condition$jscomp$0$$.$and||($condition$jscomp$0$$.$and=[]);$condition$jscomp$0$$.$and.push({id_app:{$in:$data_log_fields_fields$$}});$condition$jscomp$0$$.id_app&&$condition$jscomp$0$$.$and.push({id_app:$condition$jscomp$0$$.id_app})}else _.has($model$$.schema.paths,
"id_app")&&!1!==$ctrl$$.require_id_app&&($condition$jscomp$0$$.id_app=$req$$.user.current_id_app);"public"===$req$$.user.email&&_.has($model$$.schema.paths,"session_created")&&($condition$jscomp$0$$.session_created=($req$$.cookies||{}).uid);_.extend($condition$jscomp$0$$,$ctrl$$.keyValues);deleteEmptyArray($condition$jscomp$0$$,"$and");deleteEmptyArray($condition$jscomp$0$$,"$or");deleteEmptyArray($condition$jscomp$0$$,"$nor");_.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$jscomp$0$$.ma_ct=
$ctrl$$.name.toUpperCase());let $condition_group$$;$req$$.fetch_by_groups&&$req$$.fetch_by_groups.model_group&&$req$$.fetch_by_groups.field&&($condition_group$$=$req$$.fetch_by_groups.condition||{},$condition_group$$.status=!0,$condition_group$$.id_app=$req$$.user.current_id_app,$condition$jscomp$0$$[$req$$.fetch_by_groups.field]&&($condition_group$$[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]=$condition$jscomp$0$$[$req$$.fetch_by_groups.field]));if($req$$.query.count){let $groups_number$$=
0;$condition_group$$&&($groups_number$$=await global.getModel($req$$.fetch_by_groups.model_group).countDocuments($condition_group$$));$condition$jscomp$0$$.$where?(console.log("phai loai bo $where trong condition"),$model$$.count($condition$jscomp$0$$,function($e$$,$data$$){if($e$$)return console.error("count",$e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$});$req$$.result={rows_number:$data$$,groups_number:$groups_number$$};$callback$jscomp$0$$("0")})):
$model$$.countDocuments($condition$jscomp$0$$,function($e$$,$data$$){if($e$$)return console.error("countDocuments",$e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$});$req$$.result={rows_number:$data$$,groups_number:$groups_number$$};$callback$jscomp$0$$("0")})}else{let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}$data_log_fields_fields$$=
$req$$.query.fields;let $gfields$$={};$data_log_fields_fields$$&&(_.isArray($data_log_fields_fields$$)?$data_log_fields_fields$$.forEach($f$$=>{"_id"!==$f$$&&($gfields$$[$f$$]=1)}):_.isObject($data_log_fields_fields$$)?$gfields$$={...$gfields$$,...$data_log_fields_fields$$}:$data_log_fields_fields$$.split(",").filter($f$$=>$f$$&&0>$field_not_right$$.indexOf($f$$)).forEach($f$$=>{"_id"!==$f$$&&($gfields$$[$f$$]=1)}));$field_not_right$$.forEach($f$$=>{Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])?
delete $gfields$$[$f$$]:$gfields$$[$f$$]=0});!$data_log_fields_fields$$&&(($data_log_fields_fields$$=$req$$.query.notfields)&&(_.isArray($data_log_fields_fields$$)?$data_log_fields_fields$$.forEach($f$$=>{$f$$&&"_id"!==$f$$&&(Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)}):_.isObject($data_log_fields_fields$$)?$gfields$$={...$gfields$$,...$data_log_fields_fields$$}:$data_log_fields_fields$$.split(",").forEach($f$$=>{$f$$&&"_id"!==$f$$&&(Object.keys($gfields$$).find($k$$=>
1==$gfields$$[$k$$])?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)})),$shareRoute$$||"public"===$req$$.user.email)&&(Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])?(delete $gfields$$.dataview_to,delete $gfields$$.dataview_to_users):($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0));$condition$jscomp$0$$.$text&&($gfields$$||($gfields$$={}),$gfields$$.textScore={$meta:"textScore"});delete $req$$.query_cache;$ctrl$$.cache&&($req$$.query_cache={..._.cloneDeep($req$$.query),..._.cloneDeep($condition$jscomp$0$$)},
delete $req$$.query_cache.q,delete $req$$.query_cache.refresh_required,$req$$.query_cache.gfields=_.cloneDeep($gfields$$));const $fetchData$$=($condition$$,$limit$$,$page$$,$callback$$)=>{setImmediate(async()=>{let $query$$;if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate)try{$query$$=$model$$.aggregate([{$match:$condition$$}]);$req$$.query.group&&($group_sort$$=JSONParser($req$$.query.group),$query$$.group($group_sort$$));if($req$$.query.match){let $match$$=
JSONParser($req$$.query.match);$query$$.match($match$$)}let $project$$;if($req$$.query.project)$project$$=JSONParser($req$$.query.project),$query$$.project($project$$);else if($gfields$$&&0<Object.keys($gfields$$).length)$project$$=$gfields$$;else if($project$$={_id:1},$group_sort$$)for(let $key$$ in $group_sort$$)$project$$[$key$$]=1;$query$$.project($project$$);if($req$$.query.aggregate){let $aggregate$$=JSONParser($req$$.query.aggregate);$query$$.append($aggregate$$)}}catch($e$$){return $callback$$({error:$e$$.message||
$e$$.error||$e$$})}else _.has($model$$.schema.paths,"id_app")&&0<Object.keys($gfields$$).length&&Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])&&($gfields$$.id_app=1),$query$$=$model$$.find($condition$$,$gfields$$);var $group_sort$$=$req$$.sort;if($group_sort$$){$group_sort$$._id=1;for(var $key$jscomp$0$$ in $group_sort$$)if("textScore"!==$key$jscomp$0$$&&1!=$group_sort$$[$key$jscomp$0$$]&&-1!=$group_sort$$[$key$jscomp$0$$])return console.error("sort is valid",$group_sort$$,$key$jscomp$0$$,
$group_sort$$[$key$jscomp$0$$]),$callback$$({error:`Sort ${JSON.stringify($group_sort$$)} is not valid`})}else $gfields$$.textScore&&($group_sort$$={textScore:{$meta:"textScore"}});$group_sort$$&&$query$$.sort($group_sort$$);"xlsx"!==$req$$.query.type_data&&"json_export"!==$req$$.query.type_data&&"1"!=$req$$.query.rpt&&($limit$$&&($limit$$=Number($limit$$)),$limit$$||($limit$$=!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name&&"labelinfo"!==$ctrl$$.name?20:500),$limit$$&&500<$limit$$&&!$req$$.query.print&&
!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name&&"labelinfo"!==$ctrl$$.name&&($limit$$=500),$page$$?($key$jscomp$0$$=(Number($page$$)-1)*$limit$$,0>$key$jscomp$0$$&&($key$jscomp$0$$=0),$query$$.skip($key$jscomp$0$$).limit($limit$$)):$query$$.limit($limit$$));$query$$.lean&&($query$$=$query$$.lean());$query$$.exec(($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})};$data_log_fields_fields$$=$req$$.query;delete $data_log_fields_fields$$.access_token;$req$$.user&&!$data_log_fields_fields$$.count&&"log"!==
$ctrl$$.name&&"labelinfo"!==$ctrl$$.name&&"listinfo"!==$ctrl$$.name&&"reportinfo"!==$ctrl$$.name&&"moduleinfo"!==$ctrl$$.name&&"options"!==$ctrl$$.name&&global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"QUERY",data:{condition:JSON.stringify($data_log_fields_fields$$)}},$req$$.user.email,$req$$.user_agent,$req$$);let $condition_groups$$=[],$limit$$=Number($req$$.query.limit||20),$page_fetch$$=Number($req$$.query.page||0);isNaN($page_fetch$$)&&($page_fetch$$=
0);isNaN($limit$$)&&($limit$$=20);if($condition_group$$){let $field_ref$$=$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field;$data_log_fields_fields$$={[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1};let $limit_group$$=$req$$.fetch_by_groups.limit_group||10,$page$$=Number($req$$.query.page||0);isNaN($page$$)&&($page$$=0);let $skip$$=0;1<$page$$&&($skip$$=($page$$-1)*$limit_group$$);0>$skip$$&&($skip$$=0);(await global.getModel($req$$.fetch_by_groups.model_group).find($condition_group$$,
$data_log_fields_fields$$).sort({stt:1,[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1}).skip($skip$$).limit($limit_group$$).lean()).forEach($g$$=>{let $c$$={...$condition$jscomp$0$$};$c$$[$req$$.fetch_by_groups.field]=$g$$[$field_ref$$];$condition_groups$$.push($c$$)});0==$condition_groups$$.length?$condition_groups$$=[$condition$jscomp$0$$]:($page_fetch$$=0,$req$$.fetch_by_groups.limit&&($limit$$=Math.max(Number($req$$.fetch_by_groups.limit),Math.round($limit$$/$condition_groups$$.length))))}else $condition_groups$$=
[$condition$jscomp$0$$];async.map($condition_groups$$,($condition$$,$cb$$)=>{$fetchData$$($condition$$,$limit$$,$page_fetch$$,$cb$$)},($e$jscomp$0$$,$obj4views$$)=>{if($e$jscomp$0$$)return console.error("exec query find",$e$jscomp$0$$,JSON.stringify($condition$jscomp$0$$)),$callback$jscomp$0$$({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});let $obj4view$$=$obj4views$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$obj4view$$||($obj4view$$=[]);async.parallel({found:function($callback$$){$ctrl$$.found?
$ctrl$$.found($req$$.user,$condition$jscomp$0$$,$obj4view$$,function($error$$,$items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,$obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>{$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});$callback$$(null)}},function($error$jscomp$0$$,$rs$jscomp$1$$){setImmediate(()=>{if($error$jscomp$0$$)return $callback$jscomp$0$$({error:$error$jscomp$0$$.error||$error$jscomp$0$$.message||
$error$jscomp$0$$});$obj4view$$=$rs$jscomp$1$$.found;async.series({e_view:function($callback$$){$ctrl$$.onView($req$$.user,$obj4view$$,($error$$,$viewValue$$)=>{setImmediate(()=>{if($error$$)return console.error("Erron on view:",$error$$),$callback$$($error$$);$callback$$(null,$viewValue$$)})},{req:$req$$,shareRoute:$shareRoute$$})}},async function($app_dir_root_template_e$$,$rs$jscomp$0$$){if($error$jscomp$0$$)return $callback$jscomp$0$$({error:$error$jscomp$0$$.error||$error$jscomp$0$$.message||
$error$jscomp$0$$});$req$$.query_cache&&setImmediate(()=>{redisCache.setCacheReport($req$$.user.email,($req$$.user.current_id_app||"system").toString(),$ctrl$$.name,$req$$.query_cache,$rs$jscomp$0$$.e_view,$req$$.query.page)});if($req$$.query.type_data&&"xlsx"==$req$$.query.type_data){$app_dir_root_template_e$$=(configs.paths||{}).templates;let $template_id$$;if($template_id$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($template_id$$))return $callback$jscomp$0$$({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});
var $_groupBy_excelTemplate_func_string$$=await global.getModel("exportexceltemplate").findById($template_id$$);if(!$_groupBy_excelTemplate_func_string$$||!$_groupBy_excelTemplate_func_string$$.file)return $callback$jscomp$0$$({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});var $_rs_templatePath$$=$app_dir_root_template_e$$?`${path.dirname($app_dir_root_template_e$$)}${$_groupBy_excelTemplate_func_string$$.file}`:`${path.dirname(__dirname)}${$_groupBy_excelTemplate_func_string$$.file}`}else $app_dir_root_template_e$$&&
($_rs_templatePath$$=`${$app_dir_root_template_e$$}/excels/lists/${$ctrl$$.name}.xlsx`),$_rs_templatePath$$&&fs.existsSync($_rs_templatePath$$)||($_rs_templatePath$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($_rs_templatePath$$))return $callback$jscomp$0$$({error:"File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$_rs_templatePath$$+"'"});$app_dir_root_template_e$$={};$rs$jscomp$0$$.e_view.forEach($item$$=>{for(let $_key$$ in $item$$){let $_v$$=
$item$$[$_key$$];if(_.isObject($_v$$))for(let $__key$$ in $_v$$){let $__v$$=$_v$$[$__key$$];if(!_.isFunction($__v$$))if(0>$_key$$.indexOf("user")&&(0<=$__key$$.indexOf("ngay")||0<=$__key$$.indexOf("date")))try{$item$$[`${$_key$$}_${$__key$$}`]=new Date($__v$$)}catch($e$$){$item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else $item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else if($_v$$&&0>$_key$$.indexOf("user")&&(0<=$_key$$.indexOf("ngay")||0<=$_key$$.indexOf("date")))try{console.log("convert date",$_key$$,$_v$$);
let $d$$=moment($_v$$,"YYYY-MM-DD");$d$$.isValid()&&($item$$[`${$_key$$}`]=$d$$.toDate(),$item$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){console.error("Error convert to date",$_v$$,$e$$)}}});$app_dir_root_template_e$$.detail=$rs$jscomp$0$$.e_view;if($_groupBy_excelTemplate_func_string$$&&$_groupBy_excelTemplate_func_string$$.handle_data){$_groupBy_excelTemplate_func_string$$=`return (async ()=>{
try{
${$_groupBy_excelTemplate_func_string$$.handle_data}
}catch(e){
return {error:e}
}
})`;try{if(($app_dir_root_template_e$$=await evalute($_groupBy_excelTemplate_func_string$$,{data:$app_dir_root_template_e$$,moment,numeral,_,utils})())&&$app_dir_root_template_e$$.error)return console.error($app_dir_root_template_e$$.error,$_groupBy_excelTemplate_func_string$$),$callback$jscomp$0$$({error:$app_dir_root_template_e$$.error.message||$app_dir_root_template_e$$.error.error||$app_dir_root_template_e$$.error})}catch($e$$){return console.error($e$$,$_groupBy_excelTemplate_func_string$$),
$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$})}}excelReport($_rs_templatePath$$,$app_dir_root_template_e$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error("excelReport",$e$$),$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$result$$;$req$$.dataType="xlsx";$callback$jscomp$0$$("0")})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"})}else $req$$.query.print&&$req$$.query.id_rpt&&global.mongoose.Types.ObjectId.isValid($req$$.query.id_rpt)?
htmlReport($req$$.query.id_rpt,{...$req$$.user.current_app_info,...$req$$.query,company:{...$req$$.user.current_app_info},detail:$rs$jscomp$0$$.e_view,details:$rs$jscomp$0$$.e_view}).then($rs$$=>{$req$$.result=$rs$$;$callback$jscomp$0$$("0")},$e$$=>{console.error("htmlReport",$e$$);$callback$jscomp$0$$($e$$)}):($_rs_templatePath$$=$rs$jscomp$0$$.e_view,$req$$.query.groupBy?($_groupBy_excelTemplate_func_string$$=$req$$.query.groupBy.split(","),$_rs_templatePath$$.groupBy($_groupBy_excelTemplate_func_string$$,
[],($e$$,$_items$$)=>{if($e$$)return console.error("jsonReport",$e$$),$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$_items$$;$callback$jscomp$0$$("0")})):($req$$.result=$_rs_templatePath$$,$callback$jscomp$0$$("0")))})})})})}})}],$e$$=>{if($e$$&&"0"!=$e$$)return $callback$jscomp$1$$($e$$);$callback$jscomp$1$$(null,{result:$req$$.result,dataType:$req$$.dataType||"json"})})};module.exports=find;