c25e34c4c01e24e00fa95cfa3518b80f20819f1c
[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 _0xdd8d=['params','keys','SmsMessage','find','create','body','accept','sms','acceptMessage','reject','user','agent','UserId','SmsInteraction','interaction','get','role','RejectMessage','ContactId','Sequelize','QueryTypes','contact','User','fullname','email','interface','format','SIP/%s','channel','event','EventManager','SmsAccountId','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','sent','infobip','results','groupName','DELIVERED','util','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','socket.io-emitter','./smsMessage.socket','register','client','http','sms-interactions','request','then','info','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','status','offset','undefined','limit','count','set','Content-Range','json','update','destroy','end','stack','map','rawAttributes','fieldName','type','key','name','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show'];(function(_0x1d9a70,_0x2cc0f6){var _0x261299=function(_0x34c6ba){while(--_0x34c6ba){_0x1d9a70['push'](_0x1d9a70['shift']());}};_0x261299(++_0x2cc0f6);}(_0xdd8d,0x1e5));var _0xddd8=function(_0x12ca5f,_0x223d98){_0x12ca5f=_0x12ca5f-0x0;var _0xfc3ae9=_0xdd8d[_0x12ca5f];return _0xfc3ae9;};'use strict';var util=require(_0xddd8('0x0'));var _=require(_0xddd8('0x1'));var Redis=require(_0xddd8('0x2'));var interactionService=require('../../components/interaction/service');var qs=require(_0xddd8('0x3'));var logger=require(_0xddd8('0x4'))(_0xddd8('0x5'));var config=require('../../config/environment');var db=require(_0xddd8('0x6'))['db'];config[_0xddd8('0x7')]=_['defaults'](config[_0xddd8('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0xddd8('0x8'))(new Redis(config[_0xddd8('0x7')]));require(_0xddd8('0x9'))[_0xddd8('0xa')](socket);var jayson=require('jayson/promise');var client=jayson[_0xddd8('0xb')][_0xddd8('0xc')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});var interaction_log=require('../../config/logger')(_0xddd8('0xd'));function respondWithRpcPromise(_0x4ccb2b,_0x56b313,_0x49a9ae,_0x1b3b72){return new Promise(function(_0x2afad4,_0x3795fa){var _0x1570a2=_0x1b3b72||client;return _0x1570a2[_0xddd8('0xe')](_0x4ccb2b,_0x49a9ae)[_0xddd8('0xf')](function(_0x4de0b9){logger[_0xddd8('0x10')](_0xddd8('0x11'),_0x56b313,'request\x20sent');logger[_0xddd8('0x12')](_0xddd8('0x13'),_0x56b313,_0xddd8('0x14'),JSON[_0xddd8('0x15')](_0x4de0b9));if(_0x4de0b9[_0xddd8('0x16')]){if(_0x4de0b9[_0xddd8('0x16')][_0xddd8('0x17')]===0x1f4){logger[_0xddd8('0x16')]('SmsMessage,\x20%s,\x20%s',_0x56b313,_0x4de0b9[_0xddd8('0x16')][_0xddd8('0x18')]);return _0x3795fa(_0x4de0b9[_0xddd8('0x16')][_0xddd8('0x18')]);}logger[_0xddd8('0x16')]('SmsMessage,\x20%s,\x20%s',_0x56b313,_0x4de0b9[_0xddd8('0x16')][_0xddd8('0x18')]);return _0x2afad4(_0x4de0b9[_0xddd8('0x16')][_0xddd8('0x18')]);}else{logger['info']('SmsMessage,\x20%s,\x20%s',_0x56b313,_0xddd8('0x14'));_0x2afad4(_0x4de0b9[_0xddd8('0x19')][_0xddd8('0x18')]);}})[_0xddd8('0x1a')](function(_0x2a956b){logger[_0xddd8('0x16')](_0xddd8('0x11'),_0x56b313,_0x2a956b);_0x3795fa(_0x2a956b);});});}function respondWithResult(_0x33b8c0,_0x2fd953){_0x2fd953=_0x2fd953||0xc8;return function(_0x13fe89){if(_0x13fe89){return _0x33b8c0[_0xddd8('0x1b')](_0x2fd953)['json'](_0x13fe89);}};}function respondWithFilteredResult(_0x3d2246,_0x89ee63){return function(_0x5acd5e){if(_0x5acd5e){var _0x49cf1a=typeof _0x89ee63[_0xddd8('0x1c')]===_0xddd8('0x1d')&&typeof _0x89ee63[_0xddd8('0x1e')]==='undefined';var _0x8e6d19=_0x5acd5e[_0xddd8('0x1f')];var _0x518426=_0x49cf1a?0x0:_0x89ee63[_0xddd8('0x1c')];var _0x45646b=_0x49cf1a?_0x5acd5e['count']:_0x89ee63['offset']+_0x89ee63[_0xddd8('0x1e')];var _0x2fa135;if(_0x45646b>=_0x8e6d19){_0x45646b=_0x8e6d19;_0x2fa135=0xc8;}else{_0x2fa135=0xce;}_0x3d2246[_0xddd8('0x1b')](_0x2fa135);return _0x3d2246[_0xddd8('0x20')](_0xddd8('0x21'),_0x518426+'-'+_0x45646b+'/'+_0x8e6d19)[_0xddd8('0x22')](_0x5acd5e);}return null;};}function saveUpdates(_0xa031af){return function(_0x1b5a71){if(_0x1b5a71){return _0x1b5a71[_0xddd8('0x23')](_0xa031af)[_0xddd8('0xf')](function(_0x2bf823){return _0x2bf823;});}return null;};}function removeEntity(_0x3bc4ec){return function(_0x6a72c9){if(_0x6a72c9){return _0x6a72c9[_0xddd8('0x24')]()[_0xddd8('0xf')](function(){_0x3bc4ec['status'](0xcc)[_0xddd8('0x25')]();});}};}function handleEntityNotFound(_0x3de781){return function(_0x36f25f){if(!_0x36f25f){_0x3de781['sendStatus'](0x194);}return _0x36f25f;};}function handleError(_0x323e44,_0x5d167f){_0x5d167f=_0x5d167f||0x1f4;return function(_0x141c93){logger[_0xddd8('0x16')](_0x141c93[_0xddd8('0x26')]);if(_0x141c93['name']){delete _0x141c93['name'];}_0x323e44[_0xddd8('0x1b')](_0x5d167f)['send'](_0x141c93);};}exports['index']=function(_0x4cd039,_0x2d991a){var _0x5f51f4={},_0x433a71={},_0x4d2a94={'count':0x0,'rows':[]};var _0x23ea24=_[_0xddd8('0x27')](db['SmsMessage'][_0xddd8('0x28')],function(_0x1ae839){return{'name':_0x1ae839[_0xddd8('0x29')],'type':_0x1ae839[_0xddd8('0x2a')][_0xddd8('0x2b')]};});_0x433a71['model']=_[_0xddd8('0x27')](_0x23ea24,_0xddd8('0x2c'));_0x433a71[_0xddd8('0x2d')]=_['keys'](_0x4cd039[_0xddd8('0x2d')]);_0x433a71['filters']=_[_0xddd8('0x2e')](_0x433a71['model'],_0x433a71[_0xddd8('0x2d')]);_0x5f51f4[_0xddd8('0x2f')]=_['intersection'](_0x433a71[_0xddd8('0x30')],qs[_0xddd8('0x31')](_0x4cd039['query'][_0xddd8('0x31')]));_0x5f51f4[_0xddd8('0x2f')]=_0x5f51f4[_0xddd8('0x2f')][_0xddd8('0x32')]?_0x5f51f4[_0xddd8('0x2f')]:_0x433a71['model'];if(!_0x4cd039[_0xddd8('0x2d')][_0xddd8('0x33')](_0xddd8('0x34'))){_0x5f51f4[_0xddd8('0x1e')]=qs[_0xddd8('0x1e')](_0x4cd039[_0xddd8('0x2d')][_0xddd8('0x1e')]);_0x5f51f4[_0xddd8('0x1c')]=qs[_0xddd8('0x1c')](_0x4cd039[_0xddd8('0x2d')][_0xddd8('0x1c')]);}_0x5f51f4['order']=qs[_0xddd8('0x35')](_0x4cd039[_0xddd8('0x2d')][_0xddd8('0x35')]);_0x5f51f4[_0xddd8('0x36')]=qs[_0xddd8('0x37')](_[_0xddd8('0x38')](_0x4cd039[_0xddd8('0x2d')],_0x433a71[_0xddd8('0x37')]),_0x23ea24);if(_0x4cd039[_0xddd8('0x2d')][_0xddd8('0x39')]){_0x5f51f4[_0xddd8('0x36')]=_[_0xddd8('0x3a')](_0x5f51f4['where'],{'$or':_[_0xddd8('0x27')](_0x23ea24,function(_0xcbdb00){if(_0xcbdb00[_0xddd8('0x2a')]!==_0xddd8('0x3b')){var _0x1c7614={};_0x1c7614[_0xcbdb00['name']]={'$like':'%'+_0x4cd039[_0xddd8('0x2d')][_0xddd8('0x39')]+'%'};return _0x1c7614;}})});}_0x5f51f4=_['merge']({},_0x5f51f4,_0x4cd039[_0xddd8('0x3c')]);var _0x3fff49={'where':_0x5f51f4[_0xddd8('0x36')]};return db['SmsMessage'][_0xddd8('0x1f')](_0x3fff49)[_0xddd8('0xf')](function(_0x515b26){_0x4d2a94[_0xddd8('0x1f')]=_0x515b26;if(_0x4cd039[_0xddd8('0x2d')][_0xddd8('0x3d')]){_0x5f51f4[_0xddd8('0x3e')]=[{'all':!![]}];}return db['SmsMessage']['findAll'](_0x5f51f4);})[_0xddd8('0xf')](function(_0x34935d){_0x4d2a94[_0xddd8('0x3f')]=_0x34935d;return _0x4d2a94;})[_0xddd8('0xf')](respondWithFilteredResult(_0x2d991a,_0x5f51f4))['catch'](handleError(_0x2d991a,null));};exports[_0xddd8('0x40')]=function(_0x1d528f,_0x1595dd){var _0x1f347e={'raw':!![],'where':{'id':_0x1d528f[_0xddd8('0x41')]['id']}},_0x2606d7={};_0x2606d7['model']=_[_0xddd8('0x42')](db['SmsMessage'][_0xddd8('0x28')]);_0x2606d7['query']=_[_0xddd8('0x42')](_0x1d528f[_0xddd8('0x2d')]);_0x2606d7[_0xddd8('0x37')]=_[_0xddd8('0x2e')](_0x2606d7[_0xddd8('0x30')],_0x2606d7[_0xddd8('0x2d')]);_0x1f347e[_0xddd8('0x2f')]=_[_0xddd8('0x2e')](_0x2606d7[_0xddd8('0x30')],qs['fields'](_0x1d528f[_0xddd8('0x2d')][_0xddd8('0x31')]));_0x1f347e[_0xddd8('0x2f')]=_0x1f347e[_0xddd8('0x2f')][_0xddd8('0x32')]?_0x1f347e[_0xddd8('0x2f')]:_0x2606d7[_0xddd8('0x30')];if(_0x1d528f[_0xddd8('0x2d')][_0xddd8('0x3d')]){_0x1f347e[_0xddd8('0x3e')]=[{'all':!![]}];}_0x1f347e=_[_0xddd8('0x3a')]({},_0x1f347e,_0x1d528f[_0xddd8('0x3c')]);return db[_0xddd8('0x43')][_0xddd8('0x44')](_0x1f347e)[_0xddd8('0xf')](handleEntityNotFound(_0x1595dd,null))[_0xddd8('0xf')](respondWithResult(_0x1595dd,null))[_0xddd8('0x1a')](handleError(_0x1595dd,null));};exports[_0xddd8('0x45')]=function(_0x52fe38,_0x747f22){return db['SmsMessage'][_0xddd8('0x45')](_0x52fe38['body'],{})[_0xddd8('0xf')](respondWithResult(_0x747f22,0xc9))[_0xddd8('0x1a')](handleError(_0x747f22,null));};exports[_0xddd8('0x23')]=function(_0x51feb8,_0x14309e){if(_0x51feb8['body']['id']){delete _0x51feb8['body']['id'];}return db[_0xddd8('0x43')][_0xddd8('0x44')]({'where':{'id':_0x51feb8['params']['id']}})[_0xddd8('0xf')](handleEntityNotFound(_0x14309e,null))['then'](saveUpdates(_0x51feb8[_0xddd8('0x46')],null))[_0xddd8('0xf')](respondWithResult(_0x14309e,null))[_0xddd8('0x1a')](handleError(_0x14309e,null));};exports[_0xddd8('0x24')]=function(_0x5ee2a1,_0x361399){return db['SmsMessage']['find']({'where':{'id':_0x5ee2a1[_0xddd8('0x41')]['id']}})['then'](handleEntityNotFound(_0x361399,null))[_0xddd8('0xf')](removeEntity(_0x361399,null))['catch'](handleError(_0x361399,null));};exports['describe']=function(_0x440b9d,_0x15f80f){return db[_0xddd8('0x43')]['describe']()[_0xddd8('0xf')](respondWithResult(_0x15f80f,null))[_0xddd8('0x1a')](handleError(_0x15f80f,null));};exports[_0xddd8('0x47')]=function(_0x599bf4,_0x28cae3){var _0x1149af=_0xddd8('0x48');return interactionService[_0xddd8('0x49')](_0x599bf4,_0x1149af)[_0xddd8('0xf')](respondWithResult(_0x28cae3,null))['catch'](handleError(_0x28cae3,null));};exports[_0xddd8('0x4a')]=function(_0x585e8a,_0x58b943){var _0x147189={'agent':{},'channel':_0xddd8('0x48')};if(_0x585e8a[_0xddd8('0x46')]['id']){delete _0x585e8a[_0xddd8('0x46')]['id'];}_0x585e8a['body']['UserId']=_0x585e8a[_0xddd8('0x46')]['UserId']||_0x585e8a[_0xddd8('0x4b')]['id'];_0x147189[_0xddd8('0x4c')]['id']=_0x585e8a[_0xddd8('0x46')][_0xddd8('0x4d')];return db[_0xddd8('0x43')][_0xddd8('0x44')]({'where':{'id':_0x585e8a[_0xddd8('0x41')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x58b943,null))['then'](function(_0x20770c){if(_0x20770c){_0x147189[_0xddd8('0x18')]=_0x20770c['get']({'plain':!![]});return db[_0xddd8('0x4e')]['find']({'where':{'id':_0x20770c['SmsInteractionId']}});}return null;})[_0xddd8('0xf')](handleEntityNotFound(_0x58b943,null))[_0xddd8('0xf')](function(_0x4bba4d){if(_0x4bba4d){_0x147189[_0xddd8('0x4f')]=_0x4bba4d[_0xddd8('0x50')]({'plain':!![]});interaction_log['info']('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x585e8a[_0xddd8('0x4b')]['id'],_0x585e8a[_0xddd8('0x4b')][_0xddd8('0x2c')],_0x585e8a[_0xddd8('0x4b')][_0xddd8('0x51')],_0x147189[_0xddd8('0x4f')]['id'],_0x585e8a[_0xddd8('0x46')]?JSON[_0xddd8('0x15')](_0x585e8a['body']):'null');return respondWithRpcPromise(_0xddd8('0x52'),'rejectMessage',_0x147189);}return null;})[_0xddd8('0xf')](function(_0x2f2785){var _0x59da4d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2f2785['message'][_0xddd8('0x53')];return db['sequelize'][_0xddd8('0x2d')](_0x59da4d,{'type':db[_0xddd8('0x54')][_0xddd8('0x55')]['SELECT'],'raw':!![]})[_0xddd8('0xf')](function(_0x3c0e31){return _0x3c0e31;});})[_0xddd8('0xf')](function(_0x173fb4){if(_0x173fb4){_0x147189[_0xddd8('0x18')][_0xddd8('0x56')]=_0x173fb4[0x0];if(!_0x585e8a[_0xddd8('0x46')][_0xddd8('0x4d')])return;return db[_0xddd8('0x57')][_0xddd8('0x44')]({'where':{'id':_0x585e8a[_0xddd8('0x46')][_0xddd8('0x4d')],'role':_0xddd8('0x4c')},'attributes':['id',_0xddd8('0x2c'),_0xddd8('0x58'),_0xddd8('0x59'),'internal'],'raw':!![]});}return null;})[_0xddd8('0xf')](function(_0x533112){if(!_0x533112)return null;_0x147189[_0xddd8('0x18')][_0xddd8('0x4c')]=_0x533112;return _0x147189;})[_0xddd8('0xf')](function(_0x4e2c19){if(_0x4e2c19){_0x4e2c19[_0xddd8('0x18')][_0xddd8('0x5a')]=util[_0xddd8('0x5b')](_0xddd8('0x5c'),_0x585e8a[_0xddd8('0x4b')][_0xddd8('0x2c')]);_0x4e2c19['message'][_0xddd8('0x5d')]=_0x147189[_0xddd8('0x5d')];_0x4e2c19['message']['motionChannel']=_0x147189['channel'];_0x4e2c19['message'][_0xddd8('0x5e')]=_0xddd8('0x4a');respondWithRpcPromise(_0xddd8('0x5f'),_0xddd8('0x5f'),{'event':'rejectmessage','message':_0x4e2c19['message']},client9002);return _0x147189;}return null;})[_0xddd8('0xf')](respondWithResult(_0x58b943,null))[_0xddd8('0x1a')](handleError(_0x58b943,null));};exports['status']=function(_0x1d16fc,_0x4662d2){if(_0x1d16fc[_0xddd8('0x46')]['id']){delete _0x1d16fc[_0xddd8('0x46')]['id'];}var _0x313afb;return db[_0xddd8('0x43')][_0xddd8('0x44')]({'where':{'id':_0x1d16fc[_0xddd8('0x41')]['id']}})[_0xddd8('0xf')](handleEntityNotFound(_0x4662d2,null))[_0xddd8('0xf')](function(_0x5860ec){if(_0x5860ec){_0x313afb=_0x5860ec;return db['SmsAccount'][_0xddd8('0x44')]({'where':{'id':_0x5860ec[_0xddd8('0x60')]}});}})[_0xddd8('0xf')](handleEntityNotFound(_0x4662d2,null))[_0xddd8('0xf')](function(_0x28fa4a){if(_0x28fa4a){logger[_0xddd8('0x12')](_0xddd8('0x13'),_0xddd8('0x1b'),'received\x20delivery\x20report\x20from',_0x28fa4a[_0xddd8('0x2a')],util[_0xddd8('0x61')](_0x1d16fc[_0xddd8('0x46')],{'showHidden':![],'depth':null}));switch(_0x28fa4a[_0xddd8('0x2a')]){case _0xddd8('0x62'):if(_0x1d16fc[_0xddd8('0x46')][_0xddd8('0x63')]&&_0x1d16fc['body']['MessageSid']===_0x313afb[_0xddd8('0x64')]){return _0x313afb[_0xddd8('0x23')]({'read':!![]});}else{logger['error'](_0xddd8('0x65'),_0xddd8('0x1b'),_0xddd8('0x62'),util[_0xddd8('0x61')](_0x1d16fc[_0xddd8('0x46')],{'showHidden':![],'depth':null}));}break;case _0xddd8('0x66'):if(_0x1d16fc[_0xddd8('0x46')]['MessageUUID']&&_0x1d16fc[_0xddd8('0x46')][_0xddd8('0x67')]===_0x313afb[_0xddd8('0x64')]&&_[_0xddd8('0x68')]([_0xddd8('0x69'),'delivered'],_0x1d16fc[_0xddd8('0x46')]['Status'])>=0x0){return _0x313afb[_0xddd8('0x23')]({'read':!![]});}else{logger[_0xddd8('0x16')](_0xddd8('0x65'),_0xddd8('0x1b'),'plivio',util['inspect'](_0x1d16fc[_0xddd8('0x46')],{'showHidden':![],'depth':null}));}break;case _0xddd8('0x6a'):var _0x26336f=_0x1d16fc[_0xddd8('0x46')][_0xddd8('0x6b')][0x0];if(_0x26336f[_0xddd8('0x1b')][_0xddd8('0x6c')]===_0xddd8('0x6d')){return _0x313afb[_0xddd8('0x23')]({'read':!![]});}else{logger['error'](_0xddd8('0x65'),_0xddd8('0x1b'),'infobip',util[_0xddd8('0x61')](_0x1d16fc['body'],{'showHidden':![],'depth':null}));}break;}return _0x313afb;}})[_0xddd8('0xf')](respondWithResult(_0x4662d2,null))[_0xddd8('0x1a')](handleError(_0x4662d2,null));};