Built motion from commit (unavailable).|2.5.22
[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 _0xde2c=['offset','set','Content-Range','update','destroy','send','rawAttributes','fieldName','type','key','model','map','name','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','ChatMessage','findAll','rows','find','body','params','describe','chat-interactions','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','Contact','get','ChatInteraction','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','interface','accept','EventManager','acceptmessage','parse','formData','reject','chat','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','channel','event','rejectmessage','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','count'];(function(_0x3afb9d,_0x2e8c2e){var _0x4981fc=function(_0x18bc2e){while(--_0x18bc2e){_0x3afb9d['push'](_0x3afb9d['shift']());}};_0x4981fc(++_0x2e8c2e);}(_0xde2c,0x1ad));var _0xcde2=function(_0x3dea7d,_0x2cd4ea){_0x3dea7d=_0x3dea7d-0x0;var _0x53919a=_0xde2c[_0x3dea7d];return _0x53919a;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xcde2('0x0'));var rimraf=require(_0xcde2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcde2('0x2'));var rp=require(_0xcde2('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xcde2('0x4'));var util=require(_0xcde2('0x5'));var path=require(_0xcde2('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xcde2('0x7'));var fs=require('fs');var _=require(_0xcde2('0x8'));var squel=require('squel');var crypto=require(_0xcde2('0x9'));var jsforce=require(_0xcde2('0xa'));var deskjs=require(_0xcde2('0xb'));var toCsv=require(_0xcde2('0xc'));var querystring=require(_0xcde2('0xd'));var Papa=require(_0xcde2('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xcde2('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcde2('0x10'));var logger=require(_0xcde2('0x11'))('api');var utils=require(_0xcde2('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xcde2('0x13'));var db=require(_0xcde2('0x14'))['db'];config[_0xcde2('0x15')]=_[_0xcde2('0x16')](config[_0xcde2('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0xcde2('0x17'))(new Redis(config['redis']));require(_0xcde2('0x18'))[_0xcde2('0x19')](socket);var jayson=require(_0xcde2('0x1a'));var client=jayson[_0xcde2('0x1b')][_0xcde2('0x1c')]({'port':0x232c});var client9002=jayson[_0xcde2('0x1b')][_0xcde2('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x456d3d,_0x3ebe04,_0x3b246a,_0x4b9107){return new BPromise(function(_0x3ce9e9,_0x22dcc6){var _0x8ad0c4=_0x4b9107||client;return _0x8ad0c4[_0xcde2('0x1d')](_0x456d3d,_0x3b246a)[_0xcde2('0x1e')](function(_0x2c333f){logger[_0xcde2('0x1f')](_0xcde2('0x20'),_0x3ebe04,_0xcde2('0x21'));logger[_0xcde2('0x22')](_0xcde2('0x23'),_0x3ebe04,_0xcde2('0x21'),JSON[_0xcde2('0x24')](_0x2c333f));if(_0x2c333f[_0xcde2('0x25')]){if(_0x2c333f[_0xcde2('0x25')][_0xcde2('0x26')]===0x1f4){logger[_0xcde2('0x25')](_0xcde2('0x20'),_0x3ebe04,_0x2c333f[_0xcde2('0x25')][_0xcde2('0x27')]);return _0x22dcc6(_0x2c333f[_0xcde2('0x25')]['message']);}logger['error'](_0xcde2('0x20'),_0x3ebe04,_0x2c333f[_0xcde2('0x25')][_0xcde2('0x27')]);return _0x3ce9e9(_0x2c333f[_0xcde2('0x25')]['message']);}else{logger[_0xcde2('0x1f')]('ChatMessage,\x20%s,\x20%s',_0x3ebe04,_0xcde2('0x21'));_0x3ce9e9(_0x2c333f[_0xcde2('0x28')][_0xcde2('0x27')]);}})[_0xcde2('0x29')](function(_0x437986){logger[_0xcde2('0x25')]('ChatMessage,\x20%s,\x20%s',_0x3ebe04,_0x437986);_0x22dcc6(_0x437986);});});}function respondWithStatusCode(_0x2101aa,_0x2a4eae){_0x2a4eae=_0x2a4eae||0xcc;return function(_0x3f64ed){if(_0x3f64ed){return _0x2101aa[_0xcde2('0x2a')](_0x2a4eae);}return _0x2101aa['status'](_0x2a4eae)[_0xcde2('0x2b')]();};}function respondWithResult(_0x46059c,_0x18835b){_0x18835b=_0x18835b||0xc8;return function(_0x176856){if(_0x176856){return _0x46059c[_0xcde2('0x2c')](_0x18835b)[_0xcde2('0x2d')](_0x176856);}};}function respondWithFilteredResult(_0x421098,_0x5da333){return function(_0x1c491b){if(_0x1c491b){var _0x3b355c=_0x1c491b[_0xcde2('0x2e')],_0xc5b538=_0x5da333[_0xcde2('0x2f')],_0xeb6974=_0x5da333[_0xcde2('0x2f')]+_0x5da333['limit'],_0x3e5d59;if(_0xeb6974>=_0x3b355c){_0xeb6974=_0x3b355c;_0x3e5d59=0xc8;}else{_0x3e5d59=0xce;}_0x421098[_0xcde2('0x2c')](_0x3e5d59);return _0x421098[_0xcde2('0x30')](_0xcde2('0x31'),_0xc5b538+'-'+_0xeb6974+'/'+_0x3b355c)[_0xcde2('0x2d')](_0x1c491b);}return null;};}function patchUpdates(_0x31e904){return function(_0x475707){try{jsonpatch['apply'](_0x475707,_0x31e904,!![]);}catch(_0xbf6588){return BPromise['reject'](_0xbf6588);}return _0x475707['save']();};}function saveUpdates(_0x3efbdd,_0xcf1270){return function(_0x3acf9e){if(_0x3acf9e){return _0x3acf9e[_0xcde2('0x32')](_0x3efbdd)[_0xcde2('0x1e')](function(_0x7de169){return _0x7de169;});}return null;};}function removeEntity(_0xb85342,_0x4f0dd9){return function(_0x5a7320){if(_0x5a7320){return _0x5a7320[_0xcde2('0x33')]()[_0xcde2('0x1e')](function(){_0xb85342[_0xcde2('0x2c')](0xcc)[_0xcde2('0x2b')]();});}};}function handleEntityNotFound(_0x592499,_0x2b51f7){return function(_0xa246fc){if(!_0xa246fc){_0x592499[_0xcde2('0x2a')](0x194);}return _0xa246fc;};}function handleError(_0x4a348b,_0x1500af){_0x1500af=_0x1500af||0x1f4;return function(_0x129c99){logger['error'](_0x129c99['stack']);if(_0x129c99['name']){delete _0x129c99['name'];}_0x4a348b[_0xcde2('0x2c')](_0x1500af)[_0xcde2('0x34')](_0x129c99);};}exports['index']=function(_0x10151f,_0x379e63){var _0x10b5d8={},_0x379231={},_0x3e4bbf={'count':0x0,'rows':[]};var _0x3b2d65=_['map'](db['ChatMessage'][_0xcde2('0x35')],function(_0x278be2){return{'name':_0x278be2[_0xcde2('0x36')],'type':_0x278be2[_0xcde2('0x37')][_0xcde2('0x38')]};});_0x379231[_0xcde2('0x39')]=_[_0xcde2('0x3a')](_0x3b2d65,_0xcde2('0x3b'));_0x379231['query']=_[_0xcde2('0x3c')](_0x10151f['query']);_0x379231[_0xcde2('0x3d')]=_[_0xcde2('0x3e')](_0x379231[_0xcde2('0x39')],_0x379231[_0xcde2('0x3f')]);_0x10b5d8['attributes']=_[_0xcde2('0x3e')](_0x379231[_0xcde2('0x39')],qs['fields'](_0x10151f[_0xcde2('0x3f')][_0xcde2('0x40')]));_0x10b5d8['attributes']=_0x10b5d8[_0xcde2('0x41')][_0xcde2('0x42')]?_0x10b5d8[_0xcde2('0x41')]:_0x379231[_0xcde2('0x39')];if(!_0x10151f['query'][_0xcde2('0x43')](_0xcde2('0x44'))){_0x10b5d8[_0xcde2('0x45')]=qs[_0xcde2('0x45')](_0x10151f['query'][_0xcde2('0x45')]);_0x10b5d8[_0xcde2('0x2f')]=qs['offset'](_0x10151f['query'][_0xcde2('0x2f')]);}_0x10b5d8[_0xcde2('0x46')]=qs[_0xcde2('0x47')](_0x10151f[_0xcde2('0x3f')][_0xcde2('0x47')]);_0x10b5d8[_0xcde2('0x48')]=qs[_0xcde2('0x3d')](_[_0xcde2('0x49')](_0x10151f[_0xcde2('0x3f')],_0x379231[_0xcde2('0x3d')]),_0x3b2d65);if(_0x10151f[_0xcde2('0x3f')][_0xcde2('0x4a')]){_0x10b5d8['where']=_[_0xcde2('0x4b')](_0x10b5d8[_0xcde2('0x48')],{'$or':_[_0xcde2('0x3a')](_0x3b2d65,function(_0x14d564){if(_0x14d564[_0xcde2('0x37')]!==_0xcde2('0x4c')){var _0x56e1bf={};_0x56e1bf[_0x14d564[_0xcde2('0x3b')]]={'$like':'%'+_0x10151f['query'][_0xcde2('0x4a')]+'%'};return _0x56e1bf;}})});}_0x10b5d8=_['merge']({},_0x10b5d8,_0x10151f['options']);var _0x6ae87={'where':_0x10b5d8[_0xcde2('0x48')]};return db['ChatMessage'][_0xcde2('0x2e')](_0x6ae87)[_0xcde2('0x1e')](function(_0x3a0c81){_0x3e4bbf[_0xcde2('0x2e')]=_0x3a0c81;if(_0x10151f[_0xcde2('0x3f')][_0xcde2('0x4d')]){_0x10b5d8[_0xcde2('0x4e')]=[{'all':!![]}];}return db[_0xcde2('0x4f')][_0xcde2('0x50')](_0x10b5d8);})[_0xcde2('0x1e')](function(_0x1af7c6){_0x3e4bbf[_0xcde2('0x51')]=_0x1af7c6;return _0x3e4bbf;})[_0xcde2('0x1e')](respondWithFilteredResult(_0x379e63,_0x10b5d8))[_0xcde2('0x29')](handleError(_0x379e63,null));};exports['show']=function(_0x35366f,_0x2f233a){var _0x4f4e4a={'raw':!![],'where':{'id':_0x35366f['params']['id']}},_0xd40d3a={};_0xd40d3a[_0xcde2('0x39')]=_[_0xcde2('0x3c')](db[_0xcde2('0x4f')]['rawAttributes']);_0xd40d3a[_0xcde2('0x3f')]=_[_0xcde2('0x3c')](_0x35366f[_0xcde2('0x3f')]);_0xd40d3a['filters']=_[_0xcde2('0x3e')](_0xd40d3a[_0xcde2('0x39')],_0xd40d3a[_0xcde2('0x3f')]);_0x4f4e4a[_0xcde2('0x41')]=_['intersection'](_0xd40d3a[_0xcde2('0x39')],qs['fields'](_0x35366f['query'][_0xcde2('0x40')]));_0x4f4e4a[_0xcde2('0x41')]=_0x4f4e4a[_0xcde2('0x41')][_0xcde2('0x42')]?_0x4f4e4a[_0xcde2('0x41')]:_0xd40d3a['model'];if(_0x35366f[_0xcde2('0x3f')][_0xcde2('0x4d')]){_0x4f4e4a[_0xcde2('0x4e')]=[{'all':!![]}];}_0x4f4e4a=_[_0xcde2('0x4b')]({},_0x4f4e4a,_0x35366f['options']);return db['ChatMessage'][_0xcde2('0x52')](_0x4f4e4a)[_0xcde2('0x1e')](handleEntityNotFound(_0x2f233a,null))[_0xcde2('0x1e')](respondWithResult(_0x2f233a,null))[_0xcde2('0x29')](handleError(_0x2f233a,null));};exports['create']=function(_0x4e87e0,_0x3b4166){return db[_0xcde2('0x4f')]['create'](_0x4e87e0[_0xcde2('0x53')],{})[_0xcde2('0x1e')](respondWithResult(_0x3b4166,0xc9))[_0xcde2('0x29')](handleError(_0x3b4166,null));};exports['update']=function(_0x33fed4,_0x3aeae6){if(_0x33fed4[_0xcde2('0x53')]['id']){delete _0x33fed4[_0xcde2('0x53')]['id'];}return db[_0xcde2('0x4f')][_0xcde2('0x52')]({'where':{'id':_0x33fed4[_0xcde2('0x54')]['id']}})[_0xcde2('0x1e')](handleEntityNotFound(_0x3aeae6,null))[_0xcde2('0x1e')](saveUpdates(_0x33fed4[_0xcde2('0x53')],null))[_0xcde2('0x1e')](respondWithResult(_0x3aeae6,null))[_0xcde2('0x29')](handleError(_0x3aeae6,null));};exports[_0xcde2('0x33')]=function(_0x494236,_0x35f1af){return db[_0xcde2('0x4f')]['find']({'where':{'id':_0x494236[_0xcde2('0x54')]['id']}})[_0xcde2('0x1e')](handleEntityNotFound(_0x35f1af,null))['then'](removeEntity(_0x35f1af,null))[_0xcde2('0x29')](handleError(_0x35f1af,null));};exports[_0xcde2('0x55')]=function(_0x1ddc2f,_0x5b1e61){return db['ChatMessage'][_0xcde2('0x55')]()[_0xcde2('0x1e')](respondWithResult(_0x5b1e61,null))[_0xcde2('0x29')](handleError(_0x5b1e61,null));};var interaction_log=require('../../config/logger')(_0xcde2('0x56'));exports['accept']=function(_0x394738,_0x391b02,_0x3f624c){var _0x3cd16f={'agent':{},'channel':'chat'};if(_0x394738[_0xcde2('0x53')]['id']){delete _0x394738['body']['id'];}_0x394738[_0xcde2('0x53')][_0xcde2('0x57')]=!![];_0x394738['body'][_0xcde2('0x58')]=moment()[_0xcde2('0x59')](_0xcde2('0x5a'));_0x394738['body']['UserId']=_0x394738[_0xcde2('0x53')][_0xcde2('0x5b')]||_0x394738['user']['id'];_0x3cd16f['agent']['id']=_0x394738['body']['UserId'];return db[_0xcde2('0x4f')]['find']({'where':{'id':_0x394738[_0xcde2('0x54')]['id'],'UserId':null},'include':[{'model':db['CmContact'],'as':_0xcde2('0x5c')}]})[_0xcde2('0x1e')](handleEntityNotFound(_0x391b02,null))['then'](saveUpdates(_0x394738[_0xcde2('0x53')],null))['then'](function(_0x3ccd4a){if(_0x3ccd4a){_0x3cd16f['message']=_0x3ccd4a[_0xcde2('0x5d')]({'plain':!![]});return db[_0xcde2('0x5e')]['find']({'where':{'id':_0x3ccd4a['ChatInteractionId']}});}return null;})[_0xcde2('0x1e')](handleEntityNotFound(_0x391b02,null))[_0xcde2('0x1e')](function(_0xbc3054){if(_0xbc3054){return _0xbc3054[_0xcde2('0x32')]({'UserId':_0x394738[_0xcde2('0x53')]['UserId'],'read1stAt':_[_0xcde2('0x5f')](_0xbc3054[_0xcde2('0x60')])?moment()[_0xcde2('0x59')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x9e6db5){if(_0x9e6db5){_0x3cd16f[_0xcde2('0x61')]=_0x9e6db5[_0xcde2('0x5d')]({'plain':!![]});interaction_log['info'](_0xcde2('0x62'),_0x394738['user']['id'],_0x394738[_0xcde2('0x63')]['name'],_0x394738[_0xcde2('0x63')][_0xcde2('0x64')],_0x3cd16f[_0xcde2('0x61')]['id'],_0x394738[_0xcde2('0x53')]?JSON[_0xcde2('0x24')](_0x394738[_0xcde2('0x53')]):_0xcde2('0x65'));return respondWithRpcPromise(_0xcde2('0x66'),_0xcde2('0x67'),_0x3cd16f);}return null;})[_0xcde2('0x1e')](function(_0x991d9c){if(_0x991d9c){if(_0x394738['body']['manual']){_0x3cd16f[_0xcde2('0x27')][_0xcde2('0x68')]=util[_0xcde2('0x59')]('SIP/%s',_0x394738['user'][_0xcde2('0x3b')]);_0x3cd16f[_0xcde2('0x27')]['channel']=_0x3cd16f['channel'];_0x3cd16f[_0xcde2('0x27')]['event']=_0xcde2('0x69');return respondWithRpcPromise('EventManager',_0xcde2('0x6a'),{'event':_0xcde2('0x6b'),'message':_[_0xcde2('0x4b')](_0x3cd16f[_0xcde2('0x27')],JSON[_0xcde2('0x6c')](_0x3cd16f['interaction'][_0xcde2('0x6d')]))},client9002)[_0xcde2('0x1e')](function(){return _0x3cd16f;});}return _0x3cd16f;}return null;})[_0xcde2('0x1e')](respondWithResult(_0x391b02,null))[_0xcde2('0x29')](handleError(_0x391b02,null));};var interaction_log=require(_0xcde2('0x11'))(_0xcde2('0x56'));exports[_0xcde2('0x6e')]=function(_0x4ce278,_0x19043d,_0x28e64c){var _0x59c1fe={'agent':{},'channel':_0xcde2('0x6f')};if(_0x4ce278[_0xcde2('0x53')]['id']){delete _0x4ce278[_0xcde2('0x53')]['id'];}_0x4ce278[_0xcde2('0x53')][_0xcde2('0x5b')]=_0x4ce278[_0xcde2('0x53')][_0xcde2('0x5b')]||_0x4ce278[_0xcde2('0x63')]['id'];_0x59c1fe['agent']['id']=_0x4ce278['body'][_0xcde2('0x5b')];return db[_0xcde2('0x4f')][_0xcde2('0x52')]({'where':{'id':_0x4ce278[_0xcde2('0x54')]['id'],'UserId':null}})[_0xcde2('0x1e')](handleEntityNotFound(_0x19043d,null))['then'](function(_0x596274){if(_0x596274){_0x59c1fe[_0xcde2('0x27')]=_0x596274['get']({'plain':!![]});return db[_0xcde2('0x5e')][_0xcde2('0x52')]({'where':{'id':_0x596274[_0xcde2('0x70')]}});}return null;})[_0xcde2('0x1e')](handleEntityNotFound(_0x19043d,null))['then'](function(_0x1c0074){if(_0x1c0074){_0x59c1fe[_0xcde2('0x61')]=_0x1c0074['get']({'plain':!![]});interaction_log['info'](_0xcde2('0x71'),_0x4ce278[_0xcde2('0x63')]['id'],_0x4ce278[_0xcde2('0x63')][_0xcde2('0x3b')],_0x4ce278[_0xcde2('0x63')][_0xcde2('0x64')],_0x59c1fe[_0xcde2('0x61')]['id'],_0x4ce278['body']?JSON[_0xcde2('0x24')](_0x4ce278[_0xcde2('0x53')]):'null');return respondWithRpcPromise(_0xcde2('0x72'),_0xcde2('0x73'),_0x59c1fe);}return null;})[_0xcde2('0x1e')](function(_0x3cca24){if(_0x3cca24){_0x3cca24[_0xcde2('0x27')][_0xcde2('0x68')]=util[_0xcde2('0x59')]('SIP/%s',_0x4ce278['user']['name']);_0x3cca24[_0xcde2('0x27')][_0xcde2('0x74')]=_0x59c1fe['channel'];_0x3cca24[_0xcde2('0x27')][_0xcde2('0x75')]=_0xcde2('0x6e');respondWithRpcPromise('EventManager',_0xcde2('0x6a'),{'event':_0xcde2('0x76'),'message':_0x3cca24[_0xcde2('0x27')]},client9002);return _0x59c1fe;}return null;})['then'](respondWithResult(_0x19043d,null))[_0xcde2('0x29')](handleError(_0x19043d,null));};