Built motion from commit (unavailable).|2.5.27
[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 _0xe6a5=['fields','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','findAll','rows','show','params','keys','rawAttributes','length','includeAll','include','find','create','body','destroy','describe','chat-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','user','agent','UserId','CmContact','Contact','get','ChatInteraction','ChatInteractionId','isNil','info','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','acceptMessage','manual','interface','channel','event','EventManager','acceptmessage','parse','formData','chat','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SIP/%s','reject','rejectmessage','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','jayson/promise','client','http','then','ChatMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','sendStatus','end','json','offset','limit','Content-Range','apply','save','update','status','stack','name','send','index','map','ChatMessage','type','key','model','query','filters','intersection'];(function(_0x15f1fe,_0x11db4f){var _0x523d4b=function(_0x4687ff){while(--_0x4687ff){_0x15f1fe['push'](_0x15f1fe['shift']());}};_0x523d4b(++_0x11db4f);}(_0xe6a5,0x13b));var _0x5e6a=function(_0x4fa9ea,_0xb038d8){_0x4fa9ea=_0x4fa9ea-0x0;var _0x8a1ba7=_0xe6a5[_0x4fa9ea];return _0x8a1ba7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5e6a('0x0'));var rp=require(_0x5e6a('0x1'));var moment=require(_0x5e6a('0x2'));var BPromise=require(_0x5e6a('0x3'));var Mustache=require('mustache');var util=require(_0x5e6a('0x4'));var path=require('path');var sox=require(_0x5e6a('0x5'));var csv=require(_0x5e6a('0x6'));var ejs=require(_0x5e6a('0x7'));var fs=require('fs');var fs_extra=require(_0x5e6a('0x8'));var _=require(_0x5e6a('0x9'));var squel=require(_0x5e6a('0xa'));var crypto=require(_0x5e6a('0xb'));var jsforce=require(_0x5e6a('0xc'));var deskjs=require(_0x5e6a('0xd'));var toCsv=require(_0x5e6a('0x6'));var querystring=require(_0x5e6a('0xe'));var Papa=require('papaparse');var Redis=require(_0x5e6a('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x5e6a('0x10'));var as=require(_0x5e6a('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e6a('0x12'))(_0x5e6a('0x13'));var utils=require(_0x5e6a('0x14'));var config=require(_0x5e6a('0x15'));var licenseUtil=require(_0x5e6a('0x16'));var db=require(_0x5e6a('0x17'))['db'];config[_0x5e6a('0x18')]=_[_0x5e6a('0x19')](config['redis'],{'host':_0x5e6a('0x1a'),'port':0x18eb});var socket=require(_0x5e6a('0x1b'))(new Redis(config[_0x5e6a('0x18')]));require(_0x5e6a('0x1c'))['register'](socket);var jayson=require(_0x5e6a('0x1d'));var client=jayson[_0x5e6a('0x1e')]['http']({'port':0x232c});var client9002=jayson['client'][_0x5e6a('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x106880,_0x3bd464,_0x1fa157,_0x44ce66){return new BPromise(function(_0x53d663,_0x42692d){var _0xd71c9e=_0x44ce66||client;return _0xd71c9e['request'](_0x106880,_0x1fa157)[_0x5e6a('0x20')](function(_0xa5aa55){logger['info'](_0x5e6a('0x21'),_0x3bd464,'request\x20sent');logger[_0x5e6a('0x22')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x3bd464,_0x5e6a('0x23'),JSON[_0x5e6a('0x24')](_0xa5aa55));if(_0xa5aa55[_0x5e6a('0x25')]){if(_0xa5aa55[_0x5e6a('0x25')][_0x5e6a('0x26')]===0x1f4){logger[_0x5e6a('0x25')](_0x5e6a('0x21'),_0x3bd464,_0xa5aa55[_0x5e6a('0x25')][_0x5e6a('0x27')]);return _0x42692d(_0xa5aa55[_0x5e6a('0x25')][_0x5e6a('0x27')]);}logger['error'](_0x5e6a('0x21'),_0x3bd464,_0xa5aa55[_0x5e6a('0x25')]['message']);return _0x53d663(_0xa5aa55[_0x5e6a('0x25')][_0x5e6a('0x27')]);}else{logger['info']('ChatMessage,\x20%s,\x20%s',_0x3bd464,_0x5e6a('0x23'));_0x53d663(_0xa5aa55['result'][_0x5e6a('0x27')]);}})[_0x5e6a('0x28')](function(_0x5143e3){logger['error'](_0x5e6a('0x21'),_0x3bd464,_0x5143e3);_0x42692d(_0x5143e3);});});}function respondWithStatusCode(_0x1bb15b,_0x4bde32){_0x4bde32=_0x4bde32||0xcc;return function(_0x4ad0f1){if(_0x4ad0f1){return _0x1bb15b[_0x5e6a('0x29')](_0x4bde32);}return _0x1bb15b['status'](_0x4bde32)[_0x5e6a('0x2a')]();};}function respondWithResult(_0x4cdeb0,_0x1d0566){_0x1d0566=_0x1d0566||0xc8;return function(_0x2a1670){if(_0x2a1670){return _0x4cdeb0['status'](_0x1d0566)[_0x5e6a('0x2b')](_0x2a1670);}};}function respondWithFilteredResult(_0x56e258,_0x3cdb67){return function(_0xbf28e8){if(_0xbf28e8){var _0x2033d8=_0xbf28e8['count'],_0x130dda=_0x3cdb67[_0x5e6a('0x2c')],_0x3b4e34=_0x3cdb67[_0x5e6a('0x2c')]+_0x3cdb67[_0x5e6a('0x2d')],_0x9f776f;if(_0x3b4e34>=_0x2033d8){_0x3b4e34=_0x2033d8;_0x9f776f=0xc8;}else{_0x9f776f=0xce;}_0x56e258['status'](_0x9f776f);return _0x56e258['set'](_0x5e6a('0x2e'),_0x130dda+'-'+_0x3b4e34+'/'+_0x2033d8)[_0x5e6a('0x2b')](_0xbf28e8);}return null;};}function patchUpdates(_0x5bab9d){return function(_0x55e322){try{jsonpatch[_0x5e6a('0x2f')](_0x55e322,_0x5bab9d,!![]);}catch(_0x21cbdd){return BPromise['reject'](_0x21cbdd);}return _0x55e322[_0x5e6a('0x30')]();};}function saveUpdates(_0x1a76a4,_0x48ef44){return function(_0x24f567){if(_0x24f567){return _0x24f567[_0x5e6a('0x31')](_0x1a76a4)[_0x5e6a('0x20')](function(_0x60a0d0){return _0x60a0d0;});}return null;};}function removeEntity(_0x56d6b0,_0x2a6699){return function(_0x54ff95){if(_0x54ff95){return _0x54ff95['destroy']()[_0x5e6a('0x20')](function(){_0x56d6b0[_0x5e6a('0x32')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3da703,_0x5b2c3e){return function(_0x302d78){if(!_0x302d78){_0x3da703[_0x5e6a('0x29')](0x194);}return _0x302d78;};}function handleError(_0x51d782,_0x187824){_0x187824=_0x187824||0x1f4;return function(_0x14bf25){logger['error'](_0x14bf25[_0x5e6a('0x33')]);if(_0x14bf25['name']){delete _0x14bf25[_0x5e6a('0x34')];}_0x51d782[_0x5e6a('0x32')](_0x187824)[_0x5e6a('0x35')](_0x14bf25);};}exports[_0x5e6a('0x36')]=function(_0x2c8776,_0x289f0a){var _0x50afb3={},_0x229401={},_0x49ab3c={'count':0x0,'rows':[]};var _0xc2b0e3=_[_0x5e6a('0x37')](db[_0x5e6a('0x38')]['rawAttributes'],function(_0x440149){return{'name':_0x440149['fieldName'],'type':_0x440149[_0x5e6a('0x39')][_0x5e6a('0x3a')]};});_0x229401[_0x5e6a('0x3b')]=_[_0x5e6a('0x37')](_0xc2b0e3,_0x5e6a('0x34'));_0x229401[_0x5e6a('0x3c')]=_['keys'](_0x2c8776[_0x5e6a('0x3c')]);_0x229401[_0x5e6a('0x3d')]=_[_0x5e6a('0x3e')](_0x229401[_0x5e6a('0x3b')],_0x229401[_0x5e6a('0x3c')]);_0x50afb3['attributes']=_['intersection'](_0x229401[_0x5e6a('0x3b')],qs[_0x5e6a('0x3f')](_0x2c8776[_0x5e6a('0x3c')][_0x5e6a('0x3f')]));_0x50afb3[_0x5e6a('0x40')]=_0x50afb3[_0x5e6a('0x40')]['length']?_0x50afb3[_0x5e6a('0x40')]:_0x229401['model'];if(!_0x2c8776['query']['hasOwnProperty'](_0x5e6a('0x41'))){_0x50afb3[_0x5e6a('0x2d')]=qs[_0x5e6a('0x2d')](_0x2c8776[_0x5e6a('0x3c')][_0x5e6a('0x2d')]);_0x50afb3[_0x5e6a('0x2c')]=qs['offset'](_0x2c8776[_0x5e6a('0x3c')][_0x5e6a('0x2c')]);}_0x50afb3[_0x5e6a('0x42')]=qs[_0x5e6a('0x43')](_0x2c8776['query'][_0x5e6a('0x43')]);_0x50afb3[_0x5e6a('0x44')]=qs[_0x5e6a('0x3d')](_[_0x5e6a('0x45')](_0x2c8776['query'],_0x229401[_0x5e6a('0x3d')]),_0xc2b0e3);if(_0x2c8776[_0x5e6a('0x3c')][_0x5e6a('0x46')]){_0x50afb3[_0x5e6a('0x44')]=_[_0x5e6a('0x47')](_0x50afb3[_0x5e6a('0x44')],{'$or':_[_0x5e6a('0x37')](_0xc2b0e3,function(_0x1a418c){if(_0x1a418c[_0x5e6a('0x39')]!==_0x5e6a('0x48')){var _0x3f9fd0={};_0x3f9fd0[_0x1a418c[_0x5e6a('0x34')]]={'$like':'%'+_0x2c8776[_0x5e6a('0x3c')]['filter']+'%'};return _0x3f9fd0;}})});}_0x50afb3=_[_0x5e6a('0x47')]({},_0x50afb3,_0x2c8776[_0x5e6a('0x49')]);var _0x4e185a={'where':_0x50afb3['where']};return db[_0x5e6a('0x38')]['count'](_0x4e185a)[_0x5e6a('0x20')](function(_0x2b67d4){_0x49ab3c[_0x5e6a('0x4a')]=_0x2b67d4;if(_0x2c8776[_0x5e6a('0x3c')]['includeAll']){_0x50afb3['include']=[{'all':!![]}];}return db[_0x5e6a('0x38')][_0x5e6a('0x4b')](_0x50afb3);})[_0x5e6a('0x20')](function(_0x56a756){_0x49ab3c[_0x5e6a('0x4c')]=_0x56a756;return _0x49ab3c;})[_0x5e6a('0x20')](respondWithFilteredResult(_0x289f0a,_0x50afb3))[_0x5e6a('0x28')](handleError(_0x289f0a,null));};exports[_0x5e6a('0x4d')]=function(_0xeebf27,_0x3058af){var _0x2a0baa={'raw':!![],'where':{'id':_0xeebf27[_0x5e6a('0x4e')]['id']}},_0x5ee4bf={};_0x5ee4bf[_0x5e6a('0x3b')]=_[_0x5e6a('0x4f')](db[_0x5e6a('0x38')][_0x5e6a('0x50')]);_0x5ee4bf['query']=_[_0x5e6a('0x4f')](_0xeebf27['query']);_0x5ee4bf[_0x5e6a('0x3d')]=_[_0x5e6a('0x3e')](_0x5ee4bf['model'],_0x5ee4bf['query']);_0x2a0baa['attributes']=_[_0x5e6a('0x3e')](_0x5ee4bf[_0x5e6a('0x3b')],qs[_0x5e6a('0x3f')](_0xeebf27[_0x5e6a('0x3c')][_0x5e6a('0x3f')]));_0x2a0baa[_0x5e6a('0x40')]=_0x2a0baa[_0x5e6a('0x40')][_0x5e6a('0x51')]?_0x2a0baa[_0x5e6a('0x40')]:_0x5ee4bf['model'];if(_0xeebf27[_0x5e6a('0x3c')][_0x5e6a('0x52')]){_0x2a0baa[_0x5e6a('0x53')]=[{'all':!![]}];}_0x2a0baa=_[_0x5e6a('0x47')]({},_0x2a0baa,_0xeebf27['options']);return db['ChatMessage'][_0x5e6a('0x54')](_0x2a0baa)[_0x5e6a('0x20')](handleEntityNotFound(_0x3058af,null))[_0x5e6a('0x20')](respondWithResult(_0x3058af,null))[_0x5e6a('0x28')](handleError(_0x3058af,null));};exports[_0x5e6a('0x55')]=function(_0x39f38b,_0x1776ca){return db['ChatMessage']['create'](_0x39f38b['body'],{})['then'](respondWithResult(_0x1776ca,0xc9))['catch'](handleError(_0x1776ca,null));};exports[_0x5e6a('0x31')]=function(_0x428109,_0x11e315){if(_0x428109[_0x5e6a('0x56')]['id']){delete _0x428109[_0x5e6a('0x56')]['id'];}return db[_0x5e6a('0x38')][_0x5e6a('0x54')]({'where':{'id':_0x428109[_0x5e6a('0x4e')]['id']}})[_0x5e6a('0x20')](handleEntityNotFound(_0x11e315,null))[_0x5e6a('0x20')](saveUpdates(_0x428109[_0x5e6a('0x56')],null))[_0x5e6a('0x20')](respondWithResult(_0x11e315,null))['catch'](handleError(_0x11e315,null));};exports[_0x5e6a('0x57')]=function(_0x2c3ddf,_0x49ea29){return db[_0x5e6a('0x38')][_0x5e6a('0x54')]({'where':{'id':_0x2c3ddf[_0x5e6a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x49ea29,null))[_0x5e6a('0x20')](removeEntity(_0x49ea29,null))['catch'](handleError(_0x49ea29,null));};exports[_0x5e6a('0x58')]=function(_0x37c083,_0x116c03){return db[_0x5e6a('0x38')][_0x5e6a('0x58')]()[_0x5e6a('0x20')](respondWithResult(_0x116c03,null))[_0x5e6a('0x28')](handleError(_0x116c03,null));};var interaction_log=require(_0x5e6a('0x12'))(_0x5e6a('0x59'));exports[_0x5e6a('0x5a')]=function(_0x2291b7,_0x358cd5,_0xfebb48){var _0x55e7cd={'agent':{},'channel':'chat'};if(_0x2291b7[_0x5e6a('0x56')]['id']){delete _0x2291b7[_0x5e6a('0x56')]['id'];}_0x2291b7[_0x5e6a('0x56')][_0x5e6a('0x5b')]=!![];_0x2291b7[_0x5e6a('0x56')][_0x5e6a('0x5c')]=moment()[_0x5e6a('0x5d')](_0x5e6a('0x5e'));_0x2291b7[_0x5e6a('0x56')]['UserId']=_0x2291b7[_0x5e6a('0x56')]['UserId']||_0x2291b7[_0x5e6a('0x5f')]['id'];_0x55e7cd[_0x5e6a('0x60')]['id']=_0x2291b7[_0x5e6a('0x56')][_0x5e6a('0x61')];return db['ChatMessage'][_0x5e6a('0x54')]({'where':{'id':_0x2291b7[_0x5e6a('0x4e')]['id'],'UserId':null},'include':[{'model':db[_0x5e6a('0x62')],'as':_0x5e6a('0x63')}]})[_0x5e6a('0x20')](handleEntityNotFound(_0x358cd5,null))[_0x5e6a('0x20')](saveUpdates(_0x2291b7[_0x5e6a('0x56')],null))[_0x5e6a('0x20')](function(_0x38cb5b){if(_0x38cb5b){_0x55e7cd[_0x5e6a('0x27')]=_0x38cb5b[_0x5e6a('0x64')]({'plain':!![]});return db[_0x5e6a('0x65')][_0x5e6a('0x54')]({'where':{'id':_0x38cb5b[_0x5e6a('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x358cd5,null))['then'](function(_0x2da758){if(_0x2da758){return _0x2da758[_0x5e6a('0x31')]({'UserId':_0x2291b7[_0x5e6a('0x56')]['UserId'],'read1stAt':_[_0x5e6a('0x67')](_0x2da758['read1stAt'])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x5e6a('0x20')](function(_0x5093c1){if(_0x5093c1){_0x55e7cd['interaction']=_0x5093c1['get']({'plain':!![]});interaction_log[_0x5e6a('0x68')](_0x5e6a('0x69'),_0x2291b7[_0x5e6a('0x5f')]['id'],_0x2291b7[_0x5e6a('0x5f')][_0x5e6a('0x34')],_0x2291b7['user'][_0x5e6a('0x6a')],_0x55e7cd[_0x5e6a('0x6b')]['id'],_0x2291b7['body']?JSON[_0x5e6a('0x24')](_0x2291b7[_0x5e6a('0x56')]):_0x5e6a('0x6c'));return respondWithRpcPromise(_0x5e6a('0x6d'),_0x5e6a('0x6e'),_0x55e7cd);}return null;})['then'](function(_0x19e69b){if(_0x19e69b){if(_0x2291b7[_0x5e6a('0x56')][_0x5e6a('0x6f')]){_0x55e7cd[_0x5e6a('0x27')][_0x5e6a('0x70')]=util['format']('SIP/%s',_0x2291b7[_0x5e6a('0x5f')][_0x5e6a('0x34')]);_0x55e7cd[_0x5e6a('0x27')]['channel']=_0x55e7cd[_0x5e6a('0x71')];_0x55e7cd[_0x5e6a('0x27')][_0x5e6a('0x72')]='accept';return respondWithRpcPromise(_0x5e6a('0x73'),_0x5e6a('0x73'),{'event':_0x5e6a('0x74'),'message':_['merge'](_0x55e7cd['message'],JSON[_0x5e6a('0x75')](_0x55e7cd[_0x5e6a('0x6b')][_0x5e6a('0x76')]))},client9002)[_0x5e6a('0x20')](function(){return _0x55e7cd;});}return _0x55e7cd;}return null;})[_0x5e6a('0x20')](respondWithResult(_0x358cd5,null))[_0x5e6a('0x28')](handleError(_0x358cd5,null));};var interaction_log=require(_0x5e6a('0x12'))(_0x5e6a('0x59'));exports['reject']=function(_0x687aed,_0x1a8415,_0x5d58b6){var _0x3b1a8f={'agent':{},'channel':_0x5e6a('0x77')};if(_0x687aed[_0x5e6a('0x56')]['id']){delete _0x687aed['body']['id'];}_0x687aed[_0x5e6a('0x56')]['UserId']=_0x687aed[_0x5e6a('0x56')]['UserId']||_0x687aed[_0x5e6a('0x5f')]['id'];_0x3b1a8f[_0x5e6a('0x60')]['id']=_0x687aed[_0x5e6a('0x56')]['UserId'];return db[_0x5e6a('0x38')][_0x5e6a('0x54')]({'where':{'id':_0x687aed['params']['id'],'UserId':null}})[_0x5e6a('0x20')](handleEntityNotFound(_0x1a8415,null))[_0x5e6a('0x20')](function(_0x44fb0e){if(_0x44fb0e){_0x3b1a8f['message']=_0x44fb0e[_0x5e6a('0x64')]({'plain':!![]});return db[_0x5e6a('0x65')]['find']({'where':{'id':_0x44fb0e[_0x5e6a('0x66')]}});}return null;})[_0x5e6a('0x20')](handleEntityNotFound(_0x1a8415,null))[_0x5e6a('0x20')](function(_0x66a121){if(_0x66a121){_0x3b1a8f[_0x5e6a('0x6b')]=_0x66a121[_0x5e6a('0x64')]({'plain':!![]});interaction_log[_0x5e6a('0x68')](_0x5e6a('0x78'),_0x687aed[_0x5e6a('0x5f')]['id'],_0x687aed['user']['name'],_0x687aed[_0x5e6a('0x5f')][_0x5e6a('0x6a')],_0x3b1a8f['interaction']['id'],_0x687aed[_0x5e6a('0x56')]?JSON['stringify'](_0x687aed[_0x5e6a('0x56')]):_0x5e6a('0x6c'));return respondWithRpcPromise(_0x5e6a('0x79'),_0x5e6a('0x7a'),_0x3b1a8f);}return null;})[_0x5e6a('0x20')](function(_0x1c2a83){if(_0x1c2a83){_0x1c2a83[_0x5e6a('0x27')][_0x5e6a('0x70')]=util[_0x5e6a('0x5d')](_0x5e6a('0x7b'),_0x687aed[_0x5e6a('0x5f')][_0x5e6a('0x34')]);_0x1c2a83[_0x5e6a('0x27')][_0x5e6a('0x71')]=_0x3b1a8f[_0x5e6a('0x71')];_0x1c2a83[_0x5e6a('0x27')][_0x5e6a('0x72')]=_0x5e6a('0x7c');respondWithRpcPromise(_0x5e6a('0x73'),_0x5e6a('0x73'),{'event':_0x5e6a('0x7d'),'message':_0x1c2a83['message']},client9002);return _0x3b1a8f;}return null;})[_0x5e6a('0x20')](respondWithResult(_0x1a8415,null))[_0x5e6a('0x28')](handleError(_0x1a8415,null));};