kpiplus
Version:
KPI+
1 lines • 1.58 kB
JavaScript
var model=require("../../models/dmdt"),controller=require("../../controllers/controller"),customer=require("../../models/customer"),link=require("../../models/link"),arrays=require("../../libs/array-funcs"),underscore=require("underscore"),async=require("async");module.exports=function(n){var e=function(n,e,t){!function(n,e,t){e.id_kh&&link.find({$or:[{id_a:e._id.toString(),id_b:e.id_kh},{id_a:e.id_kh,id_b:e._id.toString()}]}).lean().exec(function(n,t){t&&0!==t.length||new link({id_app:e.id_app,id_a:e.id_kh,id_b:e._id.toString(),collection_a:"dmkh",collection_b:"dmdt"}).save(function(n,e){n&&console.error(n)})}),t&&t(null,e)}(0,e);n.current_id_app;e.ma_dt?t(null,e):model.findByIdAndUpdate(e._id,{$set:{ma_dt:e._id.toString().toUpperCase()}},function(n,i){return n?t(n):i?(i.ma_dt=e._id.toString().toUpperCase(),t(null,i)):t(new Error("Project is not exists"))})};(this.contr=new controller(n,model,"dmdt",{sort:{ma_dt:1},unique:["ma_dt"],codeSync:"list/dmdt",keySync:"ma_dt",onFinding:function(n,e,t){async.parallel({find_ten_kh:function(n){e.ten_kh?customer.find({ten_kh:{$regex:e.ten_kh,$options:"i"}},{_id:1}).lean().exec(function(t,i){if(t)return n(t);delete e.ten_kh;var r=[];i.forEach(function(n){r.push(n._id.toString())}),e.id_kh={$in:r},n()}):n()}},function(n,i){if(n)return t(n);t(null,e)})},onView:function(n,e,t){e.joinModel2(n.current_id_app,customer,[{where:{id_kh:"_id"},fields:[{name:"ten_kh",value:"ten_kh"}]}],function(n){t(null,e)})},onCreating:function(n,e,t){e.ma_dt||(e.ma_dt=e.ten_dt.toUpperCase()),t(null,e)},onCreated:e,onUpdated:e})).route()};