289207cef15783248c732446f22748f456382382
[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 _0xd240=['Smtp','get','omit','list','applications','orderBy','priority','asc','autoclose','push','length','close','List\x20not\x20found','contact','messageId','generate','subject','attach','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','Messages','Contact\x20not\x20found','spread','format','interaction','created','MailMessage','attachments','originTo','Attachment','UserId','User','unshift','agent','name','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','request','info','MailAccount,\x20%s,\x20%s','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','MailAccount','findAll','options','raw','where','attributes','limit','include','map','model','then','GetMailAccount','debug','ShowMailAccount','find','body','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','Contacts','DESC','MailApplication','Applications','MailServerOut'];(function(_0x1391a8,_0x4e2f7f){var _0x1e3519=function(_0x1ad406){while(--_0x1ad406){_0x1391a8['push'](_0x1391a8['shift']());}};_0x1e3519(++_0x4e2f7f);}(_0xd240,0x1c7));var _0x0d24=function(_0x8846b,_0x26ed0b){_0x8846b=_0x8846b-0x0;var _0xe2ae20=_0xd240[_0x8846b];return _0xe2ae20;};'use strict';var _=require('lodash');var util=require(_0x0d24('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0d24('0x1'));var fs=require('fs');var Redis=require(_0x0d24('0x2'));var db=require(_0x0d24('0x3'))['db'];var utils=require(_0x0d24('0x4'));var logger=require(_0x0d24('0x5'))(_0x0d24('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0d24('0x7')][_0x0d24('0x8')]({'port':0x232c});config[_0x0d24('0x9')]=_[_0x0d24('0xa')](config['redis'],{'host':_0x0d24('0xb'),'port':0x18eb});var socket=require(_0x0d24('0xc'))(new Redis(config[_0x0d24('0x9')]));require(_0x0d24('0xd'))[_0x0d24('0xe')](socket);function respondWithRpcPromise(_0x29742e,_0x23f9ed,_0x4b55f0){return new BPromise(function(_0x3aedef,_0x4b0749){return client[_0x0d24('0xf')](_0x29742e,_0x4b55f0)['then'](function(_0x1603a8){logger[_0x0d24('0x10')](_0x0d24('0x11'),_0x23f9ed,'request\x20sent');logger['debug'](_0x0d24('0x12'),_0x23f9ed,_0x0d24('0x13'),JSON[_0x0d24('0x14')](_0x1603a8));if(_0x1603a8['error']){if(_0x1603a8[_0x0d24('0x15')][_0x0d24('0x16')]===0x1f4){logger['error']('MailAccount,\x20%s,\x20%s',_0x23f9ed,_0x1603a8[_0x0d24('0x15')][_0x0d24('0x17')]);return _0x4b0749(_0x1603a8[_0x0d24('0x15')][_0x0d24('0x17')]);}logger[_0x0d24('0x15')](_0x0d24('0x11'),_0x23f9ed,_0x1603a8[_0x0d24('0x15')][_0x0d24('0x17')]);return _0x3aedef(_0x1603a8['error'][_0x0d24('0x17')]);}else{logger[_0x0d24('0x10')]('MailAccount,\x20%s,\x20%s',_0x23f9ed,_0x0d24('0x13'));_0x3aedef(_0x1603a8[_0x0d24('0x18')][_0x0d24('0x17')]);}})[_0x0d24('0x19')](function(_0x4c5a1e){logger[_0x0d24('0x15')](_0x0d24('0x11'),_0x23f9ed,_0x4c5a1e);_0x4b0749(_0x4c5a1e);});});}exports['GetMailAccount']=function(_0x583b82){var _0x131848=this;return new Promise(function(_0x2eca09,_0x3af97e){return db[_0x0d24('0x1a')][_0x0d24('0x1b')]({'raw':_0x583b82[_0x0d24('0x1c')]?_0x583b82[_0x0d24('0x1c')][_0x0d24('0x1d')]===undefined?!![]:![]:!![],'where':_0x583b82[_0x0d24('0x1c')]?_0x583b82['options'][_0x0d24('0x1e')]||null:null,'attributes':_0x583b82[_0x0d24('0x1c')]?_0x583b82[_0x0d24('0x1c')][_0x0d24('0x1f')]||null:null,'limit':_0x583b82['options']?_0x583b82[_0x0d24('0x1c')][_0x0d24('0x20')]||null:null,'include':_0x583b82[_0x0d24('0x1c')]?_0x583b82['options'][_0x0d24('0x21')]?_[_0x0d24('0x22')](_0x583b82[_0x0d24('0x1c')]['include'],function(_0x26db95){return{'model':db[_0x26db95[_0x0d24('0x23')]],'as':_0x26db95['as'],'attributes':_0x26db95[_0x0d24('0x1f')],'include':_0x26db95['include']?_[_0x0d24('0x22')](_0x26db95[_0x0d24('0x21')],function(_0x36a3f1){return{'model':db[_0x36a3f1[_0x0d24('0x23')]],'as':_0x36a3f1['as'],'attributes':_0x36a3f1[_0x0d24('0x1f')],'include':_0x36a3f1[_0x0d24('0x21')]?_['map'](_0x36a3f1['include'],function(_0x5b7305){return{'model':db[_0x5b7305[_0x0d24('0x23')]],'as':_0x5b7305['as'],'attributes':_0x5b7305[_0x0d24('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x0d24('0x24')](function(_0xa1bccb){logger[_0x0d24('0x10')](_0x0d24('0x25'),_0x583b82);logger[_0x0d24('0x26')](_0x0d24('0x25'),_0x583b82,JSON[_0x0d24('0x14')](_0xa1bccb));_0x2eca09(_0xa1bccb);})[_0x0d24('0x19')](function(_0x3bf5f4){logger['error']('GetMailAccount',_0x3bf5f4[_0x0d24('0x17')],_0x583b82);_0x3af97e(_0x131848['error'](0x1f4,_0x3bf5f4['message']));});});};exports[_0x0d24('0x27')]=function(_0x413bac){var _0x3a1f27=this;return new Promise(function(_0x4eb1ab,_0x2f6ac4){return db['MailAccount'][_0x0d24('0x28')]({'raw':_0x413bac[_0x0d24('0x1c')]?_0x413bac[_0x0d24('0x1c')][_0x0d24('0x1d')]===undefined?!![]:![]:!![],'where':_0x413bac[_0x0d24('0x1c')]?_0x413bac['options']['where']||null:null,'attributes':_0x413bac[_0x0d24('0x1c')]?_0x413bac[_0x0d24('0x1c')][_0x0d24('0x1f')]||null:null,'include':_0x413bac[_0x0d24('0x1c')]?_0x413bac[_0x0d24('0x1c')][_0x0d24('0x21')]?_['map'](_0x413bac[_0x0d24('0x1c')][_0x0d24('0x21')],function(_0x5a8404){return{'model':db[_0x5a8404[_0x0d24('0x23')]],'as':_0x5a8404['as'],'attributes':_0x5a8404[_0x0d24('0x1f')],'include':_0x5a8404['include']?_[_0x0d24('0x22')](_0x5a8404[_0x0d24('0x21')],function(_0x1b5a4a){return{'model':db[_0x1b5a4a['model']],'as':_0x1b5a4a['as'],'attributes':_0x1b5a4a[_0x0d24('0x1f')],'include':_0x1b5a4a[_0x0d24('0x21')]?_[_0x0d24('0x22')](_0x1b5a4a[_0x0d24('0x21')],function(_0x4bf7b0){return{'model':db[_0x4bf7b0['model']],'as':_0x4bf7b0['as'],'attributes':_0x4bf7b0[_0x0d24('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4deac7){logger['info'](_0x0d24('0x27'),_0x413bac);logger['debug'](_0x0d24('0x27'),_0x413bac,JSON[_0x0d24('0x14')](_0x4deac7));_0x4eb1ab(_0x4deac7);})[_0x0d24('0x19')](function(_0x3c76fd){logger[_0x0d24('0x15')](_0x0d24('0x27'),_0x3c76fd[_0x0d24('0x17')],_0x413bac);_0x2f6ac4(_0x3a1f27[_0x0d24('0x15')](0x1f4,_0x3c76fd[_0x0d24('0x17')]));});});};exports['NotifyMailAccount']=function(_0x265f61){var _0x554917=this;return new Promise(function(_0x578199,_0x30ba29){var _0x25c248={'body':_0x265f61[_0x0d24('0x29')],'channel':_0x0d24('0x2a')};var _0xe5edf9=_[_0x0d24('0x2b')](_[_0x0d24('0x2c')](db[_0x0d24('0x2d')][_0x0d24('0x2e')]),[_0x0d24('0x2f'),_0x0d24('0x30'),'CompanyId',_0x0d24('0x31')]);var _0x1e99da=![];if(_0x265f61['body']['id']){delete _0x265f61[_0x0d24('0x29')]['id'];}if(_[_0x0d24('0x32')](_0x265f61[_0x0d24('0x29')][_0x0d24('0x33')])){return _0x30ba29(_0x554917[_0x0d24('0x15')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x0d24('0x32')](_0x265f61['body'][_0x0d24('0x29')])||_0x265f61[_0x0d24('0x29')]['body']===''){return _0x30ba29(_0x554917[_0x0d24('0x15')](0x1f4,_0x0d24('0x34')));}if(_['isNil'](_0x265f61['body']['mapKey'])){return _0x30ba29(_0x554917[_0x0d24('0x15')](0x1f4,_0x0d24('0x35')+_0xe5edf9));}if(!_[_0x0d24('0x36')](_0xe5edf9,_0x265f61[_0x0d24('0x29')][_0x0d24('0x37')])){return _0x30ba29(_0x554917['error'](0x1f4,_0x0d24('0x38')+_0xe5edf9));}var _0x41bbeb={};_0x41bbeb[_0x265f61['body'][_0x0d24('0x37')]]=_0x265f61['body'][_0x0d24('0x33')];return db[_0x0d24('0x1a')]['find']({'where':{'id':_0x265f61[_0x0d24('0x39')]['id']},'include':[{'model':db[_0x0d24('0x3a')],'as':_0x0d24('0x3b'),'include':[{'model':db[_0x0d24('0x2d')],'as':_0x0d24('0x3c'),'where':_0x41bbeb,'limit':0x1,'order':[[_0x0d24('0x30'),_0x0d24('0x3d')]]}]},{'model':db[_0x0d24('0x3e')],'as':_0x0d24('0x3f')},{'model':db[_0x0d24('0x40')],'as':_0x0d24('0x41')}]})[_0x0d24('0x24')](function(_0x4c3d55){if(_0x4c3d55&&_0x4c3d55[_0x0d24('0x3b')]){var _0x23b90b=_0x4c3d55[_0x0d24('0x42')]({'plain':!![]});_0x25c248[_0x0d24('0x39')]=_[_0x0d24('0x43')](_0x23b90b,[_0x0d24('0x3f'),_0x0d24('0x3b')]);_0x25c248['applications']=_0x23b90b['Applications'];_0x25c248[_0x0d24('0x44')]=_0x23b90b[_0x0d24('0x3b')];_0x25c248[_0x0d24('0x45')]=_[_0x0d24('0x46')](_0x25c248['applications'],[_0x0d24('0x47')],[_0x0d24('0x48')]);if(_0x25c248[_0x0d24('0x39')]&&_0x25c248['account'][_0x0d24('0x49')]){_0x25c248[_0x0d24('0x45')][_0x0d24('0x4a')]({'id':0x0,'priority':_0x25c248[_0x0d24('0x45')][_0x0d24('0x4b')]+0x1,'app':_0x0d24('0x4c'),'appdata':_0x0d24('0x49'),'interval':'*,*,*,*'});}if(_0x25c248['account'][_0x0d24('0x3f')]){delete _0x25c248[_0x0d24('0x39')][_0x0d24('0x3f')];}if(_0x25c248['account'][_0x0d24('0x3b')]){delete _0x25c248[_0x0d24('0x39')][_0x0d24('0x3b')];}if(_0x23b90b[_0x0d24('0x3b')][_0x0d24('0x3c')][_0x0d24('0x4b')]){return _0x23b90b[_0x0d24('0x3b')]['Contacts'][0x0];}var _0x217988=_[_0x0d24('0xa')](_0x265f61[_0x0d24('0x29')],{'firstName':_0x265f61[_0x0d24('0x29')][_0x0d24('0x33')],'ListId':_0x23b90b['ListId']});_0x217988[_0x265f61[_0x0d24('0x29')][_0x0d24('0x37')]]=_0x265f61[_0x0d24('0x29')][_0x0d24('0x33')];return db[_0x0d24('0x2d')]['create'](_0x217988);}else{throw new Error(_0x0d24('0x4d'));}})['then'](function(_0x2485cf){_0x25c248[_0x0d24('0x4e')]=_0x2485cf;if(_0x2485cf){if(!_0x265f61['body'][_0x0d24('0x17')][_0x0d24('0x4f')]){_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')][_0x0d24('0x4f')]=rs[_0x0d24('0x50')]()+'\x20'+_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')][_0x0d24('0x33')];}var _0x252605={'ContactId':_0x2485cf['id'],'MailAccountId':_0x265f61[_0x0d24('0x39')]['id'],'inReplyTo':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')][_0x0d24('0x4f')],'to':_0x265f61[_0x0d24('0x29')]['message'][_0x0d24('0x33')],'cc':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')]['cc'],'subject':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')][_0x0d24('0x51')],'attach':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')][_0x0d24('0x52')],'lastMsgAt':moment()['format'](_0x0d24('0x53')),'lastMsgDirection':'in','lastMsgBody':_0x265f61['body'][_0x0d24('0x29')]};return db[_0x0d24('0x54')][_0x0d24('0x28')]({'where':{'closed':![],'MailAccountId':_0x265f61[_0x0d24('0x39')]['id']},'include':[{'model':db['MailMessage'],'as':_0x0d24('0x55'),'attributes':[_0x0d24('0x4f')],'where':{'messageId':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')]['inReplyTo']}}]})[_0x0d24('0x24')](function(_0x35d97){if(_0x35d97){return[_0x35d97,![]];}return db[_0x0d24('0x54')]['create'](_0x252605)['then'](function(_0x10578b){return[_0x10578b,!![]];});});}else{throw new Error(_0x0d24('0x56'));}})[_0x0d24('0x57')](function(_0x5cc2f5,_0xcd9309){if(_0x5cc2f5){_0x1e99da=_0xcd9309;if(!_0xcd9309){return _0x5cc2f5['update']({'inReplyTo':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')]['messageId'],'to':_0x265f61[_0x0d24('0x29')]['message'][_0x0d24('0x33')],'cc':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')]['cc'],'subject':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')]['subject'],'attach':_0x5cc2f5[_0x0d24('0x52')]?_0x5cc2f5[_0x0d24('0x52')]:_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')][_0x0d24('0x52')],'substatus':null,'substatusAt':moment()[_0x0d24('0x58')](_0x0d24('0x53')),'lastMsgAt':moment()[_0x0d24('0x58')](_0x0d24('0x53')),'lastMsgDirection':'in','lastMsgBody':_0x265f61[_0x0d24('0x29')][_0x0d24('0x29')]});}else{return _0x5cc2f5;}}})[_0x0d24('0x24')](function(_0x1b4a63){_0x25c248[_0x0d24('0x59')]=_0x1b4a63[_0x0d24('0x42')]({'plain':!![]});_0x25c248['interaction'][_0x0d24('0x5a')]=_0x1e99da;return db[_0x0d24('0x5b')]['create']({'body':_0x265f61[_0x0d24('0x29')][_0x0d24('0x29')],'MailAccountId':_0x265f61[_0x0d24('0x39')]['id'],'MailInteractionId':_0x1b4a63['id'],'direction':'in','ContactId':_0x25c248[_0x0d24('0x4e')]['id'],'messageId':_0x265f61['body'][_0x0d24('0x17')][_0x0d24('0x4f')],'from':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')]['from'],'to':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')]['to'],'cc':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')]['cc'],'subject':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')][_0x0d24('0x51')],'attach':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')][_0x0d24('0x52')],'Attachments':_0x265f61[_0x0d24('0x29')][_0x0d24('0x17')][_0x0d24('0x5c')],'originTo':_0x265f61['body'][_0x0d24('0x17')][_0x0d24('0x5d')],'originCc':_0x265f61['body'][_0x0d24('0x17')]['originCc'],'bcc':_0x265f61[_0x0d24('0x29')]['message']['bcc']},{'include':[{'model':db[_0x0d24('0x5e')],'as':'Attachments'}]});})[_0x0d24('0x24')](function(_0xd836d4){_0x25c248[_0x0d24('0x17')]=_0xd836d4;if(_0x25c248['interaction'][_0x0d24('0x5f')]){return db[_0x0d24('0x60')][_0x0d24('0x28')]({'attributes':['id','name'],'where':{'id':_0x25c248[_0x0d24('0x59')][_0x0d24('0x5f')]}})[_0x0d24('0x24')](function(_0x265f51){if(_0x265f51){_0x25c248[_0x0d24('0x45')][_0x0d24('0x61')]({'id':0x0,'priority':0x0,'app':_0x0d24('0x62'),'appdata':_0x265f51[_0x0d24('0x63')]+','+(_0x25c248['account'][_0x0d24('0x64')]||0xa),'interval':_0x0d24('0x65')});}return respondWithRpcPromise(_0x0d24('0x66'),_0x0d24('0x67'),_0x25c248);});}return respondWithRpcPromise(_0x0d24('0x66'),'startRouting',_0x25c248);})[_0x0d24('0x24')](function(_0x6f7ffc){_0x578199(_0x6f7ffc);})[_0x0d24('0x19')](function(_0x1d5dbc){_0x30ba29(_0x554917[_0x0d24('0x15')](0x1f4,_0x1d5dbc[_0x0d24('0x17')]));});});};