Built motion from commit (unavailable).|2.5.11
[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 _0x5d84=['map','ChatMessage','rawAttributes','fieldName','type','model','name','query','filters','intersection','fields','attributes','length','hasOwnProperty','offset','order','sort','where','pick','filter','merge','includeAll','findAll','rows','show','params','keys','include','options','find','create','body','update','destroy','chat','read','readAt','format','UserId','user','CmContact','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','role','null','AcceptMessage','acceptMessage','manual','interface','SIP/%s','channel','event','accept','EventManager','parse','formData','chat-interactions','agent','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./chatMessage.socket','client','http','request','request\x20sent','debug','stringify','error','ChatMessage,\x20%s,\x20%s','message','info','catch','sendStatus','status','json','count','limit','set','Content-Range','apply','reject','then','end','stack','send','index'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0x5d84,0x1ad));var _0x45d8=function(_0x3c5e1d,_0x713313){_0x3c5e1d=_0x3c5e1d-0x0;var _0x1bd0ed=_0x5d84[_0x3c5e1d];return _0x1bd0ed;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x45d8('0x0'));var rimraf=require(_0x45d8('0x1'));var zipdir=require(_0x45d8('0x2'));var jsonpatch=require(_0x45d8('0x3'));var rp=require(_0x45d8('0x4'));var moment=require(_0x45d8('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x45d8('0x6'));var sox=require(_0x45d8('0x7'));var csv=require(_0x45d8('0x8'));var ejs=require(_0x45d8('0x9'));var fs=require('fs');var _=require(_0x45d8('0xa'));var squel=require(_0x45d8('0xb'));var crypto=require(_0x45d8('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x45d8('0xd'));var toCsv=require(_0x45d8('0x8'));var querystring=require(_0x45d8('0xe'));var Papa=require('papaparse');var Redis=require(_0x45d8('0xf'));var authService=require(_0x45d8('0x10'));var qs=require(_0x45d8('0x11'));var as=require(_0x45d8('0x12'));var hardwareService=require(_0x45d8('0x13'));var logger=require(_0x45d8('0x14'))(_0x45d8('0x15'));var utils=require('../../config/utils');var config=require(_0x45d8('0x16'));var licenseUtil=require(_0x45d8('0x17'));var db=require(_0x45d8('0x18'))['db'];config['redis']=_[_0x45d8('0x19')](config['redis'],{'host':_0x45d8('0x1a'),'port':0x18eb});var socket=require(_0x45d8('0x1b'))(new Redis(config[_0x45d8('0x1c')]));require(_0x45d8('0x1d'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x45d8('0x1e')][_0x45d8('0x1f')]({'port':0x232c});var client9002=jayson[_0x45d8('0x1e')][_0x45d8('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x1ca540,_0x1b32fc,_0x3f5e9a,_0x226a38){return new BPromise(function(_0x48c667,_0x5d310b){var _0x424357=_0x226a38||client;return _0x424357[_0x45d8('0x20')](_0x1ca540,_0x3f5e9a)['then'](function(_0x5301ec){logger['info']('ChatMessage,\x20%s,\x20%s',_0x1b32fc,_0x45d8('0x21'));logger[_0x45d8('0x22')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x1b32fc,_0x45d8('0x21'),JSON[_0x45d8('0x23')](_0x5301ec));if(_0x5301ec[_0x45d8('0x24')]){if(_0x5301ec[_0x45d8('0x24')]['code']===0x1f4){logger['error'](_0x45d8('0x25'),_0x1b32fc,_0x5301ec[_0x45d8('0x24')][_0x45d8('0x26')]);return _0x5d310b(_0x5301ec['error']['message']);}logger[_0x45d8('0x24')](_0x45d8('0x25'),_0x1b32fc,_0x5301ec[_0x45d8('0x24')][_0x45d8('0x26')]);return _0x48c667(_0x5301ec[_0x45d8('0x24')][_0x45d8('0x26')]);}else{logger[_0x45d8('0x27')]('ChatMessage,\x20%s,\x20%s',_0x1b32fc,_0x45d8('0x21'));_0x48c667(_0x5301ec['result'][_0x45d8('0x26')]);}})[_0x45d8('0x28')](function(_0x245754){logger[_0x45d8('0x24')]('ChatMessage,\x20%s,\x20%s',_0x1b32fc,_0x245754);_0x5d310b(_0x245754);});});}function respondWithStatusCode(_0x82037d,_0x34c011){_0x34c011=_0x34c011||0xcc;return function(_0x2d439f){if(_0x2d439f){return _0x82037d[_0x45d8('0x29')](_0x34c011);}return _0x82037d[_0x45d8('0x2a')](_0x34c011)['end']();};}function respondWithResult(_0x1f5f3a,_0x62fbba){_0x62fbba=_0x62fbba||0xc8;return function(_0x3e92bd){if(_0x3e92bd){return _0x1f5f3a[_0x45d8('0x2a')](_0x62fbba)[_0x45d8('0x2b')](_0x3e92bd);}};}function respondWithFilteredResult(_0x3c9683,_0x455164){return function(_0x1213f1){if(_0x1213f1){var _0x312267=_0x1213f1[_0x45d8('0x2c')],_0x4e3c0f=_0x455164['offset'],_0x2edb11=_0x455164['offset']+_0x455164[_0x45d8('0x2d')],_0x57a9e8;if(_0x2edb11>=_0x312267){_0x2edb11=_0x312267;_0x57a9e8=0xc8;}else{_0x57a9e8=0xce;}_0x3c9683[_0x45d8('0x2a')](_0x57a9e8);return _0x3c9683[_0x45d8('0x2e')](_0x45d8('0x2f'),_0x4e3c0f+'-'+_0x2edb11+'/'+_0x312267)[_0x45d8('0x2b')](_0x1213f1);}return null;};}function patchUpdates(_0x362b8c){return function(_0x4c65d8){try{jsonpatch[_0x45d8('0x30')](_0x4c65d8,_0x362b8c,!![]);}catch(_0x8de9b8){return BPromise[_0x45d8('0x31')](_0x8de9b8);}return _0x4c65d8['save']();};}function saveUpdates(_0x1e2156,_0xee4d10){return function(_0x308883){if(_0x308883){return _0x308883['update'](_0x1e2156)[_0x45d8('0x32')](function(_0x2d207c){return _0x2d207c;});}return null;};}function removeEntity(_0x9f6d4f,_0x59e3ba){return function(_0x5726a3){if(_0x5726a3){return _0x5726a3['destroy']()[_0x45d8('0x32')](function(){_0x9f6d4f[_0x45d8('0x2a')](0xcc)[_0x45d8('0x33')]();});}};}function handleEntityNotFound(_0x4feaa3,_0x35641c){return function(_0x6356c9){if(!_0x6356c9){_0x4feaa3[_0x45d8('0x29')](0x194);}return _0x6356c9;};}function handleError(_0x4157df,_0x1805f5){_0x1805f5=_0x1805f5||0x1f4;return function(_0x3c9cef){logger[_0x45d8('0x24')](_0x3c9cef[_0x45d8('0x34')]);if(_0x3c9cef['name']){delete _0x3c9cef['name'];}_0x4157df[_0x45d8('0x2a')](_0x1805f5)[_0x45d8('0x35')](_0x3c9cef);};}exports[_0x45d8('0x36')]=function(_0x467859,_0x34e996){var _0x2257fa={},_0x207b5f={},_0x4313b2={'count':0x0,'rows':[]};var _0x41b716=_[_0x45d8('0x37')](db[_0x45d8('0x38')][_0x45d8('0x39')],function(_0x56aaaa){return{'name':_0x56aaaa[_0x45d8('0x3a')],'type':_0x56aaaa[_0x45d8('0x3b')]['key']};});_0x207b5f[_0x45d8('0x3c')]=_[_0x45d8('0x37')](_0x41b716,_0x45d8('0x3d'));_0x207b5f[_0x45d8('0x3e')]=_['keys'](_0x467859[_0x45d8('0x3e')]);_0x207b5f[_0x45d8('0x3f')]=_[_0x45d8('0x40')](_0x207b5f[_0x45d8('0x3c')],_0x207b5f[_0x45d8('0x3e')]);_0x2257fa['attributes']=_[_0x45d8('0x40')](_0x207b5f[_0x45d8('0x3c')],qs['fields'](_0x467859[_0x45d8('0x3e')][_0x45d8('0x41')]));_0x2257fa[_0x45d8('0x42')]=_0x2257fa['attributes'][_0x45d8('0x43')]?_0x2257fa['attributes']:_0x207b5f['model'];if(!_0x467859['query'][_0x45d8('0x44')]('nolimit')){_0x2257fa['limit']=qs[_0x45d8('0x2d')](_0x467859['query'][_0x45d8('0x2d')]);_0x2257fa['offset']=qs[_0x45d8('0x45')](_0x467859[_0x45d8('0x3e')][_0x45d8('0x45')]);}_0x2257fa[_0x45d8('0x46')]=qs[_0x45d8('0x47')](_0x467859[_0x45d8('0x3e')][_0x45d8('0x47')]);_0x2257fa[_0x45d8('0x48')]=qs[_0x45d8('0x3f')](_[_0x45d8('0x49')](_0x467859[_0x45d8('0x3e')],_0x207b5f[_0x45d8('0x3f')]),_0x41b716);if(_0x467859[_0x45d8('0x3e')][_0x45d8('0x4a')]){_0x2257fa[_0x45d8('0x48')]=_[_0x45d8('0x4b')](_0x2257fa['where'],{'$or':_[_0x45d8('0x37')](_0x41b716,function(_0x2f373d){if(_0x2f373d[_0x45d8('0x3b')]!=='VIRTUAL'){var _0x126c01={};_0x126c01[_0x2f373d[_0x45d8('0x3d')]]={'$like':'%'+_0x467859[_0x45d8('0x3e')]['filter']+'%'};return _0x126c01;}})});}_0x2257fa=_[_0x45d8('0x4b')]({},_0x2257fa,_0x467859['options']);var _0x19b353={'where':_0x2257fa[_0x45d8('0x48')]};return db['ChatMessage']['count'](_0x19b353)[_0x45d8('0x32')](function(_0x49c977){_0x4313b2[_0x45d8('0x2c')]=_0x49c977;if(_0x467859[_0x45d8('0x3e')][_0x45d8('0x4c')]){_0x2257fa['include']=[{'all':!![]}];}return db[_0x45d8('0x38')][_0x45d8('0x4d')](_0x2257fa);})[_0x45d8('0x32')](function(_0x3dfb7f){_0x4313b2[_0x45d8('0x4e')]=_0x3dfb7f;return _0x4313b2;})[_0x45d8('0x32')](respondWithFilteredResult(_0x34e996,_0x2257fa))['catch'](handleError(_0x34e996,null));};exports[_0x45d8('0x4f')]=function(_0x4e2b82,_0x20af67){var _0x51dc1a={'raw':!![],'where':{'id':_0x4e2b82[_0x45d8('0x50')]['id']}},_0x322196={};_0x322196['model']=_[_0x45d8('0x51')](db[_0x45d8('0x38')][_0x45d8('0x39')]);_0x322196[_0x45d8('0x3e')]=_[_0x45d8('0x51')](_0x4e2b82[_0x45d8('0x3e')]);_0x322196[_0x45d8('0x3f')]=_[_0x45d8('0x40')](_0x322196[_0x45d8('0x3c')],_0x322196['query']);_0x51dc1a['attributes']=_[_0x45d8('0x40')](_0x322196[_0x45d8('0x3c')],qs[_0x45d8('0x41')](_0x4e2b82[_0x45d8('0x3e')][_0x45d8('0x41')]));_0x51dc1a[_0x45d8('0x42')]=_0x51dc1a['attributes'][_0x45d8('0x43')]?_0x51dc1a[_0x45d8('0x42')]:_0x322196[_0x45d8('0x3c')];if(_0x4e2b82['query'][_0x45d8('0x4c')]){_0x51dc1a[_0x45d8('0x52')]=[{'all':!![]}];}_0x51dc1a=_[_0x45d8('0x4b')]({},_0x51dc1a,_0x4e2b82[_0x45d8('0x53')]);return db['ChatMessage'][_0x45d8('0x54')](_0x51dc1a)['then'](handleEntityNotFound(_0x20af67,null))[_0x45d8('0x32')](respondWithResult(_0x20af67,null))[_0x45d8('0x28')](handleError(_0x20af67,null));};exports[_0x45d8('0x55')]=function(_0x5d8830,_0xdb4c){return db[_0x45d8('0x38')][_0x45d8('0x55')](_0x5d8830[_0x45d8('0x56')],{})[_0x45d8('0x32')](respondWithResult(_0xdb4c,0xc9))['catch'](handleError(_0xdb4c,null));};exports[_0x45d8('0x57')]=function(_0x255ce6,_0x325981){if(_0x255ce6['body']['id']){delete _0x255ce6[_0x45d8('0x56')]['id'];}return db[_0x45d8('0x38')][_0x45d8('0x54')]({'where':{'id':_0x255ce6[_0x45d8('0x50')]['id']}})[_0x45d8('0x32')](handleEntityNotFound(_0x325981,null))['then'](saveUpdates(_0x255ce6[_0x45d8('0x56')],null))[_0x45d8('0x32')](respondWithResult(_0x325981,null))[_0x45d8('0x28')](handleError(_0x325981,null));};exports[_0x45d8('0x58')]=function(_0xb4436f,_0x349796){return db[_0x45d8('0x38')][_0x45d8('0x54')]({'where':{'id':_0xb4436f[_0x45d8('0x50')]['id']}})['then'](handleEntityNotFound(_0x349796,null))[_0x45d8('0x32')](removeEntity(_0x349796,null))[_0x45d8('0x28')](handleError(_0x349796,null));};exports['describe']=function(_0x2c5be2,_0x118fd8){return db['ChatMessage']['describe']()[_0x45d8('0x32')](respondWithResult(_0x118fd8,null))[_0x45d8('0x28')](handleError(_0x118fd8,null));};var interaction_log=require(_0x45d8('0x14'))('chat-interactions');exports['accept']=function(_0x5583ab,_0x364955,_0x423af5){var _0x13fe48={'channel':_0x45d8('0x59')};if(_0x5583ab[_0x45d8('0x56')]['id']){delete _0x5583ab['body']['id'];}_0x5583ab[_0x45d8('0x56')][_0x45d8('0x5a')]=!![];_0x5583ab['body'][_0x45d8('0x5b')]=moment()[_0x45d8('0x5c')]('YYYY-MM-DD\x20HH:mm:ss');_0x5583ab[_0x45d8('0x56')]['UserId']=_0x5583ab[_0x45d8('0x56')][_0x45d8('0x5d')]||_0x5583ab[_0x45d8('0x5e')]['id'];return db['ChatMessage'][_0x45d8('0x54')]({'where':{'id':_0x5583ab['params']['id'],'UserId':null},'include':[{'model':db[_0x45d8('0x5f')],'as':'Contact'}]})[_0x45d8('0x32')](handleEntityNotFound(_0x364955,null))['then'](saveUpdates(_0x5583ab[_0x45d8('0x56')],null))[_0x45d8('0x32')](function(_0x4553c1){if(_0x4553c1){_0x13fe48[_0x45d8('0x26')]=_0x4553c1[_0x45d8('0x60')]({'plain':!![]});return db[_0x45d8('0x61')][_0x45d8('0x54')]({'where':{'id':_0x4553c1[_0x45d8('0x62')]}});}return null;})[_0x45d8('0x32')](handleEntityNotFound(_0x364955,null))[_0x45d8('0x32')](function(_0x1b7d32){if(_0x1b7d32){return _0x1b7d32['update']({'UserId':_0x5583ab[_0x45d8('0x56')][_0x45d8('0x5d')],'read1stAt':_[_0x45d8('0x63')](_0x1b7d32[_0x45d8('0x64')])?moment()[_0x45d8('0x5c')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x45d8('0x32')](function(_0x1bee78){if(_0x1bee78){_0x13fe48[_0x45d8('0x65')]=_0x1bee78['get']({'plain':!![]});interaction_log[_0x45d8('0x27')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5583ab[_0x45d8('0x5e')]['id'],_0x5583ab[_0x45d8('0x5e')][_0x45d8('0x3d')],_0x5583ab[_0x45d8('0x5e')][_0x45d8('0x66')],_0x13fe48[_0x45d8('0x65')]['id'],_0x5583ab['body']?JSON[_0x45d8('0x23')](_0x5583ab[_0x45d8('0x56')]):_0x45d8('0x67'));return respondWithRpcPromise(_0x45d8('0x68'),_0x45d8('0x69'),_0x13fe48);}return null;})[_0x45d8('0x32')](function(_0x3e43c3){if(_0x3e43c3){if(_0x5583ab['body'][_0x45d8('0x6a')]){_0x13fe48[_0x45d8('0x26')][_0x45d8('0x6b')]=util[_0x45d8('0x5c')](_0x45d8('0x6c'),_0x5583ab[_0x45d8('0x5e')][_0x45d8('0x3d')]);_0x13fe48[_0x45d8('0x26')][_0x45d8('0x6d')]=_0x13fe48[_0x45d8('0x6d')];_0x13fe48['message'][_0x45d8('0x6e')]=_0x45d8('0x6f');return respondWithRpcPromise(_0x45d8('0x70'),_0x45d8('0x70'),{'event':'acceptmessage','message':_['merge'](_0x13fe48['message'],JSON[_0x45d8('0x71')](_0x13fe48['interaction'][_0x45d8('0x72')]))},client9002)[_0x45d8('0x32')](function(){return _0x13fe48;});}return _0x13fe48;}return null;})[_0x45d8('0x32')](respondWithResult(_0x364955,null))[_0x45d8('0x28')](handleError(_0x364955,null));};var interaction_log=require(_0x45d8('0x14'))(_0x45d8('0x73'));exports[_0x45d8('0x31')]=function(_0xf44b75,_0x5b6e08,_0x502d2c){var _0x2ec559={'agent':{},'channel':_0x45d8('0x59')};if(_0xf44b75[_0x45d8('0x56')]['id']){delete _0xf44b75['body']['id'];}_0xf44b75[_0x45d8('0x56')]['UserId']=_0xf44b75[_0x45d8('0x56')][_0x45d8('0x5d')]||_0xf44b75['user']['id'];_0x2ec559[_0x45d8('0x74')]['id']=_0xf44b75[_0x45d8('0x56')]['UserId'];return db[_0x45d8('0x38')][_0x45d8('0x54')]({'where':{'id':_0xf44b75[_0x45d8('0x50')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5b6e08,null))[_0x45d8('0x32')](function(_0x32cd2f){if(_0x32cd2f){_0x2ec559['message']=_0x32cd2f['get']({'plain':!![]});return db[_0x45d8('0x61')][_0x45d8('0x54')]({'where':{'id':_0x32cd2f['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x5b6e08,null))[_0x45d8('0x32')](function(_0x59d3a8){if(_0x59d3a8){_0x2ec559['interaction']=_0x59d3a8[_0x45d8('0x60')]({'plain':!![]});interaction_log[_0x45d8('0x27')](_0x45d8('0x75'),_0xf44b75[_0x45d8('0x5e')]['id'],_0xf44b75[_0x45d8('0x5e')]['name'],_0xf44b75[_0x45d8('0x5e')][_0x45d8('0x66')],_0x2ec559['interaction']['id'],_0xf44b75['body']?JSON['stringify'](_0xf44b75[_0x45d8('0x56')]):'null');return respondWithRpcPromise(_0x45d8('0x76'),_0x45d8('0x77'),_0x2ec559);}return null;})[_0x45d8('0x32')](function(_0x405e3a){if(_0x405e3a){_0x405e3a['message']['interface']=util['format']('SIP/%s',_0xf44b75['user']['name']);_0x405e3a[_0x45d8('0x26')]['channel']=_0x2ec559[_0x45d8('0x6d')];_0x405e3a[_0x45d8('0x26')][_0x45d8('0x6e')]=_0x45d8('0x31');respondWithRpcPromise(_0x45d8('0x70'),_0x45d8('0x70'),{'event':_0x45d8('0x78'),'message':_0x405e3a[_0x45d8('0x26')]},client9002);return _0x2ec559;}return null;})[_0x45d8('0x32')](respondWithResult(_0x5b6e08,null))[_0x45d8('0x28')](handleError(_0x5b6e08,null));};