UNPKG

flexbiz-server

Version:

Flexible Server

12 lines (11 loc) 5.6 kB
'use strict';const async=require("async"),_=require("lodash"),validator=require("../libs/validator"),permission=require("../libs/permission"),{ERRORS,checkReference,pushNotification,runWebhooks,deletePost}=require("./controllerUtils"),deleteHandler=async($ctrl$$,$req$$,$mainCallback$$)=>{let $model$$=$ctrl$$.model,$module$$=$ctrl$$.module,$_id$$=$req$$.params.id;if(!$_id$$)return $mainCallback$$({error:"id is required"});async.series([function($callback$$){if(!global.mongoose.Types.ObjectId.isValid($_id$$))return $callback$$({error:ERRORS.ERR_NOT_FOUND, code:ERRORS.ERR_NOT_FOUND_CODE});$model$$.findOne({_id:$_id$$}).exec(async function($e_user$$,$obj$$){if($e_user$$)return console.error("delete findObject",$e_user$$),$e_user$$.error?$callback$$($e_user$$):$callback$$({error:$e_user$$.message||$e_user$$.error||$e_user$$});if(!$obj$$)return $callback$$({error:ERRORS.ERR_NOT_FOUND,code:ERRORS.ERR_NOT_FOUND_CODE});$e_user$$=$req$$.user;if($obj$$.trang_thai&&($q_approve_requireOtp$$={id_ct:$obj$$._id.toString(),user_approved:{$exists:!0}},await global.getModel("approve").findOne($q_approve_requireOtp$$)))return $callback$$({error:"Kh\u00f4ng th\u1ec3 xo\u00e1 ch\u1ee9ng t\u1eeb n\u00e0y do n\u00f3 \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t"}); const $voucher_options$$=(await global.getModel("options").findOne({id_app:$e_user$$.current_id_app,id_func:$ctrl$$.name}).lean()||{}).option;if($obj$$.ngay_ct&&$obj$$.id_app&&$obj$$.schema&&$obj$$.schema.validate&&$obj$$.schema.validate.ngay_ct)try{await new Promise(($rs$$,$rj$$)=>{validator.unlockBook[0]($obj$$.id_app,$obj$$.ngay_ct,$unlock$$=>{if(!$unlock$$)return $rj$$(validator.unlockBook[1]);$rs$$($unlock$$)},$voucher_options$$)})}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error|| $e$$,code:ERRORS.BOOK_LOCK})}$obj$$=$obj$$.toObject();var $q_approve_requireOtp$$=$ctrl$$.options.requireOtp;$q_approve_requireOtp$$&&_.isFunction($q_approve_requireOtp$$)&&($q_approve_requireOtp$$=$q_approve_requireOtp$$($obj$$,{action:"delete",_id:$_id$$,user:$e_user$$}));if($q_approve_requireOtp$$)try{await permission.verifyOTP($e_user$$.email,$req$$.query["otp-id"],$req$$.query["otp-code"])}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error||$e$$,code:ERRORS.ERR_VERIFY_OTP})}setImmediate(async()=> {let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"delete",obj:$obj$$});permission.hasRight($ctrl$$.require_id_app?$obj$$.id_app:void 0,$req$$.user.email,$module$$,"delete",function($error$jscomp$0$$,$hr$$){if($hr$$)checkReference($model$$,$obj$$,function($error$$){if($error$$)return $callback$$({error:ERRORS.ERR_ARISE+($error$$.error||$error$$.message||$error$$),code:ERRORS.ERR_ARISE_CODE});$req$$.obj=$obj$$;$callback$$()});else return $callback$$({error:$error$jscomp$0$$.error|| $error$jscomp$0$$||ERRORS.ERR_NOT_PERMIT,code:$error$jscomp$0$$.code||ERRORS.ERR_NOT_PERMIT_CODE})},{obj:$obj$$,notNeedRight:$notNeedRight$$})})})},function($callback$$){setImmediate(()=>{let $obj$jscomp$1$$=$req$$.obj;$ctrl$$.deleting?$ctrl$$.deleting($req$$.user,$obj$jscomp$1$$,function($e$$,$obj$jscomp$0$$){if($e$$)return console.error("deleting",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$ctrl$$.dynamicDeleting?$ctrl$$.dynamicDeleting($req$$.user,$obj$jscomp$0$$, function($error$$,$obj$$){if($error$$)return $callback$$($error$$);$req$$.obj=$obj$$;$callback$$()}):($req$$.obj=$obj$jscomp$0$$,$callback$$())},{req:$req$$}):$ctrl$$.dynamicDeleting?$ctrl$$.dynamicDeleting($req$$.user,$obj$jscomp$1$$,function($error$$,$obj$$){if($error$$)return $callback$$($error$$);$req$$.obj=$obj$$;$callback$$()}):($req$$.obj=$obj$jscomp$1$$,$callback$$())})},function($callback$$){setImmediate(()=>{let $obj$jscomp$0$$=$req$$.obj;$ctrl$$.emit("deleting",{...$obj$jscomp$0$$});deletePost($req$$.user, $obj$jscomp$0$$,async $e$jscomp$1$$=>{if($e$jscomp$1$$)return console.error("delete post",$e$jscomp$1$$),$e$jscomp$1$$.error?$callback$$($e$jscomp$1$$):$callback$$({error:$e$jscomp$1$$.message||$e$jscomp$1$$});if($ctrl$$.dynamicDeletePost)try{await $ctrl$$.dynamicDeletePost($obj$jscomp$0$$)}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error||$e$$})}$model$$.deleteOne({_id:$obj$jscomp$0$$._id},function($e$jscomp$0$$){if($e$jscomp$0$$)return console.error("delete object",$e$jscomp$0$$), $e$jscomp$0$$.error?$callback$$($e$jscomp$0$$):$callback$$({error:$e$jscomp$0$$.message||$e$jscomp$0$$});setImmediate(()=>{$ctrl$$.deleteData({...$obj$jscomp$0$$});global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"DELETE",data:{id:$obj$jscomp$0$$._id,data:$obj$jscomp$0$$}},$req$$.user.email,$req$$.user_agent,$req$$);global.getModel("log").deleteMany({$or:[{id_a:$obj$jscomp$0$$._id},{id_b:$obj$jscomp$0$$._id}]},function($e$$){$e$$&&console.error("Can't delete links\n"+ $e$$)})});setImmediate(()=>{$ctrl$$.emit("deleted",$obj$jscomp$0$$);global.getModel("customer").updateActives&&global.getModel("customer").updateActives($obj$jscomp$0$$);runWebhooks($ctrl$$,$obj$jscomp$0$$,"DELETE")});pushNotification($ctrl$$,$obj$jscomp$0$$,"delete",null,null,{exclude_token:$req$$.query.access_token});setImmediate(()=>{$ctrl$$.deleted?$ctrl$$.deleted($req$$.user,$obj$jscomp$0$$,function($e$$,$obj$$){setImmediate(()=>{if($e$$)return console.error("deleted",$e$$),$e$$.error?$callback$$($e$$): $callback$$({error:$e$$.message||$e$$});$req$$.obj=$obj$$;$callback$$(null)})}):($req$$.obj=$obj$jscomp$0$$,$callback$$(null))})})})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.obj)})};module.exports=deleteHandler;