Built motion from commit (unavailable).|2.5.30
[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 _0x5fa4=['localhost','socket.io-emitter','./chatMessage.socket','jayson/promise','client','http','request','then','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','ChatMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','apply','save','update','name','index','map','ChatMessage','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','where','includeAll','findAll','rows','show','params','include','options','create','body','find','destroy','describe','chat-interactions','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','CmContact','get','ChatInteraction','ChatInteractionId','isNil','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','manual','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','reject','agent','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','rejectmessage','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults'];(function(_0x49d931,_0x121258){var _0x491a2a=function(_0x338d50){while(--_0x338d50){_0x49d931['push'](_0x49d931['shift']());}};_0x491a2a(++_0x121258);}(_0x5fa4,0x1cb));var _0x45fa=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x5fa4[_0xbca1b1];return _0x4e1686;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x45fa('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x45fa('0x1'));var rp=require(_0x45fa('0x2'));var moment=require(_0x45fa('0x3'));var BPromise=require(_0x45fa('0x4'));var Mustache=require(_0x45fa('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x45fa('0x6'));var ejs=require(_0x45fa('0x7'));var fs=require('fs');var fs_extra=require(_0x45fa('0x8'));var _=require('lodash');var squel=require(_0x45fa('0x9'));var crypto=require(_0x45fa('0xa'));var jsforce=require(_0x45fa('0xb'));var deskjs=require(_0x45fa('0xc'));var toCsv=require(_0x45fa('0x6'));var querystring=require(_0x45fa('0xd'));var Papa=require('papaparse');var Redis=require(_0x45fa('0xe'));var authService=require(_0x45fa('0xf'));var qs=require(_0x45fa('0x10'));var as=require(_0x45fa('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x45fa('0x12'))(_0x45fa('0x13'));var utils=require(_0x45fa('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x45fa('0x15'));var db=require(_0x45fa('0x16'))['db'];config[_0x45fa('0x17')]=_[_0x45fa('0x18')](config[_0x45fa('0x17')],{'host':_0x45fa('0x19'),'port':0x18eb});var socket=require(_0x45fa('0x1a'))(new Redis(config[_0x45fa('0x17')]));require(_0x45fa('0x1b'))['register'](socket);var jayson=require(_0x45fa('0x1c'));var client=jayson[_0x45fa('0x1d')][_0x45fa('0x1e')]({'port':0x232c});var client9002=jayson[_0x45fa('0x1d')][_0x45fa('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x553838,_0x1c7b22,_0x144013,_0x5e0565){return new BPromise(function(_0x2a13a2,_0x1dfe43){var _0x3e1b37=_0x5e0565||client;return _0x3e1b37[_0x45fa('0x1f')](_0x553838,_0x144013)[_0x45fa('0x20')](function(_0x3d5ee0){logger['info']('ChatMessage,\x20%s,\x20%s',_0x1c7b22,_0x45fa('0x21'));logger[_0x45fa('0x22')](_0x45fa('0x23'),_0x1c7b22,_0x45fa('0x21'),JSON[_0x45fa('0x24')](_0x3d5ee0));if(_0x3d5ee0[_0x45fa('0x25')]){if(_0x3d5ee0['error']['code']===0x1f4){logger[_0x45fa('0x25')](_0x45fa('0x26'),_0x1c7b22,_0x3d5ee0[_0x45fa('0x25')][_0x45fa('0x27')]);return _0x1dfe43(_0x3d5ee0[_0x45fa('0x25')]['message']);}logger[_0x45fa('0x25')]('ChatMessage,\x20%s,\x20%s',_0x1c7b22,_0x3d5ee0[_0x45fa('0x25')][_0x45fa('0x27')]);return _0x2a13a2(_0x3d5ee0[_0x45fa('0x25')][_0x45fa('0x27')]);}else{logger[_0x45fa('0x28')](_0x45fa('0x26'),_0x1c7b22,_0x45fa('0x21'));_0x2a13a2(_0x3d5ee0[_0x45fa('0x29')][_0x45fa('0x27')]);}})[_0x45fa('0x2a')](function(_0x467db7){logger[_0x45fa('0x25')](_0x45fa('0x26'),_0x1c7b22,_0x467db7);_0x1dfe43(_0x467db7);});});}function respondWithStatusCode(_0x402d23,_0xf6008b){_0xf6008b=_0xf6008b||0xcc;return function(_0x45895a){if(_0x45895a){return _0x402d23[_0x45fa('0x2b')](_0xf6008b);}return _0x402d23['status'](_0xf6008b)['end']();};}function respondWithResult(_0x5804b0,_0x252520){_0x252520=_0x252520||0xc8;return function(_0x48d46b){if(_0x48d46b){return _0x5804b0[_0x45fa('0x2c')](_0x252520)[_0x45fa('0x2d')](_0x48d46b);}};}function respondWithFilteredResult(_0xa65a0a,_0x285d47){return function(_0x3c840f){if(_0x3c840f){var _0x2c8e85=typeof _0x285d47[_0x45fa('0x2e')]===_0x45fa('0x2f')&&typeof _0x285d47[_0x45fa('0x30')]==='undefined';var _0x28fc91=_0x3c840f[_0x45fa('0x31')];var _0x42b0f3=_0x2c8e85?0x0:_0x285d47[_0x45fa('0x2e')];var _0x119f09=_0x2c8e85?_0x3c840f[_0x45fa('0x31')]:_0x285d47[_0x45fa('0x2e')]+_0x285d47[_0x45fa('0x30')];var _0x2d2274;if(_0x119f09>=_0x28fc91){_0x119f09=_0x28fc91;_0x2d2274=0xc8;}else{_0x2d2274=0xce;}_0xa65a0a[_0x45fa('0x2c')](_0x2d2274);return _0xa65a0a[_0x45fa('0x32')]('Content-Range',_0x42b0f3+'-'+_0x119f09+'/'+_0x28fc91)['json'](_0x3c840f);}return null;};}function patchUpdates(_0x5b867b){return function(_0x30b897){try{jsonpatch[_0x45fa('0x33')](_0x30b897,_0x5b867b,!![]);}catch(_0xbf391c){return BPromise['reject'](_0xbf391c);}return _0x30b897[_0x45fa('0x34')]();};}function saveUpdates(_0x55b5fc,_0x14a9f9){return function(_0x2d8fcc){if(_0x2d8fcc){return _0x2d8fcc[_0x45fa('0x35')](_0x55b5fc)[_0x45fa('0x20')](function(_0x2907ee){return _0x2907ee;});}return null;};}function removeEntity(_0x1c3dec,_0x5ea381){return function(_0x4e2e83){if(_0x4e2e83){return _0x4e2e83['destroy']()['then'](function(){_0x1c3dec[_0x45fa('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1fb3b8,_0x142f0b){return function(_0x242a8f){if(!_0x242a8f){_0x1fb3b8[_0x45fa('0x2b')](0x194);}return _0x242a8f;};}function handleError(_0x2645a8,_0x411419){_0x411419=_0x411419||0x1f4;return function(_0x3473fd){logger['error'](_0x3473fd['stack']);if(_0x3473fd[_0x45fa('0x36')]){delete _0x3473fd['name'];}_0x2645a8[_0x45fa('0x2c')](_0x411419)['send'](_0x3473fd);};}exports[_0x45fa('0x37')]=function(_0x48d73c,_0x3bdd3b){var _0x37a3e2={},_0x4a410c={},_0x1ea13f={'count':0x0,'rows':[]};var _0x4a58f8=_[_0x45fa('0x38')](db[_0x45fa('0x39')][_0x45fa('0x3a')],function(_0x35670b){return{'name':_0x35670b[_0x45fa('0x3b')],'type':_0x35670b[_0x45fa('0x3c')][_0x45fa('0x3d')]};});_0x4a410c[_0x45fa('0x3e')]=_[_0x45fa('0x38')](_0x4a58f8,_0x45fa('0x36'));_0x4a410c[_0x45fa('0x3f')]=_[_0x45fa('0x40')](_0x48d73c[_0x45fa('0x3f')]);_0x4a410c['filters']=_[_0x45fa('0x41')](_0x4a410c['model'],_0x4a410c[_0x45fa('0x3f')]);_0x37a3e2[_0x45fa('0x42')]=_[_0x45fa('0x41')](_0x4a410c[_0x45fa('0x3e')],qs[_0x45fa('0x43')](_0x48d73c['query'][_0x45fa('0x43')]));_0x37a3e2[_0x45fa('0x42')]=_0x37a3e2[_0x45fa('0x42')]['length']?_0x37a3e2[_0x45fa('0x42')]:_0x4a410c['model'];if(!_0x48d73c['query'][_0x45fa('0x44')](_0x45fa('0x45'))){_0x37a3e2['limit']=qs[_0x45fa('0x30')](_0x48d73c[_0x45fa('0x3f')][_0x45fa('0x30')]);_0x37a3e2[_0x45fa('0x2e')]=qs[_0x45fa('0x2e')](_0x48d73c[_0x45fa('0x3f')][_0x45fa('0x2e')]);}_0x37a3e2[_0x45fa('0x46')]=qs['sort'](_0x48d73c[_0x45fa('0x3f')][_0x45fa('0x47')]);_0x37a3e2['where']=qs[_0x45fa('0x48')](_[_0x45fa('0x49')](_0x48d73c[_0x45fa('0x3f')],_0x4a410c['filters']),_0x4a58f8);if(_0x48d73c[_0x45fa('0x3f')][_0x45fa('0x4a')]){_0x37a3e2['where']=_[_0x45fa('0x4b')](_0x37a3e2[_0x45fa('0x4c')],{'$or':_[_0x45fa('0x38')](_0x4a58f8,function(_0x621498){if(_0x621498[_0x45fa('0x3c')]!=='VIRTUAL'){var _0x35eb78={};_0x35eb78[_0x621498['name']]={'$like':'%'+_0x48d73c[_0x45fa('0x3f')][_0x45fa('0x4a')]+'%'};return _0x35eb78;}})});}_0x37a3e2=_['merge']({},_0x37a3e2,_0x48d73c['options']);var _0x570809={'where':_0x37a3e2[_0x45fa('0x4c')]};return db[_0x45fa('0x39')]['count'](_0x570809)[_0x45fa('0x20')](function(_0x1133d2){_0x1ea13f['count']=_0x1133d2;if(_0x48d73c[_0x45fa('0x3f')][_0x45fa('0x4d')]){_0x37a3e2['include']=[{'all':!![]}];}return db[_0x45fa('0x39')][_0x45fa('0x4e')](_0x37a3e2);})[_0x45fa('0x20')](function(_0x40e132){_0x1ea13f[_0x45fa('0x4f')]=_0x40e132;return _0x1ea13f;})[_0x45fa('0x20')](respondWithFilteredResult(_0x3bdd3b,_0x37a3e2))['catch'](handleError(_0x3bdd3b,null));};exports[_0x45fa('0x50')]=function(_0x45037a,_0x134102){var _0x32d6f9={'raw':!![],'where':{'id':_0x45037a[_0x45fa('0x51')]['id']}},_0x298e1d={};_0x298e1d[_0x45fa('0x3e')]=_[_0x45fa('0x40')](db[_0x45fa('0x39')][_0x45fa('0x3a')]);_0x298e1d[_0x45fa('0x3f')]=_[_0x45fa('0x40')](_0x45037a[_0x45fa('0x3f')]);_0x298e1d[_0x45fa('0x48')]=_[_0x45fa('0x41')](_0x298e1d[_0x45fa('0x3e')],_0x298e1d[_0x45fa('0x3f')]);_0x32d6f9[_0x45fa('0x42')]=_[_0x45fa('0x41')](_0x298e1d[_0x45fa('0x3e')],qs[_0x45fa('0x43')](_0x45037a[_0x45fa('0x3f')]['fields']));_0x32d6f9[_0x45fa('0x42')]=_0x32d6f9[_0x45fa('0x42')]['length']?_0x32d6f9[_0x45fa('0x42')]:_0x298e1d['model'];if(_0x45037a[_0x45fa('0x3f')][_0x45fa('0x4d')]){_0x32d6f9[_0x45fa('0x52')]=[{'all':!![]}];}_0x32d6f9=_[_0x45fa('0x4b')]({},_0x32d6f9,_0x45037a[_0x45fa('0x53')]);return db[_0x45fa('0x39')]['find'](_0x32d6f9)[_0x45fa('0x20')](handleEntityNotFound(_0x134102,null))[_0x45fa('0x20')](respondWithResult(_0x134102,null))['catch'](handleError(_0x134102,null));};exports[_0x45fa('0x54')]=function(_0x1790e9,_0x47e232){return db[_0x45fa('0x39')][_0x45fa('0x54')](_0x1790e9[_0x45fa('0x55')],{})[_0x45fa('0x20')](respondWithResult(_0x47e232,0xc9))[_0x45fa('0x2a')](handleError(_0x47e232,null));};exports[_0x45fa('0x35')]=function(_0xee8a2e,_0x6f237c){if(_0xee8a2e[_0x45fa('0x55')]['id']){delete _0xee8a2e[_0x45fa('0x55')]['id'];}return db[_0x45fa('0x39')][_0x45fa('0x56')]({'where':{'id':_0xee8a2e[_0x45fa('0x51')]['id']}})[_0x45fa('0x20')](handleEntityNotFound(_0x6f237c,null))[_0x45fa('0x20')](saveUpdates(_0xee8a2e[_0x45fa('0x55')],null))['then'](respondWithResult(_0x6f237c,null))[_0x45fa('0x2a')](handleError(_0x6f237c,null));};exports[_0x45fa('0x57')]=function(_0x9cca9a,_0x3da51a){return db['ChatMessage'][_0x45fa('0x56')]({'where':{'id':_0x9cca9a[_0x45fa('0x51')]['id']}})[_0x45fa('0x20')](handleEntityNotFound(_0x3da51a,null))[_0x45fa('0x20')](removeEntity(_0x3da51a,null))[_0x45fa('0x2a')](handleError(_0x3da51a,null));};exports[_0x45fa('0x58')]=function(_0x279b7b,_0x3292a5){return db[_0x45fa('0x39')][_0x45fa('0x58')]()[_0x45fa('0x20')](respondWithResult(_0x3292a5,null))[_0x45fa('0x2a')](handleError(_0x3292a5,null));};var interaction_log=require('../../config/logger')(_0x45fa('0x59'));exports['accept']=function(_0x203668,_0xad3c8d,_0x101161){var _0x12845c={'agent':{},'channel':_0x45fa('0x5a')};if(_0x203668[_0x45fa('0x55')]['id']){delete _0x203668['body']['id'];}_0x203668['body'][_0x45fa('0x5b')]=!![];_0x203668['body'][_0x45fa('0x5c')]=moment()[_0x45fa('0x5d')](_0x45fa('0x5e'));_0x203668[_0x45fa('0x55')]['UserId']=_0x203668[_0x45fa('0x55')][_0x45fa('0x5f')]||_0x203668[_0x45fa('0x60')]['id'];_0x12845c['agent']['id']=_0x203668[_0x45fa('0x55')][_0x45fa('0x5f')];return db['ChatMessage'][_0x45fa('0x56')]({'where':{'id':_0x203668['params']['id'],'UserId':null},'include':[{'model':db[_0x45fa('0x61')],'as':'Contact'}]})[_0x45fa('0x20')](handleEntityNotFound(_0xad3c8d,null))[_0x45fa('0x20')](saveUpdates(_0x203668[_0x45fa('0x55')],null))[_0x45fa('0x20')](function(_0x305432){if(_0x305432){_0x12845c[_0x45fa('0x27')]=_0x305432[_0x45fa('0x62')]({'plain':!![]});return db[_0x45fa('0x63')][_0x45fa('0x56')]({'where':{'id':_0x305432[_0x45fa('0x64')]}});}return null;})[_0x45fa('0x20')](handleEntityNotFound(_0xad3c8d,null))[_0x45fa('0x20')](function(_0x599fcb){if(_0x599fcb){return _0x599fcb[_0x45fa('0x35')]({'UserId':_0x203668[_0x45fa('0x55')]['UserId'],'read1stAt':_[_0x45fa('0x65')](_0x599fcb['read1stAt'])?moment()[_0x45fa('0x5d')](_0x45fa('0x5e')):undefined});}return null;})[_0x45fa('0x20')](function(_0x45c6b0){if(_0x45c6b0){_0x12845c[_0x45fa('0x66')]=_0x45c6b0[_0x45fa('0x62')]({'plain':!![]});interaction_log[_0x45fa('0x28')](_0x45fa('0x67'),_0x203668[_0x45fa('0x60')]['id'],_0x203668[_0x45fa('0x60')]['name'],_0x203668[_0x45fa('0x60')][_0x45fa('0x68')],_0x12845c[_0x45fa('0x66')]['id'],_0x203668['body']?JSON['stringify'](_0x203668[_0x45fa('0x55')]):_0x45fa('0x69'));return respondWithRpcPromise('AcceptMessage',_0x45fa('0x6a'),_0x12845c);}return null;})[_0x45fa('0x20')](function(_0x594bc3){if(_0x594bc3){if(_0x203668[_0x45fa('0x55')][_0x45fa('0x6b')]){_0x12845c[_0x45fa('0x27')][_0x45fa('0x6c')]=util[_0x45fa('0x5d')](_0x45fa('0x6d'),_0x203668[_0x45fa('0x60')][_0x45fa('0x36')]);_0x12845c[_0x45fa('0x27')][_0x45fa('0x6e')]=_0x12845c[_0x45fa('0x6e')];_0x12845c[_0x45fa('0x27')][_0x45fa('0x6f')]=_0x45fa('0x70');return respondWithRpcPromise(_0x45fa('0x71'),_0x45fa('0x71'),{'event':_0x45fa('0x72'),'message':_['merge'](_0x12845c[_0x45fa('0x27')],JSON['parse'](_0x12845c['interaction']['formData']))},client9002)[_0x45fa('0x20')](function(){return _0x12845c;});}return _0x12845c;}return null;})['then'](respondWithResult(_0xad3c8d,null))[_0x45fa('0x2a')](handleError(_0xad3c8d,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports[_0x45fa('0x73')]=function(_0x4dcdbb,_0x5ed2d1,_0x5957b3){var _0x4c2579={'agent':{},'channel':_0x45fa('0x5a')};if(_0x4dcdbb[_0x45fa('0x55')]['id']){delete _0x4dcdbb[_0x45fa('0x55')]['id'];}_0x4dcdbb['body'][_0x45fa('0x5f')]=_0x4dcdbb['body'][_0x45fa('0x5f')]||_0x4dcdbb[_0x45fa('0x60')]['id'];_0x4c2579[_0x45fa('0x74')]['id']=_0x4dcdbb[_0x45fa('0x55')][_0x45fa('0x5f')];return db[_0x45fa('0x39')][_0x45fa('0x56')]({'where':{'id':_0x4dcdbb[_0x45fa('0x51')]['id'],'UserId':null}})[_0x45fa('0x20')](handleEntityNotFound(_0x5ed2d1,null))[_0x45fa('0x20')](function(_0x4b9e14){if(_0x4b9e14){_0x4c2579['message']=_0x4b9e14['get']({'plain':!![]});return db[_0x45fa('0x63')][_0x45fa('0x56')]({'where':{'id':_0x4b9e14['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x5ed2d1,null))[_0x45fa('0x20')](function(_0x162486){if(_0x162486){_0x4c2579[_0x45fa('0x66')]=_0x162486[_0x45fa('0x62')]({'plain':!![]});interaction_log[_0x45fa('0x28')](_0x45fa('0x75'),_0x4dcdbb[_0x45fa('0x60')]['id'],_0x4dcdbb[_0x45fa('0x60')][_0x45fa('0x36')],_0x4dcdbb['user']['role'],_0x4c2579['interaction']['id'],_0x4dcdbb[_0x45fa('0x55')]?JSON['stringify'](_0x4dcdbb[_0x45fa('0x55')]):_0x45fa('0x69'));return respondWithRpcPromise(_0x45fa('0x76'),_0x45fa('0x77'),_0x4c2579);}return null;})[_0x45fa('0x20')](function(_0x1eb1ea){if(_0x1eb1ea){_0x1eb1ea[_0x45fa('0x27')]['interface']=util[_0x45fa('0x5d')](_0x45fa('0x6d'),_0x4dcdbb[_0x45fa('0x60')][_0x45fa('0x36')]);_0x1eb1ea['message']['channel']=_0x4c2579[_0x45fa('0x6e')];_0x1eb1ea['message'][_0x45fa('0x6f')]=_0x45fa('0x73');respondWithRpcPromise(_0x45fa('0x71'),_0x45fa('0x71'),{'event':_0x45fa('0x78'),'message':_0x1eb1ea[_0x45fa('0x27')]},client9002);return _0x4c2579;}return null;})[_0x45fa('0x20')](respondWithResult(_0x5ed2d1,null))['catch'](handleError(_0x5ed2d1,null));};