flexbiz-server
Version:
Flexible Server
13 lines (12 loc) • 6.21 kB
JavaScript
'use strict';const _=require("lodash"),permission=require("../libs/permission"),updateKeyHanlder=($ctrl$$,$req$$,$callback$$)=>{let $model$$=$ctrl$$.model,$_id$$=$req$$.params._id;if(!mongoose.Types.ObjectId.isValid($_id$$))return $callback$$({error:"_id c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y kh\u00f4ng h\u1ee3p l\u1ec7"});let $field$$=$req$$.params.field;if("_id"==$field$$)return $callback$$({error:"Kh\u00f4ng th\u1ec3 \u0111\u1ed5i tr\u01b0\u1eddng _id"});if(!_.has($model$$.schema.paths,
$field$$))return $callback$$({error:"Model n\u00e0y kh\u00f4ng c\u00f3 tr\u01b0\u1eddng "+$field$$});if(!_.has($model$$.schema.paths,"id_app"))return $callback$$({error:"Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u model c\u1ea7n ph\u1ea3i c\u00f3 id_app field"});let $new_value$$=$req$$.params.new_value.trim().toUpperCase(),$id_app$$=$req$$.user.current_id_app;permission.isAdmin($req$$.user.current_id_app,$req$$.user.email,function($e$$,$admin$$){setImmediate(async()=>{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"});let $obj$$=await $model$$.findOne({_id:$_id$$}).lean();if(!$obj$$)return $callback$$({error:"\u0110\u1ed1i t\u01b0\u1ee3ng n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i"});const $old_value$$=$obj$$[$field$$],$deletedItems$$=await $model$$.find({id_app:$id_app$$,[$field$$]:$new_value$$,_id:{$ne:$_id$$}}).lean();console.log("Cac ban ghi bi trung",
$deletedItems$$);$deletedItems$$.forEach($item$$=>{$ctrl$$.deleteData({...$item$$})});console.log("gop cac record giong nhau",{id_app:$id_app$$,[$field$$]:$new_value$$,_id:{$ne:$_id$$}});let $rs_deleted$$=await $model$$.deleteMany({id_app:$id_app$$,[$field$$]:$new_value$$,_id:{$ne:$_id$$}});console.log("Da xoa cac ban ghi trung nhau",$rs_deleted$$);const $user_update$$={date_updated:new Date,user_updated:$req$$.user.email};$new_value$$!==$obj$$[$field$$]&&await $model$$.updateOne({_id:$_id$$},{[$field$$]:$new_value$$,
...$user_update$$});$obj$$[$field$$]=$new_value$$;await $ctrl$$.cacheData($obj$$);Object.values(mongoose.models).filter($m$$=>_.has($m$$.schema.paths,$field$$)&&$m$$.collection.name!=$model$$.collection.name).forEach($_ref_model$$=>{$_ref_model$$.updateMany({[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$,...$user_update$$}).then($rs$$=>{console.log("update gia tri moi cho cac model",$_ref_model$$.collection.name,{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$},
"result",$rs$$)}).catch($e$$=>{console.error("update gia tri moi cho cac model",$_ref_model$$.collection.name,{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$},"error",$e$$)})});const $model_name$$=$ctrl$$.model_name;(await global.getModel("listinfo").find({"fields.ref_model":$model_name$$,"fields.ref_field":{$in:["_id",$field$$]}}).lean()).forEach($l$$=>{let $_ref_model$$=mongoose.models[$l$$.model_code||$l$$.api_code||$l$$.code];$_ref_model$$&&($l$$.fields.filter($f$$=>$f$$.ref_model==
$model_name$$&&$f$$.ref_field==$field$$).forEach($f$$=>{_.has($_ref_model$$.schema.paths,$f$$.name)&&$_ref_model$$.updateMany({[$f$$.name]:$obj$$[$f$$.ref_field],id_app:$id_app$$},{[$f$$.name]:$new_value$$,...$user_update$$}).then($rs$$=>{console.log("update gia tri moi cho cac model",$_ref_model$$.collection.name,{[$f$$.name]:$obj$$[$f$$.ref_field],id_app:$id_app$$},{[$f$$.name]:$new_value$$},"result",$rs$$)}).catch($e$$=>{console.error("update gia tri moi cho cac model",$_ref_model$$.collection.name,
{[$f$$.name]:$obj$$[$f$$.ref_field],id_app:$id_app$$},{[$f$$.name]:$new_value$$},"error",$e$$)})}),$l$$.fields.filter($f$$=>$f$$.ref_model==$model_name$$&&"_id"==$f$$.ref_field).forEach($f$$=>{_.has($_ref_model$$.schema.paths,$f$$.name)&&$deletedItems$$.forEach($deleted$$=>{$_ref_model$$.updateMany({[$f$$.name]:$deleted$$._id.toString(),id_app:$id_app$$},{[$f$$.name]:$obj$$._id.toString(),...$user_update$$}).then($rs$$=>{console.log("update gia tri moi cho cac model",$_ref_model$$.collection.name,
{[$f$$.name]:$deleted$$._id.toString(),id_app:$id_app$$},{[$f$$.name]:$obj$$._id.toString()},"result",$rs$$)}).catch($e$$=>{console.error("update gia tri moi cho cac model",$_ref_model$$.collection.name,{[$f$$.name]:$deleted$$._id.toString(),id_app:$id_app$$},{[$f$$.name]:$obj$$._id.toString()},"error",$e$$)})})}))});Object.values(mongoose.models).filter($m$$=>$m$$.collection.name!=$model$$.collection.name).forEach($_ref_model$$=>{for(let $key$$ in $_ref_model$$.schema.paths){let $data_type$$=$_ref_model$$.schema.paths[$key$$].instance.toLowerCase();
"array"==$data_type$$&&$_ref_model$$.updateMany({[`${$key$$}.${$field$$}`]:$old_value$$,id_app:$id_app$$},{[`${$key$$}.$.${$field$$}`]:$new_value$$,...$user_update$$}).then($rs$$=>{console.log("update gia tri moi cho subdocument",$key$$,"type",$data_type$$,"cac model",$_ref_model$$.collection.name,{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$},"result",$rs$$)}).catch($e$$=>{console.error("update gia tri moi cho subdocument",$key$$,"type",$data_type$$,"cac model",$_ref_model$$.collection.name,
{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$},"error",$e$$)});if("object"==$data_type$$||"mixed"==$data_type$$)console.log("update gia tri moi cho subdocument",$key$$,"type",$data_type$$,"cac model",$_ref_model$$.collection.name,{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$}),$_ref_model$$.updateMany({[`${$key$$}.${$field$$}`]:$old_value$$,id_app:$id_app$$},{[`${$key$$}.${$field$$}`]:$new_value$$,...$user_update$$}).then($rs$$=>{console.log("update gia tri moi cho subdocument",
$key$$,"type",$data_type$$,"cac model",$_ref_model$$.collection.name,{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$},"result",$rs$$)}).catch($e$$=>{console.error("update gia tri moi cho subdocument",$key$$,"type",$data_type$$,"cac model",$_ref_model$$.collection.name,{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$},"error",$e$$)})}});$callback$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 th\u1ef1c hi\u1ec7n xong"})})})};module.exports=updateKeyHanlder;