UNPKG

kpiplus

Version:

KPI+

1 lines 1.73 kB
var calllog=require("../../models/calllog"),customer=require("../../models/customer"),App=require("../../models/app"),User=require("../../models/user"),arrays=require("../../libs/array-funcs"),async=require("async");module.exports=function(e){e.route("/:id_app/callin/:phone").get(function(e,i,n){let t=e.params.phone,a=e.query.ext,s=e.query.status,o=e.query.type,l=e.query.hotline,r=e.query.token;if(!r)return i.status(400).send("Miss access token");void 0!=o&&null!=o||(o="1"),void 0!=s&&null!=s||(s="1"),a||(a=t);let d=e.params.id_app;App.findOne({_id:d}).lean().exec((e,n)=>{if(e)return i.status(400).send(e);if(!n)return i.status(400).send("not found id "+d);if(!n.voiIPTokens||n.voiIPTokens.indexOf(r)<0)return i.status(400).send("Token is invalid");let c={phone:t,ext:a,id_app:d,call_status:s,type:o,hotline:l};async.parallel({cus:e=>{let i="this.dien_thoai && this.dien_thoai.split(' ').join('').indexOf('"+t.split(" ").join("")+"')>=0";customer.findOne({id_app:d,$where:i}).lean().exec(function(i,n){if(i)return e(i);n&&(c.id_kh=n._id,c.ten_kh=n.ten_kh,c.ma_kh=n.ma_kh,c.dia_chi=n.dia_chi),e()})}},(e,t)=>{if(e)return i.status(400).send(e);new calllog(c).save((e,t)=>e?i.status(400).send(e):"1"!==c.type||"1"!==c.call_status?i.send("0"):(c.code="dmkh",c.action="calling?phone="+c.phone,c.id_kh&&(c.action=c.action+"&id_kh="+c.id_kh),c.ten_kh&&(c.action=c.action+"&ten_kh="+c.ten_kh),c.ma_kh&&(c.action=c.action+"&ma_kh="+c.ma_kh),c.dia_chi&&(c.action=c.action+"&dia_chi="+c.dia_chi),c.title=(c.ten_kh?c.ten_kh:c.phone)+" is calling...",c._id=t._id,n.participants.forEach(e=>{!a||e.ext!==a||l&&e.hotline&&e.hotline!=l||User.emitEvent(e.email,"call:in",c)}),void i.send((c.ten_kh?c.ten_kh:c.phone)+" is calling...")))})})})};