3b5f1609a845b7cc6bf62669a277ff987034dcc8
[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 _0x301c=['info','result','catch','GetMailAccount','findAll','options','raw','attributes','limit','include','model','map','stringify','ShowMailAccount','MailAccount','find','where','NotifyMailAccount','body','mail','keys','CmContact','createdAt','updatedAt','CompanyId','isNil','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','from','account','CmList','DESC','Applications','Smtp','List','get','applications','orderBy','priority','asc','autoclose','*,*,*,*','Contacts','create','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','Messages','inReplyTo','MailInteraction','spread','update','interaction','MailMessage','contact','originTo','originCc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','./mailAccount.socket','register','request','then','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x1ebce2,_0x10e903){var _0x4a330c=function(_0x4fd810){while(--_0x4fd810){_0x1ebce2['push'](_0x1ebce2['shift']());}};_0x4a330c(++_0x10e903);}(_0x301c,0x182));var _0xc301=function(_0x3b8774,_0x301a46){_0x3b8774=_0x3b8774-0x0;var _0x5bcfcc=_0x301c[_0x3b8774];return _0x5bcfcc;};'use strict';var _=require(_0xc301('0x0'));var util=require(_0xc301('0x1'));var moment=require(_0xc301('0x2'));var BPromise=require(_0xc301('0x3'));var rs=require(_0xc301('0x4'));var fs=require('fs');var Redis=require(_0xc301('0x5'));var db=require(_0xc301('0x6'))['db'];var utils=require(_0xc301('0x7'));var logger=require(_0xc301('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc301('0x9'));var client=jayson[_0xc301('0xa')][_0xc301('0xb')]({'port':0x232c});config[_0xc301('0xc')]=_[_0xc301('0xd')](config[_0xc301('0xc')],{'host':_0xc301('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc301('0xc')]));require(_0xc301('0xf'))[_0xc301('0x10')](socket);function respondWithRpcPromise(_0x41a5e2,_0x12af42,_0x57ca20){return new BPromise(function(_0x30c8b1,_0x56dae1){return client[_0xc301('0x11')](_0x41a5e2,_0x57ca20)[_0xc301('0x12')](function(_0x58217f){logger['info'](_0xc301('0x13'),_0x12af42,_0xc301('0x14'));logger[_0xc301('0x15')](_0xc301('0x16'),_0x12af42,'request\x20sent',JSON['stringify'](_0x58217f));if(_0x58217f['error']){if(_0x58217f[_0xc301('0x17')][_0xc301('0x18')]===0x1f4){logger['error'](_0xc301('0x13'),_0x12af42,_0x58217f[_0xc301('0x17')]['message']);return _0x56dae1(_0x58217f[_0xc301('0x17')][_0xc301('0x19')]);}logger[_0xc301('0x17')](_0xc301('0x13'),_0x12af42,_0x58217f[_0xc301('0x17')][_0xc301('0x19')]);return _0x30c8b1(_0x58217f['error'][_0xc301('0x19')]);}else{logger[_0xc301('0x1a')]('MailAccount,\x20%s,\x20%s',_0x12af42,_0xc301('0x14'));_0x30c8b1(_0x58217f[_0xc301('0x1b')][_0xc301('0x19')]);}})[_0xc301('0x1c')](function(_0x27215c){logger[_0xc301('0x17')](_0xc301('0x13'),_0x12af42,_0x27215c);_0x56dae1(_0x27215c);});});}exports[_0xc301('0x1d')]=function(_0x2a59a2){var _0x5358fa=this;return new Promise(function(_0x181a8e,_0x31dadd){return db['MailAccount'][_0xc301('0x1e')]({'raw':_0x2a59a2[_0xc301('0x1f')]?_0x2a59a2[_0xc301('0x1f')][_0xc301('0x20')]===undefined?!![]:![]:!![],'where':_0x2a59a2[_0xc301('0x1f')]?_0x2a59a2['options']['where']||null:null,'attributes':_0x2a59a2[_0xc301('0x1f')]?_0x2a59a2['options'][_0xc301('0x21')]||null:null,'limit':_0x2a59a2[_0xc301('0x1f')]?_0x2a59a2[_0xc301('0x1f')][_0xc301('0x22')]||null:null,'include':_0x2a59a2['options']?_0x2a59a2[_0xc301('0x1f')][_0xc301('0x23')]?_['map'](_0x2a59a2[_0xc301('0x1f')]['include'],function(_0x4d27ff){return{'model':db[_0x4d27ff[_0xc301('0x24')]],'as':_0x4d27ff['as'],'attributes':_0x4d27ff[_0xc301('0x21')],'include':_0x4d27ff['include']?_[_0xc301('0x25')](_0x4d27ff[_0xc301('0x23')],function(_0x2c8f09){return{'model':db[_0x2c8f09[_0xc301('0x24')]],'as':_0x2c8f09['as'],'attributes':_0x2c8f09[_0xc301('0x21')],'include':_0x2c8f09[_0xc301('0x23')]?_[_0xc301('0x25')](_0x2c8f09['include'],function(_0x5556ed){return{'model':db[_0x5556ed['model']],'as':_0x5556ed['as'],'attributes':_0x5556ed[_0xc301('0x21')]};}):[]};}):[]};}):[]:[]})[_0xc301('0x12')](function(_0x359cdd){logger['info'](_0xc301('0x1d'),_0x2a59a2);logger[_0xc301('0x15')](_0xc301('0x1d'),_0x2a59a2,JSON[_0xc301('0x26')](_0x359cdd));_0x181a8e(_0x359cdd);})['catch'](function(_0x179d48){logger[_0xc301('0x17')](_0xc301('0x1d'),_0x179d48[_0xc301('0x19')],_0x2a59a2);_0x31dadd(_0x5358fa['error'](0x1f4,_0x179d48[_0xc301('0x19')]));});});};exports[_0xc301('0x27')]=function(_0x53a3bd){var _0x314609=this;return new Promise(function(_0x3ed129,_0x23ab08){return db[_0xc301('0x28')][_0xc301('0x29')]({'raw':_0x53a3bd[_0xc301('0x1f')]?_0x53a3bd['options'][_0xc301('0x20')]===undefined?!![]:![]:!![],'where':_0x53a3bd[_0xc301('0x1f')]?_0x53a3bd['options'][_0xc301('0x2a')]||null:null,'attributes':_0x53a3bd[_0xc301('0x1f')]?_0x53a3bd[_0xc301('0x1f')][_0xc301('0x21')]||null:null,'include':_0x53a3bd[_0xc301('0x1f')]?_0x53a3bd[_0xc301('0x1f')][_0xc301('0x23')]?_[_0xc301('0x25')](_0x53a3bd[_0xc301('0x1f')][_0xc301('0x23')],function(_0x4deef0){return{'model':db[_0x4deef0['model']],'as':_0x4deef0['as'],'attributes':_0x4deef0[_0xc301('0x21')],'include':_0x4deef0[_0xc301('0x23')]?_['map'](_0x4deef0['include'],function(_0x1a8804){return{'model':db[_0x1a8804[_0xc301('0x24')]],'as':_0x1a8804['as'],'attributes':_0x1a8804[_0xc301('0x21')],'include':_0x1a8804[_0xc301('0x23')]?_[_0xc301('0x25')](_0x1a8804[_0xc301('0x23')],function(_0x5d9e8a){return{'model':db[_0x5d9e8a['model']],'as':_0x5d9e8a['as'],'attributes':_0x5d9e8a[_0xc301('0x21')]};}):[]};}):[]};}):[]:[]})[_0xc301('0x12')](function(_0x3e1a57){logger[_0xc301('0x1a')](_0xc301('0x27'),_0x53a3bd);logger[_0xc301('0x15')](_0xc301('0x27'),_0x53a3bd,JSON['stringify'](_0x3e1a57));_0x3ed129(_0x3e1a57);})[_0xc301('0x1c')](function(_0x487ea9){logger['error'](_0xc301('0x27'),_0x487ea9[_0xc301('0x19')],_0x53a3bd);_0x23ab08(_0x314609[_0xc301('0x17')](0x1f4,_0x487ea9['message']));});});};exports[_0xc301('0x2b')]=function(_0x498dc0){var _0x5d25ca=this;return new Promise(function(_0x5ee076,_0x5cf9d2){var _0x216d9f={'body':_0x498dc0[_0xc301('0x2c')],'channel':_0xc301('0x2d')};var _0x16f753=_['difference'](_[_0xc301('0x2e')](db[_0xc301('0x2f')]['rawAttributes']),[_0xc301('0x30'),_0xc301('0x31'),_0xc301('0x32'),'ListId']);var _0xdf062c=![];if(_0x498dc0[_0xc301('0x2c')]['id']){delete _0x498dc0[_0xc301('0x2c')]['id'];}if(_[_0xc301('0x33')](_0x498dc0['body']['from'])){return _0x5cf9d2(_0x5d25ca[_0xc301('0x17')](0x1f4,_0xc301('0x34')));}if(_[_0xc301('0x33')](_0x498dc0[_0xc301('0x2c')][_0xc301('0x2c')])||_0x498dc0[_0xc301('0x2c')][_0xc301('0x2c')]===''){return _0x5cf9d2(_0x5d25ca[_0xc301('0x17')](0x1f4,_0xc301('0x35')));}if(_[_0xc301('0x33')](_0x498dc0[_0xc301('0x2c')][_0xc301('0x36')])){return _0x5cf9d2(_0x5d25ca['error'](0x1f4,_0xc301('0x37')+_0x16f753));}if(!_[_0xc301('0x38')](_0x16f753,_0x498dc0[_0xc301('0x2c')][_0xc301('0x36')])){return _0x5cf9d2(_0x5d25ca[_0xc301('0x17')](0x1f4,_0xc301('0x39')+_0x16f753));}var _0x427b1d={};_0x427b1d[_0x498dc0[_0xc301('0x2c')][_0xc301('0x36')]]=_0x498dc0[_0xc301('0x2c')][_0xc301('0x3a')];return db[_0xc301('0x28')]['find']({'where':{'id':_0x498dc0[_0xc301('0x3b')]['id']},'include':[{'model':db[_0xc301('0x3c')],'as':'List','include':[{'model':db[_0xc301('0x2f')],'as':'Contacts','where':_0x427b1d,'limit':0x1,'order':[['updatedAt',_0xc301('0x3d')]]}]},{'model':db['MailApplication'],'as':_0xc301('0x3e')},{'model':db['MailServerOut'],'as':_0xc301('0x3f')}]})[_0xc301('0x12')](function(_0x31819a){if(_0x31819a&&_0x31819a[_0xc301('0x40')]){var _0x10477e=_0x31819a[_0xc301('0x41')]({'plain':!![]});_0x216d9f[_0xc301('0x3b')]=_['omit'](_0x10477e,[_0xc301('0x3e'),_0xc301('0x40')]);_0x216d9f[_0xc301('0x42')]=_0x10477e[_0xc301('0x3e')];_0x216d9f['list']=_0x10477e[_0xc301('0x40')];_0x216d9f[_0xc301('0x42')]=_[_0xc301('0x43')](_0x216d9f[_0xc301('0x42')],[_0xc301('0x44')],[_0xc301('0x45')]);if(_0x216d9f[_0xc301('0x3b')]&&_0x216d9f[_0xc301('0x3b')][_0xc301('0x46')]){_0x216d9f[_0xc301('0x42')]['push']({'id':0x0,'priority':_0x216d9f[_0xc301('0x42')]['length']+0x1,'app':'close','appdata':_0xc301('0x46'),'interval':_0xc301('0x47')});}if(_0x216d9f[_0xc301('0x3b')][_0xc301('0x3e')]){delete _0x216d9f[_0xc301('0x3b')]['Applications'];}if(_0x216d9f['account'][_0xc301('0x40')]){delete _0x216d9f[_0xc301('0x3b')][_0xc301('0x40')];}if(_0x10477e[_0xc301('0x40')]['Contacts']['length']){return _0x10477e[_0xc301('0x40')][_0xc301('0x48')][0x0];}var _0x4907fa=_[_0xc301('0xd')](_0x498dc0[_0xc301('0x2c')],{'firstName':_0x498dc0[_0xc301('0x2c')]['from'],'ListId':_0x10477e['ListId']});_0x4907fa[_0x498dc0[_0xc301('0x2c')]['mapKey']]=_0x498dc0['body'][_0xc301('0x3a')];return db[_0xc301('0x2f')][_0xc301('0x49')](_0x4907fa);}else{throw new Error('List\x20not\x20found');}})[_0xc301('0x12')](function(_0x398359){_0x216d9f['contact']=_0x398359;if(_0x398359){if(!_0x498dc0[_0xc301('0x2c')]['message']['messageId']){_0x498dc0[_0xc301('0x2c')][_0xc301('0x19')][_0xc301('0x4a')]=rs[_0xc301('0x4b')]()+'\x20'+_0x498dc0['body'][_0xc301('0x19')][_0xc301('0x3a')];}var _0x26d3a8={'ContactId':_0x398359['id'],'MailAccountId':_0x498dc0[_0xc301('0x3b')]['id'],'inReplyTo':_0x498dc0[_0xc301('0x2c')][_0xc301('0x19')]['messageId'],'to':_0x498dc0[_0xc301('0x2c')][_0xc301('0x19')][_0xc301('0x3a')],'cc':_0x498dc0[_0xc301('0x2c')][_0xc301('0x19')]['cc'],'subject':_0x498dc0[_0xc301('0x2c')][_0xc301('0x19')][_0xc301('0x4c')],'attach':_0x498dc0['body'][_0xc301('0x19')][_0xc301('0x4d')],'lastMsgAt':moment()[_0xc301('0x4e')](_0xc301('0x4f')),'lastMsgDirection':'in'};return db['MailInteraction'][_0xc301('0x29')]({'where':{'closed':![],'MailAccountId':_0x498dc0[_0xc301('0x3b')]['id']},'include':[{'model':db['MailMessage'],'as':_0xc301('0x50'),'attributes':['messageId'],'where':{'messageId':_0x498dc0['body'][_0xc301('0x19')][_0xc301('0x51')]}}]})[_0xc301('0x12')](function(_0x381e0b){if(_0x381e0b){return[_0x381e0b,![]];}return db[_0xc301('0x52')][_0xc301('0x49')](_0x26d3a8)['then'](function(_0x2fc15c){return[_0x2fc15c,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xc301('0x53')](function(_0x5c9089,_0x5892bb){if(_0x5c9089){_0xdf062c=_0x5892bb;if(!_0x5892bb){return _0x5c9089[_0xc301('0x54')]({'inReplyTo':_0x498dc0[_0xc301('0x2c')][_0xc301('0x19')]['messageId'],'to':_0x498dc0['body']['message'][_0xc301('0x3a')],'cc':_0x498dc0['body'][_0xc301('0x19')]['cc'],'subject':_0x498dc0[_0xc301('0x2c')][_0xc301('0x19')][_0xc301('0x4c')],'attach':_0x5c9089['attach']?_0x5c9089[_0xc301('0x4d')]:_0x498dc0['body']['message'][_0xc301('0x4d')],'substatus':null,'substatusAt':moment()[_0xc301('0x4e')](_0xc301('0x4f')),'lastMsgAt':moment()[_0xc301('0x4e')](_0xc301('0x4f')),'lastMsgDirection':'in'});}else{return _0x5c9089;}}})[_0xc301('0x12')](function(_0x4a75a3){_0x216d9f[_0xc301('0x55')]=_0x4a75a3['get']({'plain':!![]});_0x216d9f[_0xc301('0x55')]['created']=_0xdf062c;return db[_0xc301('0x56')]['create']({'body':_0x498dc0['body']['body'],'MailAccountId':_0x498dc0[_0xc301('0x3b')]['id'],'MailInteractionId':_0x4a75a3['id'],'direction':'in','ContactId':_0x216d9f[_0xc301('0x57')]['id'],'messageId':_0x498dc0[_0xc301('0x2c')][_0xc301('0x19')][_0xc301('0x4a')],'from':_0x498dc0['body'][_0xc301('0x19')]['from'],'to':_0x498dc0[_0xc301('0x2c')][_0xc301('0x19')]['to'],'cc':_0x498dc0[_0xc301('0x2c')]['message']['cc'],'subject':_0x498dc0[_0xc301('0x2c')]['message'][_0xc301('0x4c')],'attach':_0x498dc0[_0xc301('0x2c')]['message'][_0xc301('0x4d')],'Attachments':_0x498dc0[_0xc301('0x2c')][_0xc301('0x19')]['attachments'],'originTo':_0x498dc0[_0xc301('0x2c')][_0xc301('0x19')][_0xc301('0x58')],'originCc':_0x498dc0[_0xc301('0x2c')]['message'][_0xc301('0x59')],'bcc':_0x498dc0[_0xc301('0x2c')]['message']['bcc'],'ChatWebsiteId':_0x498dc0['body'][_0xc301('0x19')][_0xc301('0x5a')]||null,'originChannel':_0x498dc0[_0xc301('0x2c')]['message'][_0xc301('0x5b')]||_0xc301('0x5c'),'ChatOfflineMessageId':_0x498dc0[_0xc301('0x2c')][_0xc301('0x19')][_0xc301('0x5d')]||null},{'include':[{'model':db[_0xc301('0x5e')],'as':_0xc301('0x5f')}]});})[_0xc301('0x12')](function(_0x17711b){_0x216d9f[_0xc301('0x19')]=_0x17711b;if(_0x216d9f[_0xc301('0x55')]['UserId']){return db[_0xc301('0x60')]['find']({'attributes':['id',_0xc301('0x61')],'where':{'id':_0x216d9f[_0xc301('0x55')]['UserId']}})[_0xc301('0x12')](function(_0x253dd1){if(_0x253dd1){_0x216d9f[_0xc301('0x42')][_0xc301('0x62')]({'id':0x0,'priority':0x0,'app':_0xc301('0x63'),'appdata':_0x253dd1[_0xc301('0x61')]+','+(_0x216d9f[_0xc301('0x3b')][_0xc301('0x64')]||0xa),'interval':_0xc301('0x47')});}return respondWithRpcPromise(_0xc301('0x65'),'startRouting',_0x216d9f);});}return respondWithRpcPromise('Start',_0xc301('0x66'),_0x216d9f);})[_0xc301('0x12')](function(_0x3ac349){_0x5ee076(_0x3ac349);})['catch'](function(_0x50b6a3){_0x5cf9d2(_0x5d25ca[_0xc301('0x17')](0x1f4,_0x50b6a3[_0xc301('0x19')]));});});};