02323463be3e9259fb38870d07c8b118fcc15987
[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 _0x4873=['format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','update','interaction','created','contact','originTo','originCc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','waitForTheAssignedAgent','queueId','MailQueue','unshift','queue','waitForTheAssignedQueue','Start','startRouting','lodash','moment','bluebird','ioredis','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./mailAccount.socket','register','request','info','MailAccount,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','MailAccount','findAll','options','where','attributes','limit','map','include','model','then','GetMailAccount','ShowMailAccount','raw','setDataValue','smtpOptions','getSmtpOptions','NotifyMailAccount','CmContact','updatedAt','CompanyId','body','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','Contacts','DESC','MailApplication','Applications','MailServerOut','Smtp','CloudProvider','List','get','applications','list','orderBy','priority','asc','autoclose','push','length','close','*,*,*,*','ListId','create','List\x20not\x20found','messageId','subject','attach'];(function(_0x11c7a4,_0x602427){var _0x34963f=function(_0xbd2c28){while(--_0xbd2c28){_0x11c7a4['push'](_0x11c7a4['shift']());}};_0x34963f(++_0x602427);}(_0x4873,0x1df));var _0x3487=function(_0x482774,_0x5f4138){_0x482774=_0x482774-0x0;var _0x2661e3=_0x4873[_0x482774];return _0x2661e3;};'use strict';var _=require(_0x3487('0x0'));var moment=require(_0x3487('0x1'));var BPromise=require(_0x3487('0x2'));var rs=require('randomstring');var Redis=require(_0x3487('0x3'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')(_0x3487('0x4'));var config=require(_0x3487('0x5'));var jayson=require(_0x3487('0x6'));var client=jayson[_0x3487('0x7')][_0x3487('0x8')]({'port':0x232c});config[_0x3487('0x9')]=_[_0x3487('0xa')](config[_0x3487('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x3487('0xb'))(new Redis(config[_0x3487('0x9')]));require(_0x3487('0xc'))[_0x3487('0xd')](socket);function respondWithRpcPromise(_0x17b90c,_0x5a50e8,_0x365727){return new BPromise(function(_0x5e2cca,_0x1a5a7a){return client[_0x3487('0xe')](_0x17b90c,_0x365727)['then'](function(_0x56b795){logger[_0x3487('0xf')](_0x3487('0x10'),_0x5a50e8,'request\x20sent');logger[_0x3487('0x11')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x5a50e8,'request\x20sent',JSON[_0x3487('0x12')](_0x56b795));if(_0x56b795[_0x3487('0x13')]){if(_0x56b795[_0x3487('0x13')][_0x3487('0x14')]===0x1f4){logger[_0x3487('0x13')](_0x3487('0x10'),_0x5a50e8,_0x56b795['error'][_0x3487('0x15')]);return _0x1a5a7a(_0x56b795[_0x3487('0x13')][_0x3487('0x15')]);}logger['error'](_0x3487('0x10'),_0x5a50e8,_0x56b795[_0x3487('0x13')][_0x3487('0x15')]);return _0x5e2cca(_0x56b795[_0x3487('0x13')][_0x3487('0x15')]);}else{logger[_0x3487('0xf')](_0x3487('0x10'),_0x5a50e8,_0x3487('0x16'));_0x5e2cca(_0x56b795[_0x3487('0x17')][_0x3487('0x15')]);}})[_0x3487('0x18')](function(_0x41795b){logger[_0x3487('0x13')](_0x3487('0x10'),_0x5a50e8,_0x41795b);_0x1a5a7a(_0x41795b);});});}exports['GetMailAccount']=function(_0x320349){var _0x594ff6=this;return new Promise(function(_0x2fd2e8,_0x20eae9){return db[_0x3487('0x19')][_0x3487('0x1a')]({'raw':_0x320349[_0x3487('0x1b')]?_0x320349[_0x3487('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x320349[_0x3487('0x1b')]?_0x320349[_0x3487('0x1b')][_0x3487('0x1c')]||null:null,'attributes':_0x320349[_0x3487('0x1b')]?_0x320349[_0x3487('0x1b')][_0x3487('0x1d')]||null:null,'limit':_0x320349['options']?_0x320349[_0x3487('0x1b')][_0x3487('0x1e')]||null:null,'include':_0x320349[_0x3487('0x1b')]?_0x320349['options']['include']?_[_0x3487('0x1f')](_0x320349[_0x3487('0x1b')][_0x3487('0x20')],function(_0x3a9d76){return{'model':db[_0x3a9d76['model']],'as':_0x3a9d76['as'],'attributes':_0x3a9d76[_0x3487('0x1d')],'include':_0x3a9d76[_0x3487('0x20')]?_['map'](_0x3a9d76[_0x3487('0x20')],function(_0x3fb245){return{'model':db[_0x3fb245['model']],'as':_0x3fb245['as'],'attributes':_0x3fb245['attributes'],'include':_0x3fb245[_0x3487('0x20')]?_[_0x3487('0x1f')](_0x3fb245[_0x3487('0x20')],function(_0x23a76e){return{'model':db[_0x23a76e[_0x3487('0x21')]],'as':_0x23a76e['as'],'attributes':_0x23a76e[_0x3487('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x3487('0x22')](function(_0x38af4a){logger[_0x3487('0xf')](_0x3487('0x23'),_0x320349);logger[_0x3487('0x11')]('GetMailAccount',_0x320349,JSON['stringify'](_0x38af4a));_0x2fd2e8(_0x38af4a);})[_0x3487('0x18')](function(_0x56ee54){logger['error'](_0x3487('0x23'),_0x56ee54[_0x3487('0x15')],_0x320349);_0x20eae9(_0x594ff6['error'](0x1f4,_0x56ee54['message']));});});};exports[_0x3487('0x24')]=function(_0x3a89ba){var _0x46df42=this;return new Promise(function(_0x531dd3,_0x3bb44f){return db['MailAccount']['find']({'raw':_0x3a89ba['options']?_0x3a89ba[_0x3487('0x1b')][_0x3487('0x25')]===undefined?!![]:![]:!![],'where':_0x3a89ba['options']?_0x3a89ba['options'][_0x3487('0x1c')]||null:null,'attributes':_0x3a89ba['options']?_0x3a89ba['options'][_0x3487('0x1d')]||null:null,'include':_0x3a89ba[_0x3487('0x1b')]?_0x3a89ba[_0x3487('0x1b')]['include']?_[_0x3487('0x1f')](_0x3a89ba[_0x3487('0x1b')][_0x3487('0x20')],function(_0x27c28f){return{'model':db[_0x27c28f['model']],'as':_0x27c28f['as'],'attributes':_0x27c28f[_0x3487('0x1d')],'include':_0x27c28f[_0x3487('0x20')]?_['map'](_0x27c28f[_0x3487('0x20')],function(_0x325a3a){return{'model':db[_0x325a3a[_0x3487('0x21')]],'as':_0x325a3a['as'],'attributes':_0x325a3a[_0x3487('0x1d')],'include':_0x325a3a[_0x3487('0x20')]?_[_0x3487('0x1f')](_0x325a3a[_0x3487('0x20')],function(_0x299172){return{'model':db[_0x299172[_0x3487('0x21')]],'as':_0x299172['as'],'attributes':_0x299172['attributes']};}):[]};}):[]};}):[]:[]})[_0x3487('0x22')](function(_0x3c9fa6){if(_0x3a89ba['options']['smtp']===!![])_0x3c9fa6[_0x3487('0x26')](_0x3487('0x27'),_0x3c9fa6[_0x3487('0x28')]());logger['info']('ShowMailAccount',_0x3a89ba);logger['debug'](_0x3487('0x24'),_0x3a89ba,JSON[_0x3487('0x12')](_0x3c9fa6));_0x531dd3(_0x3c9fa6);})['catch'](function(_0xbd0668){logger[_0x3487('0x13')](_0x3487('0x24'),_0xbd0668[_0x3487('0x15')],_0x3a89ba);_0x3bb44f(_0x46df42[_0x3487('0x13')](0x1f4,_0xbd0668[_0x3487('0x15')]));});});};exports[_0x3487('0x29')]=function(_0xc2e2ab){var _0x3cb013=this;return new Promise(function(_0x565cb2,_0x5c4f06){var _0x24a4ec={'body':_0xc2e2ab['body'],'channel':'mail'};var _0x8bb8c2=_['difference'](_['keys'](db[_0x3487('0x2a')]['rawAttributes']),['createdAt',_0x3487('0x2b'),_0x3487('0x2c'),'ListId']);var _0x51b69c=![];if(_0xc2e2ab[_0x3487('0x2d')]['id']){delete _0xc2e2ab[_0x3487('0x2d')]['id'];}if(_['isNil'](_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x2e')])){return _0x5c4f06(_0x3cb013['error'](0x1f4,_0x3487('0x2f')));}if(_[_0x3487('0x30')](_0xc2e2ab[_0x3487('0x2d')]['body'])||_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x2d')]===''){return _0x5c4f06(_0x3cb013[_0x3487('0x13')](0x1f4,_0x3487('0x31')));}if(_[_0x3487('0x30')](_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x32')])){return _0x5c4f06(_0x3cb013[_0x3487('0x13')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x8bb8c2));}if(!_[_0x3487('0x33')](_0x8bb8c2,_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x32')])){return _0x5c4f06(_0x3cb013[_0x3487('0x13')](0x1f4,_0x3487('0x34')+_0x8bb8c2));}var _0x31e766={};_0x31e766[_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x32')]]=_0xc2e2ab['body']['from'];return db[_0x3487('0x19')][_0x3487('0x35')]({'where':{'id':_0xc2e2ab[_0x3487('0x36')]['id']},'include':[{'model':db[_0x3487('0x37')],'as':'List','include':[{'model':db['CmContact'],'as':_0x3487('0x38'),'where':_0x31e766,'limit':0x1,'order':[[_0x3487('0x2b'),_0x3487('0x39')]]}]},{'model':db[_0x3487('0x3a')],'as':_0x3487('0x3b')},{'model':db[_0x3487('0x3c')],'as':_0x3487('0x3d'),'include':[{'model':db[_0x3487('0x3e')],'as':'CloudProvider'}]}]})['then'](function(_0x320351){if(_0x320351&&_0x320351[_0x3487('0x3f')]){var _0x58e50c=_0x320351[_0x3487('0x40')]({'plain':!![]});_0x24a4ec['account']=_['omit'](_0x58e50c,[_0x3487('0x3b'),_0x3487('0x3f')]);_0x24a4ec['account'][_0x3487('0x27')]=_0x320351[_0x3487('0x28')]();_0x24a4ec[_0x3487('0x41')]=_0x58e50c['Applications'];_0x24a4ec[_0x3487('0x42')]=_0x58e50c[_0x3487('0x3f')];_0x24a4ec[_0x3487('0x41')]=_[_0x3487('0x43')](_0x24a4ec['applications'],[_0x3487('0x44')],[_0x3487('0x45')]);if(_0x24a4ec[_0x3487('0x36')]&&_0x24a4ec[_0x3487('0x36')][_0x3487('0x46')]){_0x24a4ec[_0x3487('0x41')][_0x3487('0x47')]({'id':0x0,'priority':_0x24a4ec['applications'][_0x3487('0x48')]+0x1,'app':_0x3487('0x49'),'appdata':'autoclose','interval':_0x3487('0x4a')});}if(_0x24a4ec[_0x3487('0x36')][_0x3487('0x3b')]){delete _0x24a4ec[_0x3487('0x36')][_0x3487('0x3b')];}if(_0x24a4ec[_0x3487('0x36')][_0x3487('0x3f')]){delete _0x24a4ec[_0x3487('0x36')][_0x3487('0x3f')];}if(_0x58e50c[_0x3487('0x3f')]['Contacts'][_0x3487('0x48')]){return _0x58e50c[_0x3487('0x3f')][_0x3487('0x38')][0x0];}var _0x478b67=_[_0x3487('0xa')](_0xc2e2ab[_0x3487('0x2d')],{'firstName':_0xc2e2ab['body'][_0x3487('0x2e')],'ListId':_0x58e50c[_0x3487('0x4b')]});_0x478b67[_0xc2e2ab['body']['mapKey']]=_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x2e')];return db[_0x3487('0x2a')][_0x3487('0x4c')](_0x478b67);}else{throw new Error(_0x3487('0x4d'));}})[_0x3487('0x22')](function(_0x4fac20){_0x24a4ec['contact']=_0x4fac20;if(_0x4fac20){if(!_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')]['messageId']){_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')][_0x3487('0x4e')]=rs['generate']()+'\x20'+_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')]['from'];}var _0x504fac={'ContactId':_0x4fac20['id'],'MailAccountId':_0xc2e2ab[_0x3487('0x36')]['id'],'inReplyTo':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')][_0x3487('0x4e')],'to':_0xc2e2ab['body'][_0x3487('0x15')][_0x3487('0x2e')],'cc':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')]['cc'],'subject':_0xc2e2ab['body']['message'][_0x3487('0x4f')],'attach':_0xc2e2ab['body'][_0x3487('0x15')][_0x3487('0x50')],'lastMsgAt':moment()[_0x3487('0x51')](_0x3487('0x52')),'lastMsgDirection':'in'};return db[_0x3487('0x53')][_0x3487('0x35')]({'where':{'closed':![],'MailAccountId':_0xc2e2ab[_0x3487('0x36')]['id']},'include':[{'model':db[_0x3487('0x54')],'as':_0x3487('0x55'),'attributes':[_0x3487('0x4e')],'where':{'messageId':_0xc2e2ab[_0x3487('0x2d')]['message'][_0x3487('0x56')]}}]})[_0x3487('0x22')](function(_0x57b0e4){if(_0x57b0e4){return[_0x57b0e4,![]];}return db[_0x3487('0x53')]['create'](_0x504fac)['then'](function(_0x2e724d){return[_0x2e724d,!![]];});});}else{throw new Error(_0x3487('0x57'));}})[_0x3487('0x58')](function(_0x177fc0,_0x3d47c3){if(_0x177fc0){_0x51b69c=_0x3d47c3;if(!_0x3d47c3){return _0x177fc0[_0x3487('0x59')]({'inReplyTo':_0xc2e2ab[_0x3487('0x2d')]['message'][_0x3487('0x4e')],'to':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')][_0x3487('0x2e')],'cc':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')]['cc'],'subject':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')][_0x3487('0x4f')],'attach':_0x177fc0[_0x3487('0x50')]?_0x177fc0['attach']:_0xc2e2ab['body'][_0x3487('0x15')]['attach'],'substatus':null,'substatusAt':moment()[_0x3487('0x51')](_0x3487('0x52')),'lastMsgAt':moment()[_0x3487('0x51')](_0x3487('0x52')),'lastMsgDirection':'in'});}else{return _0x177fc0;}}})['then'](function(_0x17ac4a){_0x24a4ec[_0x3487('0x5a')]=_0x17ac4a[_0x3487('0x40')]({'plain':!![]});_0x24a4ec[_0x3487('0x5a')][_0x3487('0x5b')]=_0x51b69c;return db[_0x3487('0x54')]['create']({'body':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x2d')],'MailAccountId':_0xc2e2ab['account']['id'],'MailInteractionId':_0x17ac4a['id'],'direction':'in','ContactId':_0x24a4ec[_0x3487('0x5c')]['id'],'messageId':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')][_0x3487('0x4e')],'from':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')][_0x3487('0x2e')],'to':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')]['to'],'cc':_0xc2e2ab[_0x3487('0x2d')]['message']['cc'],'subject':_0xc2e2ab[_0x3487('0x2d')]['message']['subject'],'attach':_0xc2e2ab[_0x3487('0x2d')]['message'][_0x3487('0x50')],'Attachments':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')]['attachments'],'originTo':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')][_0x3487('0x5d')],'originCc':_0xc2e2ab['body'][_0x3487('0x15')][_0x3487('0x5e')],'bcc':_0xc2e2ab[_0x3487('0x2d')]['message']['bcc'],'ChatWebsiteId':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')][_0x3487('0x5f')]||null,'originChannel':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')][_0x3487('0x60')]||_0x3487('0x61'),'ChatOfflineMessageId':_0xc2e2ab[_0x3487('0x2d')][_0x3487('0x15')][_0x3487('0x62')]||null},{'include':[{'model':db[_0x3487('0x63')],'as':_0x3487('0x64')}]});})[_0x3487('0x22')](function(_0x3d26eb){_0x24a4ec[_0x3487('0x15')]=_0x3d26eb;if(!_0x24a4ec[_0x3487('0x5a')][_0x3487('0x65')]){return;}return db[_0x3487('0x66')][_0x3487('0x35')]({'attributes':['id','name'],'where':{'id':_0x24a4ec[_0x3487('0x5a')][_0x3487('0x65')]}});})[_0x3487('0x22')](function(_0x9bbb2e){if(_0x9bbb2e){_0x24a4ec[_0x3487('0x41')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x9bbb2e[_0x3487('0x67')]+','+(_0x24a4ec[_0x3487('0x36')][_0x3487('0x68')]||0xa),'interval':_0x3487('0x4a')});}if(!_0x24a4ec[_0x3487('0x5a')][_0x3487('0x69')]){return;}return db[_0x3487('0x6a')]['find']({'attributes':['id',_0x3487('0x67')],'where':{'id':_0x24a4ec['interaction']['queueId']}});})[_0x3487('0x22')](function(_0x20ba2b){if(_0x20ba2b){_0x24a4ec[_0x3487('0x41')][_0x3487('0x6b')]({'id':0x0,'priority':0x1,'app':_0x3487('0x6c'),'appdata':_0x20ba2b[_0x3487('0x67')]+','+(_0x24a4ec[_0x3487('0x36')][_0x3487('0x6d')]||0x12c),'interval':_0x3487('0x4a')});}return respondWithRpcPromise(_0x3487('0x6e'),_0x3487('0x6f'),_0x24a4ec);})[_0x3487('0x22')](function(_0xd45305){_0x565cb2(_0xd45305);})[_0x3487('0x18')](function(_0x178b4f){_0x5c4f06(_0x3cb013['error'](0x1f4,_0x178b4f[_0x3487('0x15')]));});});};