bebaa566458992d5450cab63372dfdbd158f5225
[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 _0x63eb=['orderBy','priority','asc','autoclose','push','length','close','*,*,*,*','from','create','List\x20not\x20found','contact','messageId','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','inReplyTo','Contact\x20not\x20found','update','interaction','created','attachments','originTo','originCc','bcc','Attachment','Attachments','UserId','User','name','unshift','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','then','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','MailAccount','options','raw','limit','include','model','attributes','map','GetMailAccount','stringify','ShowMailAccount','find','where','mail','difference','keys','rawAttributes','createdAt','updatedAt','CompanyId','ListId','body','isNil','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','CmList','List','CmContact','Contacts','DESC','MailApplication','Applications','MailServerOut','account','omit','applications','list'];(function(_0x20964d,_0x1e58fb){var _0x58cf58=function(_0x53b043){while(--_0x53b043){_0x20964d['push'](_0x20964d['shift']());}};_0x58cf58(++_0x1e58fb);}(_0x63eb,0x90));var _0xb63e=function(_0x46ff6d,_0x3bdd9a){_0x46ff6d=_0x46ff6d-0x0;var _0x3a47a1=_0x63eb[_0x46ff6d];return _0x3a47a1;};'use strict';var _=require(_0xb63e('0x0'));var util=require(_0xb63e('0x1'));var moment=require(_0xb63e('0x2'));var BPromise=require(_0xb63e('0x3'));var rs=require(_0xb63e('0x4'));var fs=require('fs');var Redis=require(_0xb63e('0x5'));var db=require(_0xb63e('0x6'))['db'];var utils=require(_0xb63e('0x7'));var logger=require(_0xb63e('0x8'))(_0xb63e('0x9'));var config=require(_0xb63e('0xa'));var jayson=require(_0xb63e('0xb'));var client=jayson[_0xb63e('0xc')][_0xb63e('0xd')]({'port':0x232c});config[_0xb63e('0xe')]=_[_0xb63e('0xf')](config[_0xb63e('0xe')],{'host':_0xb63e('0x10'),'port':0x18eb});var socket=require(_0xb63e('0x11'))(new Redis(config[_0xb63e('0xe')]));require(_0xb63e('0x12'))['register'](socket);function respondWithRpcPromise(_0x43e36e,_0x482454,_0x180ab6){return new BPromise(function(_0x2bb21e,_0x3739eb){return client['request'](_0x43e36e,_0x180ab6)[_0xb63e('0x13')](function(_0x11b84d){logger[_0xb63e('0x14')](_0xb63e('0x15'),_0x482454,'request\x20sent');logger[_0xb63e('0x16')](_0xb63e('0x17'),_0x482454,_0xb63e('0x18'),JSON['stringify'](_0x11b84d));if(_0x11b84d[_0xb63e('0x19')]){if(_0x11b84d[_0xb63e('0x19')][_0xb63e('0x1a')]===0x1f4){logger[_0xb63e('0x19')]('MailAccount,\x20%s,\x20%s',_0x482454,_0x11b84d[_0xb63e('0x19')][_0xb63e('0x1b')]);return _0x3739eb(_0x11b84d[_0xb63e('0x19')][_0xb63e('0x1b')]);}logger[_0xb63e('0x19')]('MailAccount,\x20%s,\x20%s',_0x482454,_0x11b84d[_0xb63e('0x19')][_0xb63e('0x1b')]);return _0x2bb21e(_0x11b84d[_0xb63e('0x19')][_0xb63e('0x1b')]);}else{logger[_0xb63e('0x14')](_0xb63e('0x15'),_0x482454,'request\x20sent');_0x2bb21e(_0x11b84d[_0xb63e('0x1c')][_0xb63e('0x1b')]);}})[_0xb63e('0x1d')](function(_0x598630){logger[_0xb63e('0x19')]('MailAccount,\x20%s,\x20%s',_0x482454,_0x598630);_0x3739eb(_0x598630);});});}exports['GetMailAccount']=function(_0x3210f2){var _0x4fa79e=this;return new Promise(function(_0x151b5e,_0x3cd0ca){return db[_0xb63e('0x1e')]['findAll']({'raw':_0x3210f2[_0xb63e('0x1f')]?_0x3210f2[_0xb63e('0x1f')][_0xb63e('0x20')]===undefined?!![]:![]:!![],'where':_0x3210f2[_0xb63e('0x1f')]?_0x3210f2[_0xb63e('0x1f')]['where']||null:null,'attributes':_0x3210f2[_0xb63e('0x1f')]?_0x3210f2['options']['attributes']||null:null,'limit':_0x3210f2[_0xb63e('0x1f')]?_0x3210f2[_0xb63e('0x1f')][_0xb63e('0x21')]||null:null,'include':_0x3210f2[_0xb63e('0x1f')]?_0x3210f2['options'][_0xb63e('0x22')]?_['map'](_0x3210f2['options'][_0xb63e('0x22')],function(_0x4c5e91){return{'model':db[_0x4c5e91[_0xb63e('0x23')]],'as':_0x4c5e91['as'],'attributes':_0x4c5e91[_0xb63e('0x24')],'include':_0x4c5e91['include']?_[_0xb63e('0x25')](_0x4c5e91[_0xb63e('0x22')],function(_0x5c82aa){return{'model':db[_0x5c82aa[_0xb63e('0x23')]],'as':_0x5c82aa['as'],'attributes':_0x5c82aa[_0xb63e('0x24')],'include':_0x5c82aa['include']?_[_0xb63e('0x25')](_0x5c82aa['include'],function(_0x1f4171){return{'model':db[_0x1f4171[_0xb63e('0x23')]],'as':_0x1f4171['as'],'attributes':_0x1f4171['attributes']};}):[]};}):[]};}):[]:[]})[_0xb63e('0x13')](function(_0x3d6d76){logger['info'](_0xb63e('0x26'),_0x3210f2);logger[_0xb63e('0x16')](_0xb63e('0x26'),_0x3210f2,JSON[_0xb63e('0x27')](_0x3d6d76));_0x151b5e(_0x3d6d76);})[_0xb63e('0x1d')](function(_0x16e898){logger[_0xb63e('0x19')](_0xb63e('0x26'),_0x16e898['message'],_0x3210f2);_0x3cd0ca(_0x4fa79e[_0xb63e('0x19')](0x1f4,_0x16e898[_0xb63e('0x1b')]));});});};exports[_0xb63e('0x28')]=function(_0x3cd8a2){var _0x51092a=this;return new Promise(function(_0x1bbea1,_0x2cc040){return db[_0xb63e('0x1e')][_0xb63e('0x29')]({'raw':_0x3cd8a2[_0xb63e('0x1f')]?_0x3cd8a2['options'][_0xb63e('0x20')]===undefined?!![]:![]:!![],'where':_0x3cd8a2[_0xb63e('0x1f')]?_0x3cd8a2[_0xb63e('0x1f')][_0xb63e('0x2a')]||null:null,'attributes':_0x3cd8a2['options']?_0x3cd8a2[_0xb63e('0x1f')][_0xb63e('0x24')]||null:null,'include':_0x3cd8a2['options']?_0x3cd8a2['options'][_0xb63e('0x22')]?_[_0xb63e('0x25')](_0x3cd8a2[_0xb63e('0x1f')][_0xb63e('0x22')],function(_0x4e9465){return{'model':db[_0x4e9465[_0xb63e('0x23')]],'as':_0x4e9465['as'],'attributes':_0x4e9465[_0xb63e('0x24')],'include':_0x4e9465[_0xb63e('0x22')]?_[_0xb63e('0x25')](_0x4e9465[_0xb63e('0x22')],function(_0x573ad4){return{'model':db[_0x573ad4[_0xb63e('0x23')]],'as':_0x573ad4['as'],'attributes':_0x573ad4[_0xb63e('0x24')],'include':_0x573ad4['include']?_['map'](_0x573ad4['include'],function(_0x356e3c){return{'model':db[_0x356e3c[_0xb63e('0x23')]],'as':_0x356e3c['as'],'attributes':_0x356e3c[_0xb63e('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2653ce){logger[_0xb63e('0x14')]('ShowMailAccount',_0x3cd8a2);logger[_0xb63e('0x16')](_0xb63e('0x28'),_0x3cd8a2,JSON[_0xb63e('0x27')](_0x2653ce));_0x1bbea1(_0x2653ce);})[_0xb63e('0x1d')](function(_0x45650a){logger[_0xb63e('0x19')](_0xb63e('0x28'),_0x45650a[_0xb63e('0x1b')],_0x3cd8a2);_0x2cc040(_0x51092a['error'](0x1f4,_0x45650a[_0xb63e('0x1b')]));});});};exports['NotifyMailAccount']=function(_0x3ef2f1){var _0xded3cc=this;return new Promise(function(_0x3fe2c0,_0x102cbe){var _0x4949af={'body':_0x3ef2f1['body'],'channel':_0xb63e('0x2b')};var _0x4e751f=_[_0xb63e('0x2c')](_[_0xb63e('0x2d')](db['CmContact'][_0xb63e('0x2e')]),[_0xb63e('0x2f'),_0xb63e('0x30'),_0xb63e('0x31'),_0xb63e('0x32')]);var _0x42871e=![];if(_0x3ef2f1[_0xb63e('0x33')]['id']){delete _0x3ef2f1[_0xb63e('0x33')]['id'];}if(_[_0xb63e('0x34')](_0x3ef2f1[_0xb63e('0x33')]['from'])){return _0x102cbe(_0xded3cc['error'](0x1f4,'from\x20is\x20mandatory'));}if(_[_0xb63e('0x34')](_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x33')])||_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x33')]===''){return _0x102cbe(_0xded3cc[_0xb63e('0x19')](0x1f4,_0xb63e('0x35')));}if(_[_0xb63e('0x34')](_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x36')])){return _0x102cbe(_0xded3cc[_0xb63e('0x19')](0x1f4,_0xb63e('0x37')+_0x4e751f));}if(!_[_0xb63e('0x38')](_0x4e751f,_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x36')])){return _0x102cbe(_0xded3cc['error'](0x1f4,_0xb63e('0x39')+_0x4e751f));}var _0x5c123a={};_0x5c123a[_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x36')]]=_0x3ef2f1[_0xb63e('0x33')]['from'];return db[_0xb63e('0x1e')][_0xb63e('0x29')]({'where':{'id':_0x3ef2f1['account']['id']},'include':[{'model':db[_0xb63e('0x3a')],'as':_0xb63e('0x3b'),'include':[{'model':db[_0xb63e('0x3c')],'as':_0xb63e('0x3d'),'where':_0x5c123a,'limit':0x1,'order':[[_0xb63e('0x30'),_0xb63e('0x3e')]]}]},{'model':db[_0xb63e('0x3f')],'as':_0xb63e('0x40')},{'model':db[_0xb63e('0x41')],'as':'Smtp'}]})[_0xb63e('0x13')](function(_0x24ffd0){if(_0x24ffd0&&_0x24ffd0[_0xb63e('0x3b')]){var _0x192a5e=_0x24ffd0['get']({'plain':!![]});_0x4949af[_0xb63e('0x42')]=_[_0xb63e('0x43')](_0x192a5e,[_0xb63e('0x40'),_0xb63e('0x3b')]);_0x4949af[_0xb63e('0x44')]=_0x192a5e['Applications'];_0x4949af[_0xb63e('0x45')]=_0x192a5e['List'];_0x4949af[_0xb63e('0x44')]=_[_0xb63e('0x46')](_0x4949af['applications'],[_0xb63e('0x47')],[_0xb63e('0x48')]);if(_0x4949af[_0xb63e('0x42')]&&_0x4949af[_0xb63e('0x42')][_0xb63e('0x49')]){_0x4949af[_0xb63e('0x44')][_0xb63e('0x4a')]({'id':0x0,'priority':_0x4949af[_0xb63e('0x44')][_0xb63e('0x4b')]+0x1,'app':_0xb63e('0x4c'),'appdata':_0xb63e('0x49'),'interval':_0xb63e('0x4d')});}if(_0x4949af['account'][_0xb63e('0x40')]){delete _0x4949af[_0xb63e('0x42')][_0xb63e('0x40')];}if(_0x4949af[_0xb63e('0x42')]['List']){delete _0x4949af['account'][_0xb63e('0x3b')];}if(_0x192a5e['List'][_0xb63e('0x3d')][_0xb63e('0x4b')]){return _0x192a5e[_0xb63e('0x3b')]['Contacts'][0x0];}var _0x544b06=_['defaults'](_0x3ef2f1[_0xb63e('0x33')],{'firstName':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x4e')],'ListId':_0x192a5e['ListId']});_0x544b06[_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x36')]]=_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x4e')];return db[_0xb63e('0x3c')][_0xb63e('0x4f')](_0x544b06);}else{throw new Error(_0xb63e('0x50'));}})[_0xb63e('0x13')](function(_0x20eb5b){_0x4949af[_0xb63e('0x51')]=_0x20eb5b;if(_0x20eb5b){if(!_0x3ef2f1['body'][_0xb63e('0x1b')][_0xb63e('0x52')]){_0x3ef2f1[_0xb63e('0x33')]['message'][_0xb63e('0x52')]=rs['generate']()+'\x20'+_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')][_0xb63e('0x4e')];}var _0x230f78={'ContactId':_0x20eb5b['id'],'MailAccountId':_0x3ef2f1[_0xb63e('0x42')]['id'],'inReplyTo':_0x3ef2f1['body'][_0xb63e('0x1b')][_0xb63e('0x52')],'to':_0x3ef2f1['body'][_0xb63e('0x1b')][_0xb63e('0x4e')],'cc':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')]['cc'],'subject':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')][_0xb63e('0x53')],'attach':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')][_0xb63e('0x54')],'lastMsgAt':moment()[_0xb63e('0x55')](_0xb63e('0x56')),'lastMsgDirection':'in','lastMsgBody':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x33')]};return db[_0xb63e('0x57')][_0xb63e('0x29')]({'where':{'closed':![],'MailAccountId':_0x3ef2f1[_0xb63e('0x42')]['id']},'include':[{'model':db[_0xb63e('0x58')],'as':'Messages','attributes':[_0xb63e('0x52')],'where':{'messageId':_0x3ef2f1[_0xb63e('0x33')]['message'][_0xb63e('0x59')]}}]})[_0xb63e('0x13')](function(_0x13331e){if(_0x13331e){return[_0x13331e,![]];}return db['MailInteraction']['create'](_0x230f78)[_0xb63e('0x13')](function(_0x38c1ad){return[_0x38c1ad,!![]];});});}else{throw new Error(_0xb63e('0x5a'));}})['spread'](function(_0x376a7a,_0x37cf03){if(_0x376a7a){_0x42871e=_0x37cf03;if(!_0x37cf03){return _0x376a7a[_0xb63e('0x5b')]({'inReplyTo':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')][_0xb63e('0x52')],'to':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')]['from'],'cc':_0x3ef2f1[_0xb63e('0x33')]['message']['cc'],'subject':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')][_0xb63e('0x53')],'attach':_0x376a7a[_0xb63e('0x54')]?_0x376a7a[_0xb63e('0x54')]:_0x3ef2f1['body'][_0xb63e('0x1b')]['attach'],'substatus':null,'substatusAt':moment()['format'](_0xb63e('0x56')),'lastMsgAt':moment()[_0xb63e('0x55')](_0xb63e('0x56')),'lastMsgDirection':'in','lastMsgBody':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x33')]});}else{return _0x376a7a;}}})[_0xb63e('0x13')](function(_0x5b8957){_0x4949af[_0xb63e('0x5c')]=_0x5b8957['get']({'plain':!![]});_0x4949af[_0xb63e('0x5c')][_0xb63e('0x5d')]=_0x42871e;return db[_0xb63e('0x58')][_0xb63e('0x4f')]({'body':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x33')],'MailAccountId':_0x3ef2f1['account']['id'],'MailInteractionId':_0x5b8957['id'],'direction':'in','ContactId':_0x4949af['contact']['id'],'messageId':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')]['messageId'],'from':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')]['from'],'to':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')]['to'],'cc':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')]['cc'],'subject':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')][_0xb63e('0x53')],'attach':_0x3ef2f1[_0xb63e('0x33')]['message']['attach'],'Attachments':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')][_0xb63e('0x5e')],'originTo':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')][_0xb63e('0x5f')],'originCc':_0x3ef2f1[_0xb63e('0x33')][_0xb63e('0x1b')][_0xb63e('0x60')],'bcc':_0x3ef2f1[_0xb63e('0x33')]['message'][_0xb63e('0x61')]},{'include':[{'model':db[_0xb63e('0x62')],'as':_0xb63e('0x63')}]});})[_0xb63e('0x13')](function(_0x531aa8){_0x4949af[_0xb63e('0x1b')]=_0x531aa8;if(_0x4949af[_0xb63e('0x5c')][_0xb63e('0x64')]){return db[_0xb63e('0x65')][_0xb63e('0x29')]({'attributes':['id',_0xb63e('0x66')],'where':{'id':_0x4949af[_0xb63e('0x5c')]['UserId']}})[_0xb63e('0x13')](function(_0x584448){if(_0x584448){_0x4949af[_0xb63e('0x44')][_0xb63e('0x67')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x584448[_0xb63e('0x66')]+','+(_0x4949af[_0xb63e('0x42')][_0xb63e('0x68')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xb63e('0x69'),'startRouting',_0x4949af);});}return respondWithRpcPromise('Start',_0xb63e('0x6a'),_0x4949af);})[_0xb63e('0x13')](function(_0x121105){_0x3fe2c0(_0x121105);})[_0xb63e('0x1d')](function(_0x1cbf2a){_0x102cbe(_0xded3cc[_0xb63e('0x19')](0x1f4,_0x1cbf2a[_0xb63e('0x1b')]));});});};