788853222a7b9cd5ba2fea827abb6d6d4161a232
[motion2.git] / server / api / mailAccount / mailAccount.rpc.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 _0x7e60=['body','mail','difference','keys','CmContact','updatedAt','CompanyId','ListId','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','CmList','List','Contacts','Applications','MailServerOut','get','omit','applications','orderBy','priority','asc','autoclose','push','length','close','*,*,*,*','create','List\x20not\x20found','messageId','format','MailInteraction','MailMessage','inReplyTo','Contact\x20not\x20found','spread','update','attach','YYYY-MM-DD\x20HH:mm:ss','interaction','created','subject','attachments','originTo','originCc','bcc','ChatWebsiteId','originChannel','Email','Attachment','Attachments','UserId','User','name','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','localhost','socket.io-emitter','redis','./mailAccount.socket','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','findAll','options','where','attributes','limit','include','map','model','GetMailAccount','MailAccount','find','ShowMailAccount','debug','NotifyMailAccount'];(function(_0x353e11,_0x37b28f){var _0x23a0c7=function(_0x79b0c6){while(--_0x79b0c6){_0x353e11['push'](_0x353e11['shift']());}};_0x23a0c7(++_0x37b28f);}(_0x7e60,0xa5));var _0x07e6=function(_0x46d764,_0x2add59){_0x46d764=_0x46d764-0x0;var _0x1e325d=_0x7e60[_0x46d764];return _0x1e325d;};'use strict';var _=require(_0x07e6('0x0'));var util=require(_0x07e6('0x1'));var moment=require('moment');var BPromise=require(_0x07e6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x07e6('0x3'))['db'];var utils=require(_0x07e6('0x4'));var logger=require(_0x07e6('0x5'))(_0x07e6('0x6'));var config=require(_0x07e6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x07e6('0x8')][_0x07e6('0x9')]({'port':0x232c});config['redis']=_[_0x07e6('0xa')](config['redis'],{'host':_0x07e6('0xb'),'port':0x18eb});var socket=require(_0x07e6('0xc'))(new Redis(config[_0x07e6('0xd')]));require(_0x07e6('0xe'))[_0x07e6('0xf')](socket);function respondWithRpcPromise(_0x2ea711,_0x3f5c1f,_0x5be93b){return new BPromise(function(_0x25bdf4,_0x348c8f){return client[_0x07e6('0x10')](_0x2ea711,_0x5be93b)[_0x07e6('0x11')](function(_0x4c052a){logger[_0x07e6('0x12')](_0x07e6('0x13'),_0x3f5c1f,_0x07e6('0x14'));logger['debug']('MailAccount,\x20%s,\x20%s,\x20%s',_0x3f5c1f,_0x07e6('0x14'),JSON[_0x07e6('0x15')](_0x4c052a));if(_0x4c052a[_0x07e6('0x16')]){if(_0x4c052a['error'][_0x07e6('0x17')]===0x1f4){logger[_0x07e6('0x16')](_0x07e6('0x13'),_0x3f5c1f,_0x4c052a[_0x07e6('0x16')][_0x07e6('0x18')]);return _0x348c8f(_0x4c052a[_0x07e6('0x16')][_0x07e6('0x18')]);}logger[_0x07e6('0x16')]('MailAccount,\x20%s,\x20%s',_0x3f5c1f,_0x4c052a['error']['message']);return _0x25bdf4(_0x4c052a[_0x07e6('0x16')][_0x07e6('0x18')]);}else{logger[_0x07e6('0x12')](_0x07e6('0x13'),_0x3f5c1f,_0x07e6('0x14'));_0x25bdf4(_0x4c052a[_0x07e6('0x19')][_0x07e6('0x18')]);}})[_0x07e6('0x1a')](function(_0x3537e0){logger[_0x07e6('0x16')](_0x07e6('0x13'),_0x3f5c1f,_0x3537e0);_0x348c8f(_0x3537e0);});});}exports['GetMailAccount']=function(_0x5357fe){var _0x51e716=this;return new Promise(function(_0x27ec22,_0xb1885a){return db['MailAccount'][_0x07e6('0x1b')]({'raw':_0x5357fe[_0x07e6('0x1c')]?_0x5357fe[_0x07e6('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x5357fe[_0x07e6('0x1c')]?_0x5357fe[_0x07e6('0x1c')][_0x07e6('0x1d')]||null:null,'attributes':_0x5357fe[_0x07e6('0x1c')]?_0x5357fe[_0x07e6('0x1c')][_0x07e6('0x1e')]||null:null,'limit':_0x5357fe[_0x07e6('0x1c')]?_0x5357fe['options'][_0x07e6('0x1f')]||null:null,'include':_0x5357fe['options']?_0x5357fe[_0x07e6('0x1c')][_0x07e6('0x20')]?_[_0x07e6('0x21')](_0x5357fe[_0x07e6('0x1c')][_0x07e6('0x20')],function(_0x4d4c57){return{'model':db[_0x4d4c57[_0x07e6('0x22')]],'as':_0x4d4c57['as'],'attributes':_0x4d4c57[_0x07e6('0x1e')],'include':_0x4d4c57[_0x07e6('0x20')]?_['map'](_0x4d4c57[_0x07e6('0x20')],function(_0x44e06f){return{'model':db[_0x44e06f['model']],'as':_0x44e06f['as'],'attributes':_0x44e06f['attributes'],'include':_0x44e06f[_0x07e6('0x20')]?_[_0x07e6('0x21')](_0x44e06f['include'],function(_0x1e0033){return{'model':db[_0x1e0033[_0x07e6('0x22')]],'as':_0x1e0033['as'],'attributes':_0x1e0033[_0x07e6('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x07e6('0x11')](function(_0xdf8324){logger['info'](_0x07e6('0x23'),_0x5357fe);logger['debug'](_0x07e6('0x23'),_0x5357fe,JSON[_0x07e6('0x15')](_0xdf8324));_0x27ec22(_0xdf8324);})[_0x07e6('0x1a')](function(_0x19dfdb){logger[_0x07e6('0x16')](_0x07e6('0x23'),_0x19dfdb[_0x07e6('0x18')],_0x5357fe);_0xb1885a(_0x51e716[_0x07e6('0x16')](0x1f4,_0x19dfdb[_0x07e6('0x18')]));});});};exports['ShowMailAccount']=function(_0x4e35e0){var _0x14eb1b=this;return new Promise(function(_0x28e104,_0x1f811d){return db[_0x07e6('0x24')][_0x07e6('0x25')]({'raw':_0x4e35e0[_0x07e6('0x1c')]?_0x4e35e0[_0x07e6('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x4e35e0[_0x07e6('0x1c')]?_0x4e35e0['options'][_0x07e6('0x1d')]||null:null,'attributes':_0x4e35e0['options']?_0x4e35e0['options'][_0x07e6('0x1e')]||null:null,'include':_0x4e35e0[_0x07e6('0x1c')]?_0x4e35e0[_0x07e6('0x1c')][_0x07e6('0x20')]?_[_0x07e6('0x21')](_0x4e35e0[_0x07e6('0x1c')][_0x07e6('0x20')],function(_0x40edd0){return{'model':db[_0x40edd0['model']],'as':_0x40edd0['as'],'attributes':_0x40edd0[_0x07e6('0x1e')],'include':_0x40edd0['include']?_[_0x07e6('0x21')](_0x40edd0['include'],function(_0x261f97){return{'model':db[_0x261f97[_0x07e6('0x22')]],'as':_0x261f97['as'],'attributes':_0x261f97[_0x07e6('0x1e')],'include':_0x261f97[_0x07e6('0x20')]?_['map'](_0x261f97['include'],function(_0x53deb8){return{'model':db[_0x53deb8[_0x07e6('0x22')]],'as':_0x53deb8['as'],'attributes':_0x53deb8['attributes']};}):[]};}):[]};}):[]:[]})[_0x07e6('0x11')](function(_0x45de10){logger[_0x07e6('0x12')](_0x07e6('0x26'),_0x4e35e0);logger[_0x07e6('0x27')]('ShowMailAccount',_0x4e35e0,JSON['stringify'](_0x45de10));_0x28e104(_0x45de10);})[_0x07e6('0x1a')](function(_0x41afb7){logger[_0x07e6('0x16')](_0x07e6('0x26'),_0x41afb7[_0x07e6('0x18')],_0x4e35e0);_0x1f811d(_0x14eb1b[_0x07e6('0x16')](0x1f4,_0x41afb7[_0x07e6('0x18')]));});});};exports[_0x07e6('0x28')]=function(_0x534b29){var _0x14bac2=this;return new Promise(function(_0x5740a0,_0x42198d){var _0x392aa4={'body':_0x534b29[_0x07e6('0x29')],'channel':_0x07e6('0x2a')};var _0x4f45a7=_[_0x07e6('0x2b')](_[_0x07e6('0x2c')](db[_0x07e6('0x2d')]['rawAttributes']),['createdAt',_0x07e6('0x2e'),_0x07e6('0x2f'),_0x07e6('0x30')]);var _0x3054a2=![];if(_0x534b29[_0x07e6('0x29')]['id']){delete _0x534b29[_0x07e6('0x29')]['id'];}if(_[_0x07e6('0x31')](_0x534b29[_0x07e6('0x29')]['from'])){return _0x42198d(_0x14bac2[_0x07e6('0x16')](0x1f4,'from\x20is\x20mandatory'));}if(_['isNil'](_0x534b29[_0x07e6('0x29')][_0x07e6('0x29')])||_0x534b29[_0x07e6('0x29')][_0x07e6('0x29')]===''){return _0x42198d(_0x14bac2[_0x07e6('0x16')](0x1f4,_0x07e6('0x32')));}if(_[_0x07e6('0x31')](_0x534b29[_0x07e6('0x29')]['mapKey'])){return _0x42198d(_0x14bac2[_0x07e6('0x16')](0x1f4,_0x07e6('0x33')+_0x4f45a7));}if(!_['includes'](_0x4f45a7,_0x534b29[_0x07e6('0x29')][_0x07e6('0x34')])){return _0x42198d(_0x14bac2[_0x07e6('0x16')](0x1f4,_0x07e6('0x35')+_0x4f45a7));}var _0x2e2c06={};_0x2e2c06[_0x534b29['body'][_0x07e6('0x34')]]=_0x534b29[_0x07e6('0x29')][_0x07e6('0x36')];return db[_0x07e6('0x24')][_0x07e6('0x25')]({'where':{'id':_0x534b29[_0x07e6('0x37')]['id']},'include':[{'model':db[_0x07e6('0x38')],'as':_0x07e6('0x39'),'include':[{'model':db['CmContact'],'as':_0x07e6('0x3a'),'where':_0x2e2c06,'limit':0x1,'order':[[_0x07e6('0x2e'),'DESC']]}]},{'model':db['MailApplication'],'as':_0x07e6('0x3b')},{'model':db[_0x07e6('0x3c')],'as':'Smtp'}]})[_0x07e6('0x11')](function(_0xf3b0e3){if(_0xf3b0e3&&_0xf3b0e3[_0x07e6('0x39')]){var _0x418cfd=_0xf3b0e3[_0x07e6('0x3d')]({'plain':!![]});_0x392aa4[_0x07e6('0x37')]=_[_0x07e6('0x3e')](_0x418cfd,[_0x07e6('0x3b'),_0x07e6('0x39')]);_0x392aa4[_0x07e6('0x3f')]=_0x418cfd[_0x07e6('0x3b')];_0x392aa4['list']=_0x418cfd[_0x07e6('0x39')];_0x392aa4['applications']=_[_0x07e6('0x40')](_0x392aa4[_0x07e6('0x3f')],[_0x07e6('0x41')],[_0x07e6('0x42')]);if(_0x392aa4[_0x07e6('0x37')]&&_0x392aa4[_0x07e6('0x37')][_0x07e6('0x43')]){_0x392aa4[_0x07e6('0x3f')][_0x07e6('0x44')]({'id':0x0,'priority':_0x392aa4['applications'][_0x07e6('0x45')]+0x1,'app':_0x07e6('0x46'),'appdata':'autoclose','interval':_0x07e6('0x47')});}if(_0x392aa4[_0x07e6('0x37')][_0x07e6('0x3b')]){delete _0x392aa4[_0x07e6('0x37')][_0x07e6('0x3b')];}if(_0x392aa4[_0x07e6('0x37')][_0x07e6('0x39')]){delete _0x392aa4[_0x07e6('0x37')][_0x07e6('0x39')];}if(_0x418cfd[_0x07e6('0x39')][_0x07e6('0x3a')]['length']){return _0x418cfd[_0x07e6('0x39')]['Contacts'][0x0];}var _0x5515f7=_[_0x07e6('0xa')](_0x534b29[_0x07e6('0x29')],{'firstName':_0x534b29[_0x07e6('0x29')][_0x07e6('0x36')],'ListId':_0x418cfd[_0x07e6('0x30')]});_0x5515f7[_0x534b29['body'][_0x07e6('0x34')]]=_0x534b29['body'][_0x07e6('0x36')];return db[_0x07e6('0x2d')][_0x07e6('0x48')](_0x5515f7);}else{throw new Error(_0x07e6('0x49'));}})[_0x07e6('0x11')](function(_0x278b00){_0x392aa4['contact']=_0x278b00;if(_0x278b00){if(!_0x534b29['body'][_0x07e6('0x18')]['messageId']){_0x534b29[_0x07e6('0x29')]['message'][_0x07e6('0x4a')]=rs['generate']()+'\x20'+_0x534b29[_0x07e6('0x29')]['message'][_0x07e6('0x36')];}var _0x1f0e66={'ContactId':_0x278b00['id'],'MailAccountId':_0x534b29[_0x07e6('0x37')]['id'],'inReplyTo':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')][_0x07e6('0x4a')],'to':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')][_0x07e6('0x36')],'cc':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')]['cc'],'subject':_0x534b29['body']['message']['subject'],'attach':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')]['attach'],'lastMsgAt':moment()[_0x07e6('0x4b')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x07e6('0x4c')][_0x07e6('0x25')]({'where':{'closed':![],'MailAccountId':_0x534b29[_0x07e6('0x37')]['id']},'include':[{'model':db[_0x07e6('0x4d')],'as':'Messages','attributes':[_0x07e6('0x4a')],'where':{'messageId':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')][_0x07e6('0x4e')]}}]})['then'](function(_0x47eef8){if(_0x47eef8){return[_0x47eef8,![]];}return db['MailInteraction'][_0x07e6('0x48')](_0x1f0e66)[_0x07e6('0x11')](function(_0x294beb){return[_0x294beb,!![]];});});}else{throw new Error(_0x07e6('0x4f'));}})[_0x07e6('0x50')](function(_0x50e955,_0x141bde){if(_0x50e955){_0x3054a2=_0x141bde;if(!_0x141bde){return _0x50e955[_0x07e6('0x51')]({'inReplyTo':_0x534b29['body'][_0x07e6('0x18')][_0x07e6('0x4a')],'to':_0x534b29['body'][_0x07e6('0x18')][_0x07e6('0x36')],'cc':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')]['cc'],'subject':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')]['subject'],'attach':_0x50e955['attach']?_0x50e955[_0x07e6('0x52')]:_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')][_0x07e6('0x52')],'substatus':null,'substatusAt':moment()[_0x07e6('0x4b')](_0x07e6('0x53')),'lastMsgAt':moment()[_0x07e6('0x4b')](_0x07e6('0x53')),'lastMsgDirection':'in'});}else{return _0x50e955;}}})[_0x07e6('0x11')](function(_0x1a0e4a){_0x392aa4[_0x07e6('0x54')]=_0x1a0e4a[_0x07e6('0x3d')]({'plain':!![]});_0x392aa4[_0x07e6('0x54')][_0x07e6('0x55')]=_0x3054a2;return db[_0x07e6('0x4d')][_0x07e6('0x48')]({'body':_0x534b29[_0x07e6('0x29')][_0x07e6('0x29')],'MailAccountId':_0x534b29[_0x07e6('0x37')]['id'],'MailInteractionId':_0x1a0e4a['id'],'direction':'in','ContactId':_0x392aa4['contact']['id'],'messageId':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')][_0x07e6('0x4a')],'from':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')]['from'],'to':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')]['to'],'cc':_0x534b29[_0x07e6('0x29')]['message']['cc'],'subject':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')][_0x07e6('0x56')],'attach':_0x534b29['body']['message'][_0x07e6('0x52')],'Attachments':_0x534b29[_0x07e6('0x29')]['message'][_0x07e6('0x57')],'originTo':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')][_0x07e6('0x58')],'originCc':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')][_0x07e6('0x59')],'bcc':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')][_0x07e6('0x5a')],'ChatWebsiteId':_0x534b29['body']['message'][_0x07e6('0x5b')]||null,'originChannel':_0x534b29[_0x07e6('0x29')][_0x07e6('0x18')][_0x07e6('0x5c')]||_0x07e6('0x5d'),'ChatOfflineMessageId':_0x534b29[_0x07e6('0x29')]['message']['ChatOfflineMessageId']||null},{'include':[{'model':db[_0x07e6('0x5e')],'as':_0x07e6('0x5f')}]});})[_0x07e6('0x11')](function(_0x29d7b5){_0x392aa4['message']=_0x29d7b5;if(_0x392aa4[_0x07e6('0x54')][_0x07e6('0x60')]){return db[_0x07e6('0x61')][_0x07e6('0x25')]({'attributes':['id',_0x07e6('0x62')],'where':{'id':_0x392aa4[_0x07e6('0x54')][_0x07e6('0x60')]}})[_0x07e6('0x11')](function(_0x5f7b36){if(_0x5f7b36){_0x392aa4[_0x07e6('0x3f')]['unshift']({'id':0x0,'priority':0x0,'app':_0x07e6('0x63'),'appdata':_0x5f7b36[_0x07e6('0x62')]+','+(_0x392aa4[_0x07e6('0x37')][_0x07e6('0x64')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x07e6('0x65'),_0x07e6('0x66'),_0x392aa4);});}return respondWithRpcPromise(_0x07e6('0x65'),'startRouting',_0x392aa4);})[_0x07e6('0x11')](function(_0x194e60){_0x5740a0(_0x194e60);})[_0x07e6('0x1a')](function(_0x57ebed){_0x42198d(_0x14bac2[_0x07e6('0x16')](0x1f4,_0x57ebed[_0x07e6('0x18')]));});});};