3d92eebb9b701fb3248b452125ea1ec0da94257f
[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 _0x0e4b=['unshift','agent','waitForTheAssignedAgent','MailQueue','queueId','queue','Start','startRouting','lodash','moment','bluebird','ioredis','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','message','result','GetMailAccount','MailAccount','findAll','options','attributes','include','map','model','stringify','catch','ShowMailAccount','raw','where','setDataValue','getSmtpOptions','NotifyMailAccount','mail','difference','keys','CmContact','rawAttributes','updatedAt','CompanyId','ListId','body','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','Contacts','MailApplication','Applications','CloudProvider','smtpOptions','applications','list','orderBy','priority','asc','push','length','autoclose','*,*,*,*','List\x20not\x20found','messageId','subject','attach','MailInteraction','MailMessage','Messages','inReplyTo','create','Contact\x20not\x20found','update','format','YYYY-MM-DD\x20HH:mm:ss','interaction','get','created','contact','originTo','originCc','ChatWebsiteId','originChannel','ChatOfflineMessageId','Attachment','Attachments','name','UserId'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0x0e4b,0xdc));var _0xb0e4=function(_0x37cc43,_0x4d48be){_0x37cc43=_0x37cc43-0x0;var _0x42cea4=_0x0e4b[_0x37cc43];return _0x42cea4;};'use strict';var _=require(_0xb0e4('0x0'));var moment=require(_0xb0e4('0x1'));var BPromise=require(_0xb0e4('0x2'));var rs=require('randomstring');var Redis=require(_0xb0e4('0x3'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xb0e4('0x4'));var client=jayson[_0xb0e4('0x5')]['http']({'port':0x232c});config[_0xb0e4('0x6')]=_[_0xb0e4('0x7')](config[_0xb0e4('0x6')],{'host':_0xb0e4('0x8'),'port':0x18eb});var socket=require(_0xb0e4('0x9'))(new Redis(config['redis']));require('./mailAccount.socket')[_0xb0e4('0xa')](socket);function respondWithRpcPromise(_0x9d4a99,_0x1d6452,_0x23555b){return new BPromise(function(_0x12a36a,_0x140b7e){return client[_0xb0e4('0xb')](_0x9d4a99,_0x23555b)[_0xb0e4('0xc')](function(_0x38019d){logger[_0xb0e4('0xd')](_0xb0e4('0xe'),_0x1d6452,_0xb0e4('0xf'));logger[_0xb0e4('0x10')](_0xb0e4('0x11'),_0x1d6452,_0xb0e4('0xf'),JSON['stringify'](_0x38019d));if(_0x38019d[_0xb0e4('0x12')]){if(_0x38019d[_0xb0e4('0x12')]['code']===0x1f4){logger[_0xb0e4('0x12')](_0xb0e4('0xe'),_0x1d6452,_0x38019d[_0xb0e4('0x12')][_0xb0e4('0x13')]);return _0x140b7e(_0x38019d[_0xb0e4('0x12')]['message']);}logger['error'](_0xb0e4('0xe'),_0x1d6452,_0x38019d[_0xb0e4('0x12')]['message']);return _0x12a36a(_0x38019d[_0xb0e4('0x12')][_0xb0e4('0x13')]);}else{logger[_0xb0e4('0xd')](_0xb0e4('0xe'),_0x1d6452,_0xb0e4('0xf'));_0x12a36a(_0x38019d[_0xb0e4('0x14')]['message']);}})['catch'](function(_0x4ba49e){logger[_0xb0e4('0x12')](_0xb0e4('0xe'),_0x1d6452,_0x4ba49e);_0x140b7e(_0x4ba49e);});});}exports[_0xb0e4('0x15')]=function(_0x690682){var _0x2ce0c6=this;return new Promise(function(_0x2f3809,_0x54b7ff){return db[_0xb0e4('0x16')][_0xb0e4('0x17')]({'raw':_0x690682[_0xb0e4('0x18')]?_0x690682[_0xb0e4('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x690682[_0xb0e4('0x18')]?_0x690682[_0xb0e4('0x18')]['where']||null:null,'attributes':_0x690682[_0xb0e4('0x18')]?_0x690682[_0xb0e4('0x18')][_0xb0e4('0x19')]||null:null,'limit':_0x690682['options']?_0x690682[_0xb0e4('0x18')]['limit']||null:null,'include':_0x690682['options']?_0x690682[_0xb0e4('0x18')][_0xb0e4('0x1a')]?_[_0xb0e4('0x1b')](_0x690682[_0xb0e4('0x18')][_0xb0e4('0x1a')],function(_0x248aa5){return{'model':db[_0x248aa5[_0xb0e4('0x1c')]],'as':_0x248aa5['as'],'attributes':_0x248aa5['attributes'],'include':_0x248aa5[_0xb0e4('0x1a')]?_['map'](_0x248aa5[_0xb0e4('0x1a')],function(_0x22033f){return{'model':db[_0x22033f[_0xb0e4('0x1c')]],'as':_0x22033f['as'],'attributes':_0x22033f[_0xb0e4('0x19')],'include':_0x22033f['include']?_[_0xb0e4('0x1b')](_0x22033f[_0xb0e4('0x1a')],function(_0x15d402){return{'model':db[_0x15d402[_0xb0e4('0x1c')]],'as':_0x15d402['as'],'attributes':_0x15d402[_0xb0e4('0x19')]};}):[]};}):[]};}):[]:[]})[_0xb0e4('0xc')](function(_0x1dad0e){logger[_0xb0e4('0xd')]('GetMailAccount',_0x690682);logger[_0xb0e4('0x10')]('GetMailAccount',_0x690682,JSON[_0xb0e4('0x1d')](_0x1dad0e));_0x2f3809(_0x1dad0e);})[_0xb0e4('0x1e')](function(_0x50cef9){logger[_0xb0e4('0x12')](_0xb0e4('0x15'),_0x50cef9[_0xb0e4('0x13')],_0x690682);_0x54b7ff(_0x2ce0c6[_0xb0e4('0x12')](0x1f4,_0x50cef9[_0xb0e4('0x13')]));});});};exports[_0xb0e4('0x1f')]=function(_0x5e8667){var _0x30d324=this;return new Promise(function(_0x57339c,_0x5b3d93){return db[_0xb0e4('0x16')]['find']({'raw':_0x5e8667[_0xb0e4('0x18')]?_0x5e8667['options'][_0xb0e4('0x20')]===undefined?!![]:![]:!![],'where':_0x5e8667['options']?_0x5e8667[_0xb0e4('0x18')][_0xb0e4('0x21')]||null:null,'attributes':_0x5e8667[_0xb0e4('0x18')]?_0x5e8667['options'][_0xb0e4('0x19')]||null:null,'include':_0x5e8667['options']?_0x5e8667[_0xb0e4('0x18')][_0xb0e4('0x1a')]?_[_0xb0e4('0x1b')](_0x5e8667[_0xb0e4('0x18')][_0xb0e4('0x1a')],function(_0x59870f){return{'model':db[_0x59870f[_0xb0e4('0x1c')]],'as':_0x59870f['as'],'attributes':_0x59870f['attributes'],'include':_0x59870f[_0xb0e4('0x1a')]?_[_0xb0e4('0x1b')](_0x59870f[_0xb0e4('0x1a')],function(_0x5451f2){return{'model':db[_0x5451f2[_0xb0e4('0x1c')]],'as':_0x5451f2['as'],'attributes':_0x5451f2[_0xb0e4('0x19')],'include':_0x5451f2[_0xb0e4('0x1a')]?_[_0xb0e4('0x1b')](_0x5451f2['include'],function(_0x4b6f58){return{'model':db[_0x4b6f58['model']],'as':_0x4b6f58['as'],'attributes':_0x4b6f58['attributes']};}):[]};}):[]};}):[]:[]})[_0xb0e4('0xc')](function(_0x4b924d){if(_0x5e8667[_0xb0e4('0x18')]['smtp']===!![])_0x4b924d[_0xb0e4('0x22')]('smtpOptions',_0x4b924d[_0xb0e4('0x23')]());logger[_0xb0e4('0xd')](_0xb0e4('0x1f'),_0x5e8667);logger[_0xb0e4('0x10')]('ShowMailAccount',_0x5e8667,JSON[_0xb0e4('0x1d')](_0x4b924d));_0x57339c(_0x4b924d);})[_0xb0e4('0x1e')](function(_0x5dc154){logger[_0xb0e4('0x12')]('ShowMailAccount',_0x5dc154[_0xb0e4('0x13')],_0x5e8667);_0x5b3d93(_0x30d324[_0xb0e4('0x12')](0x1f4,_0x5dc154['message']));});});};exports[_0xb0e4('0x24')]=function(_0x4f7f39){var _0x52f41e=this;return new Promise(function(_0x4ec8c6,_0x114098){var _0x3fbde8={'body':_0x4f7f39['body'],'channel':_0xb0e4('0x25')};var _0x5eb2f4=_[_0xb0e4('0x26')](_[_0xb0e4('0x27')](db[_0xb0e4('0x28')][_0xb0e4('0x29')]),['createdAt',_0xb0e4('0x2a'),_0xb0e4('0x2b'),_0xb0e4('0x2c')]);var _0x3e839e=![];if(_0x4f7f39[_0xb0e4('0x2d')]['id']){delete _0x4f7f39[_0xb0e4('0x2d')]['id'];}if(_[_0xb0e4('0x2e')](_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x2f')])){return _0x114098(_0x52f41e[_0xb0e4('0x12')](0x1f4,_0xb0e4('0x30')));}if(_[_0xb0e4('0x2e')](_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x2d')])||_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x2d')]===''){return _0x114098(_0x52f41e['error'](0x1f4,_0xb0e4('0x31')));}if(_[_0xb0e4('0x2e')](_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x32')])){return _0x114098(_0x52f41e['error'](0x1f4,_0xb0e4('0x33')+_0x5eb2f4));}if(!_[_0xb0e4('0x34')](_0x5eb2f4,_0x4f7f39['body'][_0xb0e4('0x32')])){return _0x114098(_0x52f41e[_0xb0e4('0x12')](0x1f4,_0xb0e4('0x35')+_0x5eb2f4));}var _0x40a365={};_0x40a365[_0x4f7f39['body'][_0xb0e4('0x32')]]=_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x2f')];return db[_0xb0e4('0x16')][_0xb0e4('0x36')]({'where':{'id':_0x4f7f39[_0xb0e4('0x37')]['id']},'include':[{'model':db[_0xb0e4('0x38')],'as':_0xb0e4('0x39'),'include':[{'model':db[_0xb0e4('0x28')],'as':_0xb0e4('0x3a'),'where':_0x40a365,'limit':0x1,'order':[[_0xb0e4('0x2a'),'DESC']]}]},{'model':db[_0xb0e4('0x3b')],'as':_0xb0e4('0x3c')},{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':_0xb0e4('0x3d')}]}]})[_0xb0e4('0xc')](function(_0x4c2036){if(_0x4c2036&&_0x4c2036['List']){var _0x5e8a9a=_0x4c2036['get']({'plain':!![]});_0x3fbde8['account']=_['omit'](_0x5e8a9a,[_0xb0e4('0x3c'),'List']);_0x3fbde8[_0xb0e4('0x37')][_0xb0e4('0x3e')]=_0x4c2036[_0xb0e4('0x23')]();_0x3fbde8[_0xb0e4('0x3f')]=_0x5e8a9a['Applications'];_0x3fbde8[_0xb0e4('0x40')]=_0x5e8a9a[_0xb0e4('0x39')];_0x3fbde8['applications']=_[_0xb0e4('0x41')](_0x3fbde8['applications'],[_0xb0e4('0x42')],[_0xb0e4('0x43')]);if(_0x3fbde8[_0xb0e4('0x37')]&&_0x3fbde8[_0xb0e4('0x37')]['autoclose']){_0x3fbde8[_0xb0e4('0x3f')][_0xb0e4('0x44')]({'id':0x0,'priority':_0x3fbde8[_0xb0e4('0x3f')][_0xb0e4('0x45')]+0x1,'app':'close','appdata':_0xb0e4('0x46'),'interval':_0xb0e4('0x47')});}if(_0x3fbde8[_0xb0e4('0x37')]['Applications']){delete _0x3fbde8['account']['Applications'];}if(_0x3fbde8['account']['List']){delete _0x3fbde8[_0xb0e4('0x37')]['List'];}if(_0x5e8a9a[_0xb0e4('0x39')][_0xb0e4('0x3a')][_0xb0e4('0x45')]){return _0x5e8a9a[_0xb0e4('0x39')]['Contacts'][0x0];}var _0x387319=_[_0xb0e4('0x7')](_0x4f7f39['body'],{'firstName':_0x4f7f39[_0xb0e4('0x2d')]['from'],'ListId':_0x5e8a9a[_0xb0e4('0x2c')]});_0x387319[_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x32')]]=_0x4f7f39['body'][_0xb0e4('0x2f')];return db[_0xb0e4('0x28')]['create'](_0x387319);}else{throw new Error(_0xb0e4('0x48'));}})[_0xb0e4('0xc')](function(_0x4cf438){_0x3fbde8['contact']=_0x4cf438;if(_0x4cf438){if(!_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')][_0xb0e4('0x49')]){_0x4f7f39['body'][_0xb0e4('0x13')][_0xb0e4('0x49')]=rs['generate']()+'\x20'+_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')]['from'];}var _0x108395={'ContactId':_0x4cf438['id'],'MailAccountId':_0x4f7f39[_0xb0e4('0x37')]['id'],'inReplyTo':_0x4f7f39[_0xb0e4('0x2d')]['message'][_0xb0e4('0x49')],'to':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')][_0xb0e4('0x2f')],'cc':_0x4f7f39['body'][_0xb0e4('0x13')]['cc'],'subject':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')][_0xb0e4('0x4a')],'attach':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')][_0xb0e4('0x4b')],'lastMsgAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0xb0e4('0x4c')][_0xb0e4('0x36')]({'where':{'closed':![],'MailAccountId':_0x4f7f39[_0xb0e4('0x37')]['id']},'include':[{'model':db[_0xb0e4('0x4d')],'as':_0xb0e4('0x4e'),'attributes':[_0xb0e4('0x49')],'where':{'messageId':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')][_0xb0e4('0x4f')]}}]})[_0xb0e4('0xc')](function(_0x115dc7){if(_0x115dc7){return[_0x115dc7,![]];}return db[_0xb0e4('0x4c')][_0xb0e4('0x50')](_0x108395)[_0xb0e4('0xc')](function(_0xd3115a){return[_0xd3115a,!![]];});});}else{throw new Error(_0xb0e4('0x51'));}})['spread'](function(_0x4b1c07,_0x55868c){if(_0x4b1c07){_0x3e839e=_0x55868c;if(!_0x55868c){return _0x4b1c07[_0xb0e4('0x52')]({'inReplyTo':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')][_0xb0e4('0x49')],'to':_0x4f7f39['body']['message'][_0xb0e4('0x2f')],'cc':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')]['cc'],'subject':_0x4f7f39['body'][_0xb0e4('0x13')][_0xb0e4('0x4a')],'attach':_0x4b1c07['attach']?_0x4b1c07['attach']:_0x4f7f39[_0xb0e4('0x2d')]['message'][_0xb0e4('0x4b')],'substatus':null,'substatusAt':moment()[_0xb0e4('0x53')](_0xb0e4('0x54')),'lastMsgAt':moment()[_0xb0e4('0x53')](_0xb0e4('0x54')),'lastMsgDirection':'in'});}else{return _0x4b1c07;}}})[_0xb0e4('0xc')](function(_0x164c79){_0x3fbde8[_0xb0e4('0x55')]=_0x164c79[_0xb0e4('0x56')]({'plain':!![]});_0x3fbde8[_0xb0e4('0x55')][_0xb0e4('0x57')]=_0x3e839e;return db['MailMessage'][_0xb0e4('0x50')]({'body':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x2d')],'MailAccountId':_0x4f7f39[_0xb0e4('0x37')]['id'],'MailInteractionId':_0x164c79['id'],'direction':'in','ContactId':_0x3fbde8[_0xb0e4('0x58')]['id'],'messageId':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')][_0xb0e4('0x49')],'from':_0x4f7f39['body'][_0xb0e4('0x13')][_0xb0e4('0x2f')],'to':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')]['to'],'cc':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')]['cc'],'subject':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')][_0xb0e4('0x4a')],'attach':_0x4f7f39['body'][_0xb0e4('0x13')]['attach'],'Attachments':_0x4f7f39[_0xb0e4('0x2d')]['message']['attachments'],'originTo':_0x4f7f39['body'][_0xb0e4('0x13')][_0xb0e4('0x59')],'originCc':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')][_0xb0e4('0x5a')],'bcc':_0x4f7f39[_0xb0e4('0x2d')][_0xb0e4('0x13')]['bcc'],'ChatWebsiteId':_0x4f7f39[_0xb0e4('0x2d')]['message'][_0xb0e4('0x5b')]||null,'originChannel':_0x4f7f39['body']['message'][_0xb0e4('0x5c')]||'Email','ChatOfflineMessageId':_0x4f7f39['body'][_0xb0e4('0x13')][_0xb0e4('0x5d')]||null},{'include':[{'model':db[_0xb0e4('0x5e')],'as':_0xb0e4('0x5f')}]});})['then'](function(_0x193a35){_0x3fbde8[_0xb0e4('0x13')]=_0x193a35;if(!_0x3fbde8[_0xb0e4('0x55')]['UserId']){return;}return db['User'][_0xb0e4('0x36')]({'attributes':['id',_0xb0e4('0x60')],'where':{'id':_0x3fbde8[_0xb0e4('0x55')][_0xb0e4('0x61')]}});})['then'](function(_0x2ef0a4){if(_0x2ef0a4){_0x3fbde8['applications'][_0xb0e4('0x62')]({'id':0x0,'priority':0x0,'app':_0xb0e4('0x63'),'appdata':_0x2ef0a4[_0xb0e4('0x60')]+','+(_0x3fbde8[_0xb0e4('0x37')][_0xb0e4('0x64')]||0xa),'interval':_0xb0e4('0x47')});}if(!_0x3fbde8[_0xb0e4('0x55')]['queueId']){return;}return db[_0xb0e4('0x65')][_0xb0e4('0x36')]({'attributes':['id',_0xb0e4('0x60')],'where':{'id':_0x3fbde8[_0xb0e4('0x55')][_0xb0e4('0x66')]}});})[_0xb0e4('0xc')](function(_0x2f4b49){if(_0x2f4b49){_0x3fbde8[_0xb0e4('0x3f')][_0xb0e4('0x62')]({'id':0x0,'priority':0x1,'app':_0xb0e4('0x67'),'appdata':_0x2f4b49[_0xb0e4('0x60')]+','+(_0x3fbde8[_0xb0e4('0x37')]['waitForTheAssignedQueue']||0x12c),'interval':_0xb0e4('0x47')});}return respondWithRpcPromise(_0xb0e4('0x68'),_0xb0e4('0x69'),_0x3fbde8);})['then'](function(_0x359148){_0x4ec8c6(_0x359148);})[_0xb0e4('0x1e')](function(_0x467277){_0x114098(_0x52f41e[_0xb0e4('0x12')](0x1f4,_0x467277[_0xb0e4('0x13')]));});});};