b3627aad2c8bb8f86b7bfdb64552349d9fcd5e53
[motion2.git] / server / components / interaction / accept-message.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 _0x9e08=['sendRoutingAcceptEvent','opened','lodash','jayson/promise','../../mysqldb','../../errors/api','APINotFoundError','api','client','http','request','then','%s,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','info','result','catch','params','body','user','get','read','format','UserId','getAcceptParams','capitalize','findOne','\x20not\x20found','update','Interaction','Interaction\x20with\x20id\x20','read1stAt','YYYY-MM-DD\x20HH:mm:ss','updateInteractionById','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','QueryTypes','SELECT','length','findContactById','User','agent','name','fullname','findAgentById','ChatInteractionId','fax','FaxInteractionId','mail','openchannel','OpenchannelInteractionId','sms','SmsInteractionId','WhatsappInteractionId','isNewInteraction','Message','chat','assign','parse','interaction','formData','EventManager','acceptmessage','sendAmiAcceptEvent','AcceptMessage'];(function(_0xba4529,_0x50849f){var _0x52bd18=function(_0x4d185c){while(--_0x4d185c){_0xba4529['push'](_0xba4529['shift']());}};_0x52bd18(++_0x50849f);}(_0x9e08,0x90));var _0x89e0=function(_0x3e4e5f,_0x116df1){_0x3e4e5f=_0x3e4e5f-0x0;var _0x4c0cdd=_0x9e08[_0x3e4e5f];return _0x4c0cdd;};'use strict';var _=require(_0x89e0('0x0'));var moment=require('moment');var jayson=require(_0x89e0('0x1'));var db=require(_0x89e0('0x2'))['db'];var APINotFoundError=require(_0x89e0('0x3'))[_0x89e0('0x4')];var logger=require('../../config/logger')(_0x89e0('0x5'));var rpcAmiClient=jayson[_0x89e0('0x6')][_0x89e0('0x7')]({'port':0x232a});var rpcRoutingClient=jayson[_0x89e0('0x6')][_0x89e0('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x4f8937,_0x5a0f07,_0x551d42,_0x2ae30f,_0x320271){return new Promise(function(_0x2cc0f7,_0x5e472b){return _0x320271[_0x89e0('0x8')](_0x5a0f07,_0x2ae30f)[_0x89e0('0x9')](function(_0x28db06){logger['info'](_0x89e0('0xa'),_0x4f8937,_0x551d42,_0x89e0('0xb'));logger[_0x89e0('0xc')]('%s,\x20%s,\x20%s,\x20%s',_0x4f8937,_0x551d42,_0x89e0('0xb'),JSON[_0x89e0('0xd')](_0x28db06));if(_0x28db06['error']){if(_0x28db06['error'][_0x89e0('0xe')]===0x1f4){logger[_0x89e0('0xf')](_0x89e0('0xa'),_0x4f8937,_0x551d42,_0x28db06[_0x89e0('0xf')][_0x89e0('0x10')]);return _0x5e472b(_0x28db06[_0x89e0('0xf')][_0x89e0('0x10')]);}logger['error'](_0x89e0('0xa'),_0x4f8937,_0x551d42,_0x28db06[_0x89e0('0xf')]['message']);return _0x2cc0f7(_0x28db06[_0x89e0('0xf')][_0x89e0('0x10')]);}else{logger[_0x89e0('0x11')](_0x89e0('0xa'),_0x4f8937,_0x551d42,_0x89e0('0xb'));_0x2cc0f7(_0x28db06[_0x89e0('0x12')][_0x89e0('0x10')]);}})[_0x89e0('0x13')](function(_0x5b1d70){logger[_0x89e0('0xf')](_0x89e0('0xa'),_0x4f8937,_0x551d42,_0x5b1d70);_0x5e472b(_0x5b1d70);});});}function getAcceptParams(_0xb76050){var _0x2a1878=_0xb76050[_0x89e0('0x14')]['id'];var _0x365bae=_0xb76050[_0x89e0('0x15')];delete _0x365bae['id'];var _0x103a4b=_0xb76050[_0x89e0('0x16')][_0x89e0('0x17')]({'plain':!![]});_0x365bae[_0x89e0('0x18')]=!![];_0x365bae['readAt']=moment()[_0x89e0('0x19')]('YYYY-MM-DD\x20HH:mm:ss');_0x365bae[_0x89e0('0x1a')]=_0x365bae['UserId']||_0x103a4b['id'];return{'messageId':_0x2a1878,'payload':_0x365bae,'user':_0x103a4b};}exports[_0x89e0('0x1b')]=getAcceptParams;function updateMessageById(_0x12cbde,_0x21614a,_0x1dc5f3){var _0x34dd37=_[_0x89e0('0x1c')](_0x12cbde)+'Message';return db[_0x34dd37][_0x89e0('0x1d')]({'where':{'id':_0x21614a,'UserId':null}})[_0x89e0('0x9')](function(_0x43f53c){if(!_0x43f53c){throw new APINotFoundError('Message\x20with\x20id\x20'+_0x21614a+_0x89e0('0x1e'));}return _0x43f53c[_0x89e0('0x1f')](_0x1dc5f3);})[_0x89e0('0x9')](function(_0x1e628c){return _0x1e628c['get']({'plain':!![]});});}exports['updateMessageById']=updateMessageById;function updateInteractionById(_0x1f2cd6,_0x1d0303,_0x1c3613){var _0x50b13d=_[_0x89e0('0x1c')](_0x1f2cd6)+_0x89e0('0x20');return db[_0x50b13d][_0x89e0('0x1d')]({'where':{'id':_0x1d0303}})[_0x89e0('0x9')](function(_0x399dab){if(!_0x399dab){throw new APINotFoundError(_0x89e0('0x21')+_0x1d0303+'\x20not\x20found');}var _0x8eab26=_0x399dab[_0x89e0('0x22')]||moment()['format'](_0x89e0('0x23'));return _0x399dab[_0x89e0('0x1f')]({'UserId':_0x1c3613,'read1stAt':_0x8eab26});})['then'](function(_0x4cd13f){return _0x4cd13f[_0x89e0('0x17')]({'plain':!![]});});}exports[_0x89e0('0x24')]=updateInteractionById;function findContactById(_0x2936bd){var _0x46229c=_0x89e0('0x25')+_0x2936bd;return db[_0x89e0('0x26')][_0x89e0('0x27')](_0x46229c,{'type':db[_0x89e0('0x26')][_0x89e0('0x28')][_0x89e0('0x29')],'raw':!![]})[_0x89e0('0x9')](function(_0x5db109){if(_0x5db109[_0x89e0('0x2a')]===0x0){throw new APINotFoundError('Contact\x20with\x20id\x20'+_0x2936bd+'\x20not\x20found');}return _0x5db109[0x0];});}exports[_0x89e0('0x2b')]=findContactById;function findAgentById(_0xc40aaa){return db[_0x89e0('0x2c')][_0x89e0('0x1d')]({'where':{'id':_0xc40aaa,'role':_0x89e0('0x2d')},'attributes':['id',_0x89e0('0x2e'),_0x89e0('0x2f'),'email','internal'],'raw':!![]});}exports[_0x89e0('0x30')]=findAgentById;function isNewInteraction(_0x253e17,_0x48996d,_0x529e11){var _0x3370ed=_[_0x89e0('0x1c')](_0x253e17)+'Message';var _0x340d0a={};switch(_0x253e17){case'chat':_0x340d0a[_0x89e0('0x31')]=_0x48996d;break;case _0x89e0('0x32'):_0x340d0a[_0x89e0('0x33')]=_0x48996d;break;case _0x89e0('0x34'):_0x340d0a['MailInteractionId']=_0x48996d;break;case _0x89e0('0x35'):_0x340d0a[_0x89e0('0x36')]=_0x48996d;break;case _0x89e0('0x37'):_0x340d0a[_0x89e0('0x38')]=_0x48996d;break;case'whatsapp':_0x340d0a[_0x89e0('0x39')]=_0x48996d;break;}return db[_0x3370ed][_0x89e0('0x1d')]({'where':_0x340d0a,'attributes':[[db['sequelize']['fn']('min',db[_0x89e0('0x26')]['col']('id')),'id']],'raw':!![]})[_0x89e0('0x9')](function(_0x3646e0){return _0x529e11===_0x3646e0['id'];});}exports[_0x89e0('0x3a')]=isNewInteraction;function sendAmiAcceptEvent(_0x4e9e4d,_0x1c176b){var _0x4ed088=_[_0x89e0('0x1c')](_0x4e9e4d)+_0x89e0('0x3b');var _0x5129d8=_0x1c176b[_0x89e0('0x10')];if(_0x4e9e4d===_0x89e0('0x3c')){Object[_0x89e0('0x3d')](_0x5129d8,JSON[_0x89e0('0x3e')](_0x1c176b[_0x89e0('0x3f')][_0x89e0('0x40')]));}return respondWithRpcPromise(_0x4ed088,_0x89e0('0x41'),_0x89e0('0x41'),{'event':_0x89e0('0x42'),'message':_0x5129d8},rpcAmiClient);}exports[_0x89e0('0x43')]=sendAmiAcceptEvent;function sendRoutingAcceptEvent(_0x5aaf5b,_0x264fea){var _0x5baa21=_[_0x89e0('0x1c')](_0x5aaf5b)+_0x89e0('0x3b');return respondWithRpcPromise(_0x5baa21,_0x89e0('0x44'),'acceptMessage',_0x264fea,rpcRoutingClient);}exports[_0x89e0('0x45')]=sendRoutingAcceptEvent;function sendInteractionOpenedEvent(_0x485295,_0x251438){var _0xfec50a=_[_0x89e0('0x1c')](_0x485295)+'Message';return respondWithRpcPromise(_0xfec50a,_0x89e0('0x41'),'EventManager',{'event':'newinteraction','message':Object[_0x89e0('0x3d')]({},_0x251438,{'event':_0x89e0('0x46')})},rpcAmiClient);}exports['sendInteractionOpenedEvent']=sendInteractionOpenedEvent;