506494b5a3328abf62b82a3e5eec24cc35709c07
[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 _0x134c=['send','index','map','ChatMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','params','includeAll','create','body','find','describe','../../config/logger','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','CmContact','Contact','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','info','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','acceptMessage','manual','SIP/%s','channel','EventManager','acceptmessage','parse','formData','chat-interactions','agent','null','rejectMessage','interface','event','reject','rejectmessage','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','http','request','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','status','json','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','sendStatus','stack','name'];(function(_0x7db46d,_0x1d5989){var _0x35a46d=function(_0x3355c9){while(--_0x3355c9){_0x7db46d['push'](_0x7db46d['shift']());}};_0x35a46d(++_0x1d5989);}(_0x134c,0x1ca));var _0xc134=function(_0x4cf0b7,_0x560029){_0x4cf0b7=_0x4cf0b7-0x0;var _0x545f10=_0x134c[_0x4cf0b7];return _0x545f10;};'use strict';var pdf=require(_0xc134('0x0'));var emlformat=require(_0xc134('0x1'));var rimraf=require(_0xc134('0x2'));var zipdir=require(_0xc134('0x3'));var jsonpatch=require(_0xc134('0x4'));var rp=require(_0xc134('0x5'));var moment=require(_0xc134('0x6'));var BPromise=require(_0xc134('0x7'));var Mustache=require(_0xc134('0x8'));var util=require(_0xc134('0x9'));var path=require(_0xc134('0xa'));var sox=require(_0xc134('0xb'));var csv=require(_0xc134('0xc'));var ejs=require(_0xc134('0xd'));var fs=require('fs');var _=require(_0xc134('0xe'));var squel=require('squel');var crypto=require(_0xc134('0xf'));var jsforce=require(_0xc134('0x10'));var deskjs=require(_0xc134('0x11'));var toCsv=require(_0xc134('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc134('0x12'));var qs=require(_0xc134('0x13'));var as=require(_0xc134('0x14'));var hardwareService=require(_0xc134('0x15'));var logger=require('../../config/logger')(_0xc134('0x16'));var utils=require(_0xc134('0x17'));var config=require(_0xc134('0x18'));var licenseUtil=require(_0xc134('0x19'));var db=require('../../mysqldb')['db'];config[_0xc134('0x1a')]=_[_0xc134('0x1b')](config['redis'],{'host':_0xc134('0x1c'),'port':0x18eb});var socket=require(_0xc134('0x1d'))(new Redis(config['redis']));require(_0xc134('0x1e'))[_0xc134('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xc134('0x20')]({'port':0x232c});var client9002=jayson['client'][_0xc134('0x20')]({'port':0x232a});function respondWithRpcPromise(_0xc3d10,_0x36adbd,_0x5066ea,_0x1c53d6){return new BPromise(function(_0x22fd6d,_0x302806){var _0x262361=_0x1c53d6||client;return _0x262361[_0xc134('0x21')](_0xc3d10,_0x5066ea)['then'](function(_0x2d10c0){logger['info'](_0xc134('0x22'),_0x36adbd,_0xc134('0x23'));logger[_0xc134('0x24')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x36adbd,'request\x20sent',JSON[_0xc134('0x25')](_0x2d10c0));if(_0x2d10c0[_0xc134('0x26')]){if(_0x2d10c0[_0xc134('0x26')][_0xc134('0x27')]===0x1f4){logger[_0xc134('0x26')](_0xc134('0x22'),_0x36adbd,_0x2d10c0['error'][_0xc134('0x28')]);return _0x302806(_0x2d10c0[_0xc134('0x26')][_0xc134('0x28')]);}logger[_0xc134('0x26')](_0xc134('0x22'),_0x36adbd,_0x2d10c0[_0xc134('0x26')][_0xc134('0x28')]);return _0x22fd6d(_0x2d10c0[_0xc134('0x26')][_0xc134('0x28')]);}else{logger['info']('ChatMessage,\x20%s,\x20%s',_0x36adbd,_0xc134('0x23'));_0x22fd6d(_0x2d10c0[_0xc134('0x29')]['message']);}})[_0xc134('0x2a')](function(_0x1b7d4d){logger['error'](_0xc134('0x22'),_0x36adbd,_0x1b7d4d);_0x302806(_0x1b7d4d);});});}function respondWithStatusCode(_0x254d5d,_0x33e4c7){_0x33e4c7=_0x33e4c7||0xcc;return function(_0x4bf83a){if(_0x4bf83a){return _0x254d5d['sendStatus'](_0x33e4c7);}return _0x254d5d[_0xc134('0x2b')](_0x33e4c7)['end']();};}function respondWithResult(_0x5eebb4,_0x359abe){_0x359abe=_0x359abe||0xc8;return function(_0x29cceb){if(_0x29cceb){return _0x5eebb4[_0xc134('0x2b')](_0x359abe)[_0xc134('0x2c')](_0x29cceb);}};}function respondWithFilteredResult(_0x4c8aeb,_0x34c429){return function(_0x384707){if(_0x384707){var _0x5b0cbf=_0x384707[_0xc134('0x2d')],_0x2e61b2=_0x34c429[_0xc134('0x2e')],_0x474ed9=_0x34c429['offset']+_0x34c429[_0xc134('0x2f')],_0x42b0f3;if(_0x474ed9>=_0x5b0cbf){_0x474ed9=_0x5b0cbf;_0x42b0f3=0xc8;}else{_0x42b0f3=0xce;}_0x4c8aeb['status'](_0x42b0f3);return _0x4c8aeb[_0xc134('0x30')](_0xc134('0x31'),_0x2e61b2+'-'+_0x474ed9+'/'+_0x5b0cbf)[_0xc134('0x2c')](_0x384707);}return null;};}function patchUpdates(_0x504a06){return function(_0x520d15){try{jsonpatch[_0xc134('0x32')](_0x520d15,_0x504a06,!![]);}catch(_0x12fca5){return BPromise['reject'](_0x12fca5);}return _0x520d15[_0xc134('0x33')]();};}function saveUpdates(_0x11ac1f,_0x525000){return function(_0x1f1d8b){if(_0x1f1d8b){return _0x1f1d8b[_0xc134('0x34')](_0x11ac1f)[_0xc134('0x35')](function(_0x57727a){return _0x57727a;});}return null;};}function removeEntity(_0x191d5b,_0x2d1f9d){return function(_0x5c6eed){if(_0x5c6eed){return _0x5c6eed[_0xc134('0x36')]()['then'](function(){_0x191d5b[_0xc134('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x504192,_0x48ba07){return function(_0xe7ae4e){if(!_0xe7ae4e){_0x504192[_0xc134('0x37')](0x194);}return _0xe7ae4e;};}function handleError(_0x3df770,_0x4d025d){_0x4d025d=_0x4d025d||0x1f4;return function(_0x26fa5e){logger['error'](_0x26fa5e[_0xc134('0x38')]);if(_0x26fa5e[_0xc134('0x39')]){delete _0x26fa5e[_0xc134('0x39')];}_0x3df770[_0xc134('0x2b')](_0x4d025d)[_0xc134('0x3a')](_0x26fa5e);};}exports[_0xc134('0x3b')]=function(_0x5267a8,_0x3de5b9){var _0x248970={},_0x177b4f={},_0x5bbd4a={'count':0x0,'rows':[]};var _0x4ffe2d=_[_0xc134('0x3c')](db[_0xc134('0x3d')][_0xc134('0x3e')],function(_0x1bf15e){return{'name':_0x1bf15e[_0xc134('0x3f')],'type':_0x1bf15e[_0xc134('0x40')][_0xc134('0x41')]};});_0x177b4f[_0xc134('0x42')]=_[_0xc134('0x3c')](_0x4ffe2d,'name');_0x177b4f[_0xc134('0x43')]=_[_0xc134('0x44')](_0x5267a8[_0xc134('0x43')]);_0x177b4f[_0xc134('0x45')]=_[_0xc134('0x46')](_0x177b4f[_0xc134('0x42')],_0x177b4f[_0xc134('0x43')]);_0x248970['attributes']=_[_0xc134('0x46')](_0x177b4f[_0xc134('0x42')],qs[_0xc134('0x47')](_0x5267a8['query'][_0xc134('0x47')]));_0x248970[_0xc134('0x48')]=_0x248970['attributes'][_0xc134('0x49')]?_0x248970[_0xc134('0x48')]:_0x177b4f[_0xc134('0x42')];if(!_0x5267a8[_0xc134('0x43')][_0xc134('0x4a')](_0xc134('0x4b'))){_0x248970[_0xc134('0x2f')]=qs[_0xc134('0x2f')](_0x5267a8[_0xc134('0x43')]['limit']);_0x248970['offset']=qs['offset'](_0x5267a8[_0xc134('0x43')][_0xc134('0x2e')]);}_0x248970[_0xc134('0x4c')]=qs[_0xc134('0x4d')](_0x5267a8[_0xc134('0x43')][_0xc134('0x4d')]);_0x248970[_0xc134('0x4e')]=qs[_0xc134('0x45')](_[_0xc134('0x4f')](_0x5267a8[_0xc134('0x43')],_0x177b4f[_0xc134('0x45')]),_0x4ffe2d);if(_0x5267a8[_0xc134('0x43')][_0xc134('0x50')]){_0x248970[_0xc134('0x4e')]=_['merge'](_0x248970[_0xc134('0x4e')],{'$or':_[_0xc134('0x3c')](_0x4ffe2d,function(_0x554dab){if(_0x554dab[_0xc134('0x40')]!==_0xc134('0x51')){var _0x23a0af={};_0x23a0af[_0x554dab[_0xc134('0x39')]]={'$like':'%'+_0x5267a8[_0xc134('0x43')][_0xc134('0x50')]+'%'};return _0x23a0af;}})});}_0x248970=_[_0xc134('0x52')]({},_0x248970,_0x5267a8[_0xc134('0x53')]);var _0x2d002c={'where':_0x248970['where']};return db[_0xc134('0x3d')][_0xc134('0x2d')](_0x2d002c)[_0xc134('0x35')](function(_0x16055e){_0x5bbd4a[_0xc134('0x2d')]=_0x16055e;if(_0x5267a8[_0xc134('0x43')]['includeAll']){_0x248970[_0xc134('0x54')]=[{'all':!![]}];}return db[_0xc134('0x3d')][_0xc134('0x55')](_0x248970);})[_0xc134('0x35')](function(_0x3e58db){_0x5bbd4a[_0xc134('0x56')]=_0x3e58db;return _0x5bbd4a;})[_0xc134('0x35')](respondWithFilteredResult(_0x3de5b9,_0x248970))[_0xc134('0x2a')](handleError(_0x3de5b9,null));};exports['show']=function(_0x244c1a,_0x5d8df4){var _0x1f32cb={'raw':!![],'where':{'id':_0x244c1a[_0xc134('0x57')]['id']}},_0x244b6c={};_0x244b6c['model']=_[_0xc134('0x44')](db[_0xc134('0x3d')]['rawAttributes']);_0x244b6c[_0xc134('0x43')]=_['keys'](_0x244c1a[_0xc134('0x43')]);_0x244b6c[_0xc134('0x45')]=_[_0xc134('0x46')](_0x244b6c['model'],_0x244b6c['query']);_0x1f32cb[_0xc134('0x48')]=_[_0xc134('0x46')](_0x244b6c['model'],qs[_0xc134('0x47')](_0x244c1a[_0xc134('0x43')][_0xc134('0x47')]));_0x1f32cb[_0xc134('0x48')]=_0x1f32cb['attributes'][_0xc134('0x49')]?_0x1f32cb[_0xc134('0x48')]:_0x244b6c[_0xc134('0x42')];if(_0x244c1a[_0xc134('0x43')][_0xc134('0x58')]){_0x1f32cb[_0xc134('0x54')]=[{'all':!![]}];}_0x1f32cb=_[_0xc134('0x52')]({},_0x1f32cb,_0x244c1a[_0xc134('0x53')]);return db[_0xc134('0x3d')]['find'](_0x1f32cb)[_0xc134('0x35')](handleEntityNotFound(_0x5d8df4,null))['then'](respondWithResult(_0x5d8df4,null))[_0xc134('0x2a')](handleError(_0x5d8df4,null));};exports['create']=function(_0x194694,_0x2f2779){return db[_0xc134('0x3d')][_0xc134('0x59')](_0x194694[_0xc134('0x5a')],{})[_0xc134('0x35')](respondWithResult(_0x2f2779,0xc9))[_0xc134('0x2a')](handleError(_0x2f2779,null));};exports[_0xc134('0x34')]=function(_0x1e8414,_0x241041){if(_0x1e8414[_0xc134('0x5a')]['id']){delete _0x1e8414['body']['id'];}return db[_0xc134('0x3d')][_0xc134('0x5b')]({'where':{'id':_0x1e8414[_0xc134('0x57')]['id']}})[_0xc134('0x35')](handleEntityNotFound(_0x241041,null))['then'](saveUpdates(_0x1e8414[_0xc134('0x5a')],null))['then'](respondWithResult(_0x241041,null))[_0xc134('0x2a')](handleError(_0x241041,null));};exports[_0xc134('0x36')]=function(_0x1303f6,_0x44d35d){return db[_0xc134('0x3d')][_0xc134('0x5b')]({'where':{'id':_0x1303f6[_0xc134('0x57')]['id']}})['then'](handleEntityNotFound(_0x44d35d,null))[_0xc134('0x35')](removeEntity(_0x44d35d,null))['catch'](handleError(_0x44d35d,null));};exports[_0xc134('0x5c')]=function(_0x3beb67,_0xd3df03){return db[_0xc134('0x3d')][_0xc134('0x5c')]()['then'](respondWithResult(_0xd3df03,null))[_0xc134('0x2a')](handleError(_0xd3df03,null));};var interaction_log=require(_0xc134('0x5d'))('chat-interactions');exports[_0xc134('0x5e')]=function(_0x2bddf6,_0x21fe0,_0x5b3091){var _0x3b8c36={'agent':{},'channel':_0xc134('0x5f')};if(_0x2bddf6[_0xc134('0x5a')]['id']){delete _0x2bddf6['body']['id'];}_0x2bddf6[_0xc134('0x5a')][_0xc134('0x60')]=!![];_0x2bddf6[_0xc134('0x5a')][_0xc134('0x61')]=moment()[_0xc134('0x62')](_0xc134('0x63'));_0x2bddf6['body'][_0xc134('0x64')]=_0x2bddf6['body']['UserId']||_0x2bddf6[_0xc134('0x65')]['id'];_0x3b8c36['agent']['id']=_0x2bddf6['body']['UserId'];return db['ChatMessage'][_0xc134('0x5b')]({'where':{'id':_0x2bddf6['params']['id'],'UserId':null},'include':[{'model':db[_0xc134('0x66')],'as':_0xc134('0x67')}]})['then'](handleEntityNotFound(_0x21fe0,null))[_0xc134('0x35')](saveUpdates(_0x2bddf6['body'],null))[_0xc134('0x35')](function(_0x2e37dd){if(_0x2e37dd){_0x3b8c36[_0xc134('0x28')]=_0x2e37dd[_0xc134('0x68')]({'plain':!![]});return db[_0xc134('0x69')][_0xc134('0x5b')]({'where':{'id':_0x2e37dd[_0xc134('0x6a')]}});}return null;})[_0xc134('0x35')](handleEntityNotFound(_0x21fe0,null))[_0xc134('0x35')](function(_0x2a7b3d){if(_0x2a7b3d){return _0x2a7b3d[_0xc134('0x34')]({'UserId':_0x2bddf6[_0xc134('0x5a')][_0xc134('0x64')],'read1stAt':_[_0xc134('0x6b')](_0x2a7b3d[_0xc134('0x6c')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xc134('0x35')](function(_0x63172d){if(_0x63172d){_0x3b8c36[_0xc134('0x6d')]=_0x63172d['get']({'plain':!![]});interaction_log[_0xc134('0x6e')](_0xc134('0x6f'),_0x2bddf6[_0xc134('0x65')]['id'],_0x2bddf6['user'][_0xc134('0x39')],_0x2bddf6['user'][_0xc134('0x70')],_0x3b8c36[_0xc134('0x6d')]['id'],_0x2bddf6[_0xc134('0x5a')]?JSON['stringify'](_0x2bddf6['body']):'null');return respondWithRpcPromise('AcceptMessage',_0xc134('0x71'),_0x3b8c36);}return null;})['then'](function(_0x46a469){if(_0x46a469){if(_0x2bddf6[_0xc134('0x5a')][_0xc134('0x72')]){_0x3b8c36[_0xc134('0x28')]['interface']=util[_0xc134('0x62')](_0xc134('0x73'),_0x2bddf6[_0xc134('0x65')][_0xc134('0x39')]);_0x3b8c36[_0xc134('0x28')][_0xc134('0x74')]=_0x3b8c36[_0xc134('0x74')];_0x3b8c36['message']['event']=_0xc134('0x5e');return respondWithRpcPromise('EventManager',_0xc134('0x75'),{'event':_0xc134('0x76'),'message':_[_0xc134('0x52')](_0x3b8c36[_0xc134('0x28')],JSON[_0xc134('0x77')](_0x3b8c36[_0xc134('0x6d')][_0xc134('0x78')]))},client9002)[_0xc134('0x35')](function(){return _0x3b8c36;});}return _0x3b8c36;}return null;})['then'](respondWithResult(_0x21fe0,null))[_0xc134('0x2a')](handleError(_0x21fe0,null));};var interaction_log=require(_0xc134('0x5d'))(_0xc134('0x79'));exports['reject']=function(_0x1d9a17,_0x23ad74,_0x492ba5){var _0x494bfd={'agent':{},'channel':_0xc134('0x5f')};if(_0x1d9a17['body']['id']){delete _0x1d9a17['body']['id'];}_0x1d9a17[_0xc134('0x5a')]['UserId']=_0x1d9a17[_0xc134('0x5a')][_0xc134('0x64')]||_0x1d9a17['user']['id'];_0x494bfd[_0xc134('0x7a')]['id']=_0x1d9a17['body'][_0xc134('0x64')];return db[_0xc134('0x3d')][_0xc134('0x5b')]({'where':{'id':_0x1d9a17[_0xc134('0x57')]['id'],'UserId':null}})[_0xc134('0x35')](handleEntityNotFound(_0x23ad74,null))['then'](function(_0x13d607){if(_0x13d607){_0x494bfd[_0xc134('0x28')]=_0x13d607[_0xc134('0x68')]({'plain':!![]});return db[_0xc134('0x69')][_0xc134('0x5b')]({'where':{'id':_0x13d607[_0xc134('0x6a')]}});}return null;})[_0xc134('0x35')](handleEntityNotFound(_0x23ad74,null))[_0xc134('0x35')](function(_0x21d404){if(_0x21d404){_0x494bfd[_0xc134('0x6d')]=_0x21d404[_0xc134('0x68')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1d9a17['user']['id'],_0x1d9a17[_0xc134('0x65')][_0xc134('0x39')],_0x1d9a17[_0xc134('0x65')]['role'],_0x494bfd[_0xc134('0x6d')]['id'],_0x1d9a17[_0xc134('0x5a')]?JSON[_0xc134('0x25')](_0x1d9a17[_0xc134('0x5a')]):_0xc134('0x7b'));return respondWithRpcPromise('RejectMessage',_0xc134('0x7c'),_0x494bfd);}return null;})['then'](function(_0x2e9ebe){if(_0x2e9ebe){_0x2e9ebe['message'][_0xc134('0x7d')]=util[_0xc134('0x62')](_0xc134('0x73'),_0x1d9a17['user']['name']);_0x2e9ebe['message'][_0xc134('0x74')]=_0x494bfd[_0xc134('0x74')];_0x2e9ebe[_0xc134('0x28')][_0xc134('0x7e')]=_0xc134('0x7f');respondWithRpcPromise(_0xc134('0x75'),_0xc134('0x75'),{'event':_0xc134('0x80'),'message':_0x2e9ebe[_0xc134('0x28')]},client9002);return _0x494bfd;}return null;})[_0xc134('0x35')](respondWithResult(_0x23ad74,null))['catch'](handleError(_0x23ad74,null));};