Built motion from commit (unavailable).|2.5.15
[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 _0xbcab=['debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','sendStatus','end','status','count','offset','limit','set','Content-Range','json','apply','reject','update','destroy','name','index','map','ChatMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','includeAll','findAll','show','options','find','create','body','params','describe','chat-interactions','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','format','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','acceptMessage','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','merge','parse','chat','agent','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectmessage','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./chatMessage.socket','register','jayson/promise','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x15074c,_0x446555){var _0x5227e1=function(_0x5e9b27){while(--_0x5e9b27){_0x15074c['push'](_0x15074c['shift']());}};_0x5227e1(++_0x446555);}(_0xbcab,0xcb));var _0xbbca=function(_0x22390f,_0x3765a7){_0x22390f=_0x22390f-0x0;var _0x2ae9e3=_0xbcab[_0x22390f];return _0x2ae9e3;};'use strict';var pdf=require(_0xbbca('0x0'));var emlformat=require(_0xbbca('0x1'));var rimraf=require(_0xbbca('0x2'));var zipdir=require(_0xbbca('0x3'));var jsonpatch=require(_0xbbca('0x4'));var rp=require(_0xbbca('0x5'));var moment=require(_0xbbca('0x6'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbbca('0x7'));var path=require(_0xbbca('0x8'));var sox=require(_0xbbca('0x9'));var csv=require(_0xbbca('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xbbca('0xb'));var squel=require(_0xbbca('0xc'));var crypto=require(_0xbbca('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xbbca('0xe'));var toCsv=require(_0xbbca('0xa'));var querystring=require(_0xbbca('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xbbca('0x10'));var qs=require(_0xbbca('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbbca('0x12'));var logger=require(_0xbbca('0x13'))('api');var utils=require(_0xbbca('0x14'));var config=require(_0xbbca('0x15'));var licenseUtil=require(_0xbbca('0x16'));var db=require(_0xbbca('0x17'))['db'];config[_0xbbca('0x18')]=_['defaults'](config[_0xbbca('0x18')],{'host':_0xbbca('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xbbca('0x1a'))[_0xbbca('0x1b')](socket);var jayson=require(_0xbbca('0x1c'));var client=jayson['client'][_0xbbca('0x1d')]({'port':0x232c});var client9002=jayson['client'][_0xbbca('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x194082,_0x4728f7,_0x5fa4c2,_0x1dda3d){return new BPromise(function(_0x34bda5,_0x185782){var _0x422909=_0x1dda3d||client;return _0x422909[_0xbbca('0x1e')](_0x194082,_0x5fa4c2)[_0xbbca('0x1f')](function(_0x366aa9){logger[_0xbbca('0x20')](_0xbbca('0x21'),_0x4728f7,_0xbbca('0x22'));logger[_0xbbca('0x23')](_0xbbca('0x24'),_0x4728f7,_0xbbca('0x22'),JSON[_0xbbca('0x25')](_0x366aa9));if(_0x366aa9['error']){if(_0x366aa9['error'][_0xbbca('0x26')]===0x1f4){logger['error'](_0xbbca('0x21'),_0x4728f7,_0x366aa9[_0xbbca('0x27')]['message']);return _0x185782(_0x366aa9['error'][_0xbbca('0x28')]);}logger['error'](_0xbbca('0x21'),_0x4728f7,_0x366aa9[_0xbbca('0x27')][_0xbbca('0x28')]);return _0x34bda5(_0x366aa9[_0xbbca('0x27')][_0xbbca('0x28')]);}else{logger[_0xbbca('0x20')]('ChatMessage,\x20%s,\x20%s',_0x4728f7,_0xbbca('0x22'));_0x34bda5(_0x366aa9[_0xbbca('0x29')][_0xbbca('0x28')]);}})[_0xbbca('0x2a')](function(_0x49c592){logger[_0xbbca('0x27')]('ChatMessage,\x20%s,\x20%s',_0x4728f7,_0x49c592);_0x185782(_0x49c592);});});}function respondWithStatusCode(_0x5b8cf2,_0x444825){_0x444825=_0x444825||0xcc;return function(_0x3cec37){if(_0x3cec37){return _0x5b8cf2[_0xbbca('0x2b')](_0x444825);}return _0x5b8cf2['status'](_0x444825)[_0xbbca('0x2c')]();};}function respondWithResult(_0x46de6d,_0x21eeb0){_0x21eeb0=_0x21eeb0||0xc8;return function(_0x31c42a){if(_0x31c42a){return _0x46de6d[_0xbbca('0x2d')](_0x21eeb0)['json'](_0x31c42a);}};}function respondWithFilteredResult(_0x4c56e1,_0x421176){return function(_0x3d73b6){if(_0x3d73b6){var _0x3d49ec=_0x3d73b6[_0xbbca('0x2e')],_0x59e975=_0x421176[_0xbbca('0x2f')],_0x8a5e3=_0x421176['offset']+_0x421176[_0xbbca('0x30')],_0x1ac05d;if(_0x8a5e3>=_0x3d49ec){_0x8a5e3=_0x3d49ec;_0x1ac05d=0xc8;}else{_0x1ac05d=0xce;}_0x4c56e1['status'](_0x1ac05d);return _0x4c56e1[_0xbbca('0x31')](_0xbbca('0x32'),_0x59e975+'-'+_0x8a5e3+'/'+_0x3d49ec)[_0xbbca('0x33')](_0x3d73b6);}return null;};}function patchUpdates(_0x349203){return function(_0x1abe26){try{jsonpatch[_0xbbca('0x34')](_0x1abe26,_0x349203,!![]);}catch(_0xce237){return BPromise[_0xbbca('0x35')](_0xce237);}return _0x1abe26['save']();};}function saveUpdates(_0x4059cd,_0x1c4d77){return function(_0x2c0052){if(_0x2c0052){return _0x2c0052[_0xbbca('0x36')](_0x4059cd)[_0xbbca('0x1f')](function(_0x3a14ea){return _0x3a14ea;});}return null;};}function removeEntity(_0x2c94e9,_0x810264){return function(_0x5ad890){if(_0x5ad890){return _0x5ad890[_0xbbca('0x37')]()['then'](function(){_0x2c94e9[_0xbbca('0x2d')](0xcc)[_0xbbca('0x2c')]();});}};}function handleEntityNotFound(_0x14adf4,_0x450c68){return function(_0x1e302a){if(!_0x1e302a){_0x14adf4['sendStatus'](0x194);}return _0x1e302a;};}function handleError(_0x293030,_0x1071b1){_0x1071b1=_0x1071b1||0x1f4;return function(_0x3322d1){logger[_0xbbca('0x27')](_0x3322d1['stack']);if(_0x3322d1[_0xbbca('0x38')]){delete _0x3322d1['name'];}_0x293030[_0xbbca('0x2d')](_0x1071b1)['send'](_0x3322d1);};}exports[_0xbbca('0x39')]=function(_0x37c859,_0x523660){var _0x51cf3b={},_0x318b76={},_0x4372b2={'count':0x0,'rows':[]};var _0x165737=_[_0xbbca('0x3a')](db[_0xbbca('0x3b')][_0xbbca('0x3c')],function(_0xaa979f){return{'name':_0xaa979f[_0xbbca('0x3d')],'type':_0xaa979f[_0xbbca('0x3e')][_0xbbca('0x3f')]};});_0x318b76[_0xbbca('0x40')]=_[_0xbbca('0x3a')](_0x165737,_0xbbca('0x38'));_0x318b76[_0xbbca('0x41')]=_[_0xbbca('0x42')](_0x37c859[_0xbbca('0x41')]);_0x318b76[_0xbbca('0x43')]=_[_0xbbca('0x44')](_0x318b76[_0xbbca('0x40')],_0x318b76[_0xbbca('0x41')]);_0x51cf3b[_0xbbca('0x45')]=_[_0xbbca('0x44')](_0x318b76['model'],qs[_0xbbca('0x46')](_0x37c859[_0xbbca('0x41')][_0xbbca('0x46')]));_0x51cf3b[_0xbbca('0x45')]=_0x51cf3b['attributes'][_0xbbca('0x47')]?_0x51cf3b[_0xbbca('0x45')]:_0x318b76[_0xbbca('0x40')];if(!_0x37c859[_0xbbca('0x41')][_0xbbca('0x48')](_0xbbca('0x49'))){_0x51cf3b[_0xbbca('0x30')]=qs[_0xbbca('0x30')](_0x37c859[_0xbbca('0x41')]['limit']);_0x51cf3b['offset']=qs[_0xbbca('0x2f')](_0x37c859['query'][_0xbbca('0x2f')]);}_0x51cf3b[_0xbbca('0x4a')]=qs[_0xbbca('0x4b')](_0x37c859[_0xbbca('0x41')][_0xbbca('0x4b')]);_0x51cf3b['where']=qs[_0xbbca('0x43')](_[_0xbbca('0x4c')](_0x37c859['query'],_0x318b76[_0xbbca('0x43')]),_0x165737);if(_0x37c859[_0xbbca('0x41')]['filter']){_0x51cf3b[_0xbbca('0x4d')]=_['merge'](_0x51cf3b[_0xbbca('0x4d')],{'$or':_[_0xbbca('0x3a')](_0x165737,function(_0x448d7c){if(_0x448d7c['type']!==_0xbbca('0x4e')){var _0x3280f4={};_0x3280f4[_0x448d7c['name']]={'$like':'%'+_0x37c859[_0xbbca('0x41')]['filter']+'%'};return _0x3280f4;}})});}_0x51cf3b=_['merge']({},_0x51cf3b,_0x37c859['options']);var _0x5914a6={'where':_0x51cf3b['where']};return db[_0xbbca('0x3b')][_0xbbca('0x2e')](_0x5914a6)[_0xbbca('0x1f')](function(_0x2acaad){_0x4372b2[_0xbbca('0x2e')]=_0x2acaad;if(_0x37c859[_0xbbca('0x41')][_0xbbca('0x4f')]){_0x51cf3b['include']=[{'all':!![]}];}return db['ChatMessage'][_0xbbca('0x50')](_0x51cf3b);})[_0xbbca('0x1f')](function(_0x32c0f7){_0x4372b2['rows']=_0x32c0f7;return _0x4372b2;})[_0xbbca('0x1f')](respondWithFilteredResult(_0x523660,_0x51cf3b))[_0xbbca('0x2a')](handleError(_0x523660,null));};exports[_0xbbca('0x51')]=function(_0x537436,_0x265fcd){var _0x22f724={'raw':!![],'where':{'id':_0x537436['params']['id']}},_0x505b87={};_0x505b87[_0xbbca('0x40')]=_[_0xbbca('0x42')](db[_0xbbca('0x3b')][_0xbbca('0x3c')]);_0x505b87[_0xbbca('0x41')]=_[_0xbbca('0x42')](_0x537436[_0xbbca('0x41')]);_0x505b87[_0xbbca('0x43')]=_[_0xbbca('0x44')](_0x505b87[_0xbbca('0x40')],_0x505b87[_0xbbca('0x41')]);_0x22f724[_0xbbca('0x45')]=_['intersection'](_0x505b87[_0xbbca('0x40')],qs[_0xbbca('0x46')](_0x537436[_0xbbca('0x41')][_0xbbca('0x46')]));_0x22f724[_0xbbca('0x45')]=_0x22f724[_0xbbca('0x45')][_0xbbca('0x47')]?_0x22f724[_0xbbca('0x45')]:_0x505b87['model'];if(_0x537436['query']['includeAll']){_0x22f724['include']=[{'all':!![]}];}_0x22f724=_['merge']({},_0x22f724,_0x537436[_0xbbca('0x52')]);return db[_0xbbca('0x3b')][_0xbbca('0x53')](_0x22f724)['then'](handleEntityNotFound(_0x265fcd,null))[_0xbbca('0x1f')](respondWithResult(_0x265fcd,null))['catch'](handleError(_0x265fcd,null));};exports[_0xbbca('0x54')]=function(_0x5a2354,_0x365cee){return db[_0xbbca('0x3b')][_0xbbca('0x54')](_0x5a2354[_0xbbca('0x55')],{})[_0xbbca('0x1f')](respondWithResult(_0x365cee,0xc9))['catch'](handleError(_0x365cee,null));};exports[_0xbbca('0x36')]=function(_0x3d4da8,_0x110f89){if(_0x3d4da8[_0xbbca('0x55')]['id']){delete _0x3d4da8[_0xbbca('0x55')]['id'];}return db[_0xbbca('0x3b')]['find']({'where':{'id':_0x3d4da8['params']['id']}})[_0xbbca('0x1f')](handleEntityNotFound(_0x110f89,null))[_0xbbca('0x1f')](saveUpdates(_0x3d4da8['body'],null))[_0xbbca('0x1f')](respondWithResult(_0x110f89,null))[_0xbbca('0x2a')](handleError(_0x110f89,null));};exports[_0xbbca('0x37')]=function(_0x4a7890,_0x135684){return db['ChatMessage']['find']({'where':{'id':_0x4a7890[_0xbbca('0x56')]['id']}})[_0xbbca('0x1f')](handleEntityNotFound(_0x135684,null))['then'](removeEntity(_0x135684,null))[_0xbbca('0x2a')](handleError(_0x135684,null));};exports[_0xbbca('0x57')]=function(_0x121b0e,_0x5b72d0){return db[_0xbbca('0x3b')]['describe']()[_0xbbca('0x1f')](respondWithResult(_0x5b72d0,null))[_0xbbca('0x2a')](handleError(_0x5b72d0,null));};var interaction_log=require(_0xbbca('0x13'))(_0xbbca('0x58'));exports['accept']=function(_0x1974e4,_0x1a68d1,_0x4658f7){var _0x5b27c5={'channel':'chat'};if(_0x1974e4[_0xbbca('0x55')]['id']){delete _0x1974e4[_0xbbca('0x55')]['id'];}_0x1974e4[_0xbbca('0x55')][_0xbbca('0x59')]=!![];_0x1974e4[_0xbbca('0x55')][_0xbbca('0x5a')]=moment()['format'](_0xbbca('0x5b'));_0x1974e4[_0xbbca('0x55')][_0xbbca('0x5c')]=_0x1974e4[_0xbbca('0x55')][_0xbbca('0x5c')]||_0x1974e4[_0xbbca('0x5d')]['id'];return db[_0xbbca('0x3b')][_0xbbca('0x53')]({'where':{'id':_0x1974e4['params']['id'],'UserId':null},'include':[{'model':db['CmContact'],'as':'Contact'}]})['then'](handleEntityNotFound(_0x1a68d1,null))[_0xbbca('0x1f')](saveUpdates(_0x1974e4[_0xbbca('0x55')],null))[_0xbbca('0x1f')](function(_0x2f9591){if(_0x2f9591){_0x5b27c5[_0xbbca('0x28')]=_0x2f9591[_0xbbca('0x5e')]({'plain':!![]});return db[_0xbbca('0x5f')]['find']({'where':{'id':_0x2f9591[_0xbbca('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x1a68d1,null))[_0xbbca('0x1f')](function(_0x3af397){if(_0x3af397){return _0x3af397['update']({'UserId':_0x1974e4['body'][_0xbbca('0x5c')],'read1stAt':_[_0xbbca('0x61')](_0x3af397[_0xbbca('0x62')])?moment()[_0xbbca('0x63')](_0xbbca('0x5b')):undefined});}return null;})['then'](function(_0x3b58ab){if(_0x3b58ab){_0x5b27c5['interaction']=_0x3b58ab[_0xbbca('0x5e')]({'plain':!![]});interaction_log[_0xbbca('0x20')](_0xbbca('0x64'),_0x1974e4[_0xbbca('0x5d')]['id'],_0x1974e4['user'][_0xbbca('0x38')],_0x1974e4[_0xbbca('0x5d')][_0xbbca('0x65')],_0x5b27c5[_0xbbca('0x66')]['id'],_0x1974e4[_0xbbca('0x55')]?JSON[_0xbbca('0x25')](_0x1974e4[_0xbbca('0x55')]):_0xbbca('0x67'));return respondWithRpcPromise('AcceptMessage',_0xbbca('0x68'),_0x5b27c5);}return null;})['then'](function(_0x121dc8){if(_0x121dc8){if(_0x1974e4[_0xbbca('0x55')]['manual']){_0x5b27c5['message'][_0xbbca('0x69')]=util[_0xbbca('0x63')](_0xbbca('0x6a'),_0x1974e4['user'][_0xbbca('0x38')]);_0x5b27c5[_0xbbca('0x28')]['channel']=_0x5b27c5[_0xbbca('0x6b')];_0x5b27c5[_0xbbca('0x28')][_0xbbca('0x6c')]=_0xbbca('0x6d');return respondWithRpcPromise('EventManager',_0xbbca('0x6e'),{'event':_0xbbca('0x6f'),'message':_[_0xbbca('0x70')](_0x5b27c5[_0xbbca('0x28')],JSON[_0xbbca('0x71')](_0x5b27c5[_0xbbca('0x66')]['formData']))},client9002)[_0xbbca('0x1f')](function(){return _0x5b27c5;});}return _0x5b27c5;}return null;})['then'](respondWithResult(_0x1a68d1,null))[_0xbbca('0x2a')](handleError(_0x1a68d1,null));};var interaction_log=require('../../config/logger')(_0xbbca('0x58'));exports[_0xbbca('0x35')]=function(_0x5516ac,_0x37ef56,_0x67a7d6){var _0xd1eee2={'agent':{},'channel':_0xbbca('0x72')};if(_0x5516ac[_0xbbca('0x55')]['id']){delete _0x5516ac[_0xbbca('0x55')]['id'];}_0x5516ac[_0xbbca('0x55')][_0xbbca('0x5c')]=_0x5516ac[_0xbbca('0x55')]['UserId']||_0x5516ac[_0xbbca('0x5d')]['id'];_0xd1eee2[_0xbbca('0x73')]['id']=_0x5516ac[_0xbbca('0x55')][_0xbbca('0x5c')];return db[_0xbbca('0x3b')][_0xbbca('0x53')]({'where':{'id':_0x5516ac[_0xbbca('0x56')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x37ef56,null))[_0xbbca('0x1f')](function(_0x34c211){if(_0x34c211){_0xd1eee2[_0xbbca('0x28')]=_0x34c211[_0xbbca('0x5e')]({'plain':!![]});return db[_0xbbca('0x5f')][_0xbbca('0x53')]({'where':{'id':_0x34c211[_0xbbca('0x60')]}});}return null;})[_0xbbca('0x1f')](handleEntityNotFound(_0x37ef56,null))[_0xbbca('0x1f')](function(_0x32cd10){if(_0x32cd10){_0xd1eee2[_0xbbca('0x66')]=_0x32cd10['get']({'plain':!![]});interaction_log[_0xbbca('0x20')](_0xbbca('0x74'),_0x5516ac[_0xbbca('0x5d')]['id'],_0x5516ac[_0xbbca('0x5d')][_0xbbca('0x38')],_0x5516ac[_0xbbca('0x5d')]['role'],_0xd1eee2[_0xbbca('0x66')]['id'],_0x5516ac[_0xbbca('0x55')]?JSON[_0xbbca('0x25')](_0x5516ac[_0xbbca('0x55')]):_0xbbca('0x67'));return respondWithRpcPromise(_0xbbca('0x75'),'rejectMessage',_0xd1eee2);}return null;})[_0xbbca('0x1f')](function(_0x33c3dc){if(_0x33c3dc){_0x33c3dc[_0xbbca('0x28')][_0xbbca('0x69')]=util[_0xbbca('0x63')](_0xbbca('0x6a'),_0x5516ac[_0xbbca('0x5d')]['name']);_0x33c3dc['message']['channel']=_0xd1eee2[_0xbbca('0x6b')];_0x33c3dc[_0xbbca('0x28')][_0xbbca('0x6c')]=_0xbbca('0x35');respondWithRpcPromise(_0xbbca('0x6e'),_0xbbca('0x6e'),{'event':_0xbbca('0x76'),'message':_0x33c3dc[_0xbbca('0x28')]},client9002);return _0xd1eee2;}return null;})[_0xbbca('0x1f')](respondWithResult(_0x37ef56,null))['catch'](handleError(_0x37ef56,null));};