568ece51f1b0aa9eceef1d8669d1dac42b07c275
[motion2.git] / server / api / chatMessage / chatMessage.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 _0x83d6=['[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','formData','reject','agent','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','sendStatus','end','status','count','offset','limit','Content-Range','json','apply','save','update','destroy','name','send','index','map','ChatMessage','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','show','params','length','options','create','body','find','describe','chat-interactions','accept','chat','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','CmContact','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','get'];(function(_0x576272,_0x35d42c){var _0x2a93ed=function(_0x2edc4d){while(--_0x2edc4d){_0x576272['push'](_0x576272['shift']());}};_0x2a93ed(++_0x35d42c);}(_0x83d6,0x10d));var _0x683d=function(_0x44d32c,_0x29d97c){_0x44d32c=_0x44d32c-0x0;var _0x4303ab=_0x83d6[_0x44d32c];return _0x4303ab;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x683d('0x0'));var rimraf=require(_0x683d('0x1'));var zipdir=require(_0x683d('0x2'));var jsonpatch=require(_0x683d('0x3'));var rp=require('request-promise');var moment=require(_0x683d('0x4'));var BPromise=require(_0x683d('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x683d('0x6'));var sox=require(_0x683d('0x7'));var csv=require('to-csv');var ejs=require(_0x683d('0x8'));var fs=require('fs');var _=require(_0x683d('0x9'));var squel=require(_0x683d('0xa'));var crypto=require(_0x683d('0xb'));var jsforce=require(_0x683d('0xc'));var deskjs=require(_0x683d('0xd'));var toCsv=require('to-csv');var querystring=require(_0x683d('0xe'));var Papa=require('papaparse');var Redis=require(_0x683d('0xf'));var authService=require(_0x683d('0x10'));var qs=require(_0x683d('0x11'));var as=require(_0x683d('0x12'));var hardwareService=require(_0x683d('0x13'));var logger=require(_0x683d('0x14'))(_0x683d('0x15'));var utils=require(_0x683d('0x16'));var config=require(_0x683d('0x17'));var licenseUtil=require(_0x683d('0x18'));var db=require(_0x683d('0x19'))['db'];config['redis']=_['defaults'](config[_0x683d('0x1a')],{'host':_0x683d('0x1b'),'port':0x18eb});var socket=require(_0x683d('0x1c'))(new Redis(config[_0x683d('0x1a')]));require(_0x683d('0x1d'))[_0x683d('0x1e')](socket);var jayson=require(_0x683d('0x1f'));var client=jayson[_0x683d('0x20')][_0x683d('0x21')]({'port':0x232c});var client9002=jayson[_0x683d('0x20')][_0x683d('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x4902d3,_0x2575f5,_0x675ff8,_0x37ceec){return new BPromise(function(_0x52f999,_0xc64af5){var _0x3c8c18=_0x37ceec||client;return _0x3c8c18['request'](_0x4902d3,_0x675ff8)[_0x683d('0x22')](function(_0x20f761){logger[_0x683d('0x23')](_0x683d('0x24'),_0x2575f5,_0x683d('0x25'));logger['debug']('ChatMessage,\x20%s,\x20%s,\x20%s',_0x2575f5,_0x683d('0x25'),JSON[_0x683d('0x26')](_0x20f761));if(_0x20f761['error']){if(_0x20f761[_0x683d('0x27')]['code']===0x1f4){logger[_0x683d('0x27')](_0x683d('0x24'),_0x2575f5,_0x20f761[_0x683d('0x27')]['message']);return _0xc64af5(_0x20f761[_0x683d('0x27')][_0x683d('0x28')]);}logger[_0x683d('0x27')](_0x683d('0x24'),_0x2575f5,_0x20f761[_0x683d('0x27')][_0x683d('0x28')]);return _0x52f999(_0x20f761['error'][_0x683d('0x28')]);}else{logger[_0x683d('0x23')](_0x683d('0x24'),_0x2575f5,_0x683d('0x25'));_0x52f999(_0x20f761['result'][_0x683d('0x28')]);}})[_0x683d('0x29')](function(_0x4b0161){logger[_0x683d('0x27')](_0x683d('0x24'),_0x2575f5,_0x4b0161);_0xc64af5(_0x4b0161);});});}function respondWithStatusCode(_0x10eee9,_0x481fb4){_0x481fb4=_0x481fb4||0xcc;return function(_0x2955c1){if(_0x2955c1){return _0x10eee9[_0x683d('0x2a')](_0x481fb4);}return _0x10eee9['status'](_0x481fb4)[_0x683d('0x2b')]();};}function respondWithResult(_0x3f7cc0,_0x4e1732){_0x4e1732=_0x4e1732||0xc8;return function(_0x57fc62){if(_0x57fc62){return _0x3f7cc0[_0x683d('0x2c')](_0x4e1732)['json'](_0x57fc62);}};}function respondWithFilteredResult(_0x46eac8,_0x192be0){return function(_0x584511){if(_0x584511){var _0x233ed7=_0x584511[_0x683d('0x2d')],_0x146915=_0x192be0[_0x683d('0x2e')],_0x53bcd1=_0x192be0[_0x683d('0x2e')]+_0x192be0[_0x683d('0x2f')],_0xcc4d3f;if(_0x53bcd1>=_0x233ed7){_0x53bcd1=_0x233ed7;_0xcc4d3f=0xc8;}else{_0xcc4d3f=0xce;}_0x46eac8['status'](_0xcc4d3f);return _0x46eac8['set'](_0x683d('0x30'),_0x146915+'-'+_0x53bcd1+'/'+_0x233ed7)[_0x683d('0x31')](_0x584511);}return null;};}function patchUpdates(_0x5eacf9){return function(_0x3f68d6){try{jsonpatch[_0x683d('0x32')](_0x3f68d6,_0x5eacf9,!![]);}catch(_0x5eb2ff){return BPromise['reject'](_0x5eb2ff);}return _0x3f68d6[_0x683d('0x33')]();};}function saveUpdates(_0x3f775a,_0x979323){return function(_0xa10348){if(_0xa10348){return _0xa10348[_0x683d('0x34')](_0x3f775a)[_0x683d('0x22')](function(_0x146556){return _0x146556;});}return null;};}function removeEntity(_0x12cd0a,_0x346aaf){return function(_0x41ccea){if(_0x41ccea){return _0x41ccea[_0x683d('0x35')]()[_0x683d('0x22')](function(){_0x12cd0a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xc77198,_0x18f71a){return function(_0x1143d7){if(!_0x1143d7){_0xc77198[_0x683d('0x2a')](0x194);}return _0x1143d7;};}function handleError(_0x124a4c,_0x2359bd){_0x2359bd=_0x2359bd||0x1f4;return function(_0x3da804){logger[_0x683d('0x27')](_0x3da804['stack']);if(_0x3da804[_0x683d('0x36')]){delete _0x3da804['name'];}_0x124a4c['status'](_0x2359bd)[_0x683d('0x37')](_0x3da804);};}exports[_0x683d('0x38')]=function(_0x4b280e,_0x35b33e){var _0x378c51={},_0x1e5b5d={},_0x4bc927={'count':0x0,'rows':[]};var _0x38942b=_[_0x683d('0x39')](db[_0x683d('0x3a')][_0x683d('0x3b')],function(_0x2eee5b){return{'name':_0x2eee5b[_0x683d('0x3c')],'type':_0x2eee5b[_0x683d('0x3d')][_0x683d('0x3e')]};});_0x1e5b5d[_0x683d('0x3f')]=_['map'](_0x38942b,_0x683d('0x36'));_0x1e5b5d['query']=_[_0x683d('0x40')](_0x4b280e[_0x683d('0x41')]);_0x1e5b5d[_0x683d('0x42')]=_[_0x683d('0x43')](_0x1e5b5d[_0x683d('0x3f')],_0x1e5b5d[_0x683d('0x41')]);_0x378c51['attributes']=_[_0x683d('0x43')](_0x1e5b5d['model'],qs[_0x683d('0x44')](_0x4b280e[_0x683d('0x41')][_0x683d('0x44')]));_0x378c51[_0x683d('0x45')]=_0x378c51[_0x683d('0x45')]['length']?_0x378c51['attributes']:_0x1e5b5d['model'];if(!_0x4b280e['query']['hasOwnProperty'](_0x683d('0x46'))){_0x378c51[_0x683d('0x2f')]=qs[_0x683d('0x2f')](_0x4b280e[_0x683d('0x41')]['limit']);_0x378c51['offset']=qs['offset'](_0x4b280e['query'][_0x683d('0x2e')]);}_0x378c51[_0x683d('0x47')]=qs[_0x683d('0x48')](_0x4b280e[_0x683d('0x41')]['sort']);_0x378c51[_0x683d('0x49')]=qs[_0x683d('0x42')](_[_0x683d('0x4a')](_0x4b280e[_0x683d('0x41')],_0x1e5b5d[_0x683d('0x42')]),_0x38942b);if(_0x4b280e[_0x683d('0x41')][_0x683d('0x4b')]){_0x378c51[_0x683d('0x49')]=_['merge'](_0x378c51[_0x683d('0x49')],{'$or':_[_0x683d('0x39')](_0x38942b,function(_0x4bcb3d){if(_0x4bcb3d[_0x683d('0x3d')]!==_0x683d('0x4c')){var _0x20af6c={};_0x20af6c[_0x4bcb3d[_0x683d('0x36')]]={'$like':'%'+_0x4b280e['query']['filter']+'%'};return _0x20af6c;}})});}_0x378c51=_[_0x683d('0x4d')]({},_0x378c51,_0x4b280e['options']);var _0x2a3d92={'where':_0x378c51['where']};return db[_0x683d('0x3a')][_0x683d('0x2d')](_0x2a3d92)['then'](function(_0xe9e9c8){_0x4bc927['count']=_0xe9e9c8;if(_0x4b280e[_0x683d('0x41')][_0x683d('0x4e')]){_0x378c51[_0x683d('0x4f')]=[{'all':!![]}];}return db['ChatMessage'][_0x683d('0x50')](_0x378c51);})[_0x683d('0x22')](function(_0x422f75){_0x4bc927['rows']=_0x422f75;return _0x4bc927;})[_0x683d('0x22')](respondWithFilteredResult(_0x35b33e,_0x378c51))[_0x683d('0x29')](handleError(_0x35b33e,null));};exports[_0x683d('0x51')]=function(_0x2c658a,_0x3972b3){var _0x295721={'raw':!![],'where':{'id':_0x2c658a[_0x683d('0x52')]['id']}},_0x59c166={};_0x59c166['model']=_[_0x683d('0x40')](db['ChatMessage']['rawAttributes']);_0x59c166[_0x683d('0x41')]=_[_0x683d('0x40')](_0x2c658a[_0x683d('0x41')]);_0x59c166[_0x683d('0x42')]=_[_0x683d('0x43')](_0x59c166['model'],_0x59c166[_0x683d('0x41')]);_0x295721[_0x683d('0x45')]=_[_0x683d('0x43')](_0x59c166[_0x683d('0x3f')],qs[_0x683d('0x44')](_0x2c658a[_0x683d('0x41')][_0x683d('0x44')]));_0x295721[_0x683d('0x45')]=_0x295721[_0x683d('0x45')][_0x683d('0x53')]?_0x295721[_0x683d('0x45')]:_0x59c166['model'];if(_0x2c658a[_0x683d('0x41')][_0x683d('0x4e')]){_0x295721[_0x683d('0x4f')]=[{'all':!![]}];}_0x295721=_[_0x683d('0x4d')]({},_0x295721,_0x2c658a[_0x683d('0x54')]);return db['ChatMessage']['find'](_0x295721)['then'](handleEntityNotFound(_0x3972b3,null))[_0x683d('0x22')](respondWithResult(_0x3972b3,null))[_0x683d('0x29')](handleError(_0x3972b3,null));};exports[_0x683d('0x55')]=function(_0x2d76b6,_0x38e585){return db['ChatMessage'][_0x683d('0x55')](_0x2d76b6[_0x683d('0x56')],{})[_0x683d('0x22')](respondWithResult(_0x38e585,0xc9))[_0x683d('0x29')](handleError(_0x38e585,null));};exports[_0x683d('0x34')]=function(_0x43f331,_0x1d96a1){if(_0x43f331[_0x683d('0x56')]['id']){delete _0x43f331[_0x683d('0x56')]['id'];}return db[_0x683d('0x3a')][_0x683d('0x57')]({'where':{'id':_0x43f331[_0x683d('0x52')]['id']}})[_0x683d('0x22')](handleEntityNotFound(_0x1d96a1,null))[_0x683d('0x22')](saveUpdates(_0x43f331[_0x683d('0x56')],null))[_0x683d('0x22')](respondWithResult(_0x1d96a1,null))[_0x683d('0x29')](handleError(_0x1d96a1,null));};exports['destroy']=function(_0x25dcd0,_0x52b381){return db[_0x683d('0x3a')][_0x683d('0x57')]({'where':{'id':_0x25dcd0['params']['id']}})['then'](handleEntityNotFound(_0x52b381,null))[_0x683d('0x22')](removeEntity(_0x52b381,null))[_0x683d('0x29')](handleError(_0x52b381,null));};exports[_0x683d('0x58')]=function(_0x14894c,_0x209713){return db['ChatMessage'][_0x683d('0x58')]()['then'](respondWithResult(_0x209713,null))[_0x683d('0x29')](handleError(_0x209713,null));};var interaction_log=require(_0x683d('0x14'))(_0x683d('0x59'));exports[_0x683d('0x5a')]=function(_0x143031,_0x58e509,_0x13fa7d){var _0x4e9a7f={'channel':_0x683d('0x5b')};if(_0x143031[_0x683d('0x56')]['id']){delete _0x143031[_0x683d('0x56')]['id'];}_0x143031[_0x683d('0x56')]['read']=!![];_0x143031[_0x683d('0x56')][_0x683d('0x5c')]=moment()[_0x683d('0x5d')](_0x683d('0x5e'));_0x143031[_0x683d('0x56')][_0x683d('0x5f')]=_0x143031['body'][_0x683d('0x5f')]||_0x143031['user']['id'];return db[_0x683d('0x3a')][_0x683d('0x57')]({'where':{'id':_0x143031[_0x683d('0x52')]['id'],'UserId':null},'include':[{'model':db[_0x683d('0x60')],'as':'Contact'}]})[_0x683d('0x22')](handleEntityNotFound(_0x58e509,null))[_0x683d('0x22')](saveUpdates(_0x143031[_0x683d('0x56')],null))[_0x683d('0x22')](function(_0x3535c5){if(_0x3535c5){_0x4e9a7f[_0x683d('0x28')]=_0x3535c5['get']({'plain':!![]});return db[_0x683d('0x61')][_0x683d('0x57')]({'where':{'id':_0x3535c5[_0x683d('0x62')]}});}return null;})['then'](handleEntityNotFound(_0x58e509,null))[_0x683d('0x22')](function(_0x545dde){if(_0x545dde){return _0x545dde[_0x683d('0x34')]({'UserId':_0x143031['body'][_0x683d('0x5f')],'read1stAt':_[_0x683d('0x63')](_0x545dde[_0x683d('0x64')])?moment()[_0x683d('0x5d')](_0x683d('0x5e')):undefined});}return null;})[_0x683d('0x22')](function(_0x24d840){if(_0x24d840){_0x4e9a7f[_0x683d('0x65')]=_0x24d840[_0x683d('0x66')]({'plain':!![]});interaction_log[_0x683d('0x23')](_0x683d('0x67'),_0x143031[_0x683d('0x68')]['id'],_0x143031[_0x683d('0x68')][_0x683d('0x36')],_0x143031['user'][_0x683d('0x69')],_0x4e9a7f[_0x683d('0x65')]['id'],_0x143031[_0x683d('0x56')]?JSON[_0x683d('0x26')](_0x143031['body']):_0x683d('0x6a'));return respondWithRpcPromise(_0x683d('0x6b'),_0x683d('0x6c'),_0x4e9a7f);}return null;})[_0x683d('0x22')](function(_0x54af62){if(_0x54af62){if(_0x143031[_0x683d('0x56')][_0x683d('0x6d')]){_0x4e9a7f[_0x683d('0x28')][_0x683d('0x6e')]=util['format'](_0x683d('0x6f'),_0x143031['user'][_0x683d('0x36')]);_0x4e9a7f['message'][_0x683d('0x70')]=_0x4e9a7f['channel'];_0x4e9a7f[_0x683d('0x28')][_0x683d('0x71')]=_0x683d('0x5a');return respondWithRpcPromise(_0x683d('0x72'),_0x683d('0x72'),{'event':_0x683d('0x73'),'message':_[_0x683d('0x4d')](_0x4e9a7f[_0x683d('0x28')],JSON[_0x683d('0x74')](_0x4e9a7f[_0x683d('0x65')][_0x683d('0x75')]))},client9002)[_0x683d('0x22')](function(){return _0x4e9a7f;});}return _0x4e9a7f;}return null;})[_0x683d('0x22')](respondWithResult(_0x58e509,null))[_0x683d('0x29')](handleError(_0x58e509,null));};var interaction_log=require(_0x683d('0x14'))('chat-interactions');exports[_0x683d('0x76')]=function(_0x5556c9,_0x2fe3f5,_0x25129e){var _0x587fba={'agent':{},'channel':_0x683d('0x5b')};if(_0x5556c9['body']['id']){delete _0x5556c9[_0x683d('0x56')]['id'];}_0x5556c9[_0x683d('0x56')][_0x683d('0x5f')]=_0x5556c9[_0x683d('0x56')][_0x683d('0x5f')]||_0x5556c9[_0x683d('0x68')]['id'];_0x587fba[_0x683d('0x77')]['id']=_0x5556c9['body'][_0x683d('0x5f')];return db[_0x683d('0x3a')][_0x683d('0x57')]({'where':{'id':_0x5556c9[_0x683d('0x52')]['id'],'UserId':null}})[_0x683d('0x22')](handleEntityNotFound(_0x2fe3f5,null))[_0x683d('0x22')](function(_0x12262c){if(_0x12262c){_0x587fba[_0x683d('0x28')]=_0x12262c[_0x683d('0x66')]({'plain':!![]});return db[_0x683d('0x61')][_0x683d('0x57')]({'where':{'id':_0x12262c[_0x683d('0x62')]}});}return null;})['then'](handleEntityNotFound(_0x2fe3f5,null))[_0x683d('0x22')](function(_0x52bfd3){if(_0x52bfd3){_0x587fba['interaction']=_0x52bfd3['get']({'plain':!![]});interaction_log[_0x683d('0x23')](_0x683d('0x78'),_0x5556c9['user']['id'],_0x5556c9[_0x683d('0x68')][_0x683d('0x36')],_0x5556c9[_0x683d('0x68')][_0x683d('0x69')],_0x587fba[_0x683d('0x65')]['id'],_0x5556c9[_0x683d('0x56')]?JSON[_0x683d('0x26')](_0x5556c9[_0x683d('0x56')]):_0x683d('0x6a'));return respondWithRpcPromise(_0x683d('0x79'),_0x683d('0x7a'),_0x587fba);}return null;})['then'](function(_0x53aa36){if(_0x53aa36){_0x53aa36[_0x683d('0x28')]['interface']=util[_0x683d('0x5d')]('SIP/%s',_0x5556c9[_0x683d('0x68')][_0x683d('0x36')]);_0x53aa36[_0x683d('0x28')]['channel']=_0x587fba[_0x683d('0x70')];_0x53aa36[_0x683d('0x28')][_0x683d('0x71')]=_0x683d('0x76');respondWithRpcPromise(_0x683d('0x72'),'EventManager',{'event':_0x683d('0x7b'),'message':_0x53aa36['message']},client9002);return _0x587fba;}return null;})['then'](respondWithResult(_0x2fe3f5,null))['catch'](handleError(_0x2fe3f5,null));};