d4fdd572a541abb614e073309a371992e24b8fbd
[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 _0xc5f8=['client','request','info','request\x20sent','stringify','error','%s,\x20%s,\x20%s','message','result','catch','user','get','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','getAcceptParams','capitalize','then','Message\x20with\x20id\x20','\x20not\x20found','update','updateMessageById','findOne','Interaction\x20with\x20id\x20','read1stAt','updateInteractionById','query','SELECT','length','Contact\x20with\x20id\x20','findContactById','User','name','email','findAgentById','Message','chat','ChatInteractionId','fax','FaxInteractionId','mail','MailInteractionId','openchannel','OpenchannelInteractionId','sms','SmsInteractionId','whatsapp','WhatsappInteractionId','sequelize','min','isNewInteraction','parse','interaction','formData','EventManager','sendAmiAcceptEvent','AcceptMessage','acceptMessage','sendRoutingAcceptEvent','newinteraction','assign','opened','sendInteractionOpenedEvent','lodash','moment','jayson/promise','APINotFoundError','../../config/logger','api','http'];(function(_0x11e7b5,_0x43842b){var _0x16b415=function(_0x391d44){while(--_0x391d44){_0x11e7b5['push'](_0x11e7b5['shift']());}};_0x16b415(++_0x43842b);}(_0xc5f8,0x115));var _0x8c5f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc5f8[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x8c5f('0x0'));var moment=require(_0x8c5f('0x1'));var jayson=require(_0x8c5f('0x2'));var db=require('../../mysqldb')['db'];var APINotFoundError=require('../../errors/api')[_0x8c5f('0x3')];var logger=require(_0x8c5f('0x4'))(_0x8c5f('0x5'));var rpcAmiClient=jayson['client'][_0x8c5f('0x6')]({'port':0x232a});var rpcRoutingClient=jayson[_0x8c5f('0x7')][_0x8c5f('0x6')]({'port':0x232c});function respondWithRpcPromise(_0x481fc7,_0x166903,_0x1111a8,_0xf704d8,_0x565410){return new Promise(function(_0x50404a,_0x4cb359){return _0x565410[_0x8c5f('0x8')](_0x166903,_0xf704d8)['then'](function(_0x554703){logger[_0x8c5f('0x9')]('%s,\x20%s,\x20%s',_0x481fc7,_0x1111a8,_0x8c5f('0xa'));logger['debug']('%s,\x20%s,\x20%s,\x20%s',_0x481fc7,_0x1111a8,'request\x20sent',JSON[_0x8c5f('0xb')](_0x554703));if(_0x554703['error']){if(_0x554703[_0x8c5f('0xc')]['code']===0x1f4){logger[_0x8c5f('0xc')](_0x8c5f('0xd'),_0x481fc7,_0x1111a8,_0x554703[_0x8c5f('0xc')][_0x8c5f('0xe')]);return _0x4cb359(_0x554703['error'][_0x8c5f('0xe')]);}logger[_0x8c5f('0xc')]('%s,\x20%s,\x20%s',_0x481fc7,_0x1111a8,_0x554703['error'][_0x8c5f('0xe')]);return _0x50404a(_0x554703[_0x8c5f('0xc')][_0x8c5f('0xe')]);}else{logger['info'](_0x8c5f('0xd'),_0x481fc7,_0x1111a8,_0x8c5f('0xa'));_0x50404a(_0x554703[_0x8c5f('0xf')][_0x8c5f('0xe')]);}})[_0x8c5f('0x10')](function(_0x3dfb54){logger[_0x8c5f('0xc')](_0x8c5f('0xd'),_0x481fc7,_0x1111a8,_0x3dfb54);_0x4cb359(_0x3dfb54);});});}function getAcceptParams(_0x7976ac){var _0x283bb1=_0x7976ac['params']['id'];var _0x281296=_0x7976ac['body'];delete _0x281296['id'];var _0x1b1ab1=_0x7976ac[_0x8c5f('0x11')][_0x8c5f('0x12')]({'plain':!![]});_0x281296['read']=!![];_0x281296[_0x8c5f('0x13')]=moment()[_0x8c5f('0x14')](_0x8c5f('0x15'));_0x281296[_0x8c5f('0x16')]=_0x281296['UserId']||_0x1b1ab1['id'];return{'messageId':_0x283bb1,'payload':_0x281296,'user':_0x1b1ab1};}exports[_0x8c5f('0x17')]=getAcceptParams;function updateMessageById(_0x36c214,_0x526d53,_0x5e35e6){var _0x3b3ec2=_[_0x8c5f('0x18')](_0x36c214)+'Message';return db[_0x3b3ec2]['findOne']({'where':{'id':_0x526d53,'UserId':null}})[_0x8c5f('0x19')](function(_0x46ce20){if(!_0x46ce20){throw new APINotFoundError(_0x8c5f('0x1a')+_0x526d53+_0x8c5f('0x1b'));}return _0x46ce20[_0x8c5f('0x1c')](_0x5e35e6);})[_0x8c5f('0x19')](function(_0x2a541e){return _0x2a541e['get']({'plain':!![]});});}exports[_0x8c5f('0x1d')]=updateMessageById;function updateInteractionById(_0x8ede84,_0xfa31ed,_0xe39db9){var _0x374264=_[_0x8c5f('0x18')](_0x8ede84)+'Interaction';return db[_0x374264][_0x8c5f('0x1e')]({'where':{'id':_0xfa31ed}})[_0x8c5f('0x19')](function(_0xb65ac4){if(!_0xb65ac4){throw new APINotFoundError(_0x8c5f('0x1f')+_0xfa31ed+'\x20not\x20found');}var _0x331735=_0xb65ac4[_0x8c5f('0x20')]||moment()[_0x8c5f('0x14')](_0x8c5f('0x15'));return _0xb65ac4['update']({'UserId':_0xe39db9,'read1stAt':_0x331735});})[_0x8c5f('0x19')](function(_0x2a3abe){return _0x2a3abe['get']({'plain':!![]});});}exports[_0x8c5f('0x21')]=updateInteractionById;function findContactById(_0x3af116){var _0x1a88ba='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3af116;return db['sequelize'][_0x8c5f('0x22')](_0x1a88ba,{'type':db['sequelize']['QueryTypes'][_0x8c5f('0x23')],'raw':!![]})['then'](function(_0x5ba21c){if(_0x5ba21c[_0x8c5f('0x24')]===0x0){throw new APINotFoundError(_0x8c5f('0x25')+_0x3af116+_0x8c5f('0x1b'));}return _0x5ba21c[0x0];});}exports[_0x8c5f('0x26')]=findContactById;function findAgentById(_0x5a2ca6){return db[_0x8c5f('0x27')]['findOne']({'where':{'id':_0x5a2ca6,'role':'agent'},'attributes':['id',_0x8c5f('0x28'),'fullname',_0x8c5f('0x29'),'internal'],'raw':!![]});}exports[_0x8c5f('0x2a')]=findAgentById;function isNewInteraction(_0x46ecd9,_0x4dd2e4,_0x594a8c){var _0xd2cb77=_[_0x8c5f('0x18')](_0x46ecd9)+_0x8c5f('0x2b');var _0x51d6e5={};switch(_0x46ecd9){case _0x8c5f('0x2c'):_0x51d6e5[_0x8c5f('0x2d')]=_0x4dd2e4;break;case _0x8c5f('0x2e'):_0x51d6e5[_0x8c5f('0x2f')]=_0x4dd2e4;break;case _0x8c5f('0x30'):_0x51d6e5[_0x8c5f('0x31')]=_0x4dd2e4;break;case _0x8c5f('0x32'):_0x51d6e5[_0x8c5f('0x33')]=_0x4dd2e4;break;case _0x8c5f('0x34'):_0x51d6e5[_0x8c5f('0x35')]=_0x4dd2e4;break;case _0x8c5f('0x36'):_0x51d6e5[_0x8c5f('0x37')]=_0x4dd2e4;break;}return db[_0xd2cb77][_0x8c5f('0x1e')]({'where':_0x51d6e5,'attributes':[[db[_0x8c5f('0x38')]['fn'](_0x8c5f('0x39'),db[_0x8c5f('0x38')]['col']('id')),'id']],'raw':!![]})[_0x8c5f('0x19')](function(_0x57ff35){return _0x594a8c===_0x57ff35['id'];});}exports[_0x8c5f('0x3a')]=isNewInteraction;function sendAmiAcceptEvent(_0x3bcb79,_0x55f263){var _0x43d965=_[_0x8c5f('0x18')](_0x3bcb79)+_0x8c5f('0x2b');var _0x557758=_0x55f263['message'];if(_0x3bcb79==='chat'){Object['assign'](_0x557758,JSON[_0x8c5f('0x3b')](_0x55f263[_0x8c5f('0x3c')][_0x8c5f('0x3d')]));}return respondWithRpcPromise(_0x43d965,'EventManager',_0x8c5f('0x3e'),{'event':'acceptmessage','message':_0x557758},rpcAmiClient);}exports[_0x8c5f('0x3f')]=sendAmiAcceptEvent;function sendRoutingAcceptEvent(_0x11a2f1,_0x1fc8a1){var _0x323121=_[_0x8c5f('0x18')](_0x11a2f1)+'Message';return respondWithRpcPromise(_0x323121,_0x8c5f('0x40'),_0x8c5f('0x41'),_0x1fc8a1,rpcRoutingClient);}exports[_0x8c5f('0x42')]=sendRoutingAcceptEvent;function sendInteractionOpenedEvent(_0x2eb297,_0x38572d){var _0xfede95=_['capitalize'](_0x2eb297)+'Message';return respondWithRpcPromise(_0xfede95,_0x8c5f('0x3e'),_0x8c5f('0x3e'),{'event':_0x8c5f('0x43'),'message':Object[_0x8c5f('0x44')]({},_0x38572d,{'event':_0x8c5f('0x45')})},rpcAmiClient);}exports[_0x8c5f('0x46')]=sendInteractionOpenedEvent;