bc247bed3bbd1771fc56e765f33a46ad7f9702f9
[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 _0xf33c=['interaction','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','channel','rejectmessage','html-pdf','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','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','defaults','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','debug','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','status','end','offset','limit','set','Content-Range','json','apply','reject','destroy','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','where','pick','merge','filter','options','ChatMessage','count','includeAll','include','findAll','rows','params','length','find','create','body','update','describe','chat-interactions','accept','chat','read','format','UserId','user','CmContact','Contact','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','role','AcceptMessage','acceptMessage','manual','interface','SIP/%s','event','EventManager','acceptmessage','formData','agent'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xf33c,0x177));var _0xcf33=function(_0x442420,_0xbfec70){_0x442420=_0x442420-0x0;var _0x2b0a06=_0xf33c[_0x442420];return _0x2b0a06;};'use strict';var pdf=require(_0xcf33('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcf33('0x1'));var rp=require(_0xcf33('0x2'));var moment=require('moment');var BPromise=require(_0xcf33('0x3'));var Mustache=require('mustache');var util=require(_0xcf33('0x4'));var path=require(_0xcf33('0x5'));var sox=require(_0xcf33('0x6'));var csv=require('to-csv');var ejs=require(_0xcf33('0x7'));var fs=require('fs');var _=require(_0xcf33('0x8'));var squel=require(_0xcf33('0x9'));var crypto=require(_0xcf33('0xa'));var jsforce=require(_0xcf33('0xb'));var deskjs=require(_0xcf33('0xc'));var toCsv=require(_0xcf33('0xd'));var querystring=require(_0xcf33('0xe'));var Papa=require('papaparse');var Redis=require(_0xcf33('0xf'));var authService=require(_0xcf33('0x10'));var qs=require(_0xcf33('0x11'));var as=require(_0xcf33('0x12'));var hardwareService=require(_0xcf33('0x13'));var logger=require(_0xcf33('0x14'))(_0xcf33('0x15'));var utils=require(_0xcf33('0x16'));var config=require(_0xcf33('0x17'));var licenseUtil=require(_0xcf33('0x18'));var db=require(_0xcf33('0x19'))['db'];config[_0xcf33('0x1a')]=_[_0xcf33('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcf33('0x1a')]));require(_0xcf33('0x1c'))[_0xcf33('0x1d')](socket);var jayson=require(_0xcf33('0x1e'));var client=jayson[_0xcf33('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0xcf33('0x1f')][_0xcf33('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x1a8f19,_0x2595d6,_0x5acf6a,_0x5cf56a){return new BPromise(function(_0x1189e0,_0x193e10){var _0x3b70a1=_0x5cf56a||client;return _0x3b70a1[_0xcf33('0x21')](_0x1a8f19,_0x5acf6a)[_0xcf33('0x22')](function(_0x5f01f7){logger[_0xcf33('0x23')](_0xcf33('0x24'),_0x2595d6,'request\x20sent');logger[_0xcf33('0x25')](_0xcf33('0x26'),_0x2595d6,_0xcf33('0x27'),JSON['stringify'](_0x5f01f7));if(_0x5f01f7[_0xcf33('0x28')]){if(_0x5f01f7[_0xcf33('0x28')][_0xcf33('0x29')]===0x1f4){logger[_0xcf33('0x28')](_0xcf33('0x24'),_0x2595d6,_0x5f01f7['error'][_0xcf33('0x2a')]);return _0x193e10(_0x5f01f7[_0xcf33('0x28')]['message']);}logger[_0xcf33('0x28')](_0xcf33('0x24'),_0x2595d6,_0x5f01f7[_0xcf33('0x28')][_0xcf33('0x2a')]);return _0x1189e0(_0x5f01f7[_0xcf33('0x28')][_0xcf33('0x2a')]);}else{logger[_0xcf33('0x23')]('ChatMessage,\x20%s,\x20%s',_0x2595d6,_0xcf33('0x27'));_0x1189e0(_0x5f01f7[_0xcf33('0x2b')]['message']);}})[_0xcf33('0x2c')](function(_0x3164b7){logger[_0xcf33('0x28')](_0xcf33('0x24'),_0x2595d6,_0x3164b7);_0x193e10(_0x3164b7);});});}function respondWithStatusCode(_0x179dad,_0x33192e){_0x33192e=_0x33192e||0xcc;return function(_0xd187e0){if(_0xd187e0){return _0x179dad['sendStatus'](_0x33192e);}return _0x179dad[_0xcf33('0x2d')](_0x33192e)[_0xcf33('0x2e')]();};}function respondWithResult(_0x249f43,_0x326d46){_0x326d46=_0x326d46||0xc8;return function(_0x4998cd){if(_0x4998cd){return _0x249f43['status'](_0x326d46)['json'](_0x4998cd);}};}function respondWithFilteredResult(_0x29d524,_0x28ae74){return function(_0x310baa){if(_0x310baa){var _0x4318f1=_0x310baa['count'],_0x1f4512=_0x28ae74[_0xcf33('0x2f')],_0x162e4a=_0x28ae74[_0xcf33('0x2f')]+_0x28ae74[_0xcf33('0x30')],_0x312453;if(_0x162e4a>=_0x4318f1){_0x162e4a=_0x4318f1;_0x312453=0xc8;}else{_0x312453=0xce;}_0x29d524[_0xcf33('0x2d')](_0x312453);return _0x29d524[_0xcf33('0x31')](_0xcf33('0x32'),_0x1f4512+'-'+_0x162e4a+'/'+_0x4318f1)[_0xcf33('0x33')](_0x310baa);}return null;};}function patchUpdates(_0x204c5b){return function(_0x3a6924){try{jsonpatch[_0xcf33('0x34')](_0x3a6924,_0x204c5b,!![]);}catch(_0x47fd18){return BPromise[_0xcf33('0x35')](_0x47fd18);}return _0x3a6924['save']();};}function saveUpdates(_0x1fef45,_0x926e57){return function(_0x30e6be){if(_0x30e6be){return _0x30e6be['update'](_0x1fef45)[_0xcf33('0x22')](function(_0x4ce2a6){return _0x4ce2a6;});}return null;};}function removeEntity(_0x215c4a,_0x10c3b4){return function(_0x1fe7f2){if(_0x1fe7f2){return _0x1fe7f2[_0xcf33('0x36')]()[_0xcf33('0x22')](function(){_0x215c4a[_0xcf33('0x2d')](0xcc)[_0xcf33('0x2e')]();});}};}function handleEntityNotFound(_0x1dd706,_0x5e3284){return function(_0x37bab8){if(!_0x37bab8){_0x1dd706[_0xcf33('0x37')](0x194);}return _0x37bab8;};}function handleError(_0x38936f,_0x5ae741){_0x5ae741=_0x5ae741||0x1f4;return function(_0x3ab26b){logger[_0xcf33('0x28')](_0x3ab26b[_0xcf33('0x38')]);if(_0x3ab26b[_0xcf33('0x39')]){delete _0x3ab26b[_0xcf33('0x39')];}_0x38936f[_0xcf33('0x2d')](_0x5ae741)[_0xcf33('0x3a')](_0x3ab26b);};}exports[_0xcf33('0x3b')]=function(_0x1f1d0f,_0x8382){var _0x976d71={},_0x51af46={},_0x180d85={'count':0x0,'rows':[]};var _0x2ebeb9=_[_0xcf33('0x3c')](db['ChatMessage'][_0xcf33('0x3d')],function(_0x2c3290){return{'name':_0x2c3290[_0xcf33('0x3e')],'type':_0x2c3290[_0xcf33('0x3f')][_0xcf33('0x40')]};});_0x51af46[_0xcf33('0x41')]=_[_0xcf33('0x3c')](_0x2ebeb9,_0xcf33('0x39'));_0x51af46[_0xcf33('0x42')]=_[_0xcf33('0x43')](_0x1f1d0f['query']);_0x51af46[_0xcf33('0x44')]=_[_0xcf33('0x45')](_0x51af46['model'],_0x51af46['query']);_0x976d71[_0xcf33('0x46')]=_[_0xcf33('0x45')](_0x51af46[_0xcf33('0x41')],qs[_0xcf33('0x47')](_0x1f1d0f['query'][_0xcf33('0x47')]));_0x976d71['attributes']=_0x976d71[_0xcf33('0x46')]['length']?_0x976d71[_0xcf33('0x46')]:_0x51af46[_0xcf33('0x41')];if(!_0x1f1d0f[_0xcf33('0x42')]['hasOwnProperty'](_0xcf33('0x48'))){_0x976d71[_0xcf33('0x30')]=qs[_0xcf33('0x30')](_0x1f1d0f[_0xcf33('0x42')][_0xcf33('0x30')]);_0x976d71[_0xcf33('0x2f')]=qs[_0xcf33('0x2f')](_0x1f1d0f[_0xcf33('0x42')][_0xcf33('0x2f')]);}_0x976d71['order']=qs['sort'](_0x1f1d0f['query']['sort']);_0x976d71[_0xcf33('0x49')]=qs[_0xcf33('0x44')](_[_0xcf33('0x4a')](_0x1f1d0f[_0xcf33('0x42')],_0x51af46['filters']),_0x2ebeb9);if(_0x1f1d0f['query']['filter']){_0x976d71['where']=_[_0xcf33('0x4b')](_0x976d71[_0xcf33('0x49')],{'$or':_['map'](_0x2ebeb9,function(_0x5d8394){if(_0x5d8394[_0xcf33('0x3f')]!=='VIRTUAL'){var _0x1373c0={};_0x1373c0[_0x5d8394[_0xcf33('0x39')]]={'$like':'%'+_0x1f1d0f['query'][_0xcf33('0x4c')]+'%'};return _0x1373c0;}})});}_0x976d71=_[_0xcf33('0x4b')]({},_0x976d71,_0x1f1d0f[_0xcf33('0x4d')]);var _0x3d97c2={'where':_0x976d71['where']};return db[_0xcf33('0x4e')]['count'](_0x3d97c2)[_0xcf33('0x22')](function(_0x10d165){_0x180d85[_0xcf33('0x4f')]=_0x10d165;if(_0x1f1d0f[_0xcf33('0x42')][_0xcf33('0x50')]){_0x976d71[_0xcf33('0x51')]=[{'all':!![]}];}return db[_0xcf33('0x4e')][_0xcf33('0x52')](_0x976d71);})[_0xcf33('0x22')](function(_0x163867){_0x180d85[_0xcf33('0x53')]=_0x163867;return _0x180d85;})[_0xcf33('0x22')](respondWithFilteredResult(_0x8382,_0x976d71))[_0xcf33('0x2c')](handleError(_0x8382,null));};exports['show']=function(_0x23ea12,_0x3a71e1){var _0x2931a2={'raw':!![],'where':{'id':_0x23ea12[_0xcf33('0x54')]['id']}},_0x46e0c9={};_0x46e0c9[_0xcf33('0x41')]=_[_0xcf33('0x43')](db[_0xcf33('0x4e')][_0xcf33('0x3d')]);_0x46e0c9[_0xcf33('0x42')]=_[_0xcf33('0x43')](_0x23ea12[_0xcf33('0x42')]);_0x46e0c9[_0xcf33('0x44')]=_[_0xcf33('0x45')](_0x46e0c9[_0xcf33('0x41')],_0x46e0c9[_0xcf33('0x42')]);_0x2931a2[_0xcf33('0x46')]=_[_0xcf33('0x45')](_0x46e0c9[_0xcf33('0x41')],qs[_0xcf33('0x47')](_0x23ea12[_0xcf33('0x42')][_0xcf33('0x47')]));_0x2931a2['attributes']=_0x2931a2[_0xcf33('0x46')][_0xcf33('0x55')]?_0x2931a2['attributes']:_0x46e0c9[_0xcf33('0x41')];if(_0x23ea12[_0xcf33('0x42')]['includeAll']){_0x2931a2[_0xcf33('0x51')]=[{'all':!![]}];}_0x2931a2=_['merge']({},_0x2931a2,_0x23ea12['options']);return db[_0xcf33('0x4e')][_0xcf33('0x56')](_0x2931a2)[_0xcf33('0x22')](handleEntityNotFound(_0x3a71e1,null))[_0xcf33('0x22')](respondWithResult(_0x3a71e1,null))[_0xcf33('0x2c')](handleError(_0x3a71e1,null));};exports[_0xcf33('0x57')]=function(_0x1d8fec,_0x32e72a){return db[_0xcf33('0x4e')][_0xcf33('0x57')](_0x1d8fec[_0xcf33('0x58')],{})[_0xcf33('0x22')](respondWithResult(_0x32e72a,0xc9))[_0xcf33('0x2c')](handleError(_0x32e72a,null));};exports[_0xcf33('0x59')]=function(_0x25240c,_0x52ad8f){if(_0x25240c[_0xcf33('0x58')]['id']){delete _0x25240c['body']['id'];}return db[_0xcf33('0x4e')]['find']({'where':{'id':_0x25240c['params']['id']}})[_0xcf33('0x22')](handleEntityNotFound(_0x52ad8f,null))[_0xcf33('0x22')](saveUpdates(_0x25240c['body'],null))[_0xcf33('0x22')](respondWithResult(_0x52ad8f,null))['catch'](handleError(_0x52ad8f,null));};exports[_0xcf33('0x36')]=function(_0x2b110c,_0x6751c2){return db[_0xcf33('0x4e')][_0xcf33('0x56')]({'where':{'id':_0x2b110c[_0xcf33('0x54')]['id']}})[_0xcf33('0x22')](handleEntityNotFound(_0x6751c2,null))[_0xcf33('0x22')](removeEntity(_0x6751c2,null))[_0xcf33('0x2c')](handleError(_0x6751c2,null));};exports[_0xcf33('0x5a')]=function(_0x172eaf,_0x4d8294){return db[_0xcf33('0x4e')][_0xcf33('0x5a')]()[_0xcf33('0x22')](respondWithResult(_0x4d8294,null))[_0xcf33('0x2c')](handleError(_0x4d8294,null));};var interaction_log=require(_0xcf33('0x14'))(_0xcf33('0x5b'));exports[_0xcf33('0x5c')]=function(_0x3947da,_0x4c07c3,_0x1e5f5f){var _0x12c5a1={'channel':_0xcf33('0x5d')};if(_0x3947da[_0xcf33('0x58')]['id']){delete _0x3947da['body']['id'];}_0x3947da[_0xcf33('0x58')][_0xcf33('0x5e')]=!![];_0x3947da[_0xcf33('0x58')]['readAt']=moment()[_0xcf33('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0x3947da[_0xcf33('0x58')][_0xcf33('0x60')]=_0x3947da[_0xcf33('0x58')][_0xcf33('0x60')]||_0x3947da[_0xcf33('0x61')]['id'];return db[_0xcf33('0x4e')]['find']({'where':{'id':_0x3947da['params']['id'],'UserId':null},'include':[{'model':db[_0xcf33('0x62')],'as':_0xcf33('0x63')}]})[_0xcf33('0x22')](handleEntityNotFound(_0x4c07c3,null))[_0xcf33('0x22')](saveUpdates(_0x3947da[_0xcf33('0x58')],null))[_0xcf33('0x22')](function(_0x53b6af){if(_0x53b6af){_0x12c5a1[_0xcf33('0x2a')]=_0x53b6af[_0xcf33('0x64')]({'plain':!![]});return db[_0xcf33('0x65')][_0xcf33('0x56')]({'where':{'id':_0x53b6af[_0xcf33('0x66')]}});}return null;})[_0xcf33('0x22')](handleEntityNotFound(_0x4c07c3,null))[_0xcf33('0x22')](function(_0x448acf){if(_0x448acf){return _0x448acf['update']({'UserId':_0x3947da[_0xcf33('0x58')][_0xcf33('0x60')],'read1stAt':_[_0xcf33('0x67')](_0x448acf[_0xcf33('0x68')])?moment()['format'](_0xcf33('0x69')):undefined});}return null;})['then'](function(_0x167095){if(_0x167095){_0x12c5a1['interaction']=_0x167095[_0xcf33('0x64')]({'plain':!![]});interaction_log[_0xcf33('0x23')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3947da['user']['id'],_0x3947da['user'][_0xcf33('0x39')],_0x3947da[_0xcf33('0x61')][_0xcf33('0x6a')],_0x12c5a1['interaction']['id'],_0x3947da['body']?JSON['stringify'](_0x3947da[_0xcf33('0x58')]):'null');return respondWithRpcPromise(_0xcf33('0x6b'),_0xcf33('0x6c'),_0x12c5a1);}return null;})['then'](function(_0x57fa27){if(_0x57fa27){if(_0x3947da['body'][_0xcf33('0x6d')]){_0x12c5a1['message'][_0xcf33('0x6e')]=util[_0xcf33('0x5f')](_0xcf33('0x6f'),_0x3947da[_0xcf33('0x61')][_0xcf33('0x39')]);_0x12c5a1['message']['channel']=_0x12c5a1['channel'];_0x12c5a1[_0xcf33('0x2a')][_0xcf33('0x70')]=_0xcf33('0x5c');return respondWithRpcPromise('EventManager',_0xcf33('0x71'),{'event':_0xcf33('0x72'),'message':_[_0xcf33('0x4b')](_0x12c5a1[_0xcf33('0x2a')],JSON['parse'](_0x12c5a1['interaction'][_0xcf33('0x73')]))},client9002)[_0xcf33('0x22')](function(){return _0x12c5a1;});}return _0x12c5a1;}return null;})['then'](respondWithResult(_0x4c07c3,null))['catch'](handleError(_0x4c07c3,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports['reject']=function(_0x152731,_0x3b92c5,_0x26123a){var _0x29aadb={'agent':{},'channel':_0xcf33('0x5d')};if(_0x152731[_0xcf33('0x58')]['id']){delete _0x152731[_0xcf33('0x58')]['id'];}_0x152731[_0xcf33('0x58')][_0xcf33('0x60')]=_0x152731[_0xcf33('0x58')][_0xcf33('0x60')]||_0x152731['user']['id'];_0x29aadb[_0xcf33('0x74')]['id']=_0x152731[_0xcf33('0x58')]['UserId'];return db[_0xcf33('0x4e')][_0xcf33('0x56')]({'where':{'id':_0x152731[_0xcf33('0x54')]['id'],'UserId':null}})[_0xcf33('0x22')](handleEntityNotFound(_0x3b92c5,null))[_0xcf33('0x22')](function(_0x127dc8){if(_0x127dc8){_0x29aadb['message']=_0x127dc8[_0xcf33('0x64')]({'plain':!![]});return db['ChatInteraction']['find']({'where':{'id':_0x127dc8['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x3b92c5,null))[_0xcf33('0x22')](function(_0x43225b){if(_0x43225b){_0x29aadb[_0xcf33('0x75')]=_0x43225b[_0xcf33('0x64')]({'plain':!![]});interaction_log[_0xcf33('0x23')](_0xcf33('0x76'),_0x152731['user']['id'],_0x152731[_0xcf33('0x61')][_0xcf33('0x39')],_0x152731['user'][_0xcf33('0x6a')],_0x29aadb['interaction']['id'],_0x152731[_0xcf33('0x58')]?JSON['stringify'](_0x152731[_0xcf33('0x58')]):'null');return respondWithRpcPromise(_0xcf33('0x77'),_0xcf33('0x78'),_0x29aadb);}return null;})[_0xcf33('0x22')](function(_0x13d176){if(_0x13d176){_0x13d176[_0xcf33('0x2a')][_0xcf33('0x6e')]=util['format'](_0xcf33('0x6f'),_0x152731[_0xcf33('0x61')][_0xcf33('0x39')]);_0x13d176[_0xcf33('0x2a')]['channel']=_0x29aadb[_0xcf33('0x79')];_0x13d176[_0xcf33('0x2a')][_0xcf33('0x70')]='reject';respondWithRpcPromise(_0xcf33('0x71'),_0xcf33('0x71'),{'event':_0xcf33('0x7a'),'message':_0x13d176[_0xcf33('0x2a')]},client9002);return _0x29aadb;}return null;})[_0xcf33('0x22')](respondWithResult(_0x3b92c5,null))['catch'](handleError(_0x3b92c5,null));};