66d4cd7aeffd0742db0fca7423c5b31a4309fd41
[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 _0x68e5=['get','updateMessageById','capitalize','update','updateInteractionById','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','query','sequelize','QueryTypes','SELECT','\x20not\x20found','findContactById','User','findOne','agent','name','fullname','email','internal','findAgentById','ChatInteractionId','fax','FaxInteractionId','MailInteractionId','openchannel','OpenchannelInteractionId','SmsInteractionId','whatsapp','WhatsappInteractionId','isNewInteraction','chat','assign','parse','interaction','formData','EventManager','acceptmessage','AcceptMessage','acceptMessage','sendRoutingAcceptEvent','opened','sendInteractionOpenedEvent','lodash','moment','jayson/promise','../../mysqldb','../../errors/api','APINotFoundError','../../config/logger','api','client','http','request','info','%s,\x20%s,\x20%s','request\x20sent','debug','%s,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','params','body','user','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','Message','then','Message\x20with\x20id\x20'];(function(_0x435b2f,_0x4c44da){var _0x181648=function(_0x3d753e){while(--_0x3d753e){_0x435b2f['push'](_0x435b2f['shift']());}};_0x181648(++_0x4c44da);}(_0x68e5,0x1ec));var _0x568e=function(_0x373240,_0x4ab992){_0x373240=_0x373240-0x0;var _0x3b4572=_0x68e5[_0x373240];return _0x3b4572;};'use strict';var _=require(_0x568e('0x0'));var moment=require(_0x568e('0x1'));var jayson=require(_0x568e('0x2'));var db=require(_0x568e('0x3'))['db'];var APINotFoundError=require(_0x568e('0x4'))[_0x568e('0x5')];var logger=require(_0x568e('0x6'))(_0x568e('0x7'));var rpcAmiClient=jayson[_0x568e('0x8')][_0x568e('0x9')]({'port':0x232a});var rpcRoutingClient=jayson[_0x568e('0x8')]['http']({'port':0x232c});function respondWithRpcPromise(_0x25cacc,_0x236ff4,_0x33050a,_0x82dbc0,_0x2af3bf){return new Promise(function(_0x5c28db,_0x14b8cc){return _0x2af3bf[_0x568e('0xa')](_0x236ff4,_0x82dbc0)['then'](function(_0x694b59){logger[_0x568e('0xb')](_0x568e('0xc'),_0x25cacc,_0x33050a,_0x568e('0xd'));logger[_0x568e('0xe')](_0x568e('0xf'),_0x25cacc,_0x33050a,'request\x20sent',JSON[_0x568e('0x10')](_0x694b59));if(_0x694b59[_0x568e('0x11')]){if(_0x694b59[_0x568e('0x11')][_0x568e('0x12')]===0x1f4){logger[_0x568e('0x11')](_0x568e('0xc'),_0x25cacc,_0x33050a,_0x694b59[_0x568e('0x11')]['message']);return _0x14b8cc(_0x694b59[_0x568e('0x11')][_0x568e('0x13')]);}logger[_0x568e('0x11')](_0x568e('0xc'),_0x25cacc,_0x33050a,_0x694b59[_0x568e('0x11')][_0x568e('0x13')]);return _0x5c28db(_0x694b59[_0x568e('0x11')][_0x568e('0x13')]);}else{logger[_0x568e('0xb')]('%s,\x20%s,\x20%s',_0x25cacc,_0x33050a,_0x568e('0xd'));_0x5c28db(_0x694b59[_0x568e('0x14')][_0x568e('0x13')]);}})[_0x568e('0x15')](function(_0x1b1841){logger['error']('%s,\x20%s,\x20%s',_0x25cacc,_0x33050a,_0x1b1841);_0x14b8cc(_0x1b1841);});});}function getAcceptParams(_0x32cb18){var _0x32d820=_0x32cb18[_0x568e('0x16')]['id'];var _0xad2c51=_0x32cb18[_0x568e('0x17')];delete _0xad2c51['id'];var _0x433afc=_0x32cb18[_0x568e('0x18')]['get']({'plain':!![]});_0xad2c51[_0x568e('0x19')]=!![];_0xad2c51[_0x568e('0x1a')]=moment()[_0x568e('0x1b')](_0x568e('0x1c'));_0xad2c51[_0x568e('0x1d')]=_0xad2c51['UserId']||_0x433afc['id'];return{'messageId':_0x32d820,'payload':_0xad2c51,'user':_0x433afc};}exports['getAcceptParams']=getAcceptParams;function updateMessageById(_0x156d19,_0x2ebe99,_0x469aa9){var _0x4301b7=_['capitalize'](_0x156d19)+_0x568e('0x1e');return db[_0x4301b7]['findOne']({'where':{'id':_0x2ebe99,'UserId':null}})[_0x568e('0x1f')](function(_0x3bd51e){if(!_0x3bd51e){throw new APINotFoundError(_0x568e('0x20')+_0x2ebe99+'\x20not\x20found');}return _0x3bd51e['update'](_0x469aa9);})[_0x568e('0x1f')](function(_0x43b648){return _0x43b648[_0x568e('0x21')]({'plain':!![]});});}exports[_0x568e('0x22')]=updateMessageById;function updateInteractionById(_0x2913b8,_0x4813bf,_0x4afd93){var _0x43cb22=_[_0x568e('0x23')](_0x2913b8)+'Interaction';return db[_0x43cb22]['findOne']({'where':{'id':_0x4813bf}})['then'](function(_0x26a88a){if(!_0x26a88a){throw new APINotFoundError('Interaction\x20with\x20id\x20'+_0x4813bf+'\x20not\x20found');}var _0x4bf6bf=_0x26a88a['read1stAt']||moment()[_0x568e('0x1b')](_0x568e('0x1c'));return _0x26a88a[_0x568e('0x24')]({'UserId':_0x4afd93,'read1stAt':_0x4bf6bf});})[_0x568e('0x1f')](function(_0x4d5921){return _0x4d5921[_0x568e('0x21')]({'plain':!![]});});}exports[_0x568e('0x25')]=updateInteractionById;function findContactById(_0x5c4cb1){var _0x1d19d8=_0x568e('0x26')+_0x5c4cb1;return db['sequelize'][_0x568e('0x27')](_0x1d19d8,{'type':db[_0x568e('0x28')][_0x568e('0x29')][_0x568e('0x2a')],'raw':!![]})[_0x568e('0x1f')](function(_0x5dca21){if(_0x5dca21['length']===0x0){throw new APINotFoundError('Contact\x20with\x20id\x20'+_0x5c4cb1+_0x568e('0x2b'));}return _0x5dca21[0x0];});}exports[_0x568e('0x2c')]=findContactById;function findAgentById(_0x334af7){return db[_0x568e('0x2d')][_0x568e('0x2e')]({'where':{'id':_0x334af7,'role':_0x568e('0x2f')},'attributes':['id',_0x568e('0x30'),_0x568e('0x31'),_0x568e('0x32'),_0x568e('0x33')],'raw':!![]});}exports[_0x568e('0x34')]=findAgentById;function isNewInteraction(_0x4ab503,_0x3d23de,_0x2f93f4){var _0x24338b=_[_0x568e('0x23')](_0x4ab503)+_0x568e('0x1e');var _0x4bac7b={};switch(_0x4ab503){case'chat':_0x4bac7b[_0x568e('0x35')]=_0x3d23de;break;case _0x568e('0x36'):_0x4bac7b[_0x568e('0x37')]=_0x3d23de;break;case'mail':_0x4bac7b[_0x568e('0x38')]=_0x3d23de;break;case _0x568e('0x39'):_0x4bac7b[_0x568e('0x3a')]=_0x3d23de;break;case'sms':_0x4bac7b[_0x568e('0x3b')]=_0x3d23de;break;case _0x568e('0x3c'):_0x4bac7b[_0x568e('0x3d')]=_0x3d23de;break;}return db[_0x24338b][_0x568e('0x2e')]({'where':_0x4bac7b,'attributes':[[db[_0x568e('0x28')]['fn']('min',db[_0x568e('0x28')]['col']('id')),'id']],'raw':!![]})[_0x568e('0x1f')](function(_0x1b4c5a){return _0x2f93f4===_0x1b4c5a['id'];});}exports[_0x568e('0x3e')]=isNewInteraction;function sendAmiAcceptEvent(_0x15a885,_0x52165f){var _0x3503f9=_[_0x568e('0x23')](_0x15a885)+_0x568e('0x1e');var _0x14e908=_0x52165f[_0x568e('0x13')];if(_0x15a885===_0x568e('0x3f')){Object[_0x568e('0x40')](_0x14e908,JSON[_0x568e('0x41')](_0x52165f[_0x568e('0x42')][_0x568e('0x43')]));}return respondWithRpcPromise(_0x3503f9,_0x568e('0x44'),_0x568e('0x44'),{'event':_0x568e('0x45'),'message':_0x14e908},rpcAmiClient);}exports['sendAmiAcceptEvent']=sendAmiAcceptEvent;function sendRoutingAcceptEvent(_0xb5daf,_0x1b0052){var _0xbc5a95=_[_0x568e('0x23')](_0xb5daf)+'Message';return respondWithRpcPromise(_0xbc5a95,_0x568e('0x46'),_0x568e('0x47'),_0x1b0052,rpcRoutingClient);}exports[_0x568e('0x48')]=sendRoutingAcceptEvent;function sendInteractionOpenedEvent(_0x37d2ec,_0x494503){var _0x302bcb=_['capitalize'](_0x37d2ec)+_0x568e('0x1e');return respondWithRpcPromise(_0x302bcb,'EventManager',_0x568e('0x44'),{'event':'newinteraction','message':Object[_0x568e('0x40')]({},_0x494503,{'event':_0x568e('0x49')})},rpcAmiClient);}exports[_0x568e('0x4a')]=sendInteractionOpenedEvent;