Built motion from commit 67e5df37.|2.0.66
[motion2.git] / server / api / smsMessage / smsMessage.controller.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x34e8=['options','includeAll','include','findAll','rows','show','params','fields','body','destroy','find','describe','sms-interactions','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','interaction','info','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','manual','SIP/%s','event','EventManager','agent','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','interface','rejectmessage','SmsAccountId','type','MessageSid','plivo','MessageUUID','messageId','indexOf','sent','delivered','Status','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','socket.io-emitter','localhost','./smsMessage.socket','register','jayson/promise','client','http','then','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','catch','sendStatus','status','json','count','offset','limit','apply','reject','save','update','end','stack','name','index','model','keys','SmsMessage','rawAttributes','dateStart','dateEnd','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','add','day','filter','merge','map'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x34e8,0x12c));var _0x834e=function(_0x5c8776,_0x3c1bbc){_0x5c8776=_0x5c8776-0x0;var _0x1af0f0=_0x34e8[_0x5c8776];return _0x1af0f0;};'use strict';var jsonpatch=require(_0x834e('0x0'));var rp=require(_0x834e('0x1'));var moment=require(_0x834e('0x2'));var BPromise=require(_0x834e('0x3'));var Mustache=require('mustache');var util=require(_0x834e('0x4'));var path=require(_0x834e('0x5'));var sox=require(_0x834e('0x6'));var csv=require(_0x834e('0x7'));var ejs=require(_0x834e('0x8'));var fs=require('fs');var _=require(_0x834e('0x9'));var squel=require(_0x834e('0xa'));var crypto=require('crypto');var jsforce=require(_0x834e('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x834e('0x7'));var querystring=require(_0x834e('0xc'));var Papa=require(_0x834e('0xd'));var qs=require(_0x834e('0xe'));var logger=require(_0x834e('0xf'))(_0x834e('0x10'));var utils=require(_0x834e('0x11'));var config=require(_0x834e('0x12'));var db=require(_0x834e('0x13'))['db'];var socket=require(_0x834e('0x14'))({'host':_0x834e('0x15'),'port':0x18eb});require(_0x834e('0x16'))[_0x834e('0x17')](socket);var jayson=require(_0x834e('0x18'));var client=jayson[_0x834e('0x19')][_0x834e('0x1a')]({'port':0x232c});var client9002=jayson[_0x834e('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e5b6d,_0x6cd9b9,_0x58a27e,_0x23848e){return new BPromise(function(_0x2d95f2,_0x28e659){var _0x21cc0a=_0x23848e||client;return _0x21cc0a['request'](_0x5e5b6d,_0x58a27e)[_0x834e('0x1b')](function(_0x302cbd){logger['info'](_0x834e('0x1c'),_0x6cd9b9,'request\x20sent');logger[_0x834e('0x1d')](_0x834e('0x1e'),_0x6cd9b9,'request\x20sent',JSON[_0x834e('0x1f')](_0x302cbd));if(_0x302cbd[_0x834e('0x20')]){if(_0x302cbd[_0x834e('0x20')]['code']===0x1f4){logger[_0x834e('0x20')](_0x834e('0x1c'),_0x6cd9b9,_0x302cbd[_0x834e('0x20')][_0x834e('0x21')]);return _0x28e659(_0x302cbd[_0x834e('0x20')][_0x834e('0x21')]);}logger[_0x834e('0x20')]('SmsMessage,\x20%s,\x20%s',_0x6cd9b9,_0x302cbd[_0x834e('0x20')][_0x834e('0x21')]);return _0x2d95f2(_0x302cbd[_0x834e('0x20')][_0x834e('0x21')]);}else{logger['info'](_0x834e('0x1c'),_0x6cd9b9,_0x834e('0x22'));_0x2d95f2(_0x302cbd['result'][_0x834e('0x21')]);}})[_0x834e('0x23')](function(_0x8d406e){logger['error']('SmsMessage,\x20%s,\x20%s',_0x6cd9b9,_0x8d406e);_0x28e659(_0x8d406e);});});}function respondWithStatusCode(_0x231619,_0x34563b){_0x34563b=_0x34563b||0xcc;return function(_0x589dde){if(_0x589dde){return _0x231619[_0x834e('0x24')](_0x34563b);}return _0x231619[_0x834e('0x25')](_0x34563b)['end']();};}function respondWithResult(_0x3bc4f7,_0x2e1983){_0x2e1983=_0x2e1983||0xc8;return function(_0x338636){if(_0x338636){return _0x3bc4f7['status'](_0x2e1983)[_0x834e('0x26')](_0x338636);}};}function respondWithFilteredResult(_0x3e310f,_0x5e1cc5){return function(_0x5bef62){if(_0x5bef62){var _0x1e713a=_0x5bef62[_0x834e('0x27')],_0x508a1d=_0x5e1cc5[_0x834e('0x28')],_0x2826ec=_0x5e1cc5[_0x834e('0x28')]+_0x5e1cc5[_0x834e('0x29')],_0x3f1b0b;if(_0x2826ec>=_0x1e713a){_0x2826ec=_0x1e713a;_0x3f1b0b=0xc8;}else{_0x3f1b0b=0xce;}_0x3e310f['status'](_0x3f1b0b);return _0x3e310f['set']('Content-Range',_0x508a1d+'-'+_0x2826ec+'/'+_0x1e713a)['json'](_0x5bef62);}return null;};}function patchUpdates(_0x2c7a8d){return function(_0x567cea){try{jsonpatch[_0x834e('0x2a')](_0x567cea,_0x2c7a8d,!![]);}catch(_0x5dacc1){return BPromise[_0x834e('0x2b')](_0x5dacc1);}return _0x567cea[_0x834e('0x2c')]();};}function saveUpdates(_0x1f3671,_0x1e026a){return function(_0x4551f5){if(_0x4551f5){return _0x4551f5[_0x834e('0x2d')](_0x1f3671)[_0x834e('0x1b')](function(_0xfaf716){return _0xfaf716;});}return null;};}function removeEntity(_0x278db3,_0x493289){return function(_0xef9ec2){if(_0xef9ec2){return _0xef9ec2['destroy']()[_0x834e('0x1b')](function(){_0x278db3[_0x834e('0x25')](0xcc)[_0x834e('0x2e')]();});}};}function handleEntityNotFound(_0x2b3418,_0x444366){return function(_0x4689c2){if(!_0x4689c2){_0x2b3418[_0x834e('0x24')](0x194);}return _0x4689c2;};}function handleError(_0x38cd29,_0x358c31){_0x358c31=_0x358c31||0x1f4;return function(_0x12b2bc){logger['error'](_0x12b2bc[_0x834e('0x2f')]);if(_0x12b2bc[_0x834e('0x30')]){delete _0x12b2bc[_0x834e('0x30')];}_0x38cd29[_0x834e('0x25')](_0x358c31)['send'](_0x12b2bc);};}exports[_0x834e('0x31')]=function(_0x379d60,_0x4b12f5){var _0x496533={},_0x59385a={},_0x3e58fa={'count':0x0,'rows':[]};_0x59385a[_0x834e('0x32')]=_[_0x834e('0x33')](db[_0x834e('0x34')][_0x834e('0x35')]);var _0x1b76dd={'dateStart':_0x379d60['query'][_0x834e('0x36')],'dateEnd':_0x379d60['query'][_0x834e('0x37')]};delete _0x379d60[_0x834e('0x38')]['dateStart'];delete _0x379d60[_0x834e('0x38')][_0x834e('0x37')];_0x59385a['query']=_['keys'](_0x379d60[_0x834e('0x38')]);_0x59385a[_0x834e('0x39')]=_[_0x834e('0x3a')](_0x59385a[_0x834e('0x32')],_0x59385a[_0x834e('0x38')]);_0x496533['attributes']=_[_0x834e('0x3a')](_0x59385a['model'],qs['fields'](_0x379d60[_0x834e('0x38')]['fields']));_0x496533[_0x834e('0x3b')]=_0x496533[_0x834e('0x3b')][_0x834e('0x3c')]?_0x496533[_0x834e('0x3b')]:_0x59385a[_0x834e('0x32')];if(!_0x379d60['query'][_0x834e('0x3d')](_0x834e('0x3e'))){_0x496533[_0x834e('0x29')]=qs['limit'](_0x379d60[_0x834e('0x38')][_0x834e('0x29')]);_0x496533['offset']=qs[_0x834e('0x28')](_0x379d60['query'][_0x834e('0x28')]);}_0x496533[_0x834e('0x3f')]=qs['sort'](_0x379d60['query'][_0x834e('0x40')]);_0x496533[_0x834e('0x41')]=qs[_0x834e('0x39')](_[_0x834e('0x42')](_0x379d60[_0x834e('0x38')],_0x59385a[_0x834e('0x39')]));if(_0x1b76dd[_0x834e('0x36')]){if(_0x1b76dd['dateEnd']){_0x1b76dd[_0x834e('0x37')]=moment(_0x1b76dd['dateEnd'])[_0x834e('0x43')](0x1,'day');}else{_0x1b76dd[_0x834e('0x37')]=moment(_0x1b76dd['dateStart'])[_0x834e('0x43')](0x1,_0x834e('0x44'));}_['merge'](_0x496533[_0x834e('0x41')],{'createdAt':{'$gte':_0x1b76dd[_0x834e('0x36')],'$lte':_0x1b76dd[_0x834e('0x37')]}});}if(_0x379d60[_0x834e('0x38')][_0x834e('0x45')]){_0x496533[_0x834e('0x41')]=_[_0x834e('0x46')](_0x496533[_0x834e('0x41')],{'$or':_[_0x834e('0x47')](_0x496533[_0x834e('0x3b')],function(_0x5f3943){var _0x3124be={};_0x3124be[_0x5f3943]={'$like':'%'+_0x379d60[_0x834e('0x38')]['filter']+'%'};return _0x3124be;})});}_0x496533=_[_0x834e('0x46')]({},_0x496533,_0x379d60[_0x834e('0x48')]);var _0x25b035={'where':_0x496533[_0x834e('0x41')]};return db[_0x834e('0x34')][_0x834e('0x27')](_0x25b035)['then'](function(_0x59c855){_0x3e58fa[_0x834e('0x27')]=_0x59c855;if(_0x379d60[_0x834e('0x38')][_0x834e('0x49')]){_0x496533[_0x834e('0x4a')]=[{'all':!![]}];}return db[_0x834e('0x34')][_0x834e('0x4b')](_0x496533);})[_0x834e('0x1b')](function(_0x43f599){_0x3e58fa[_0x834e('0x4c')]=_0x43f599;return _0x3e58fa;})[_0x834e('0x1b')](respondWithFilteredResult(_0x4b12f5,_0x496533))[_0x834e('0x23')](handleError(_0x4b12f5,null));};exports[_0x834e('0x4d')]=function(_0x1a28f6,_0x1a3237){var _0x2aa072={'raw':!![],'where':{'id':_0x1a28f6[_0x834e('0x4e')]['id']}},_0x1a3855={};_0x1a3855[_0x834e('0x32')]=_[_0x834e('0x33')](db[_0x834e('0x34')]['rawAttributes']);_0x1a3855[_0x834e('0x38')]=_[_0x834e('0x33')](_0x1a28f6['query']);_0x1a3855[_0x834e('0x39')]=_[_0x834e('0x3a')](_0x1a3855['model'],_0x1a3855[_0x834e('0x38')]);_0x2aa072[_0x834e('0x3b')]=_[_0x834e('0x3a')](_0x1a3855[_0x834e('0x32')],qs[_0x834e('0x4f')](_0x1a28f6[_0x834e('0x38')][_0x834e('0x4f')]));_0x2aa072['attributes']=_0x2aa072[_0x834e('0x3b')][_0x834e('0x3c')]?_0x2aa072[_0x834e('0x3b')]:_0x1a3855[_0x834e('0x32')];if(_0x1a28f6[_0x834e('0x38')][_0x834e('0x49')]){_0x2aa072[_0x834e('0x4a')]=[{'all':!![]}];}_0x2aa072=_[_0x834e('0x46')]({},_0x2aa072,_0x1a28f6['options']);return db[_0x834e('0x34')]['find'](_0x2aa072)[_0x834e('0x1b')](handleEntityNotFound(_0x1a3237,null))['then'](respondWithResult(_0x1a3237,null))[_0x834e('0x23')](handleError(_0x1a3237,null));};exports['create']=function(_0x527eef,_0x6c0b29){return db[_0x834e('0x34')]['create'](_0x527eef['body'],{})[_0x834e('0x1b')](respondWithResult(_0x6c0b29,0xc9))[_0x834e('0x23')](handleError(_0x6c0b29,null));};exports[_0x834e('0x2d')]=function(_0x387365,_0x21c417){if(_0x387365[_0x834e('0x50')]['id']){delete _0x387365[_0x834e('0x50')]['id'];}return db[_0x834e('0x34')]['find']({'where':{'id':_0x387365[_0x834e('0x4e')]['id']}})[_0x834e('0x1b')](handleEntityNotFound(_0x21c417,null))['then'](saveUpdates(_0x387365[_0x834e('0x50')],null))['then'](respondWithResult(_0x21c417,null))[_0x834e('0x23')](handleError(_0x21c417,null));};exports[_0x834e('0x51')]=function(_0x5160c4,_0x41ef86){return db[_0x834e('0x34')][_0x834e('0x52')]({'where':{'id':_0x5160c4[_0x834e('0x4e')]['id']}})['then'](handleEntityNotFound(_0x41ef86,null))[_0x834e('0x1b')](removeEntity(_0x41ef86,null))[_0x834e('0x23')](handleError(_0x41ef86,null));};exports[_0x834e('0x53')]=function(_0x5925ef,_0x246b8e){return db[_0x834e('0x34')][_0x834e('0x53')]()[_0x834e('0x1b')](respondWithResult(_0x246b8e,null))[_0x834e('0x23')](handleError(_0x246b8e,null));};var interaction_log=require(_0x834e('0xf'))(_0x834e('0x54'));exports[_0x834e('0x55')]=function(_0x208c21,_0xfcccd8,_0x1e4310){var _0x1dfa95={'channel':_0x834e('0x56')};if(_0x208c21[_0x834e('0x50')]['id']){delete _0x208c21[_0x834e('0x50')]['id'];}_0x208c21[_0x834e('0x50')][_0x834e('0x57')]=!![];_0x208c21[_0x834e('0x50')][_0x834e('0x58')]=moment()[_0x834e('0x59')](_0x834e('0x5a'));_0x208c21[_0x834e('0x50')]['UserId']=_0x208c21[_0x834e('0x50')][_0x834e('0x5b')]||_0x208c21[_0x834e('0x5c')]['id'];return db[_0x834e('0x34')]['find']({'where':{'id':_0x208c21[_0x834e('0x4e')]['id'],'UserId':null},'include':[{'model':db['CmContact'],'as':'Contact'}]})[_0x834e('0x1b')](handleEntityNotFound(_0xfcccd8,null))[_0x834e('0x1b')](saveUpdates(_0x208c21[_0x834e('0x50')],null))[_0x834e('0x1b')](function(_0x216105){if(_0x216105){_0x1dfa95[_0x834e('0x21')]=_0x216105[_0x834e('0x5d')]({'plain':!![]});return db[_0x834e('0x5e')]['find']({'where':{'id':_0x216105[_0x834e('0x5f')]}});}return null;})['then'](handleEntityNotFound(_0xfcccd8,null))[_0x834e('0x1b')](function(_0xd35dda){if(_0xd35dda){return _0xd35dda['update']({'UserId':_0x208c21['body'][_0x834e('0x5b')],'read1stAt':_[_0x834e('0x60')](_0xd35dda[_0x834e('0x61')])?moment()[_0x834e('0x59')](_0x834e('0x5a')):undefined});}return null;})['then'](function(_0x2b0d93){if(_0x2b0d93){_0x1dfa95[_0x834e('0x62')]=_0x2b0d93[_0x834e('0x5d')]({'plain':!![]});interaction_log[_0x834e('0x63')](_0x834e('0x64'),_0x208c21[_0x834e('0x5c')]['id'],_0x208c21[_0x834e('0x5c')][_0x834e('0x30')],_0x208c21[_0x834e('0x5c')][_0x834e('0x65')],_0x1dfa95['interaction']['id'],_0x208c21[_0x834e('0x50')]?JSON[_0x834e('0x1f')](_0x208c21[_0x834e('0x50')]):_0x834e('0x66'));return respondWithRpcPromise('AcceptMessage',_0x834e('0x67'),_0x1dfa95);}return null;})['then'](function(_0x5ce8b0){if(_0x5ce8b0){if(_0x208c21['body'][_0x834e('0x68')]){_0x1dfa95[_0x834e('0x21')]['interface']=util[_0x834e('0x59')](_0x834e('0x69'),_0x208c21['user'][_0x834e('0x30')]);_0x1dfa95[_0x834e('0x21')]['channel']=_0x1dfa95['channel'];_0x1dfa95[_0x834e('0x21')][_0x834e('0x6a')]=_0x834e('0x55');return respondWithRpcPromise(_0x834e('0x6b'),_0x834e('0x6b'),{'event':'acceptmessage','message':_0x1dfa95[_0x834e('0x21')]},client9002)['then'](function(){return _0x1dfa95;});}return _0x1dfa95;}return null;})[_0x834e('0x1b')](respondWithResult(_0xfcccd8,null))[_0x834e('0x23')](handleError(_0xfcccd8,null));};var interaction_log=require(_0x834e('0xf'))('sms-interactions');exports[_0x834e('0x2b')]=function(_0x11f6f0,_0x48521f,_0x3f7087){var _0x3c643f={'agent':{},'channel':_0x834e('0x56')};if(_0x11f6f0['body']['id']){delete _0x11f6f0[_0x834e('0x50')]['id'];}_0x11f6f0[_0x834e('0x50')][_0x834e('0x5b')]=_0x11f6f0[_0x834e('0x50')][_0x834e('0x5b')]||_0x11f6f0[_0x834e('0x5c')]['id'];_0x3c643f[_0x834e('0x6c')]['id']=_0x11f6f0[_0x834e('0x50')][_0x834e('0x5b')];return db[_0x834e('0x34')]['find']({'where':{'id':_0x11f6f0['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x48521f,null))[_0x834e('0x1b')](function(_0x1135a5){if(_0x1135a5){_0x3c643f[_0x834e('0x21')]=_0x1135a5[_0x834e('0x5d')]({'plain':!![]});return db[_0x834e('0x5e')]['find']({'where':{'id':_0x1135a5['SmsInteractionId']}});}return null;})[_0x834e('0x1b')](handleEntityNotFound(_0x48521f,null))[_0x834e('0x1b')](function(_0x23ad7c){if(_0x23ad7c){_0x3c643f[_0x834e('0x62')]=_0x23ad7c[_0x834e('0x5d')]({'plain':!![]});interaction_log['info'](_0x834e('0x6d'),_0x11f6f0[_0x834e('0x5c')]['id'],_0x11f6f0[_0x834e('0x5c')]['name'],_0x11f6f0[_0x834e('0x5c')][_0x834e('0x65')],_0x3c643f[_0x834e('0x62')]['id'],_0x11f6f0[_0x834e('0x50')]?JSON[_0x834e('0x1f')](_0x11f6f0['body']):'null');return respondWithRpcPromise(_0x834e('0x6e'),_0x834e('0x6f'),_0x3c643f);}return null;})['then'](function(_0xb57b1b){if(_0xb57b1b){_0xb57b1b['message'][_0x834e('0x70')]=util[_0x834e('0x59')](_0x834e('0x69'),_0x11f6f0['user'][_0x834e('0x30')]);_0xb57b1b['message']['channel']=_0x3c643f['channel'];_0xb57b1b[_0x834e('0x21')][_0x834e('0x6a')]=_0x834e('0x2b');respondWithRpcPromise(_0x834e('0x6b'),_0x834e('0x6b'),{'event':_0x834e('0x71'),'message':_0xb57b1b[_0x834e('0x21')]},client9002);return _0x3c643f;}return null;})[_0x834e('0x1b')](respondWithResult(_0x48521f,null))[_0x834e('0x23')](handleError(_0x48521f,null));};exports['status']=function(_0x2f775a,_0x54e70d,_0x11a9f7){if(_0x2f775a[_0x834e('0x50')]['id']){delete _0x2f775a[_0x834e('0x50')]['id'];}var _0x27df3d;return db[_0x834e('0x34')][_0x834e('0x52')]({'where':{'id':_0x2f775a['params']['id']}})['then'](handleEntityNotFound(_0x54e70d,null))[_0x834e('0x1b')](function(_0x2a854a){if(_0x2a854a){_0x27df3d=_0x2a854a;return db['SmsAccount'][_0x834e('0x52')]({'where':{'id':_0x2a854a[_0x834e('0x72')]}});}})[_0x834e('0x1b')](handleEntityNotFound(_0x54e70d,null))[_0x834e('0x1b')](function(_0xc75f5e){if(_0xc75f5e){logger['debug'](_0x834e('0x1e'),_0x834e('0x25'),'received\x20delivery\x20report\x20from',_0xc75f5e['type'],util['inspect'](_0x2f775a[_0x834e('0x50')],{'showHidden':![],'depth':null}));switch(_0xc75f5e[_0x834e('0x73')]){case'twilio':if(_0x2f775a[_0x834e('0x50')][_0x834e('0x74')]&&_0x2f775a['body'][_0x834e('0x74')]===_0x27df3d['messageId']){return _0x27df3d['update']({'read':!![]});}break;case _0x834e('0x75'):if(_0x2f775a[_0x834e('0x50')][_0x834e('0x76')]&&_0x2f775a[_0x834e('0x50')]['MessageUUID']===_0x27df3d[_0x834e('0x77')]&&_[_0x834e('0x78')]([_0x834e('0x79'),_0x834e('0x7a')],_0x2f775a[_0x834e('0x50')][_0x834e('0x7b')])>=0x0){return _0x27df3d[_0x834e('0x2d')]({'read':!![]});}break;}return _0x27df3d;}})[_0x834e('0x1b')](respondWithResult(_0x54e70d,null))[_0x834e('0x23')](handleError(_0x54e70d,null));};