a2fd5f323a113aaa38a2b92df2c10c67b3f4c4fb
[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 _0xe6b5=['options','raw','where','attributes','limit','model','map','include','ShowMailAccount','find','mail','difference','keys','rawAttributes','createdAt','updatedAt','body','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','MailAccount','CmList','List','CmContact','Contacts','Applications','Smtp','get','account','omit','applications','asc','autoclose','push','length','close','*,*,*,*','create','List\x20not\x20found','contact','messageId','generate','attach','format','YYYY-MM-DD\x20HH:mm:ss','Messages','inReplyTo','Contact\x20not\x20found','spread','subject','interaction','MailMessage','attachments','originTo','originCc','bcc','ChatWebsiteId','Attachment','Attachments','User','name','UserId','unshift','agent','Start','startRouting','lodash','util','moment','bluebird','ioredis','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailAccount','findAll'];(function(_0x10af41,_0x4df19f){var _0x33794c=function(_0x23996){while(--_0x23996){_0x10af41['push'](_0x10af41['shift']());}};_0x33794c(++_0x4df19f);}(_0xe6b5,0x1d6));var _0x5e6b=function(_0x1aa2ac,_0x3aca83){_0x1aa2ac=_0x1aa2ac-0x0;var _0x242bae=_0xe6b5[_0x1aa2ac];return _0x242bae;};'use strict';var _=require(_0x5e6b('0x0'));var util=require(_0x5e6b('0x1'));var moment=require(_0x5e6b('0x2'));var BPromise=require(_0x5e6b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5e6b('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5e6b('0x5'));var config=require(_0x5e6b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x5e6b('0x7')][_0x5e6b('0x8')]({'port':0x232c});config[_0x5e6b('0x9')]=_[_0x5e6b('0xa')](config[_0x5e6b('0x9')],{'host':_0x5e6b('0xb'),'port':0x18eb});var socket=require(_0x5e6b('0xc'))(new Redis(config['redis']));require(_0x5e6b('0xd'))[_0x5e6b('0xe')](socket);function respondWithRpcPromise(_0x2b5ee2,_0x4e631c,_0x3b648f){return new BPromise(function(_0x72caab,_0x4cdd7e){return client[_0x5e6b('0xf')](_0x2b5ee2,_0x3b648f)[_0x5e6b('0x10')](function(_0x141e1e){logger[_0x5e6b('0x11')](_0x5e6b('0x12'),_0x4e631c,_0x5e6b('0x13'));logger[_0x5e6b('0x14')](_0x5e6b('0x15'),_0x4e631c,'request\x20sent',JSON[_0x5e6b('0x16')](_0x141e1e));if(_0x141e1e[_0x5e6b('0x17')]){if(_0x141e1e[_0x5e6b('0x17')][_0x5e6b('0x18')]===0x1f4){logger[_0x5e6b('0x17')](_0x5e6b('0x12'),_0x4e631c,_0x141e1e['error'][_0x5e6b('0x19')]);return _0x4cdd7e(_0x141e1e['error']['message']);}logger[_0x5e6b('0x17')](_0x5e6b('0x12'),_0x4e631c,_0x141e1e['error']['message']);return _0x72caab(_0x141e1e[_0x5e6b('0x17')][_0x5e6b('0x19')]);}else{logger[_0x5e6b('0x11')](_0x5e6b('0x12'),_0x4e631c,_0x5e6b('0x13'));_0x72caab(_0x141e1e[_0x5e6b('0x1a')][_0x5e6b('0x19')]);}})[_0x5e6b('0x1b')](function(_0x2e7507){logger[_0x5e6b('0x17')](_0x5e6b('0x12'),_0x4e631c,_0x2e7507);_0x4cdd7e(_0x2e7507);});});}exports[_0x5e6b('0x1c')]=function(_0x11e0ff){var _0x2a174e=this;return new Promise(function(_0x159843,_0x254705){return db['MailAccount'][_0x5e6b('0x1d')]({'raw':_0x11e0ff[_0x5e6b('0x1e')]?_0x11e0ff[_0x5e6b('0x1e')][_0x5e6b('0x1f')]===undefined?!![]:![]:!![],'where':_0x11e0ff['options']?_0x11e0ff[_0x5e6b('0x1e')][_0x5e6b('0x20')]||null:null,'attributes':_0x11e0ff[_0x5e6b('0x1e')]?_0x11e0ff[_0x5e6b('0x1e')][_0x5e6b('0x21')]||null:null,'limit':_0x11e0ff['options']?_0x11e0ff[_0x5e6b('0x1e')][_0x5e6b('0x22')]||null:null,'include':_0x11e0ff[_0x5e6b('0x1e')]?_0x11e0ff[_0x5e6b('0x1e')]['include']?_['map'](_0x11e0ff['options']['include'],function(_0x10e761){return{'model':db[_0x10e761[_0x5e6b('0x23')]],'as':_0x10e761['as'],'attributes':_0x10e761['attributes'],'include':_0x10e761['include']?_[_0x5e6b('0x24')](_0x10e761['include'],function(_0x59223e){return{'model':db[_0x59223e[_0x5e6b('0x23')]],'as':_0x59223e['as'],'attributes':_0x59223e[_0x5e6b('0x21')],'include':_0x59223e[_0x5e6b('0x25')]?_['map'](_0x59223e[_0x5e6b('0x25')],function(_0xcd1652){return{'model':db[_0xcd1652[_0x5e6b('0x23')]],'as':_0xcd1652['as'],'attributes':_0xcd1652[_0x5e6b('0x21')]};}):[]};}):[]};}):[]:[]})[_0x5e6b('0x10')](function(_0x46acca){logger[_0x5e6b('0x11')](_0x5e6b('0x1c'),_0x11e0ff);logger[_0x5e6b('0x14')]('GetMailAccount',_0x11e0ff,JSON[_0x5e6b('0x16')](_0x46acca));_0x159843(_0x46acca);})[_0x5e6b('0x1b')](function(_0x501a40){logger[_0x5e6b('0x17')](_0x5e6b('0x1c'),_0x501a40['message'],_0x11e0ff);_0x254705(_0x2a174e[_0x5e6b('0x17')](0x1f4,_0x501a40[_0x5e6b('0x19')]));});});};exports[_0x5e6b('0x26')]=function(_0x387e7f){var _0x22ace3=this;return new Promise(function(_0x236aa4,_0x53d516){return db['MailAccount'][_0x5e6b('0x27')]({'raw':_0x387e7f[_0x5e6b('0x1e')]?_0x387e7f[_0x5e6b('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x387e7f['options']?_0x387e7f[_0x5e6b('0x1e')]['where']||null:null,'attributes':_0x387e7f[_0x5e6b('0x1e')]?_0x387e7f[_0x5e6b('0x1e')][_0x5e6b('0x21')]||null:null,'include':_0x387e7f[_0x5e6b('0x1e')]?_0x387e7f[_0x5e6b('0x1e')]['include']?_[_0x5e6b('0x24')](_0x387e7f[_0x5e6b('0x1e')]['include'],function(_0x3cbb85){return{'model':db[_0x3cbb85[_0x5e6b('0x23')]],'as':_0x3cbb85['as'],'attributes':_0x3cbb85[_0x5e6b('0x21')],'include':_0x3cbb85[_0x5e6b('0x25')]?_[_0x5e6b('0x24')](_0x3cbb85[_0x5e6b('0x25')],function(_0x553b48){return{'model':db[_0x553b48[_0x5e6b('0x23')]],'as':_0x553b48['as'],'attributes':_0x553b48[_0x5e6b('0x21')],'include':_0x553b48[_0x5e6b('0x25')]?_[_0x5e6b('0x24')](_0x553b48[_0x5e6b('0x25')],function(_0x2d5b52){return{'model':db[_0x2d5b52['model']],'as':_0x2d5b52['as'],'attributes':_0x2d5b52[_0x5e6b('0x21')]};}):[]};}):[]};}):[]:[]})[_0x5e6b('0x10')](function(_0x17cf13){logger[_0x5e6b('0x11')]('ShowMailAccount',_0x387e7f);logger[_0x5e6b('0x14')](_0x5e6b('0x26'),_0x387e7f,JSON[_0x5e6b('0x16')](_0x17cf13));_0x236aa4(_0x17cf13);})[_0x5e6b('0x1b')](function(_0x2208fa){logger[_0x5e6b('0x17')]('ShowMailAccount',_0x2208fa['message'],_0x387e7f);_0x53d516(_0x22ace3[_0x5e6b('0x17')](0x1f4,_0x2208fa[_0x5e6b('0x19')]));});});};exports['NotifyMailAccount']=function(_0xbb0f2b){var _0x636ebc=this;return new Promise(function(_0x2f69f6,_0x1302bc){var _0x496415={'body':_0xbb0f2b['body'],'channel':_0x5e6b('0x28')};var _0x1eeade=_[_0x5e6b('0x29')](_[_0x5e6b('0x2a')](db['CmContact'][_0x5e6b('0x2b')]),[_0x5e6b('0x2c'),_0x5e6b('0x2d'),'CompanyId','ListId']);var _0x3fe9ad=![];if(_0xbb0f2b[_0x5e6b('0x2e')]['id']){delete _0xbb0f2b[_0x5e6b('0x2e')]['id'];}if(_[_0x5e6b('0x2f')](_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x30')])){return _0x1302bc(_0x636ebc[_0x5e6b('0x17')](0x1f4,_0x5e6b('0x31')));}if(_['isNil'](_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x2e')])||_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x2e')]===''){return _0x1302bc(_0x636ebc[_0x5e6b('0x17')](0x1f4,_0x5e6b('0x32')));}if(_[_0x5e6b('0x2f')](_0xbb0f2b['body']['mapKey'])){return _0x1302bc(_0x636ebc[_0x5e6b('0x17')](0x1f4,_0x5e6b('0x33')+_0x1eeade));}if(!_[_0x5e6b('0x34')](_0x1eeade,_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x35')])){return _0x1302bc(_0x636ebc[_0x5e6b('0x17')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1eeade));}var _0x168ed2={};_0x168ed2[_0xbb0f2b['body'][_0x5e6b('0x35')]]=_0xbb0f2b[_0x5e6b('0x2e')]['from'];return db[_0x5e6b('0x36')]['find']({'where':{'id':_0xbb0f2b['account']['id']},'include':[{'model':db[_0x5e6b('0x37')],'as':_0x5e6b('0x38'),'include':[{'model':db[_0x5e6b('0x39')],'as':_0x5e6b('0x3a'),'where':_0x168ed2,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db['MailApplication'],'as':_0x5e6b('0x3b')},{'model':db['MailServerOut'],'as':_0x5e6b('0x3c')}]})[_0x5e6b('0x10')](function(_0x3958a6){if(_0x3958a6&&_0x3958a6[_0x5e6b('0x38')]){var _0x5d670e=_0x3958a6[_0x5e6b('0x3d')]({'plain':!![]});_0x496415[_0x5e6b('0x3e')]=_[_0x5e6b('0x3f')](_0x5d670e,[_0x5e6b('0x3b'),_0x5e6b('0x38')]);_0x496415[_0x5e6b('0x40')]=_0x5d670e[_0x5e6b('0x3b')];_0x496415['list']=_0x5d670e[_0x5e6b('0x38')];_0x496415[_0x5e6b('0x40')]=_['orderBy'](_0x496415[_0x5e6b('0x40')],['priority'],[_0x5e6b('0x41')]);if(_0x496415[_0x5e6b('0x3e')]&&_0x496415[_0x5e6b('0x3e')][_0x5e6b('0x42')]){_0x496415[_0x5e6b('0x40')][_0x5e6b('0x43')]({'id':0x0,'priority':_0x496415['applications'][_0x5e6b('0x44')]+0x1,'app':_0x5e6b('0x45'),'appdata':_0x5e6b('0x42'),'interval':_0x5e6b('0x46')});}if(_0x496415['account']['Applications']){delete _0x496415[_0x5e6b('0x3e')][_0x5e6b('0x3b')];}if(_0x496415['account'][_0x5e6b('0x38')]){delete _0x496415[_0x5e6b('0x3e')][_0x5e6b('0x38')];}if(_0x5d670e['List'][_0x5e6b('0x3a')][_0x5e6b('0x44')]){return _0x5d670e[_0x5e6b('0x38')][_0x5e6b('0x3a')][0x0];}var _0x1bfbb8=_[_0x5e6b('0xa')](_0xbb0f2b[_0x5e6b('0x2e')],{'firstName':_0xbb0f2b['body'][_0x5e6b('0x30')],'ListId':_0x5d670e['ListId']});_0x1bfbb8[_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x35')]]=_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x30')];return db[_0x5e6b('0x39')][_0x5e6b('0x47')](_0x1bfbb8);}else{throw new Error(_0x5e6b('0x48'));}})[_0x5e6b('0x10')](function(_0x12dc2b){_0x496415[_0x5e6b('0x49')]=_0x12dc2b;if(_0x12dc2b){if(!_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x19')][_0x5e6b('0x4a')]){_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x19')]['messageId']=rs[_0x5e6b('0x4b')]()+'\x20'+_0xbb0f2b['body'][_0x5e6b('0x19')][_0x5e6b('0x30')];}var _0x320db3={'ContactId':_0x12dc2b['id'],'MailAccountId':_0xbb0f2b['account']['id'],'inReplyTo':_0xbb0f2b[_0x5e6b('0x2e')]['message'][_0x5e6b('0x4a')],'to':_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x19')][_0x5e6b('0x30')],'cc':_0xbb0f2b['body'][_0x5e6b('0x19')]['cc'],'subject':_0xbb0f2b['body']['message']['subject'],'attach':_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x19')][_0x5e6b('0x4c')],'lastMsgAt':moment()[_0x5e6b('0x4d')](_0x5e6b('0x4e')),'lastMsgDirection':'in'};return db['MailInteraction'][_0x5e6b('0x27')]({'where':{'closed':![],'MailAccountId':_0xbb0f2b['account']['id']},'include':[{'model':db['MailMessage'],'as':_0x5e6b('0x4f'),'attributes':['messageId'],'where':{'messageId':_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x19')][_0x5e6b('0x50')]}}]})['then'](function(_0x184e29){if(_0x184e29){return[_0x184e29,![]];}return db['MailInteraction'][_0x5e6b('0x47')](_0x320db3)[_0x5e6b('0x10')](function(_0x1db412){return[_0x1db412,!![]];});});}else{throw new Error(_0x5e6b('0x51'));}})[_0x5e6b('0x52')](function(_0x3e1add,_0x57a429){if(_0x3e1add){_0x3fe9ad=_0x57a429;if(!_0x57a429){return _0x3e1add['update']({'inReplyTo':_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x19')]['messageId'],'to':_0xbb0f2b['body'][_0x5e6b('0x19')][_0x5e6b('0x30')],'cc':_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x19')]['cc'],'subject':_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x19')][_0x5e6b('0x53')],'attach':_0x3e1add[_0x5e6b('0x4c')]?_0x3e1add[_0x5e6b('0x4c')]:_0xbb0f2b['body'][_0x5e6b('0x19')][_0x5e6b('0x4c')],'substatus':null,'substatusAt':moment()[_0x5e6b('0x4d')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x5e6b('0x4d')](_0x5e6b('0x4e')),'lastMsgDirection':'in'});}else{return _0x3e1add;}}})[_0x5e6b('0x10')](function(_0xeda072){_0x496415[_0x5e6b('0x54')]=_0xeda072[_0x5e6b('0x3d')]({'plain':!![]});_0x496415[_0x5e6b('0x54')]['created']=_0x3fe9ad;return db[_0x5e6b('0x55')]['create']({'body':_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x2e')],'MailAccountId':_0xbb0f2b[_0x5e6b('0x3e')]['id'],'MailInteractionId':_0xeda072['id'],'direction':'in','ContactId':_0x496415[_0x5e6b('0x49')]['id'],'messageId':_0xbb0f2b['body'][_0x5e6b('0x19')][_0x5e6b('0x4a')],'from':_0xbb0f2b[_0x5e6b('0x2e')]['message'][_0x5e6b('0x30')],'to':_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x19')]['to'],'cc':_0xbb0f2b[_0x5e6b('0x2e')]['message']['cc'],'subject':_0xbb0f2b[_0x5e6b('0x2e')]['message'][_0x5e6b('0x53')],'attach':_0xbb0f2b['body'][_0x5e6b('0x19')]['attach'],'Attachments':_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x19')][_0x5e6b('0x56')],'originTo':_0xbb0f2b['body'][_0x5e6b('0x19')][_0x5e6b('0x57')],'originCc':_0xbb0f2b['body'][_0x5e6b('0x19')][_0x5e6b('0x58')],'bcc':_0xbb0f2b['body'][_0x5e6b('0x19')][_0x5e6b('0x59')],'ChatWebsiteId':_0xbb0f2b['body'][_0x5e6b('0x19')][_0x5e6b('0x5a')]||null,'originChannel':_0xbb0f2b[_0x5e6b('0x2e')][_0x5e6b('0x19')]['originChannel']||'Email','ChatOfflineMessageId':_0xbb0f2b[_0x5e6b('0x2e')]['message']['ChatOfflineMessageId']||null},{'include':[{'model':db[_0x5e6b('0x5b')],'as':_0x5e6b('0x5c')}]});})[_0x5e6b('0x10')](function(_0x247ad1){_0x496415[_0x5e6b('0x19')]=_0x247ad1;if(_0x496415[_0x5e6b('0x54')]['UserId']){return db[_0x5e6b('0x5d')]['find']({'attributes':['id',_0x5e6b('0x5e')],'where':{'id':_0x496415[_0x5e6b('0x54')][_0x5e6b('0x5f')]}})[_0x5e6b('0x10')](function(_0x53f2dc){if(_0x53f2dc){_0x496415[_0x5e6b('0x40')][_0x5e6b('0x60')]({'id':0x0,'priority':0x0,'app':_0x5e6b('0x61'),'appdata':_0x53f2dc[_0x5e6b('0x5e')]+','+(_0x496415[_0x5e6b('0x3e')]['waitForTheAssignedAgent']||0xa),'interval':_0x5e6b('0x46')});}return respondWithRpcPromise(_0x5e6b('0x62'),_0x5e6b('0x63'),_0x496415);});}return respondWithRpcPromise('Start',_0x5e6b('0x63'),_0x496415);})[_0x5e6b('0x10')](function(_0x24b715){_0x2f69f6(_0x24b715);})[_0x5e6b('0x1b')](function(_0x443382){_0x1302bc(_0x636ebc[_0x5e6b('0x17')](0x1f4,_0x443382[_0x5e6b('0x19')]));});});};