UNPKG

flexbiz-server

Version:

Flexible Server

10 lines (9 loc) 4.27 kB
const model=global.getModel("comment"),Follow=global.getModel("follow"),User=global.getModel("user"),controller=require("../../controllers/controller"),underscore=require("underscore"),{onAfterCommit}=require("../../libs/sessionContext"); module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"comment",{notNeedRight:!0,sort:{date_created:-1},users_receive_notification_default:[async $msg$$=>{let $sender_name$$=(await User.findOne({email:$msg$$.user_created},{name:1})||{}).name||$msg$$.user_created,$body$$=$msg$$.content,$title$$=`\u00dd ki\u1ebfn t\u1eeb @${$sender_name$$}`,$users$$=[...($msg$$.attends||[])];if($msg$$.colection_name_product&&$msg$$.id_product&&global.mongoose.Types.ObjectId.isValid($msg$$.id_product)){let $p$$= await global.getModel($msg$$.colection_name_product).findOne({_id:$msg$$.id_product}).lean();if($p$$){let $ten_sp$$=$p$$.ten_vt||$p$$.ten_nd||$p$$.ten_kh||$p$$.name||$p$$.title;$msg$$.id_reply&&($title$$=`Ph\u1ea3n h\u1ed3i t\u1eeb @${$sender_name$$}`);$ten_sp$$&&($title$$=`${$title$$} v\u1ec1 '${$ten_sp$$}'`);$p$$.user_created&&$users$$.push($p$$.user_created);$p$$.phu_trach&&$users$$.push($p$$.phu_trach);$p$$.attends&&($users$$=$users$$.concat($p$$.attends))}}return{users:$users$$,title:$title$$, body:$body$$,send_phu_trach:!0,send_attends:!0}}],onView:async($user$$,$items$$,$next$$)=>{for(let $item$$ of $items$$)$item$$.replies_count=await model.countDocuments({id_app:$item$$.id_app,id_reply:$item$$._id.toString()});$next$$(null,$items$$)},onFinding:($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)}});$contr_router$$.creating=($user$$,$obj$$,$fn$$)=>{$fn$$(null,$obj$$)};$contr_router$$.deleting=($user$$,$obj$$,$fn$$)=>{$user$$.email==$obj$$.user_created||$user$$.current_app_info.appAdmin? $fn$$(null,$obj$$):$fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 x\u00f3a n\u1ed9i dung n\u00e0y")};$contr_router$$.updating=($user$$,$data$$,$obj$$,$fn$$)=>{const $adminUsers$$=configs.admins;$user$$.email==$obj$$.user_created||underscore.contains($adminUsers$$,$user$$.email)?$fn$$(null,$data$$,$obj$$):$fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt n\u1ed9i dung n\u00e0y")};$contr_router$$.created=async($user$$,$obj_created$$,$fn$$)=>{onAfterCommit(()=>{if($obj_created$$.is_reply){var $obj$$={};underscore.extend($obj$$, $obj_created$$);/<[a-z][\s\S]*>/i.test($obj$$.content)||($obj$$.content=$obj$$.content.replace(/\n/g,"<br/>"));var $query_r$$={$or:[{_id:$obj$$.id_topic}],_id:{$ne:$obj$$._id}};$obj$$.id_topic&&($query_r$$.$or.push({id_topic:$obj$$.id_topic}),$obj$$.url_topic="#!/comment/view/"+$obj$$.id_topic);$obj$$.url_topic||($obj$$.url_topic="");model.find($query_r$$,{user_created:1}).lean().then(async $emails$$=>{$emails$$=$emails$$.map($item$$=>$item$$.user_created);var $es$$=$obj$$.content.match(/(@[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi); $es$$&&$es$$.forEach($e$$=>{$emails$$.push($e$$.substring(1))});$obj$$.attends&&$obj$$.attends.forEach($ind$$=>{$emails$$.push($ind$$)});if($obj_created$$.id_reply)try{(await model.getRelativeComments($obj_created$$.id_reply)).forEach($_comment$$=>{$emails$$.push($_comment$$.user_created)})}catch($e$$){Logger.info("error alert replay comment",$e$$.message)}$obj_created$$.user_created_obj&&$emails$$.push($obj$$.user_created_obj);if($obj_created$$.id_product)try{let $_follows$$=await Follow.asyncFind({id_object:$obj_created$$.id_product}); $emails$$=$emails$$.concat($_follows$$.map($f$$=>$f$$.user_created))}catch($e$$){Logger.info($e$$)}$emails$$=underscore.uniq($emails$$);let $msg$$={_id:$obj_created$$._id,code:"comment",action:"NEW"};$msg$$.title=`Comment '${$obj$$.title||$obj$$.ten_vt}'`;$msg$$.body=$obj$$.content;$msg$$.id_product=$obj_created$$.id_product;$msg$$.colection_name_product=$obj_created$$.colection_name_product;$emails$$.forEach($email$$=>{User.emitEvent($email$$,"comment:new",$msg$$,!0,null);$email$$!==$obj$$.user_created&& global.createNotification($obj$$.user_updated||"SYSTEM",$email$$,$msg$$.title,$msg$$.body,$e$$=>{$e$$&&Logger.info($e$$)},$msg$$,!1,null)})}).catch($e$$=>{Logger.error($e$$)})}});$fn$$(null,$obj_created$$)};$contr_router$$.on("deleted",async $obj$$=>{await model.deleteMany({id_topic:$obj$$._id}).catch(console.error)});$contr_router$$.route()};