UNPKG

flexbiz-server

Version:

Flexible Server

15 lines (14 loc) 6.79 kB
const async=require("async"),_=require("lodash"),view=async($user$$,$self$$,$rows$$,$next$$,$options$$)=>{const $model$$=$self$$.model,$name$$=$self$$.name,$listinfo_code$$=$options$$?.req?.query?.["listinfo-code"]||$options$$?.req?.query?.listinfo_code||$options$$?.req?.headers?.["listinfo-code"]||$options$$?.req?.headers?.["Listinfo-Code"];let $fields_load$$="";$options$$&&$options$$.req&&$options$$.req.query&&$options$$.req.query.fields&&($fields_load$$=$options$$.req.query.fields);let $schema_paths$$= $model$$.schema.paths;for(let $index$$=0;$index$$<$rows$$.length;$index$$++){const $item$$=$rows$$[$index$$];$item$$._id&&typeof $item$$._id!=="string"&&($item$$._id=$item$$._id.toString());delete $item$$.__v;$item$$.stt_sorted=$index$$;delete $item$$.from_cached;_.has($schema_paths$$,"exfields")&&!$item$$.exfields&&($item$$.exfields={})}let $items$$=$rows$$;async.parallel({app:$callback$$=>{setImmediate(async()=>{_.has($schema_paths$$,"id_app")&&await $items$$.filter($item$$=>$item$$.id_app).asyncJoinModel2(null, "app",{where:{id_app:"_id"},fields:{app_name:"name"}});$callback$$(null)})},_Participant_created:$callback$$=>{setImmediate(async()=>{_.has($schema_paths$$,"id_app")&&await $items$$.filter($item$$=>$item$$.user_created&&!$item$$.from_cached).asyncJoinModel2($user$$.current_id_app,"participant",{where:{user_created:"email"},fields:{name_user_created:"name"}});await $items$$.filter($item$$=>$item$$.user_created&&!$item$$.name_user_created&&!$item$$.from_cached).asyncJoinModel2(null,"user",{where:{user_created:"email"}, fields:{name_user_created:"name"}});$callback$$(null)})},_Participant_updated:$callback$$=>{setImmediate(async()=>{_.has($schema_paths$$,"id_app")&&await $items$$.filter($item$$=>$item$$.user_updated&&!$item$$.from_cached).asyncJoinModel2($user$$.current_id_app,global.getModel("participant"),{where:{user_updated:"email"},fields:{name_user_updated:"name"}});await $items$$.filter($item$$=>$item$$.user_updated&&!$item$$.name_user_updated&&!$item$$.from_cached).asyncJoinModel2(null,global.getModel("user"), {where:{user_updated:"email"},fields:{name_user_updated:"name"}});$callback$$(null)})},_approve:$callback$$=>{!$fields_load$$||$fields_load$$.indexOf("approve_data")>=0?async.map($items$$,($item$$,$next$$)=>{setImmediate(()=>{global.getModel("approve").find({id_ct:$item$$._id.toString(),id_app:$item$$.id_app},{data:0,request_content:0}).sort({data_created:-1}).lean().then(async $rs$$=>{setImmediate(async()=>{$item$$.approve_data=$rs$$||[];$item$$.approved_latest=$item$$.approve_data.filter($a$$=> $a$$.user_approved||$a$$.user_denied)[0];$item$$.approve_next=$item$$.approve_data.filter($a$$=>!$a$$.user_approved&&!$a$$.user_denied)[0];await $item$$.approve_data.filter($r$$=>$r$$.user_approved).asyncJoinModel2($item$$.id_app,global.getModel("participant"),{where:{user_approved:"email"},fields:{user_approved_name:"name",signature_image:"signature_image"}});await $item$$.approve_data.filter($r$$=>$r$$.user_denied).asyncJoinModel2($item$$.id_app,global.getModel("participant"),{where:{user_denied:"email"}, fields:{user_denied_name:"name",signature_image:"signature_image"}});$next$$(null)})}).catch($e$$=>{Logger.error($e$$)})})},()=>{$callback$$(null)}):$callback$$(null)},transfer_ct:$callback$$=>{if(_.has($schema_paths$$,"id_ct_chuyen")&&$user$$.current_app_info&&$user$$.current_app_info.options&&$user$$.current_app_info.options.id_app_thue)async.map($items$$,($item$$,$next$$)=>{setImmediate(()=>{$model$$.findOne({id_app:$user$$.current_app_info.options.id_app_thue,id_ct_chuyen:$item$$._id.toString()}, {_id:1}).lean().then(async $rs$$=>{$rs$$&&($item$$.id_ct_nhan=$rs$$._id);$next$$(null)}).catch($e$$=>{Logger.error($e$$)})})},()=>{$callback$$(null)});else return $callback$$()},posted:$callback$$=>{$options$$&&$options$$.req&&($options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book)?async.mapLimit($items$$,10,($item$$,$next$$)=>{setImmediate(async()=>{let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book;var $exists_exists$$={_id:1};if($book$$== "sokho"&&$item$$.details?.length>0)if(await $item$$.details.asyncJoinModel2($item$$.id_app,"dmvt",{where:"ma_vt",fields:["tg_tk"]}),$exists_exists$$.ma_vt=1,$exists_exists$$=await global.getModel($book$$).find({id_app:$item$$.id_app,id_ct:$item$$._id.toString()},$exists_exists$$).lean(),$exists_exists$$.length>0){let $ds_vt_voucher$$=$item$$.details.filter($d$$=>$d$$.tg_tk).map($d$$=>$d$$.ma_vt).sort(($a$$,$b$$)=>$a$$-$b$$),$ds_vt_book$$=$exists_exists$$.map($d$$=>$d$$.ma_vt).sort(($a$$,$b$$)=>$a$$- $b$$);$ds_vt_voucher$$.find($v$$=>$ds_vt_book$$.indexOf($v$$)<0)?$item$$[`${$book$$}_posted`]=!1:$item$$[`${$book$$}_posted`]=!0}else $item$$[`${$book$$}_posted`]=!1;else $exists_exists$$=await global.getModel($book$$).findOne({id_app:$item$$.id_app,id_ct:$item$$._id.toString()},$exists_exists$$).lean(),$item$$[`${$book$$}_posted`]=!!$exists_exists$$;$next$$()})},()=>{$callback$$(null)}):$callback$$()}},$e$$=>{if($e$$)return $next$$($e$$);if($options$$&&$options$$.req&&($options$$.req.query.show_posted_book|| $options$$.req.query.show_not_post_book)){let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book;$items$$=$items$$.filter($r$$=>$options$$.req.query.show_posted_book?$r$$[`${$book$$}_posted`]:!$r$$[`${$book$$}_posted`])}let $items_need_view$$=$items$$.filter($i$$=>!$i$$.from_cached),$items_cached$$=$items$$.filter($i$$=>$i$$.from_cached);async.series({view:$callback$$=>{if($self$$.view)try{$self$$.view($user$$,$items_need_view$$,function($error$$,$rs$$){setImmediate(()=> {if($error$$)return $callback$$($error$$);$items_need_view$$=$rs$$||$items_need_view$$;$callback$$(null,$items_need_view$$)})},$options$$)}catch($e$$){Logger.error("Error on view of",$name$$,$e$$),$callback$$(null,$items_need_view$$)}else $callback$$(null,$items_need_view$$)},dynamicView:$callback$$=>{$self$$.dynamicView?$self$$.dynamicView($user$$,$items_need_view$$,function($error$$,$rs$$){if($error$$)return $callback$$($error$$);$items_need_view$$=$rs$$||$items_need_view$$;$callback$$(null,$items_need_view$$)}, {listinfo_code:$listinfo_code$$,req:$options$$?.req}):$callback$$(null,$items_need_view$$)},viewRequired:$callback$$=>{$items$$=[...$items_cached$$,...$items_need_view$$].sort(($a$$,$b$$)=>$a$$.stt_sorted-$b$$.stt_sorted);if($self$$.viewRequired)try{$self$$.viewRequired($user$$,$items$$,function($error$$,$rs$$){if($error$$)return $callback$$($error$$);$items$$=$rs$$||$items$$;$callback$$(null,$items$$)},$options$$)}catch($e$$){Logger.error("Error on viewRequired of",$name$$,$e$$),$callback$$(null, $items$$)}else $callback$$(null,$items$$)}},$error$$=>{if($error$$)return $next$$($error$$);$next$$(null,$items$$)})})};module.exports=view;