de6a22136ece5381a917fe4f01923ee73a116da2
[motion2.git] / server / api / openchannelMessage / openchannelMessage.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 _0x2ae4=['openchannel','agent','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','SIP/%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel','crypto','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelMessage.socket','jayson/promise','client','http','then','request\x20sent','debug','stringify','error','code','OpenchannelMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','stack','name','index','map','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','OpenchannelMessage','includeAll','include','findAll','show','params','rawAttributes','create','body','find','describe','accept','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','CmContact','Contact','OpenchannelInteractionId','isNil','read1stAt','get','user','interaction','acceptMessage','manual','interface','channel','event','EventManager','openchannel-interactions'];(function(_0x50f42c,_0x5528aa){var _0xc1e318=function(_0x488043){while(--_0x488043){_0x50f42c['push'](_0x50f42c['shift']());}};_0xc1e318(++_0x5528aa);}(_0x2ae4,0x16c));var _0x42ae=function(_0x482d2e,_0x25cf19){_0x482d2e=_0x482d2e-0x0;var _0x2b8d2e=_0x2ae4[_0x482d2e];return _0x2b8d2e;};'use strict';var emlformat=require(_0x42ae('0x0'));var rimraf=require(_0x42ae('0x1'));var zipdir=require(_0x42ae('0x2'));var jsonpatch=require(_0x42ae('0x3'));var rp=require(_0x42ae('0x4'));var moment=require(_0x42ae('0x5'));var BPromise=require(_0x42ae('0x6'));var Mustache=require('mustache');var util=require(_0x42ae('0x7'));var path=require(_0x42ae('0x8'));var sox=require(_0x42ae('0x9'));var csv=require('to-csv');var ejs=require(_0x42ae('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x42ae('0xb'));var squel=require(_0x42ae('0xc'));var crypto=require(_0x42ae('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x42ae('0xe'));var querystring=require(_0x42ae('0xf'));var Papa=require(_0x42ae('0x10'));var Redis=require('ioredis');var authService=require(_0x42ae('0x11'));var qs=require(_0x42ae('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x42ae('0x13'));var logger=require(_0x42ae('0x14'))(_0x42ae('0x15'));var utils=require(_0x42ae('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x42ae('0x17'));var db=require(_0x42ae('0x18'))['db'];config[_0x42ae('0x19')]=_['defaults'](config['redis'],{'host':_0x42ae('0x1a'),'port':0x18eb});var socket=require(_0x42ae('0x1b'))(new Redis(config[_0x42ae('0x19')]));require(_0x42ae('0x1c'))['register'](socket);var jayson=require(_0x42ae('0x1d'));var client=jayson[_0x42ae('0x1e')][_0x42ae('0x1f')]({'port':0x232c});var client9002=jayson[_0x42ae('0x1e')][_0x42ae('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x4e7181,_0x50735c,_0x229383,_0xd52147){return new BPromise(function(_0xcdb2a1,_0x17025e){var _0x3c629f=_0xd52147||client;return _0x3c629f['request'](_0x4e7181,_0x229383)[_0x42ae('0x20')](function(_0x2f9f90){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x50735c,_0x42ae('0x21'));logger[_0x42ae('0x22')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x50735c,_0x42ae('0x21'),JSON[_0x42ae('0x23')](_0x2f9f90));if(_0x2f9f90[_0x42ae('0x24')]){if(_0x2f9f90[_0x42ae('0x24')][_0x42ae('0x25')]===0x1f4){logger[_0x42ae('0x24')](_0x42ae('0x26'),_0x50735c,_0x2f9f90['error'][_0x42ae('0x27')]);return _0x17025e(_0x2f9f90[_0x42ae('0x24')][_0x42ae('0x27')]);}logger[_0x42ae('0x24')]('OpenchannelMessage,\x20%s,\x20%s',_0x50735c,_0x2f9f90[_0x42ae('0x24')]['message']);return _0xcdb2a1(_0x2f9f90['error'][_0x42ae('0x27')]);}else{logger[_0x42ae('0x28')](_0x42ae('0x26'),_0x50735c,'request\x20sent');_0xcdb2a1(_0x2f9f90[_0x42ae('0x29')]['message']);}})[_0x42ae('0x2a')](function(_0x6e4a71){logger[_0x42ae('0x24')](_0x42ae('0x26'),_0x50735c,_0x6e4a71);_0x17025e(_0x6e4a71);});});}function respondWithStatusCode(_0xf97c9f,_0x34256b){_0x34256b=_0x34256b||0xcc;return function(_0x2dd25c){if(_0x2dd25c){return _0xf97c9f[_0x42ae('0x2b')](_0x34256b);}return _0xf97c9f[_0x42ae('0x2c')](_0x34256b)[_0x42ae('0x2d')]();};}function respondWithResult(_0x298b6c,_0x196631){_0x196631=_0x196631||0xc8;return function(_0x47750c){if(_0x47750c){return _0x298b6c['status'](_0x196631)[_0x42ae('0x2e')](_0x47750c);}};}function respondWithFilteredResult(_0x1c45d6,_0x26b0da){return function(_0x5bd07f){if(_0x5bd07f){var _0x3c3993=_0x5bd07f[_0x42ae('0x2f')],_0x44731a=_0x26b0da[_0x42ae('0x30')],_0x3d0ccc=_0x26b0da[_0x42ae('0x30')]+_0x26b0da[_0x42ae('0x31')],_0xe207ae;if(_0x3d0ccc>=_0x3c3993){_0x3d0ccc=_0x3c3993;_0xe207ae=0xc8;}else{_0xe207ae=0xce;}_0x1c45d6[_0x42ae('0x2c')](_0xe207ae);return _0x1c45d6[_0x42ae('0x32')](_0x42ae('0x33'),_0x44731a+'-'+_0x3d0ccc+'/'+_0x3c3993)[_0x42ae('0x2e')](_0x5bd07f);}return null;};}function patchUpdates(_0x34d51b){return function(_0x4b863b){try{jsonpatch[_0x42ae('0x34')](_0x4b863b,_0x34d51b,!![]);}catch(_0x213143){return BPromise[_0x42ae('0x35')](_0x213143);}return _0x4b863b[_0x42ae('0x36')]();};}function saveUpdates(_0x350995,_0x24b8b7){return function(_0x4f1dbf){if(_0x4f1dbf){return _0x4f1dbf[_0x42ae('0x37')](_0x350995)[_0x42ae('0x20')](function(_0x43edb5){return _0x43edb5;});}return null;};}function removeEntity(_0x3cc2f4,_0x2301a7){return function(_0x286160){if(_0x286160){return _0x286160[_0x42ae('0x38')]()[_0x42ae('0x20')](function(){_0x3cc2f4[_0x42ae('0x2c')](0xcc)[_0x42ae('0x2d')]();});}};}function handleEntityNotFound(_0x299489,_0x155d6a){return function(_0x408076){if(!_0x408076){_0x299489[_0x42ae('0x2b')](0x194);}return _0x408076;};}function handleError(_0x6c448b,_0xc15aaf){_0xc15aaf=_0xc15aaf||0x1f4;return function(_0xeffd02){logger[_0x42ae('0x24')](_0xeffd02[_0x42ae('0x39')]);if(_0xeffd02[_0x42ae('0x3a')]){delete _0xeffd02[_0x42ae('0x3a')];}_0x6c448b[_0x42ae('0x2c')](_0xc15aaf)['send'](_0xeffd02);};}exports[_0x42ae('0x3b')]=function(_0x25dd3a,_0x36b035){var _0x5b9e5a={},_0x9266b={},_0x1cffa8={'count':0x0,'rows':[]};var _0x11d090=_[_0x42ae('0x3c')](db['OpenchannelMessage']['rawAttributes'],function(_0x46c7ce){return{'name':_0x46c7ce[_0x42ae('0x3d')],'type':_0x46c7ce['type'][_0x42ae('0x3e')]};});_0x9266b[_0x42ae('0x3f')]=_['map'](_0x11d090,_0x42ae('0x3a'));_0x9266b[_0x42ae('0x40')]=_[_0x42ae('0x41')](_0x25dd3a[_0x42ae('0x40')]);_0x9266b[_0x42ae('0x42')]=_[_0x42ae('0x43')](_0x9266b[_0x42ae('0x3f')],_0x9266b['query']);_0x5b9e5a[_0x42ae('0x44')]=_[_0x42ae('0x43')](_0x9266b['model'],qs[_0x42ae('0x45')](_0x25dd3a['query']['fields']));_0x5b9e5a[_0x42ae('0x44')]=_0x5b9e5a[_0x42ae('0x44')][_0x42ae('0x46')]?_0x5b9e5a[_0x42ae('0x44')]:_0x9266b[_0x42ae('0x3f')];if(!_0x25dd3a['query'][_0x42ae('0x47')]('nolimit')){_0x5b9e5a[_0x42ae('0x31')]=qs[_0x42ae('0x31')](_0x25dd3a['query']['limit']);_0x5b9e5a[_0x42ae('0x30')]=qs[_0x42ae('0x30')](_0x25dd3a[_0x42ae('0x40')][_0x42ae('0x30')]);}_0x5b9e5a[_0x42ae('0x48')]=qs['sort'](_0x25dd3a['query'][_0x42ae('0x49')]);_0x5b9e5a[_0x42ae('0x4a')]=qs[_0x42ae('0x42')](_[_0x42ae('0x4b')](_0x25dd3a['query'],_0x9266b[_0x42ae('0x42')]),_0x11d090);if(_0x25dd3a[_0x42ae('0x40')][_0x42ae('0x4c')]){_0x5b9e5a['where']=_[_0x42ae('0x4d')](_0x5b9e5a['where'],{'$or':_[_0x42ae('0x3c')](_0x11d090,function(_0xa072c3){if(_0xa072c3[_0x42ae('0x4e')]!==_0x42ae('0x4f')){var _0x30b74a={};_0x30b74a[_0xa072c3['name']]={'$like':'%'+_0x25dd3a[_0x42ae('0x40')][_0x42ae('0x4c')]+'%'};return _0x30b74a;}})});}_0x5b9e5a=_[_0x42ae('0x4d')]({},_0x5b9e5a,_0x25dd3a[_0x42ae('0x50')]);var _0x45351e={'where':_0x5b9e5a[_0x42ae('0x4a')]};return db[_0x42ae('0x51')][_0x42ae('0x2f')](_0x45351e)[_0x42ae('0x20')](function(_0x4ec592){_0x1cffa8[_0x42ae('0x2f')]=_0x4ec592;if(_0x25dd3a[_0x42ae('0x40')][_0x42ae('0x52')]){_0x5b9e5a[_0x42ae('0x53')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0x42ae('0x54')](_0x5b9e5a);})[_0x42ae('0x20')](function(_0x92ec79){_0x1cffa8['rows']=_0x92ec79;return _0x1cffa8;})['then'](respondWithFilteredResult(_0x36b035,_0x5b9e5a))['catch'](handleError(_0x36b035,null));};exports[_0x42ae('0x55')]=function(_0x2b1445,_0x31dec9){var _0x37afd4={'raw':!![],'where':{'id':_0x2b1445[_0x42ae('0x56')]['id']}},_0xc1c2fc={};_0xc1c2fc[_0x42ae('0x3f')]=_['keys'](db[_0x42ae('0x51')][_0x42ae('0x57')]);_0xc1c2fc[_0x42ae('0x40')]=_[_0x42ae('0x41')](_0x2b1445[_0x42ae('0x40')]);_0xc1c2fc[_0x42ae('0x42')]=_[_0x42ae('0x43')](_0xc1c2fc[_0x42ae('0x3f')],_0xc1c2fc[_0x42ae('0x40')]);_0x37afd4['attributes']=_[_0x42ae('0x43')](_0xc1c2fc[_0x42ae('0x3f')],qs[_0x42ae('0x45')](_0x2b1445[_0x42ae('0x40')][_0x42ae('0x45')]));_0x37afd4[_0x42ae('0x44')]=_0x37afd4[_0x42ae('0x44')][_0x42ae('0x46')]?_0x37afd4[_0x42ae('0x44')]:_0xc1c2fc[_0x42ae('0x3f')];if(_0x2b1445[_0x42ae('0x40')][_0x42ae('0x52')]){_0x37afd4[_0x42ae('0x53')]=[{'all':!![]}];}_0x37afd4=_[_0x42ae('0x4d')]({},_0x37afd4,_0x2b1445['options']);return db['OpenchannelMessage']['find'](_0x37afd4)['then'](handleEntityNotFound(_0x31dec9,null))[_0x42ae('0x20')](respondWithResult(_0x31dec9,null))['catch'](handleError(_0x31dec9,null));};exports[_0x42ae('0x58')]=function(_0xbe1f55,_0x37807a){return db[_0x42ae('0x51')][_0x42ae('0x58')](_0xbe1f55['body'],{})[_0x42ae('0x20')](respondWithResult(_0x37807a,0xc9))[_0x42ae('0x2a')](handleError(_0x37807a,null));};exports['update']=function(_0x4c6347,_0x473dd2){if(_0x4c6347['body']['id']){delete _0x4c6347[_0x42ae('0x59')]['id'];}return db[_0x42ae('0x51')][_0x42ae('0x5a')]({'where':{'id':_0x4c6347[_0x42ae('0x56')]['id']}})['then'](handleEntityNotFound(_0x473dd2,null))['then'](saveUpdates(_0x4c6347['body'],null))[_0x42ae('0x20')](respondWithResult(_0x473dd2,null))['catch'](handleError(_0x473dd2,null));};exports[_0x42ae('0x38')]=function(_0x9a180c,_0x18b18c){return db[_0x42ae('0x51')][_0x42ae('0x5a')]({'where':{'id':_0x9a180c[_0x42ae('0x56')]['id']}})[_0x42ae('0x20')](handleEntityNotFound(_0x18b18c,null))['then'](removeEntity(_0x18b18c,null))[_0x42ae('0x2a')](handleError(_0x18b18c,null));};exports[_0x42ae('0x5b')]=function(_0xf2d160,_0x35e139){return db[_0x42ae('0x51')]['describe']()[_0x42ae('0x20')](respondWithResult(_0x35e139,null))[_0x42ae('0x2a')](handleError(_0x35e139,null));};var interaction_log=require(_0x42ae('0x14'))('openchannel-interactions');exports[_0x42ae('0x5c')]=function(_0x25aa51,_0x1af5ee,_0x239e45){var _0x2d5de0={'agent':{},'channel':'openchannel'};if(_0x25aa51[_0x42ae('0x59')]['id']){delete _0x25aa51['body']['id'];}_0x25aa51[_0x42ae('0x59')]['read']=!![];_0x25aa51['body'][_0x42ae('0x5d')]=moment()[_0x42ae('0x5e')](_0x42ae('0x5f'));_0x25aa51[_0x42ae('0x59')][_0x42ae('0x60')]=_0x25aa51[_0x42ae('0x59')]['UserId']||_0x25aa51['user']['id'];_0x2d5de0['agent']['id']=_0x25aa51[_0x42ae('0x59')]['UserId'];return db[_0x42ae('0x51')]['find']({'where':{'id':_0x25aa51[_0x42ae('0x56')]['id'],'UserId':null},'include':[{'model':db[_0x42ae('0x61')],'as':_0x42ae('0x62')}]})['then'](handleEntityNotFound(_0x1af5ee,null))[_0x42ae('0x20')](saveUpdates(_0x25aa51[_0x42ae('0x59')],null))[_0x42ae('0x20')](function(_0x493482){if(_0x493482){_0x2d5de0['message']=_0x493482['get']({'plain':!![]});return db['OpenchannelInteraction'][_0x42ae('0x5a')]({'where':{'id':_0x493482[_0x42ae('0x63')]}});}return null;})[_0x42ae('0x20')](handleEntityNotFound(_0x1af5ee,null))[_0x42ae('0x20')](function(_0x3992b2){if(_0x3992b2){return _0x3992b2[_0x42ae('0x37')]({'UserId':_0x25aa51[_0x42ae('0x59')][_0x42ae('0x60')],'read1stAt':_[_0x42ae('0x64')](_0x3992b2[_0x42ae('0x65')])?moment()[_0x42ae('0x5e')](_0x42ae('0x5f')):undefined});}return null;})[_0x42ae('0x20')](function(_0x3cb255){if(_0x3cb255){_0x2d5de0['interaction']=_0x3cb255[_0x42ae('0x66')]({'plain':!![]});interaction_log['info']('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x25aa51[_0x42ae('0x67')]['id'],_0x25aa51['user'][_0x42ae('0x3a')],_0x25aa51[_0x42ae('0x67')]['role'],_0x2d5de0[_0x42ae('0x68')]['id'],_0x25aa51[_0x42ae('0x59')]?JSON[_0x42ae('0x23')](_0x25aa51['body']):'null');return respondWithRpcPromise('AcceptMessage',_0x42ae('0x69'),_0x2d5de0);}return null;})[_0x42ae('0x20')](function(_0x4d6adf){if(_0x4d6adf){if(_0x25aa51[_0x42ae('0x59')][_0x42ae('0x6a')]){_0x2d5de0[_0x42ae('0x27')][_0x42ae('0x6b')]=util[_0x42ae('0x5e')]('SIP/%s',_0x25aa51[_0x42ae('0x67')]['name']);_0x2d5de0[_0x42ae('0x27')][_0x42ae('0x6c')]=_0x2d5de0[_0x42ae('0x6c')];_0x2d5de0[_0x42ae('0x27')][_0x42ae('0x6d')]=_0x42ae('0x5c');return respondWithRpcPromise(_0x42ae('0x6e'),_0x42ae('0x6e'),{'event':'acceptmessage','message':_0x2d5de0['message']},client9002)[_0x42ae('0x20')](function(){return _0x2d5de0;});}return _0x2d5de0;}return null;})[_0x42ae('0x20')](respondWithResult(_0x1af5ee,null))['catch'](handleError(_0x1af5ee,null));};var interaction_log=require('../../config/logger')(_0x42ae('0x6f'));exports[_0x42ae('0x35')]=function(_0x32dd22,_0x3b51d6,_0x58eadc){var _0x42a695={'agent':{},'channel':_0x42ae('0x70')};if(_0x32dd22['body']['id']){delete _0x32dd22['body']['id'];}_0x32dd22[_0x42ae('0x59')][_0x42ae('0x60')]=_0x32dd22[_0x42ae('0x59')][_0x42ae('0x60')]||_0x32dd22[_0x42ae('0x67')]['id'];_0x42a695[_0x42ae('0x71')]['id']=_0x32dd22[_0x42ae('0x59')][_0x42ae('0x60')];return db[_0x42ae('0x51')][_0x42ae('0x5a')]({'where':{'id':_0x32dd22[_0x42ae('0x56')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3b51d6,null))['then'](function(_0x16f43b){if(_0x16f43b){_0x42a695[_0x42ae('0x27')]=_0x16f43b[_0x42ae('0x66')]({'plain':!![]});return db['OpenchannelInteraction'][_0x42ae('0x5a')]({'where':{'id':_0x16f43b[_0x42ae('0x63')]}});}return null;})[_0x42ae('0x20')](handleEntityNotFound(_0x3b51d6,null))[_0x42ae('0x20')](function(_0x141096){if(_0x141096){_0x42a695[_0x42ae('0x68')]=_0x141096[_0x42ae('0x66')]({'plain':!![]});interaction_log[_0x42ae('0x28')](_0x42ae('0x72'),_0x32dd22[_0x42ae('0x67')]['id'],_0x32dd22['user'][_0x42ae('0x3a')],_0x32dd22[_0x42ae('0x67')]['role'],_0x42a695[_0x42ae('0x68')]['id'],_0x32dd22[_0x42ae('0x59')]?JSON[_0x42ae('0x23')](_0x32dd22[_0x42ae('0x59')]):_0x42ae('0x73'));return respondWithRpcPromise(_0x42ae('0x74'),_0x42ae('0x75'),_0x42a695);}return null;})[_0x42ae('0x20')](function(_0x4db009){if(_0x4db009){_0x4db009[_0x42ae('0x27')][_0x42ae('0x6b')]=util['format'](_0x42ae('0x76'),_0x32dd22[_0x42ae('0x67')][_0x42ae('0x3a')]);_0x4db009[_0x42ae('0x27')][_0x42ae('0x6c')]=_0x42a695['channel'];_0x4db009[_0x42ae('0x27')][_0x42ae('0x6d')]=_0x42ae('0x35');respondWithRpcPromise(_0x42ae('0x6e'),_0x42ae('0x6e'),{'event':'rejectmessage','message':_0x4db009['message']},client9002);return _0x42a695;}return null;})[_0x42ae('0x20')](respondWithResult(_0x3b51d6,null))[_0x42ae('0x2a')](handleError(_0x3b51d6,null));};