38383c7cc4c29c30b93a26033f54e1d80b680f2b
[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 _0x4a58=['save','update','destroy','stack','send','map','ChatMessage','rawAttributes','fieldName','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','name','options','includeAll','findAll','rows','catch','params','find','create','body','describe','chat-interactions','accept','chat','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','CmContact','Contact','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','manual','channel','event','EventManager','acceptmessage','parse','formData','RejectMessage','rejectMessage','SIP/%s','rejectmessage','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','status','end','json','count','offset','limit','set','Content-Range','reject'];(function(_0x5067c6,_0x3f1e9e){var _0xb5daa3=function(_0x45337e){while(--_0x45337e){_0x5067c6['push'](_0x5067c6['shift']());}};_0xb5daa3(++_0x3f1e9e);}(_0x4a58,0x1b1));var _0x84a5=function(_0x22a6f6,_0x5d6ea9){_0x22a6f6=_0x22a6f6-0x0;var _0x464440=_0x4a58[_0x22a6f6];return _0x464440;};'use strict';var pdf=require(_0x84a5('0x0'));var emlformat=require(_0x84a5('0x1'));var rimraf=require(_0x84a5('0x2'));var zipdir=require(_0x84a5('0x3'));var jsonpatch=require(_0x84a5('0x4'));var rp=require(_0x84a5('0x5'));var moment=require('moment');var BPromise=require(_0x84a5('0x6'));var Mustache=require(_0x84a5('0x7'));var util=require(_0x84a5('0x8'));var path=require(_0x84a5('0x9'));var sox=require('sox');var csv=require(_0x84a5('0xa'));var ejs=require(_0x84a5('0xb'));var fs=require('fs');var _=require(_0x84a5('0xc'));var squel=require('squel');var crypto=require(_0x84a5('0xd'));var jsforce=require(_0x84a5('0xe'));var deskjs=require(_0x84a5('0xf'));var toCsv=require(_0x84a5('0xa'));var querystring=require('querystring');var Papa=require(_0x84a5('0x10'));var Redis=require('ioredis');var authService=require(_0x84a5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x84a5('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x84a5('0x13'))(_0x84a5('0x14'));var utils=require('../../config/utils');var config=require(_0x84a5('0x15'));var licenseUtil=require(_0x84a5('0x16'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x84a5('0x17')],{'host':_0x84a5('0x18'),'port':0x18eb});var socket=require(_0x84a5('0x19'))(new Redis(config[_0x84a5('0x17')]));require(_0x84a5('0x1a'))[_0x84a5('0x1b')](socket);var jayson=require(_0x84a5('0x1c'));var client=jayson[_0x84a5('0x1d')][_0x84a5('0x1e')]({'port':0x232c});var client9002=jayson[_0x84a5('0x1d')][_0x84a5('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x506b90,_0x1cdbd7,_0x13c6b5,_0x4c5e8a){return new BPromise(function(_0x39f740,_0x399444){var _0x1de4fc=_0x4c5e8a||client;return _0x1de4fc[_0x84a5('0x1f')](_0x506b90,_0x13c6b5)[_0x84a5('0x20')](function(_0x380fd7){logger[_0x84a5('0x21')](_0x84a5('0x22'),_0x1cdbd7,_0x84a5('0x23'));logger['debug']('ChatMessage,\x20%s,\x20%s,\x20%s',_0x1cdbd7,_0x84a5('0x23'),JSON[_0x84a5('0x24')](_0x380fd7));if(_0x380fd7['error']){if(_0x380fd7[_0x84a5('0x25')][_0x84a5('0x26')]===0x1f4){logger[_0x84a5('0x25')](_0x84a5('0x22'),_0x1cdbd7,_0x380fd7[_0x84a5('0x25')][_0x84a5('0x27')]);return _0x399444(_0x380fd7[_0x84a5('0x25')][_0x84a5('0x27')]);}logger[_0x84a5('0x25')](_0x84a5('0x22'),_0x1cdbd7,_0x380fd7[_0x84a5('0x25')]['message']);return _0x39f740(_0x380fd7[_0x84a5('0x25')][_0x84a5('0x27')]);}else{logger[_0x84a5('0x21')](_0x84a5('0x22'),_0x1cdbd7,_0x84a5('0x23'));_0x39f740(_0x380fd7[_0x84a5('0x28')]['message']);}})['catch'](function(_0x4d48c1){logger[_0x84a5('0x25')](_0x84a5('0x22'),_0x1cdbd7,_0x4d48c1);_0x399444(_0x4d48c1);});});}function respondWithStatusCode(_0x2920fc,_0x469091){_0x469091=_0x469091||0xcc;return function(_0x143d6b){if(_0x143d6b){return _0x2920fc[_0x84a5('0x29')](_0x469091);}return _0x2920fc[_0x84a5('0x2a')](_0x469091)[_0x84a5('0x2b')]();};}function respondWithResult(_0x15d389,_0x379285){_0x379285=_0x379285||0xc8;return function(_0x413e0c){if(_0x413e0c){return _0x15d389[_0x84a5('0x2a')](_0x379285)[_0x84a5('0x2c')](_0x413e0c);}};}function respondWithFilteredResult(_0x5e334b,_0x5e9567){return function(_0x50aef1){if(_0x50aef1){var _0x305a6f=_0x50aef1[_0x84a5('0x2d')],_0x3de3ae=_0x5e9567[_0x84a5('0x2e')],_0x19c3cf=_0x5e9567['offset']+_0x5e9567[_0x84a5('0x2f')],_0x255d19;if(_0x19c3cf>=_0x305a6f){_0x19c3cf=_0x305a6f;_0x255d19=0xc8;}else{_0x255d19=0xce;}_0x5e334b[_0x84a5('0x2a')](_0x255d19);return _0x5e334b[_0x84a5('0x30')](_0x84a5('0x31'),_0x3de3ae+'-'+_0x19c3cf+'/'+_0x305a6f)[_0x84a5('0x2c')](_0x50aef1);}return null;};}function patchUpdates(_0x1651af){return function(_0x48f626){try{jsonpatch['apply'](_0x48f626,_0x1651af,!![]);}catch(_0x12b7ba){return BPromise[_0x84a5('0x32')](_0x12b7ba);}return _0x48f626[_0x84a5('0x33')]();};}function saveUpdates(_0x50517f,_0x122542){return function(_0x31c1b5){if(_0x31c1b5){return _0x31c1b5[_0x84a5('0x34')](_0x50517f)[_0x84a5('0x20')](function(_0x425b30){return _0x425b30;});}return null;};}function removeEntity(_0x147d83,_0x46f513){return function(_0xb5d37d){if(_0xb5d37d){return _0xb5d37d[_0x84a5('0x35')]()[_0x84a5('0x20')](function(){_0x147d83[_0x84a5('0x2a')](0xcc)[_0x84a5('0x2b')]();});}};}function handleEntityNotFound(_0x30d31e,_0xbf0ca1){return function(_0x1df69c){if(!_0x1df69c){_0x30d31e['sendStatus'](0x194);}return _0x1df69c;};}function handleError(_0x10f874,_0x28e75c){_0x28e75c=_0x28e75c||0x1f4;return function(_0x169ce8){logger[_0x84a5('0x25')](_0x169ce8[_0x84a5('0x36')]);if(_0x169ce8['name']){delete _0x169ce8['name'];}_0x10f874['status'](_0x28e75c)[_0x84a5('0x37')](_0x169ce8);};}exports['index']=function(_0x11b7be,_0x446c81){var _0x4c42e7={},_0x37390e={},_0x29dfe8={'count':0x0,'rows':[]};var _0x5488ed=_[_0x84a5('0x38')](db[_0x84a5('0x39')][_0x84a5('0x3a')],function(_0x4efe0d){return{'name':_0x4efe0d[_0x84a5('0x3b')],'type':_0x4efe0d['type'][_0x84a5('0x3c')]};});_0x37390e[_0x84a5('0x3d')]=_[_0x84a5('0x38')](_0x5488ed,'name');_0x37390e[_0x84a5('0x3e')]=_[_0x84a5('0x3f')](_0x11b7be[_0x84a5('0x3e')]);_0x37390e['filters']=_['intersection'](_0x37390e[_0x84a5('0x3d')],_0x37390e['query']);_0x4c42e7[_0x84a5('0x40')]=_[_0x84a5('0x41')](_0x37390e[_0x84a5('0x3d')],qs[_0x84a5('0x42')](_0x11b7be[_0x84a5('0x3e')]['fields']));_0x4c42e7[_0x84a5('0x40')]=_0x4c42e7[_0x84a5('0x40')][_0x84a5('0x43')]?_0x4c42e7[_0x84a5('0x40')]:_0x37390e[_0x84a5('0x3d')];if(!_0x11b7be[_0x84a5('0x3e')][_0x84a5('0x44')](_0x84a5('0x45'))){_0x4c42e7['limit']=qs[_0x84a5('0x2f')](_0x11b7be['query'][_0x84a5('0x2f')]);_0x4c42e7['offset']=qs['offset'](_0x11b7be[_0x84a5('0x3e')]['offset']);}_0x4c42e7[_0x84a5('0x46')]=qs['sort'](_0x11b7be['query'][_0x84a5('0x47')]);_0x4c42e7[_0x84a5('0x48')]=qs['filters'](_[_0x84a5('0x49')](_0x11b7be[_0x84a5('0x3e')],_0x37390e[_0x84a5('0x4a')]),_0x5488ed);if(_0x11b7be[_0x84a5('0x3e')][_0x84a5('0x4b')]){_0x4c42e7[_0x84a5('0x48')]=_[_0x84a5('0x4c')](_0x4c42e7[_0x84a5('0x48')],{'$or':_[_0x84a5('0x38')](_0x5488ed,function(_0x165cf0){if(_0x165cf0['type']!=='VIRTUAL'){var _0x4e5a1a={};_0x4e5a1a[_0x165cf0[_0x84a5('0x4d')]]={'$like':'%'+_0x11b7be[_0x84a5('0x3e')][_0x84a5('0x4b')]+'%'};return _0x4e5a1a;}})});}_0x4c42e7=_['merge']({},_0x4c42e7,_0x11b7be[_0x84a5('0x4e')]);var _0x44005b={'where':_0x4c42e7[_0x84a5('0x48')]};return db['ChatMessage'][_0x84a5('0x2d')](_0x44005b)[_0x84a5('0x20')](function(_0x45a090){_0x29dfe8[_0x84a5('0x2d')]=_0x45a090;if(_0x11b7be[_0x84a5('0x3e')][_0x84a5('0x4f')]){_0x4c42e7['include']=[{'all':!![]}];}return db[_0x84a5('0x39')][_0x84a5('0x50')](_0x4c42e7);})[_0x84a5('0x20')](function(_0x14d5ec){_0x29dfe8[_0x84a5('0x51')]=_0x14d5ec;return _0x29dfe8;})[_0x84a5('0x20')](respondWithFilteredResult(_0x446c81,_0x4c42e7))[_0x84a5('0x52')](handleError(_0x446c81,null));};exports['show']=function(_0x286c11,_0x30ceb6){var _0x19fd25={'raw':!![],'where':{'id':_0x286c11[_0x84a5('0x53')]['id']}},_0xdb7a8b={};_0xdb7a8b['model']=_[_0x84a5('0x3f')](db['ChatMessage'][_0x84a5('0x3a')]);_0xdb7a8b[_0x84a5('0x3e')]=_[_0x84a5('0x3f')](_0x286c11[_0x84a5('0x3e')]);_0xdb7a8b[_0x84a5('0x4a')]=_[_0x84a5('0x41')](_0xdb7a8b[_0x84a5('0x3d')],_0xdb7a8b['query']);_0x19fd25[_0x84a5('0x40')]=_[_0x84a5('0x41')](_0xdb7a8b[_0x84a5('0x3d')],qs[_0x84a5('0x42')](_0x286c11['query'][_0x84a5('0x42')]));_0x19fd25[_0x84a5('0x40')]=_0x19fd25[_0x84a5('0x40')]['length']?_0x19fd25[_0x84a5('0x40')]:_0xdb7a8b['model'];if(_0x286c11[_0x84a5('0x3e')]['includeAll']){_0x19fd25['include']=[{'all':!![]}];}_0x19fd25=_[_0x84a5('0x4c')]({},_0x19fd25,_0x286c11['options']);return db[_0x84a5('0x39')][_0x84a5('0x54')](_0x19fd25)[_0x84a5('0x20')](handleEntityNotFound(_0x30ceb6,null))[_0x84a5('0x20')](respondWithResult(_0x30ceb6,null))[_0x84a5('0x52')](handleError(_0x30ceb6,null));};exports[_0x84a5('0x55')]=function(_0x203c0f,_0x1c2918){return db['ChatMessage'][_0x84a5('0x55')](_0x203c0f[_0x84a5('0x56')],{})['then'](respondWithResult(_0x1c2918,0xc9))[_0x84a5('0x52')](handleError(_0x1c2918,null));};exports[_0x84a5('0x34')]=function(_0x36feb1,_0x2d3f18){if(_0x36feb1[_0x84a5('0x56')]['id']){delete _0x36feb1[_0x84a5('0x56')]['id'];}return db[_0x84a5('0x39')][_0x84a5('0x54')]({'where':{'id':_0x36feb1[_0x84a5('0x53')]['id']}})[_0x84a5('0x20')](handleEntityNotFound(_0x2d3f18,null))[_0x84a5('0x20')](saveUpdates(_0x36feb1[_0x84a5('0x56')],null))['then'](respondWithResult(_0x2d3f18,null))[_0x84a5('0x52')](handleError(_0x2d3f18,null));};exports[_0x84a5('0x35')]=function(_0x5a094d,_0x523a23){return db[_0x84a5('0x39')][_0x84a5('0x54')]({'where':{'id':_0x5a094d[_0x84a5('0x53')]['id']}})[_0x84a5('0x20')](handleEntityNotFound(_0x523a23,null))[_0x84a5('0x20')](removeEntity(_0x523a23,null))['catch'](handleError(_0x523a23,null));};exports[_0x84a5('0x57')]=function(_0x401fb8,_0x5de8d9){return db[_0x84a5('0x39')][_0x84a5('0x57')]()[_0x84a5('0x20')](respondWithResult(_0x5de8d9,null))[_0x84a5('0x52')](handleError(_0x5de8d9,null));};var interaction_log=require(_0x84a5('0x13'))(_0x84a5('0x58'));exports[_0x84a5('0x59')]=function(_0x2e0c87,_0x382c3f,_0x4bd5f0){var _0x4a5687={'agent':{},'channel':_0x84a5('0x5a')};if(_0x2e0c87['body']['id']){delete _0x2e0c87['body']['id'];}_0x2e0c87['body']['read']=!![];_0x2e0c87['body'][_0x84a5('0x5b')]=moment()[_0x84a5('0x5c')](_0x84a5('0x5d'));_0x2e0c87[_0x84a5('0x56')][_0x84a5('0x5e')]=_0x2e0c87[_0x84a5('0x56')][_0x84a5('0x5e')]||_0x2e0c87[_0x84a5('0x5f')]['id'];_0x4a5687[_0x84a5('0x60')]['id']=_0x2e0c87['body'][_0x84a5('0x5e')];return db[_0x84a5('0x39')][_0x84a5('0x54')]({'where':{'id':_0x2e0c87['params']['id'],'UserId':null},'include':[{'model':db[_0x84a5('0x61')],'as':_0x84a5('0x62')}]})[_0x84a5('0x20')](handleEntityNotFound(_0x382c3f,null))[_0x84a5('0x20')](saveUpdates(_0x2e0c87[_0x84a5('0x56')],null))[_0x84a5('0x20')](function(_0x586a1e){if(_0x586a1e){_0x4a5687['message']=_0x586a1e[_0x84a5('0x63')]({'plain':!![]});return db[_0x84a5('0x64')][_0x84a5('0x54')]({'where':{'id':_0x586a1e[_0x84a5('0x65')]}});}return null;})[_0x84a5('0x20')](handleEntityNotFound(_0x382c3f,null))[_0x84a5('0x20')](function(_0x30ade8){if(_0x30ade8){return _0x30ade8[_0x84a5('0x34')]({'UserId':_0x2e0c87['body'][_0x84a5('0x5e')],'read1stAt':_[_0x84a5('0x66')](_0x30ade8[_0x84a5('0x67')])?moment()['format'](_0x84a5('0x5d')):undefined});}return null;})['then'](function(_0xb147c8){if(_0xb147c8){_0x4a5687[_0x84a5('0x68')]=_0xb147c8['get']({'plain':!![]});interaction_log[_0x84a5('0x21')](_0x84a5('0x69'),_0x2e0c87[_0x84a5('0x5f')]['id'],_0x2e0c87[_0x84a5('0x5f')][_0x84a5('0x4d')],_0x2e0c87[_0x84a5('0x5f')][_0x84a5('0x6a')],_0x4a5687['interaction']['id'],_0x2e0c87['body']?JSON[_0x84a5('0x24')](_0x2e0c87[_0x84a5('0x56')]):_0x84a5('0x6b'));return respondWithRpcPromise(_0x84a5('0x6c'),_0x84a5('0x6d'),_0x4a5687);}return null;})['then'](function(_0x249886){if(_0x249886){if(_0x2e0c87[_0x84a5('0x56')][_0x84a5('0x6e')]){_0x4a5687[_0x84a5('0x27')]['interface']=util[_0x84a5('0x5c')]('SIP/%s',_0x2e0c87[_0x84a5('0x5f')][_0x84a5('0x4d')]);_0x4a5687['message'][_0x84a5('0x6f')]=_0x4a5687[_0x84a5('0x6f')];_0x4a5687[_0x84a5('0x27')][_0x84a5('0x70')]=_0x84a5('0x59');return respondWithRpcPromise(_0x84a5('0x71'),_0x84a5('0x71'),{'event':_0x84a5('0x72'),'message':_[_0x84a5('0x4c')](_0x4a5687['message'],JSON[_0x84a5('0x73')](_0x4a5687[_0x84a5('0x68')][_0x84a5('0x74')]))},client9002)[_0x84a5('0x20')](function(){return _0x4a5687;});}return _0x4a5687;}return null;})[_0x84a5('0x20')](respondWithResult(_0x382c3f,null))[_0x84a5('0x52')](handleError(_0x382c3f,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports[_0x84a5('0x32')]=function(_0x192ba3,_0x3a29ea,_0x3d095d){var _0x3cbee8={'agent':{},'channel':_0x84a5('0x5a')};if(_0x192ba3[_0x84a5('0x56')]['id']){delete _0x192ba3[_0x84a5('0x56')]['id'];}_0x192ba3[_0x84a5('0x56')][_0x84a5('0x5e')]=_0x192ba3[_0x84a5('0x56')]['UserId']||_0x192ba3['user']['id'];_0x3cbee8[_0x84a5('0x60')]['id']=_0x192ba3[_0x84a5('0x56')][_0x84a5('0x5e')];return db[_0x84a5('0x39')][_0x84a5('0x54')]({'where':{'id':_0x192ba3['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3a29ea,null))[_0x84a5('0x20')](function(_0x76c719){if(_0x76c719){_0x3cbee8[_0x84a5('0x27')]=_0x76c719['get']({'plain':!![]});return db[_0x84a5('0x64')][_0x84a5('0x54')]({'where':{'id':_0x76c719['ChatInteractionId']}});}return null;})[_0x84a5('0x20')](handleEntityNotFound(_0x3a29ea,null))['then'](function(_0x21c064){if(_0x21c064){_0x3cbee8[_0x84a5('0x68')]=_0x21c064['get']({'plain':!![]});interaction_log['info']('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x192ba3[_0x84a5('0x5f')]['id'],_0x192ba3[_0x84a5('0x5f')][_0x84a5('0x4d')],_0x192ba3[_0x84a5('0x5f')][_0x84a5('0x6a')],_0x3cbee8[_0x84a5('0x68')]['id'],_0x192ba3['body']?JSON[_0x84a5('0x24')](_0x192ba3[_0x84a5('0x56')]):_0x84a5('0x6b'));return respondWithRpcPromise(_0x84a5('0x75'),_0x84a5('0x76'),_0x3cbee8);}return null;})[_0x84a5('0x20')](function(_0x120935){if(_0x120935){_0x120935[_0x84a5('0x27')]['interface']=util[_0x84a5('0x5c')](_0x84a5('0x77'),_0x192ba3['user'][_0x84a5('0x4d')]);_0x120935[_0x84a5('0x27')][_0x84a5('0x6f')]=_0x3cbee8['channel'];_0x120935[_0x84a5('0x27')][_0x84a5('0x70')]=_0x84a5('0x32');respondWithRpcPromise(_0x84a5('0x71'),_0x84a5('0x71'),{'event':_0x84a5('0x78'),'message':_0x120935[_0x84a5('0x27')]},client9002);return _0x3cbee8;}return null;})[_0x84a5('0x20')](respondWithResult(_0x3a29ea,null))[_0x84a5('0x52')](handleError(_0x3a29ea,null));};