flexbiz-server
Version:
Flexible Server
19 lines (18 loc) • 8.76 kB
JavaScript
'use strict';const async=require("async"),_=require("lodash"),excelReport=require("excel-report"),fs=require("fs"),path=require("path"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),textReport=require("../libs/textReport"),{ERRORS,getParameters,prepareParameters}=require("./controllerUtils"),exportHandler=($ctrl$$,$req$$,$callback$jscomp$1$$)=>{const $user$$=$req$$.user,$model$$=$ctrl$$.model,$query$$=$req$$.query;async.series([function($callback$jscomp$0$$){let $id$$=
$query$$._id;if(!$id$$)return $callback$jscomp$0$$({error:"H\u00e0m n\u00e0y y\u00eau c\u1ea7u tham s\u1ed1 _id"});let $ids$$=$id$$.split(",");$model$$.find({_id:{$in:$ids$$}}).lean().exec(function($e$$,$obj$$){if($e$$)return console.error("exportToExcel query",$e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$});setImmediate(()=>{global.getModel("log").create({id_app:$user$$.current_id_app,id_func:$ctrl$$.name,action:"ExportTOExcel",data:{id:$id$$}},$user$$.email,
$req$$.header("user-agent"),$req$$)});if(0==$obj$$.length)return $callback$jscomp$0$$({error:ERRORS.ERR_NOT_HAVE_DATA,code:ERRORS.ERR_NOT_HAVE_DATA_CODE});$ctrl$$.getting?async.mapSeries($obj$$,function($ob$$,$callback$$){setImmediate(()=>{$ctrl$$.getting($user$$,$ob$$._id,function($error$$){if($error$$)return $callback$$($error$$);$callback$$(null)},$ob$$)})},function($e$$){if($e$$)return console.error("exportToExcel",$e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||
$e$$});$req$$.obj=$obj$$;$callback$jscomp$0$$()}):($req$$.obj=$obj$$,$callback$jscomp$0$$())})},function($callback$jscomp$0$$){async.mapSeries($req$$.obj,function($obj$$,$callback$$){setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($user$$,{action:"view"});permission.hasRight($obj$$.id_app,$user$$.email,$ctrl$$.module,"view",function($error$$,$permission$$){$permission$$?$callback$$():($error$$=$error$$||"",$callback$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||
ERRORS.ERR_NOT_PERMIT_CODE}))},{data:$obj$$,notNeedRight:$notNeedRight$$})})},function($e$$){if($e$$)return console.error("exportToExcel permission",$e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$});$callback$jscomp$0$$()})},function($callback$$){let $objs$$=$req$$.obj;if($objs$$)$ctrl$$.onView($user$$,$objs$$,function($e$$,$viewValue$$){if($e$$)return console.error("exportToExcel onview",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||
$e$$});$req$$.obj=$viewValue$$;$callback$$()},{req:$req$$});else $callback$$()},function($callback$jscomp$0$$){let $objs$$=$req$$.obj;$ctrl$$.options.onExport&&$objs$$?async.mapSeries($objs$$,function($obj$$,$callback$$){setImmediate(()=>{$ctrl$$.options.onExport($user$$,$obj$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})})},function($e$$){if($e$$)return console.error("exportToExcel onExport",$e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||
$e$$});$callback$jscomp$0$$()}):$callback$jscomp$0$$()},function($callback$jscomp$0$$){let $rpt_id$$=$req$$.params.rpt_id,$id_app$$=$query$$.id_app,$query_rpt$$={ma_cn:$ctrl$$.module.toUpperCase(),id_app:$id_app$$};global.getModel("rpt").find($query_rpt$$).lean().exec(function($e$jscomp$2$$,$rps$$){if($e$jscomp$2$$)return console.error("exportToExcel find rpt",$e$jscomp$2$$),$e$jscomp$2$$.error?$callback$jscomp$0$$($e$jscomp$2$$):$callback$jscomp$0$$({error:$e$jscomp$2$$.message||$e$jscomp$2$$});
let $objs$$=$req$$.obj,$rs$$=_.find($rps$$,function($r$$){return $r$$._id.toString()===$rpt_id$$});if(!$rs$$)return $callback$jscomp$0$$({error:"Kh\u00f4ng t\u00ecm th\u1ea5y file m\u1eabu"});global.getModel("app").findOne({_id:$id_app$$},{viettel_user:0,viettel_password:0,viettel_url_service:0,sip_uri:0,sip_password:0,sip_websocket:0,voiip_access_token:0,voiip_webhook:0,wallet_address:0,wallet_token:0,owner:0,default_password:0,email_host:0,email_port:0,email_secure:0,email_authMethod:0,email_user:0,
email_pass:0,email_name:0,exfields:0,ssl_key:0,ssl_cert:0,ssl_ca:0}).lean().exec(function($error$$,$_app$$){setImmediate(()=>{if($error$$)return $callback$jscomp$0$$({error:"Kh\u00f4ng t\u1ed3n t\u1ea1i c\u00f4ng ty n\u00e0y"});delete $_app$$.participants;delete $_app$$.expire_date;delete $_app$$.sale_online;_.extend($_app$$,$query$$);delete $_app$$.access_token;let $data4export$$=[];$objs$$.forEach(function($_data_obj$$){for(let $_obj_c$$ in $_data_obj$$)if(_.isObject($_data_obj$$[$_obj_c$$]))for(let $k$$ in $_data_obj$$[$_obj_c$$])if(0<=
$k$$.indexOf("ngay")||0<=$k$$.indexOf("date"))try{$_data_obj$$[$_obj_c$$+"_"+$k$$]=new Date($_data_obj$$[$_obj_c$$][$k$$])}catch($e$$){$_data_obj$$[$_obj_c$$+"_"+$k$$]=$_data_obj$$[$_obj_c$$][$k$$]}else $_data_obj$$[$_obj_c$$+"_"+$k$$]=$_data_obj$$[$_obj_c$$][$k$$];$_data_obj$$={obj:$_data_obj$$};_.extend($_data_obj$$,$_app$$);$data4export$$.push($_data_obj$$)});getParameters($id_app$$,$rps$$,($e$jscomp$1$$,$parameters$$)=>{if($e$jscomp$1$$)return console.error("exportToExcel get params",$e$jscomp$1$$),
$e$jscomp$1$$.error?$callback$jscomp$0$$($e$jscomp$1$$):$callback$jscomp$0$$({error:$e$jscomp$1$$.message||$e$jscomp$1$$});async.mapSeries($data4export$$,function($_data$$,$callback$$){setImmediate(()=>{prepareParameters($ctrl$$,$parameters$$,$_data$$,$_data$$.obj,function($e$$,$rs$$){if($e$$)return $callback$$($e$$);delete $_data$$.obj;$callback$$(null,$rs$$)})})},async function($e$jscomp$0$$){setImmediate(async()=>{if($e$jscomp$0$$)return console.error("exportToExcel",$e$jscomp$0$$),$e$jscomp$0$$.error?
$callback$jscomp$0$$($e$jscomp$0$$):$callback$jscomp$0$$({error:$e$jscomp$0$$.message||$e$jscomp$0$$});if($query$$.print){console.log("render print page....");if(!$rs$$.html_template)return $callback$jscomp$0$$({error:"Ch\u01b0a khai b\u00e1o m\u1eabu in"});let $cac_lien$$=$rs$$.cac_lien;$cac_lien$$&&0!=$cac_lien$$.length||($cac_lien$$=[{ma_lien:1,ten_lien:"Li\u00ean 1"}]);try{let $pages$$=[];async.mapSeries($data4export$$,($_data$$,$callback$$)=>{$_data$$.datasource={...$_data$$};$_data$$.company=
{...$_app$$};async.mapSeries($cac_lien$$,async $lien_page$$=>{$_data$$.lien=$lien_page$$;$lien_page$$=await htmlReport($rs$$._id,$_data$$);$pages$$.push($lien_page$$)},()=>{$callback$$()})},()=>{$req$$.data=$pages$$;$req$$.ext="print";$callback$jscomp$0$$(null)})}catch($e$$){return console.error("exportToExcel",$e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$})}}else if($query$$.json)$req$$.data=$data4export$$,$req$$.ext="json",$callback$jscomp$0$$(null);
else{if(!$rs$$.file_mau_in)return $callback$jscomp$0$$({error:"Ch\u01b0a khai b\u00e1o file excel m\u1eabu"});var $dir_root_templates_id_file$$=configs.paths.templates||__dirname;let $templatePath$$;if(0<$rs$$.file_mau_in.indexOf("/file/download")){$dir_root_templates_id_file$$=$rs$$.file_mau_in.split("/").pop();const $file$$=global.getModel("file");try{var $_data$jscomp$0$$=await $file$$.findOne({_id:$dir_root_templates_id_file$$});$_data$jscomp$0$$||$callback$jscomp$0$$({error:"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"});
let $file_name$$=$_data$jscomp$0$$.file.name,$root$$=configs.paths.uploads;$root$$||($root$$=__dirname,$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$templatePath$$=path.join($root$$,$file_name$$)}catch($e$$){return $callback$jscomp$0$$({error:$e$$.message||"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"})}}else $templatePath$$=path.dirname($dir_root_templates_id_file$$)+$rs$$.file_mau_in;if(!$templatePath$$||!fs.existsSync($templatePath$$))return $callback$jscomp$0$$({error:"File m\u1eabu kh\u00f4ng t\u1ed3n t\u1ea1i"});
let $ext$$=$templatePath$$.split(".").pop();"xlsx"===$ext$$?excelReport($templatePath$$,$data4export$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$});$req$$.data=$result$$;$req$$.ext="xlsx";$callback$jscomp$0$$(null)})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"}):($_data$jscomp$0$$=$data4export$$[0],$_data$jscomp$0$$.datasource={...$_data$jscomp$0$$},$_data$jscomp$0$$.company=
{...$_app$$},textReport($templatePath$$,$_data$jscomp$0$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error("exportToExcel textreport",$e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$});"docx"===$ext$$?($req$$.data=$result$$,$req$$.ext="docx"):($req$$.data=$result$$,$req$$.ext="text");$callback$jscomp$0$$(null)})}))}})})})})})})}],$e$$=>{if($e$$)return $callback$jscomp$1$$($e$$);$callback$jscomp$1$$(null,{ext:$req$$.ext,data:$req$$.data})})};
module.exports=exportHandler;