b0d2530a82092f9f1ff2f0f0710e3fa9b05d9da9
[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 _0x5419=['code','message','result','catch','json','undefined','limit','count','offset','status','set','update','destroy','sendStatus','stack','name','index','map','ChatMessage','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','create','body','find','params','describe','chat','acceptMessage','UserId','ChatInteraction','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','interaction','stringify','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','User','fullname','email','internal','agent','interface','format','SIP/%s','channel','motionChannel','event','EventManager','rejectmessage','parse','formData','util','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','redis','socket.io-emitter','register','jayson/promise','client','http','chat-interactions','then','info','ChatMessage,\x20%s,\x20%s','debug','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x5419,0x183));var _0x9541=function(_0x559435,_0x6ec2f4){_0x559435=_0x559435-0x0;var _0x42f90c=_0x5419[_0x559435];return _0x42f90c;};'use strict';var util=require(_0x9541('0x0'));var _=require(_0x9541('0x1'));var Redis=require(_0x9541('0x2'));var interactionService=require(_0x9541('0x3'));var qs=require(_0x9541('0x4'));var logger=require('../../config/logger')(_0x9541('0x5'));var config=require(_0x9541('0x6'));var db=require('../../mysqldb')['db'];config[_0x9541('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x9541('0x8'))(new Redis(config[_0x9541('0x7')]));require('./chatMessage.socket')[_0x9541('0x9')](socket);var jayson=require(_0x9541('0xa'));var client=jayson[_0x9541('0xb')][_0x9541('0xc')]({'port':0x232c});var client9002=jayson['client'][_0x9541('0xc')]({'port':0x232a});var interaction_log=require('../../config/logger')(_0x9541('0xd'));function respondWithRpcPromise(_0x45a46a,_0x3ed7cd,_0x1e22fc,_0xf6ba05){return new Promise(function(_0x10f02e,_0x44415c){var _0x3ecced=_0xf6ba05||client;return _0x3ecced['request'](_0x45a46a,_0x1e22fc)[_0x9541('0xe')](function(_0x3cb956){logger[_0x9541('0xf')](_0x9541('0x10'),_0x3ed7cd,'request\x20sent');logger[_0x9541('0x11')](_0x9541('0x12'),_0x3ed7cd,_0x9541('0x13'),JSON['stringify'](_0x3cb956));if(_0x3cb956[_0x9541('0x14')]){if(_0x3cb956[_0x9541('0x14')][_0x9541('0x15')]===0x1f4){logger['error'](_0x9541('0x10'),_0x3ed7cd,_0x3cb956[_0x9541('0x14')]['message']);return _0x44415c(_0x3cb956[_0x9541('0x14')]['message']);}logger['error']('ChatMessage,\x20%s,\x20%s',_0x3ed7cd,_0x3cb956['error'][_0x9541('0x16')]);return _0x10f02e(_0x3cb956[_0x9541('0x14')][_0x9541('0x16')]);}else{logger[_0x9541('0xf')](_0x9541('0x10'),_0x3ed7cd,_0x9541('0x13'));_0x10f02e(_0x3cb956[_0x9541('0x17')][_0x9541('0x16')]);}})[_0x9541('0x18')](function(_0x39d4db){logger[_0x9541('0x14')](_0x9541('0x10'),_0x3ed7cd,_0x39d4db);_0x44415c(_0x39d4db);});});}function respondWithResult(_0xd2b8e,_0x566805){_0x566805=_0x566805||0xc8;return function(_0xb179b1){if(_0xb179b1){return _0xd2b8e['status'](_0x566805)[_0x9541('0x19')](_0xb179b1);}};}function respondWithFilteredResult(_0x18ac58,_0x25b111){return function(_0x491dcd){if(_0x491dcd){var _0x78d1e=typeof _0x25b111['offset']===_0x9541('0x1a')&&typeof _0x25b111[_0x9541('0x1b')]===_0x9541('0x1a');var _0x30b08b=_0x491dcd[_0x9541('0x1c')];var _0x357e4a=_0x78d1e?0x0:_0x25b111[_0x9541('0x1d')];var _0x3771df=_0x78d1e?_0x491dcd['count']:_0x25b111[_0x9541('0x1d')]+_0x25b111[_0x9541('0x1b')];var _0x2f3200;if(_0x3771df>=_0x30b08b){_0x3771df=_0x30b08b;_0x2f3200=0xc8;}else{_0x2f3200=0xce;}_0x18ac58[_0x9541('0x1e')](_0x2f3200);return _0x18ac58[_0x9541('0x1f')]('Content-Range',_0x357e4a+'-'+_0x3771df+'/'+_0x30b08b)[_0x9541('0x19')](_0x491dcd);}return null;};}function saveUpdates(_0x374fb0){return function(_0x4bbdd6){if(_0x4bbdd6){return _0x4bbdd6[_0x9541('0x20')](_0x374fb0)[_0x9541('0xe')](function(_0x4cc8dd){return _0x4cc8dd;});}return null;};}function removeEntity(_0x3321cc){return function(_0x505ebb){if(_0x505ebb){return _0x505ebb[_0x9541('0x21')]()[_0x9541('0xe')](function(){_0x3321cc[_0x9541('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3cc253){return function(_0x22a737){if(!_0x22a737){_0x3cc253[_0x9541('0x22')](0x194);}return _0x22a737;};}function handleError(_0x590a54,_0x1c2a6c){_0x1c2a6c=_0x1c2a6c||0x1f4;return function(_0x231378){logger[_0x9541('0x14')](_0x231378[_0x9541('0x23')]);if(_0x231378[_0x9541('0x24')]){delete _0x231378[_0x9541('0x24')];}_0x590a54[_0x9541('0x1e')](_0x1c2a6c)['send'](_0x231378);};}exports[_0x9541('0x25')]=function(_0x1ddd24,_0x140846){var _0x5e7f72={},_0x1c9a68={},_0x57df40={'count':0x0,'rows':[]};var _0x1bec15=_[_0x9541('0x26')](db[_0x9541('0x27')][_0x9541('0x28')],function(_0xa6dcea){return{'name':_0xa6dcea['fieldName'],'type':_0xa6dcea[_0x9541('0x29')][_0x9541('0x2a')]};});_0x1c9a68[_0x9541('0x2b')]=_['map'](_0x1bec15,_0x9541('0x24'));_0x1c9a68[_0x9541('0x2c')]=_[_0x9541('0x2d')](_0x1ddd24['query']);_0x1c9a68['filters']=_[_0x9541('0x2e')](_0x1c9a68['model'],_0x1c9a68[_0x9541('0x2c')]);_0x5e7f72[_0x9541('0x2f')]=_[_0x9541('0x2e')](_0x1c9a68['model'],qs[_0x9541('0x30')](_0x1ddd24[_0x9541('0x2c')][_0x9541('0x30')]));_0x5e7f72[_0x9541('0x2f')]=_0x5e7f72[_0x9541('0x2f')][_0x9541('0x31')]?_0x5e7f72['attributes']:_0x1c9a68['model'];if(!_0x1ddd24[_0x9541('0x2c')][_0x9541('0x32')](_0x9541('0x33'))){_0x5e7f72[_0x9541('0x1b')]=qs['limit'](_0x1ddd24['query'][_0x9541('0x1b')]);_0x5e7f72[_0x9541('0x1d')]=qs[_0x9541('0x1d')](_0x1ddd24[_0x9541('0x2c')]['offset']);}_0x5e7f72[_0x9541('0x34')]=qs[_0x9541('0x35')](_0x1ddd24[_0x9541('0x2c')][_0x9541('0x35')]);_0x5e7f72[_0x9541('0x36')]=qs['filters'](_[_0x9541('0x37')](_0x1ddd24[_0x9541('0x2c')],_0x1c9a68[_0x9541('0x38')]),_0x1bec15);if(_0x1ddd24[_0x9541('0x2c')][_0x9541('0x39')]){_0x5e7f72[_0x9541('0x36')]=_[_0x9541('0x3a')](_0x5e7f72['where'],{'$or':_['map'](_0x1bec15,function(_0x3f5045){if(_0x3f5045[_0x9541('0x29')]!==_0x9541('0x3b')){var _0x2fd9f1={};_0x2fd9f1[_0x3f5045[_0x9541('0x24')]]={'$like':'%'+_0x1ddd24['query'][_0x9541('0x39')]+'%'};return _0x2fd9f1;}})});}_0x5e7f72=_[_0x9541('0x3a')]({},_0x5e7f72,_0x1ddd24[_0x9541('0x3c')]);var _0x46318e={'where':_0x5e7f72[_0x9541('0x36')]};return db[_0x9541('0x27')][_0x9541('0x1c')](_0x46318e)[_0x9541('0xe')](function(_0xdfaaaf){_0x57df40[_0x9541('0x1c')]=_0xdfaaaf;if(_0x1ddd24['query'][_0x9541('0x3d')]){_0x5e7f72[_0x9541('0x3e')]=[{'all':!![]}];}return db[_0x9541('0x27')][_0x9541('0x3f')](_0x5e7f72);})[_0x9541('0xe')](function(_0x4c1f4a){_0x57df40[_0x9541('0x40')]=_0x4c1f4a;return _0x57df40;})[_0x9541('0xe')](respondWithFilteredResult(_0x140846,_0x5e7f72))['catch'](handleError(_0x140846,null));};exports['show']=function(_0x236732,_0x1ab6e0){var _0x173ee1={'raw':!![],'where':{'id':_0x236732['params']['id']}},_0x24af9d={};_0x24af9d[_0x9541('0x2b')]=_[_0x9541('0x2d')](db[_0x9541('0x27')][_0x9541('0x28')]);_0x24af9d[_0x9541('0x2c')]=_[_0x9541('0x2d')](_0x236732[_0x9541('0x2c')]);_0x24af9d[_0x9541('0x38')]=_[_0x9541('0x2e')](_0x24af9d[_0x9541('0x2b')],_0x24af9d[_0x9541('0x2c')]);_0x173ee1['attributes']=_[_0x9541('0x2e')](_0x24af9d[_0x9541('0x2b')],qs[_0x9541('0x30')](_0x236732[_0x9541('0x2c')]['fields']));_0x173ee1['attributes']=_0x173ee1['attributes'][_0x9541('0x31')]?_0x173ee1[_0x9541('0x2f')]:_0x24af9d['model'];if(_0x236732['query']['includeAll']){_0x173ee1[_0x9541('0x3e')]=[{'all':!![]}];}_0x173ee1=_[_0x9541('0x3a')]({},_0x173ee1,_0x236732['options']);return db[_0x9541('0x27')]['find'](_0x173ee1)[_0x9541('0xe')](handleEntityNotFound(_0x1ab6e0,null))[_0x9541('0xe')](respondWithResult(_0x1ab6e0,null))['catch'](handleError(_0x1ab6e0,null));};exports['create']=function(_0x5cafe5,_0xf3ed37){return db[_0x9541('0x27')][_0x9541('0x41')](_0x5cafe5['body'],{})[_0x9541('0xe')](respondWithResult(_0xf3ed37,0xc9))[_0x9541('0x18')](handleError(_0xf3ed37,null));};exports[_0x9541('0x20')]=function(_0x5c5e64,_0x5243f9){if(_0x5c5e64[_0x9541('0x42')]['id']){delete _0x5c5e64[_0x9541('0x42')]['id'];}return db['ChatMessage'][_0x9541('0x43')]({'where':{'id':_0x5c5e64[_0x9541('0x44')]['id']}})['then'](handleEntityNotFound(_0x5243f9,null))['then'](saveUpdates(_0x5c5e64[_0x9541('0x42')],null))[_0x9541('0xe')](respondWithResult(_0x5243f9,null))['catch'](handleError(_0x5243f9,null));};exports['destroy']=function(_0x390414,_0x1a6642){return db['ChatMessage'][_0x9541('0x43')]({'where':{'id':_0x390414[_0x9541('0x44')]['id']}})[_0x9541('0xe')](handleEntityNotFound(_0x1a6642,null))['then'](removeEntity(_0x1a6642,null))[_0x9541('0x18')](handleError(_0x1a6642,null));};exports[_0x9541('0x45')]=function(_0x1de11b,_0x402570){return db[_0x9541('0x27')][_0x9541('0x45')]()[_0x9541('0xe')](respondWithResult(_0x402570,null))[_0x9541('0x18')](handleError(_0x402570,null));};exports['accept']=function(_0x5d1f6d,_0x577d84){var _0x455461=_0x9541('0x46');return interactionService[_0x9541('0x47')](_0x5d1f6d,_0x455461)[_0x9541('0xe')](respondWithResult(_0x577d84,null))[_0x9541('0x18')](handleError(_0x577d84,null));};exports['reject']=function(_0x140996,_0x42b183){var _0x1af64b={'agent':{},'channel':_0x9541('0x46')};if(_0x140996[_0x9541('0x42')]['id']){delete _0x140996[_0x9541('0x42')]['id'];}_0x140996[_0x9541('0x42')]['UserId']=_0x140996[_0x9541('0x42')][_0x9541('0x48')]||_0x140996['user']['id'];_0x1af64b['agent']['id']=_0x140996[_0x9541('0x42')][_0x9541('0x48')];return db[_0x9541('0x27')][_0x9541('0x43')]({'where':{'id':_0x140996[_0x9541('0x44')]['id'],'UserId':null}})[_0x9541('0xe')](handleEntityNotFound(_0x42b183,null))['then'](function(_0x5e5c4f){if(_0x5e5c4f){_0x1af64b[_0x9541('0x16')]=_0x5e5c4f['get']({'plain':!![]});return db[_0x9541('0x49')]['find']({'where':{'id':_0x5e5c4f[_0x9541('0x4a')]}});}return null;})[_0x9541('0xe')](handleEntityNotFound(_0x42b183,null))[_0x9541('0xe')](function(_0x39f6ee){if(_0x39f6ee){_0x1af64b['interaction']=_0x39f6ee['get']({'plain':!![]});interaction_log[_0x9541('0xf')](_0x9541('0x4b'),_0x140996[_0x9541('0x4c')]['id'],_0x140996['user'][_0x9541('0x24')],_0x140996[_0x9541('0x4c')][_0x9541('0x4d')],_0x1af64b[_0x9541('0x4e')]['id'],_0x140996['body']?JSON[_0x9541('0x4f')](_0x140996[_0x9541('0x42')]):'null');return respondWithRpcPromise(_0x9541('0x50'),_0x9541('0x51'),_0x1af64b);}return null;})['then'](function(_0x8497fb){var _0x274872=_0x9541('0x52')+_0x8497fb['message'][_0x9541('0x53')];return db[_0x9541('0x54')][_0x9541('0x2c')](_0x274872,{'type':db['Sequelize'][_0x9541('0x55')][_0x9541('0x56')],'raw':!![]})[_0x9541('0xe')](function(_0x562de3){return _0x562de3;});})[_0x9541('0xe')](function(_0x24ad01){if(_0x24ad01){_0x1af64b[_0x9541('0x16')]['contact']=_0x24ad01[0x0];if(!_0x140996[_0x9541('0x42')][_0x9541('0x48')])return;return db[_0x9541('0x57')][_0x9541('0x43')]({'where':{'id':_0x140996[_0x9541('0x42')][_0x9541('0x48')],'role':'agent'},'attributes':['id',_0x9541('0x24'),_0x9541('0x58'),_0x9541('0x59'),_0x9541('0x5a')],'raw':!![]});}return null;})['then'](function(_0xf4d75){if(!_0xf4d75)return null;_0x1af64b[_0x9541('0x16')][_0x9541('0x5b')]=_0xf4d75;return _0x1af64b;})[_0x9541('0xe')](function(_0x2870b8){if(_0x2870b8){_0x2870b8[_0x9541('0x16')][_0x9541('0x5c')]=util[_0x9541('0x5d')](_0x9541('0x5e'),_0x140996[_0x9541('0x4c')][_0x9541('0x24')]);_0x2870b8[_0x9541('0x16')][_0x9541('0x5f')]=_0x1af64b[_0x9541('0x5f')];_0x2870b8['message'][_0x9541('0x60')]=_0x1af64b['channel'];_0x2870b8['message'][_0x9541('0x61')]='reject';respondWithRpcPromise(_0x9541('0x62'),_0x9541('0x62'),{'event':_0x9541('0x63'),'message':_['merge'](_0x1af64b['message'],JSON[_0x9541('0x64')](_0x1af64b[_0x9541('0x4e')][_0x9541('0x65')]))},client9002);return _0x1af64b;}return null;})[_0x9541('0xe')](respondWithResult(_0x42b183,null))[_0x9541('0x18')](handleError(_0x42b183,null));};