flexbiz-server
Version:
Flexible Server
14 lines (13 loc) • 6.31 kB
JavaScript
const async=require("async"),_=require("lodash"),moment=require("moment"),permission=require("../libs/permission"),{JSONParser,convertObjectIdsToStrings}=require("../libs/utils"),{onAfterCommit,executeInTransaction}=require("../libs/sessionContext.js"),queryBuilding=require("../libs/queryBuilding"),{postData,pushNotification}=require("./controllerUtils"),updateFieldHanlder=($ctrl$$,$req$$,$mainCallback$$)=>{const $model$$=$ctrl$$.model;let $field$$;async.series([function($callback$$){$field$$=$req$$.params.field;
if(!_.has($model$$.schema.paths,$field$$))return $callback$$({error:"Field "+$field$$+" kh\u00f4ng t\u1ed3n t\u1ea1i"});var $condition_name_cached$$=$model$$.collection.name;$req$$.user.current_id_app&&($condition_name_cached$$+=$req$$.user.current_id_app);delete global.cacheDatas[$condition_name_cached$$];$condition_name_cached$$={};for(var $k_newFilters$$ in $req$$.query)if($k_newFilters$$!="id_app"&&$k_newFilters$$!="access_token")if($k_newFilters$$=="_id"&&mongoose.Types.ObjectId.isValid($req$$.query._id))try{let $id$$=
global.mongoose.Types.ObjectId($req$$.query._id);$condition_name_cached$$._id=$id$$}catch($error$$){Logger.error("updateField condition",$error$$)}else if($k_newFilters$$=="q"&&$req$$.query[$k_newFilters$$])$condition_name_cached$$=JSONParser($req$$.query[$k_newFilters$$]);else if($k_newFilters$$=="tu_ngay"&&_.has($model$$.schema.paths,"ngay_ct")===!0){var $val_val$$=moment($req$$.query.tu_ngay).startOf("date").toDate();$condition_name_cached$$.ngay_ct?$condition_name_cached$$.ngay_ct.$gte=$val_val$$:
$condition_name_cached$$.ngay_ct={$gte:$val_val$$}}else $k_newFilters$$=="den_ngay"&&_.has($model$$.schema.paths,"ngay_ct")===!0?($val_val$$=moment($req$$.query.den_ngay).endOf("date").toDate(),$condition_name_cached$$.ngay_ct?$condition_name_cached$$.ngay_ct.$lte=$val_val$$:$condition_name_cached$$.ngay_ct={$lte:$val_val$$}):_.has($model$$.schema.paths,$k_newFilters$$)===!0&&($condition_name_cached$$[$k_newFilters$$]=$req$$.query[$k_newFilters$$]);$k_newFilters$$=queryBuilding.convertLegacyQuery(_.cloneDeep($condition_name_cached$$));
$condition_name_cached$$=queryBuilding.buildSearchQuery($k_newFilters$$);_.has($model$$.schema.paths,"id_app")===!0&&($condition_name_cached$$.id_app=$req$$.user.current_id_app);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition_name_cached$$,function($e$$,$condition$$){if($e$$)return Logger.error("updateField find",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$$,function($e$$,$condition$$){if($e$$)return Logger.error("updateField dynamicFinding",
$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$callback$$()},{req:$req$$}):($req$$.condition=$condition$$,$callback$$())},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition_name_cached$$,function($e$$,$condition$$){if($e$$)return Logger.error("updateField dynamicFinding",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$callback$$()},{req:$req$$}):($req$$.condition=
$condition_name_cached$$,$callback$$())},function($callback$$){permission.isAdmin($req$$.user.current_id_app,$req$$.user.email,function($e$$,$admin$$){if($e$$)return $callback$$({error:$e$$.error||$e$$,code:$e$$.code});if(!$admin$$)return $callback$$({error:"B\u1ea1n ph\u1ea3i c\u00f3 quy\u1ec1n admin \u0111\u1ec3 th\u1ef1c hi\u1ec7n t\u00ednh n\u0103ng n\u00e0y"});$callback$$()})},function($callback$$){let $condition$$=$req$$.condition;_.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&
($condition$$.ma_ct=$ctrl$$.name.toUpperCase());let $query$$=$model$$.find($condition$$);_.has($model$$.schema.paths,"ngay_ct")===!0&&$query$$.sort({ngay_ct:1});$query$$.lean().then(function($obj4view$$){setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"UPDATE FIELD:"+$field$$,data:{condition:JSON.stringify($condition$$)}},$req$$.user.email,$req$$.user_agent,$req$$);let $tu_so$$=Number($req$$.query.tu_so);$tu_so$$||=1;let $den_so$$=$req$$.query.den_so,
$tien_to$$=$req$$.query.tien_to,$hau_to$$=$req$$.query.hau_to,$gia_tri$$;for(let $i$$=0;$i$$<$obj4view$$.length;$i$$++)$gia_tri$$=$tu_so$$+$i$$+"",$den_so$$&&($gia_tri$$="0000000000000000000".substring(0,$den_so$$.length-$gia_tri$$.length)+$gia_tri$$),$tien_to$$&&($gia_tri$$=$tien_to$$+$gia_tri$$),$hau_to$$&&($gia_tri$$+=$hau_to$$),$obj4view$$[$i$$][$field$$]=$gia_tri$$;async.mapSeries($obj4view$$,function($obj$$,$callback$$){delete $obj$$.__v;$model$$.updateOne({_id:$obj$$._id},$obj$$,function($e$$){setImmediate(async()=>
{if($e$$)return $callback$$($e$$);await $ctrl$$.cacheData($obj$$);$ctrl$$.post?postData($obj$$,$ctrl$$,function($e$$){if($e$$)return Logger.error("error post data",$e$$),$callback$$($e$$);$callback$$(null,$obj$$)},{req:$req$$}):$callback$$(null,$obj$$)})})},function($e$$,$rs$$){if($e$$)return Logger.error("updateField",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});onAfterCommit(()=>{$ctrl$$.emit("saved",$rs$$);$ctrl$$.emit("updated",$rs$$)});$rs$$=$rs$$.map($o$$=>{$o$$.toObject&&
($o$$=convertObjectIdsToStrings($o$$.toObject()));return $o$$});$ctrl$$.onView($req$$.user,$rs$$,function($e$$,$viewValue$$){if($e$$)return Logger.error("updateField onview",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$&&$viewValue$$.forEach($r$$=>{pushNotification($ctrl$$,$r$$,"update",null,!0,{exclude_token:$req$$.query.access_token})});$req$$.result=$rs$$;$callback$$()},{req:$req$$})})})}).catch($e$$=>{Logger.error("updateField query",$e$$);return $e$$.error?
$callback$$($e$$):$callback$$({error:$e$$.message||$e$$.error||$e$$})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.result)})},updateFieldHanlderAsync=($ctrl$$,$req$$)=>new Promise(($resolve$$,$reject$$)=>{updateFieldHanlder($ctrl$$,$req$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})}),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{try{const $rs$$=await executeInTransaction(async()=>updateFieldHanlderAsync($ctrl$$,$req$$));$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}};
module.exports=withSesssion;