Built motion from commit 953226e6.|2.6.32
[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 _0x9d4b=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ChatMessage','findAll','show','params','rawAttributes','includeAll','include','find','create','body','describe','accept','acceptMessage','reject','chat','UserId','user','agent','get','ChatInteractionId','interaction','role','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','contact','email','internal','interface','SIP/%s','channel','event','util','ioredis','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','client','http','chat-interactions','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','status','json','offset','undefined','limit','count','set','update','destroy','sendStatus','stack','name','send','index','map','fieldName','type','key','model'];(function(_0x56d229,_0x1783af){var _0x3c2e18=function(_0x41d34a){while(--_0x41d34a){_0x56d229['push'](_0x56d229['shift']());}};_0x3c2e18(++_0x1783af);}(_0x9d4b,0x19d));var _0xb9d4=function(_0x56653c,_0x10c2a5){_0x56653c=_0x56653c-0x0;var _0x17e298=_0x9d4b[_0x56653c];return _0x17e298;};'use strict';var util=require(_0xb9d4('0x0'));var _=require('lodash');var Redis=require(_0xb9d4('0x1'));var interactionService=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var logger=require(_0xb9d4('0x2'))('api');var config=require(_0xb9d4('0x3'));var db=require(_0xb9d4('0x4'))['db'];config[_0xb9d4('0x5')]=_[_0xb9d4('0x6')](config[_0xb9d4('0x5')],{'host':'localhost','port':0x18eb});var socket=require(_0xb9d4('0x7'))(new Redis(config[_0xb9d4('0x5')]));require('./chatMessage.socket')[_0xb9d4('0x8')](socket);var jayson=require(_0xb9d4('0x9'));var client=jayson[_0xb9d4('0xa')]['http']({'port':0x232c});var client9002=jayson[_0xb9d4('0xa')][_0xb9d4('0xb')]({'port':0x232a});var interaction_log=require('../../config/logger')(_0xb9d4('0xc'));function respondWithRpcPromise(_0x5d2ab9,_0x150ca6,_0x52f4ff,_0x154be3){return new Promise(function(_0x2dfc00,_0x5ccc2c){var _0x2cb952=_0x154be3||client;return _0x2cb952['request'](_0x5d2ab9,_0x52f4ff)[_0xb9d4('0xd')](function(_0x18caca){logger[_0xb9d4('0xe')](_0xb9d4('0xf'),_0x150ca6,'request\x20sent');logger['debug']('ChatMessage,\x20%s,\x20%s,\x20%s',_0x150ca6,_0xb9d4('0x10'),JSON[_0xb9d4('0x11')](_0x18caca));if(_0x18caca[_0xb9d4('0x12')]){if(_0x18caca['error'][_0xb9d4('0x13')]===0x1f4){logger[_0xb9d4('0x12')](_0xb9d4('0xf'),_0x150ca6,_0x18caca[_0xb9d4('0x12')]['message']);return _0x5ccc2c(_0x18caca[_0xb9d4('0x12')][_0xb9d4('0x14')]);}logger['error'](_0xb9d4('0xf'),_0x150ca6,_0x18caca[_0xb9d4('0x12')][_0xb9d4('0x14')]);return _0x2dfc00(_0x18caca[_0xb9d4('0x12')]['message']);}else{logger[_0xb9d4('0xe')](_0xb9d4('0xf'),_0x150ca6,'request\x20sent');_0x2dfc00(_0x18caca[_0xb9d4('0x15')]['message']);}})[_0xb9d4('0x16')](function(_0x508da6){logger[_0xb9d4('0x12')](_0xb9d4('0xf'),_0x150ca6,_0x508da6);_0x5ccc2c(_0x508da6);});});}function respondWithResult(_0x3863b6,_0xed8fa){_0xed8fa=_0xed8fa||0xc8;return function(_0x4f8643){if(_0x4f8643){return _0x3863b6[_0xb9d4('0x17')](_0xed8fa)[_0xb9d4('0x18')](_0x4f8643);}};}function respondWithFilteredResult(_0x5e3097,_0x4e5461){return function(_0x3fdbc5){if(_0x3fdbc5){var _0x2c831f=typeof _0x4e5461[_0xb9d4('0x19')]===_0xb9d4('0x1a')&&typeof _0x4e5461[_0xb9d4('0x1b')]===_0xb9d4('0x1a');var _0x27a139=_0x3fdbc5[_0xb9d4('0x1c')];var _0x4a4f21=_0x2c831f?0x0:_0x4e5461[_0xb9d4('0x19')];var _0x2d9b6c=_0x2c831f?_0x3fdbc5[_0xb9d4('0x1c')]:_0x4e5461[_0xb9d4('0x19')]+_0x4e5461[_0xb9d4('0x1b')];var _0x2fd1ac;if(_0x2d9b6c>=_0x27a139){_0x2d9b6c=_0x27a139;_0x2fd1ac=0xc8;}else{_0x2fd1ac=0xce;}_0x5e3097['status'](_0x2fd1ac);return _0x5e3097[_0xb9d4('0x1d')]('Content-Range',_0x4a4f21+'-'+_0x2d9b6c+'/'+_0x27a139)[_0xb9d4('0x18')](_0x3fdbc5);}return null;};}function saveUpdates(_0x44166a){return function(_0x117c85){if(_0x117c85){return _0x117c85[_0xb9d4('0x1e')](_0x44166a)['then'](function(_0x17bbd7){return _0x17bbd7;});}return null;};}function removeEntity(_0x448f78){return function(_0x2bed4c){if(_0x2bed4c){return _0x2bed4c[_0xb9d4('0x1f')]()[_0xb9d4('0xd')](function(){_0x448f78[_0xb9d4('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c9d27){return function(_0x49bfb9){if(!_0x49bfb9){_0x3c9d27[_0xb9d4('0x20')](0x194);}return _0x49bfb9;};}function handleError(_0x53a203,_0x58fa11){_0x58fa11=_0x58fa11||0x1f4;return function(_0x56965d){logger[_0xb9d4('0x12')](_0x56965d[_0xb9d4('0x21')]);if(_0x56965d[_0xb9d4('0x22')]){delete _0x56965d[_0xb9d4('0x22')];}_0x53a203[_0xb9d4('0x17')](_0x58fa11)[_0xb9d4('0x23')](_0x56965d);};}exports[_0xb9d4('0x24')]=function(_0x1393d2,_0x51b79b){var _0x2045b={},_0x461e16={},_0x53933d={'count':0x0,'rows':[]};var _0xb6014=_[_0xb9d4('0x25')](db['ChatMessage']['rawAttributes'],function(_0x1658b3){return{'name':_0x1658b3[_0xb9d4('0x26')],'type':_0x1658b3[_0xb9d4('0x27')][_0xb9d4('0x28')]};});_0x461e16[_0xb9d4('0x29')]=_['map'](_0xb6014,_0xb9d4('0x22'));_0x461e16[_0xb9d4('0x2a')]=_[_0xb9d4('0x2b')](_0x1393d2[_0xb9d4('0x2a')]);_0x461e16[_0xb9d4('0x2c')]=_[_0xb9d4('0x2d')](_0x461e16[_0xb9d4('0x29')],_0x461e16['query']);_0x2045b[_0xb9d4('0x2e')]=_[_0xb9d4('0x2d')](_0x461e16['model'],qs['fields'](_0x1393d2['query'][_0xb9d4('0x2f')]));_0x2045b['attributes']=_0x2045b['attributes'][_0xb9d4('0x30')]?_0x2045b[_0xb9d4('0x2e')]:_0x461e16['model'];if(!_0x1393d2[_0xb9d4('0x2a')][_0xb9d4('0x31')](_0xb9d4('0x32'))){_0x2045b[_0xb9d4('0x1b')]=qs[_0xb9d4('0x1b')](_0x1393d2[_0xb9d4('0x2a')][_0xb9d4('0x1b')]);_0x2045b[_0xb9d4('0x19')]=qs[_0xb9d4('0x19')](_0x1393d2['query'][_0xb9d4('0x19')]);}_0x2045b[_0xb9d4('0x33')]=qs['sort'](_0x1393d2[_0xb9d4('0x2a')][_0xb9d4('0x34')]);_0x2045b[_0xb9d4('0x35')]=qs[_0xb9d4('0x2c')](_[_0xb9d4('0x36')](_0x1393d2[_0xb9d4('0x2a')],_0x461e16['filters']),_0xb6014);if(_0x1393d2[_0xb9d4('0x2a')][_0xb9d4('0x37')]){_0x2045b[_0xb9d4('0x35')]=_[_0xb9d4('0x38')](_0x2045b[_0xb9d4('0x35')],{'$or':_[_0xb9d4('0x25')](_0xb6014,function(_0x1960aa){if(_0x1960aa['type']!==_0xb9d4('0x39')){var _0x1b7c5a={};_0x1b7c5a[_0x1960aa['name']]={'$like':'%'+_0x1393d2[_0xb9d4('0x2a')]['filter']+'%'};return _0x1b7c5a;}})});}_0x2045b=_[_0xb9d4('0x38')]({},_0x2045b,_0x1393d2[_0xb9d4('0x3a')]);var _0x4f447b={'where':_0x2045b[_0xb9d4('0x35')]};return db['ChatMessage']['count'](_0x4f447b)[_0xb9d4('0xd')](function(_0x36f49d){_0x53933d[_0xb9d4('0x1c')]=_0x36f49d;if(_0x1393d2[_0xb9d4('0x2a')]['includeAll']){_0x2045b['include']=[{'all':!![]}];}return db[_0xb9d4('0x3b')][_0xb9d4('0x3c')](_0x2045b);})[_0xb9d4('0xd')](function(_0x553705){_0x53933d['rows']=_0x553705;return _0x53933d;})[_0xb9d4('0xd')](respondWithFilteredResult(_0x51b79b,_0x2045b))[_0xb9d4('0x16')](handleError(_0x51b79b,null));};exports[_0xb9d4('0x3d')]=function(_0x33350b,_0x324955){var _0x2f27fb={'raw':!![],'where':{'id':_0x33350b[_0xb9d4('0x3e')]['id']}},_0x3c0d96={};_0x3c0d96['model']=_['keys'](db['ChatMessage'][_0xb9d4('0x3f')]);_0x3c0d96[_0xb9d4('0x2a')]=_[_0xb9d4('0x2b')](_0x33350b['query']);_0x3c0d96[_0xb9d4('0x2c')]=_[_0xb9d4('0x2d')](_0x3c0d96[_0xb9d4('0x29')],_0x3c0d96[_0xb9d4('0x2a')]);_0x2f27fb[_0xb9d4('0x2e')]=_[_0xb9d4('0x2d')](_0x3c0d96[_0xb9d4('0x29')],qs[_0xb9d4('0x2f')](_0x33350b['query'][_0xb9d4('0x2f')]));_0x2f27fb[_0xb9d4('0x2e')]=_0x2f27fb[_0xb9d4('0x2e')][_0xb9d4('0x30')]?_0x2f27fb[_0xb9d4('0x2e')]:_0x3c0d96[_0xb9d4('0x29')];if(_0x33350b[_0xb9d4('0x2a')][_0xb9d4('0x40')]){_0x2f27fb[_0xb9d4('0x41')]=[{'all':!![]}];}_0x2f27fb=_['merge']({},_0x2f27fb,_0x33350b['options']);return db[_0xb9d4('0x3b')][_0xb9d4('0x42')](_0x2f27fb)['then'](handleEntityNotFound(_0x324955,null))[_0xb9d4('0xd')](respondWithResult(_0x324955,null))[_0xb9d4('0x16')](handleError(_0x324955,null));};exports[_0xb9d4('0x43')]=function(_0x937a8b,_0x360296){return db['ChatMessage'][_0xb9d4('0x43')](_0x937a8b[_0xb9d4('0x44')],{})[_0xb9d4('0xd')](respondWithResult(_0x360296,0xc9))['catch'](handleError(_0x360296,null));};exports[_0xb9d4('0x1e')]=function(_0x50b06a,_0x3361e6){if(_0x50b06a[_0xb9d4('0x44')]['id']){delete _0x50b06a['body']['id'];}return db['ChatMessage']['find']({'where':{'id':_0x50b06a[_0xb9d4('0x3e')]['id']}})[_0xb9d4('0xd')](handleEntityNotFound(_0x3361e6,null))[_0xb9d4('0xd')](saveUpdates(_0x50b06a[_0xb9d4('0x44')],null))[_0xb9d4('0xd')](respondWithResult(_0x3361e6,null))[_0xb9d4('0x16')](handleError(_0x3361e6,null));};exports[_0xb9d4('0x1f')]=function(_0x58b605,_0x35c1f4){return db[_0xb9d4('0x3b')][_0xb9d4('0x42')]({'where':{'id':_0x58b605['params']['id']}})['then'](handleEntityNotFound(_0x35c1f4,null))[_0xb9d4('0xd')](removeEntity(_0x35c1f4,null))[_0xb9d4('0x16')](handleError(_0x35c1f4,null));};exports[_0xb9d4('0x45')]=function(_0x43dcb0,_0x2bdc71){return db[_0xb9d4('0x3b')][_0xb9d4('0x45')]()[_0xb9d4('0xd')](respondWithResult(_0x2bdc71,null))[_0xb9d4('0x16')](handleError(_0x2bdc71,null));};exports[_0xb9d4('0x46')]=function(_0x40cb64,_0x366157){var _0x1920de='chat';return interactionService[_0xb9d4('0x47')](_0x40cb64,_0x1920de)['then'](respondWithResult(_0x366157,null))[_0xb9d4('0x16')](handleError(_0x366157,null));};exports[_0xb9d4('0x48')]=function(_0x3386f3,_0x4c1cab){var _0x448218={'agent':{},'channel':_0xb9d4('0x49')};if(_0x3386f3[_0xb9d4('0x44')]['id']){delete _0x3386f3[_0xb9d4('0x44')]['id'];}_0x3386f3[_0xb9d4('0x44')][_0xb9d4('0x4a')]=_0x3386f3[_0xb9d4('0x44')][_0xb9d4('0x4a')]||_0x3386f3[_0xb9d4('0x4b')]['id'];_0x448218[_0xb9d4('0x4c')]['id']=_0x3386f3['body']['UserId'];return db[_0xb9d4('0x3b')][_0xb9d4('0x42')]({'where':{'id':_0x3386f3[_0xb9d4('0x3e')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4c1cab,null))['then'](function(_0x7b9916){if(_0x7b9916){_0x448218[_0xb9d4('0x14')]=_0x7b9916[_0xb9d4('0x4d')]({'plain':!![]});return db['ChatInteraction'][_0xb9d4('0x42')]({'where':{'id':_0x7b9916[_0xb9d4('0x4e')]}});}return null;})[_0xb9d4('0xd')](handleEntityNotFound(_0x4c1cab,null))[_0xb9d4('0xd')](function(_0x23dadc){if(_0x23dadc){_0x448218[_0xb9d4('0x4f')]=_0x23dadc[_0xb9d4('0x4d')]({'plain':!![]});interaction_log[_0xb9d4('0xe')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3386f3['user']['id'],_0x3386f3['user'][_0xb9d4('0x22')],_0x3386f3[_0xb9d4('0x4b')][_0xb9d4('0x50')],_0x448218[_0xb9d4('0x4f')]['id'],_0x3386f3[_0xb9d4('0x44')]?JSON[_0xb9d4('0x11')](_0x3386f3[_0xb9d4('0x44')]):'null');return respondWithRpcPromise('RejectMessage','rejectMessage',_0x448218);}return null;})['then'](function(_0x1031f4){var _0x341e46=_0xb9d4('0x51')+_0x1031f4[_0xb9d4('0x14')]['ContactId'];return db['sequelize']['query'](_0x341e46,{'type':db[_0xb9d4('0x52')][_0xb9d4('0x53')]['SELECT'],'raw':!![]})['then'](function(_0x4ec1f9){return _0x4ec1f9;});})[_0xb9d4('0xd')](function(_0x1cd0d2){if(_0x1cd0d2){_0x448218[_0xb9d4('0x14')][_0xb9d4('0x54')]=_0x1cd0d2[0x0];if(!_0x3386f3[_0xb9d4('0x44')][_0xb9d4('0x4a')])return;return db['User']['find']({'where':{'id':_0x3386f3['body'][_0xb9d4('0x4a')],'role':'agent'},'attributes':['id',_0xb9d4('0x22'),'fullname',_0xb9d4('0x55'),_0xb9d4('0x56')],'raw':!![]});}return null;})['then'](function(_0x199c46){if(!_0x199c46)return null;_0x448218[_0xb9d4('0x14')][_0xb9d4('0x4c')]=_0x199c46;return _0x448218;})[_0xb9d4('0xd')](function(_0x3037ba){if(_0x3037ba){_0x3037ba[_0xb9d4('0x14')][_0xb9d4('0x57')]=util['format'](_0xb9d4('0x58'),_0x3386f3[_0xb9d4('0x4b')][_0xb9d4('0x22')]);_0x3037ba[_0xb9d4('0x14')][_0xb9d4('0x59')]=_0x448218[_0xb9d4('0x59')];_0x3037ba['message']['motionChannel']=_0x448218['channel'];_0x3037ba['message'][_0xb9d4('0x5a')]=_0xb9d4('0x48');respondWithRpcPromise('EventManager','EventManager',{'event':'rejectmessage','message':_[_0xb9d4('0x38')](_0x448218[_0xb9d4('0x14')],JSON['parse'](_0x448218[_0xb9d4('0x4f')]['formData']))},client9002);return _0x448218;}return null;})[_0xb9d4('0xd')](respondWithResult(_0x4c1cab,null))[_0xb9d4('0x16')](handleError(_0x4c1cab,null));};