cc2b7b954c4e972dafe5f9f630bca833903c3f32
[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 _0x236d=['created','MailMessage','originTo','bcc','ChatWebsiteId','originChannel','Attachment','Attachments','User','UserId','unshift','name','waitForTheAssignedAgent','queueId','MailQueue','waitForTheAssignedQueue','startRouting','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','redis','defaults','./mailAccount.socket','request','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','MailAccount','findAll','options','raw','where','attributes','limit','map','include','model','then','GetMailAccount','catch','ShowMailAccount','find','smtp','setDataValue','smtpOptions','getSmtpOptions','NotifyMailAccount','body','mail','difference','rawAttributes','createdAt','CompanyId','ListId','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','CmList','Contacts','updatedAt','DESC','MailApplication','Applications','MailServerOut','CloudProvider','get','List','applications','list','orderBy','asc','autoclose','push','close','*,*,*,*','length','CmContact','create','List\x20not\x20found','contact','messageId','generate','subject','attach','YYYY-MM-DD\x20HH:mm:ss','Messages','inReplyTo','MailInteraction','spread','update','format','interaction'];(function(_0x56740d,_0x1e9994){var _0x4718d8=function(_0x84d815){while(--_0x84d815){_0x56740d['push'](_0x56740d['shift']());}};_0x4718d8(++_0x1e9994);}(_0x236d,0x7e));var _0xd236=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x236d[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xd236('0x0'));var moment=require(_0xd236('0x1'));var BPromise=require('bluebird');var rs=require(_0xd236('0x2'));var Redis=require('ioredis');var db=require(_0xd236('0x3'))['db'];var logger=require(_0xd236('0x4'))(_0xd236('0x5'));var config=require(_0xd236('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd236('0x7')]({'port':0x232c});config[_0xd236('0x8')]=_[_0xd236('0x9')](config[_0xd236('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd236('0x8')]));require(_0xd236('0xa'))['register'](socket);function respondWithRpcPromise(_0x186a0b,_0x110545,_0x5a3447){return new BPromise(function(_0x3d11c7,_0x29ba1d){return client[_0xd236('0xb')](_0x186a0b,_0x5a3447)['then'](function(_0x470524){logger[_0xd236('0xc')](_0xd236('0xd'),_0x110545,'request\x20sent');logger[_0xd236('0xe')](_0xd236('0xf'),_0x110545,_0xd236('0x10'),JSON[_0xd236('0x11')](_0x470524));if(_0x470524[_0xd236('0x12')]){if(_0x470524[_0xd236('0x12')][_0xd236('0x13')]===0x1f4){logger[_0xd236('0x12')](_0xd236('0xd'),_0x110545,_0x470524[_0xd236('0x12')][_0xd236('0x14')]);return _0x29ba1d(_0x470524[_0xd236('0x12')][_0xd236('0x14')]);}logger[_0xd236('0x12')](_0xd236('0xd'),_0x110545,_0x470524[_0xd236('0x12')][_0xd236('0x14')]);return _0x3d11c7(_0x470524[_0xd236('0x12')][_0xd236('0x14')]);}else{logger[_0xd236('0xc')]('MailAccount,\x20%s,\x20%s',_0x110545,'request\x20sent');_0x3d11c7(_0x470524[_0xd236('0x15')][_0xd236('0x14')]);}})['catch'](function(_0x11c6ec){logger[_0xd236('0x12')](_0xd236('0xd'),_0x110545,_0x11c6ec);_0x29ba1d(_0x11c6ec);});});}exports['GetMailAccount']=function(_0x355b65){var _0x1b6aaa=this;return new Promise(function(_0x31f0bb,_0x551b53){return db[_0xd236('0x16')][_0xd236('0x17')]({'raw':_0x355b65[_0xd236('0x18')]?_0x355b65[_0xd236('0x18')][_0xd236('0x19')]===undefined?!![]:![]:!![],'where':_0x355b65['options']?_0x355b65[_0xd236('0x18')][_0xd236('0x1a')]||null:null,'attributes':_0x355b65[_0xd236('0x18')]?_0x355b65[_0xd236('0x18')][_0xd236('0x1b')]||null:null,'limit':_0x355b65['options']?_0x355b65['options'][_0xd236('0x1c')]||null:null,'include':_0x355b65['options']?_0x355b65[_0xd236('0x18')]['include']?_[_0xd236('0x1d')](_0x355b65[_0xd236('0x18')][_0xd236('0x1e')],function(_0x49d822){return{'model':db[_0x49d822[_0xd236('0x1f')]],'as':_0x49d822['as'],'attributes':_0x49d822[_0xd236('0x1b')],'include':_0x49d822[_0xd236('0x1e')]?_[_0xd236('0x1d')](_0x49d822[_0xd236('0x1e')],function(_0x17f927){return{'model':db[_0x17f927[_0xd236('0x1f')]],'as':_0x17f927['as'],'attributes':_0x17f927[_0xd236('0x1b')],'include':_0x17f927[_0xd236('0x1e')]?_[_0xd236('0x1d')](_0x17f927[_0xd236('0x1e')],function(_0x2af382){return{'model':db[_0x2af382[_0xd236('0x1f')]],'as':_0x2af382['as'],'attributes':_0x2af382[_0xd236('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xd236('0x20')](function(_0x28175d){logger[_0xd236('0xc')](_0xd236('0x21'),_0x355b65);logger[_0xd236('0xe')](_0xd236('0x21'),_0x355b65,JSON[_0xd236('0x11')](_0x28175d));_0x31f0bb(_0x28175d);})[_0xd236('0x22')](function(_0x3c1617){logger[_0xd236('0x12')](_0xd236('0x21'),_0x3c1617[_0xd236('0x14')],_0x355b65);_0x551b53(_0x1b6aaa[_0xd236('0x12')](0x1f4,_0x3c1617[_0xd236('0x14')]));});});};exports[_0xd236('0x23')]=function(_0x52a556){var _0xf50f02=this;return new Promise(function(_0x4ece4b,_0x2168a1){return db[_0xd236('0x16')][_0xd236('0x24')]({'raw':_0x52a556['options']?_0x52a556[_0xd236('0x18')][_0xd236('0x19')]===undefined?!![]:![]:!![],'where':_0x52a556[_0xd236('0x18')]?_0x52a556[_0xd236('0x18')][_0xd236('0x1a')]||null:null,'attributes':_0x52a556[_0xd236('0x18')]?_0x52a556[_0xd236('0x18')]['attributes']||null:null,'include':_0x52a556[_0xd236('0x18')]?_0x52a556['options'][_0xd236('0x1e')]?_['map'](_0x52a556[_0xd236('0x18')][_0xd236('0x1e')],function(_0x366128){return{'model':db[_0x366128[_0xd236('0x1f')]],'as':_0x366128['as'],'attributes':_0x366128[_0xd236('0x1b')],'include':_0x366128[_0xd236('0x1e')]?_[_0xd236('0x1d')](_0x366128[_0xd236('0x1e')],function(_0x450217){return{'model':db[_0x450217[_0xd236('0x1f')]],'as':_0x450217['as'],'attributes':_0x450217[_0xd236('0x1b')],'include':_0x450217[_0xd236('0x1e')]?_[_0xd236('0x1d')](_0x450217['include'],function(_0x414f55){return{'model':db[_0x414f55[_0xd236('0x1f')]],'as':_0x414f55['as'],'attributes':_0x414f55[_0xd236('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2cb19a){if(_0x52a556[_0xd236('0x18')][_0xd236('0x25')]===!![])_0x2cb19a[_0xd236('0x26')](_0xd236('0x27'),_0x2cb19a[_0xd236('0x28')]());logger['info'](_0xd236('0x23'),_0x52a556);logger[_0xd236('0xe')](_0xd236('0x23'),_0x52a556,JSON[_0xd236('0x11')](_0x2cb19a));_0x4ece4b(_0x2cb19a);})[_0xd236('0x22')](function(_0x222495){logger['error'](_0xd236('0x23'),_0x222495[_0xd236('0x14')],_0x52a556);_0x2168a1(_0xf50f02[_0xd236('0x12')](0x1f4,_0x222495['message']));});});};exports[_0xd236('0x29')]=function(_0x5a8b18){var _0x442c6f=this;return new Promise(function(_0x5793bf,_0x55c4d9){var _0x29268e={'body':_0x5a8b18[_0xd236('0x2a')],'channel':_0xd236('0x2b')};var _0x276f11=_[_0xd236('0x2c')](_['keys'](db['CmContact'][_0xd236('0x2d')]),[_0xd236('0x2e'),'updatedAt',_0xd236('0x2f'),_0xd236('0x30')]);var _0x2d815b=![];if(_0x5a8b18['body']['id']){delete _0x5a8b18['body']['id'];}if(_['isNil'](_0x5a8b18[_0xd236('0x2a')]['from'])){return _0x55c4d9(_0x442c6f['error'](0x1f4,_0xd236('0x31')));}if(_[_0xd236('0x32')](_0x5a8b18[_0xd236('0x2a')][_0xd236('0x2a')])||_0x5a8b18[_0xd236('0x2a')]['body']===''){return _0x55c4d9(_0x442c6f['error'](0x1f4,_0xd236('0x33')));}if(_[_0xd236('0x32')](_0x5a8b18[_0xd236('0x2a')][_0xd236('0x34')])){return _0x55c4d9(_0x442c6f[_0xd236('0x12')](0x1f4,_0xd236('0x35')+_0x276f11));}if(!_['includes'](_0x276f11,_0x5a8b18[_0xd236('0x2a')]['mapKey'])){return _0x55c4d9(_0x442c6f[_0xd236('0x12')](0x1f4,_0xd236('0x36')+_0x276f11));}var _0x57c0cf={};_0x57c0cf[_0x5a8b18['body']['mapKey']]=_0x5a8b18['body'][_0xd236('0x37')];return db[_0xd236('0x16')][_0xd236('0x24')]({'where':{'id':_0x5a8b18[_0xd236('0x38')]['id']},'include':[{'model':db[_0xd236('0x39')],'as':'List','include':[{'model':db['CmContact'],'as':_0xd236('0x3a'),'where':_0x57c0cf,'limit':0x1,'order':[[_0xd236('0x3b'),_0xd236('0x3c')]]}]},{'model':db[_0xd236('0x3d')],'as':_0xd236('0x3e')},{'model':db[_0xd236('0x3f')],'as':'Smtp','include':[{'model':db[_0xd236('0x40')],'as':'CloudProvider'}]}]})[_0xd236('0x20')](function(_0x2c8861){if(_0x2c8861&&_0x2c8861['List']){var _0x22cb72=_0x2c8861[_0xd236('0x41')]({'plain':!![]});_0x29268e['account']=_['omit'](_0x22cb72,[_0xd236('0x3e'),_0xd236('0x42')]);_0x29268e[_0xd236('0x38')][_0xd236('0x27')]=_0x2c8861['getSmtpOptions']();_0x29268e[_0xd236('0x43')]=_0x22cb72[_0xd236('0x3e')];_0x29268e[_0xd236('0x44')]=_0x22cb72[_0xd236('0x42')];_0x29268e[_0xd236('0x43')]=_[_0xd236('0x45')](_0x29268e['applications'],['priority'],[_0xd236('0x46')]);if(_0x29268e['account']&&_0x29268e[_0xd236('0x38')][_0xd236('0x47')]){_0x29268e['applications'][_0xd236('0x48')]({'id':0x0,'priority':_0x29268e[_0xd236('0x43')]['length']+0x1,'app':_0xd236('0x49'),'appdata':_0xd236('0x47'),'interval':_0xd236('0x4a')});}if(_0x29268e[_0xd236('0x38')]['Applications']){delete _0x29268e['account'][_0xd236('0x3e')];}if(_0x29268e[_0xd236('0x38')]['List']){delete _0x29268e[_0xd236('0x38')][_0xd236('0x42')];}if(_0x22cb72[_0xd236('0x42')][_0xd236('0x3a')][_0xd236('0x4b')]){return _0x22cb72['List'][_0xd236('0x3a')][0x0];}var _0x45a2c1=_[_0xd236('0x9')](_0x5a8b18['body'],{'firstName':_0x5a8b18[_0xd236('0x2a')]['from'],'ListId':_0x22cb72['ListId']});_0x45a2c1[_0x5a8b18[_0xd236('0x2a')][_0xd236('0x34')]]=_0x5a8b18[_0xd236('0x2a')][_0xd236('0x37')];return db[_0xd236('0x4c')][_0xd236('0x4d')](_0x45a2c1);}else{throw new Error(_0xd236('0x4e'));}})['then'](function(_0x4291a1){_0x29268e[_0xd236('0x4f')]=_0x4291a1;if(_0x4291a1){if(!_0x5a8b18[_0xd236('0x2a')][_0xd236('0x14')][_0xd236('0x50')]){_0x5a8b18[_0xd236('0x2a')]['message'][_0xd236('0x50')]=rs[_0xd236('0x51')]()+'\x20'+_0x5a8b18[_0xd236('0x2a')]['message'][_0xd236('0x37')];}var _0x6f83a2={'ContactId':_0x4291a1['id'],'MailAccountId':_0x5a8b18[_0xd236('0x38')]['id'],'inReplyTo':_0x5a8b18['body'][_0xd236('0x14')][_0xd236('0x50')],'to':_0x5a8b18[_0xd236('0x2a')][_0xd236('0x14')]['from'],'cc':_0x5a8b18[_0xd236('0x2a')]['message']['cc'],'subject':_0x5a8b18[_0xd236('0x2a')]['message'][_0xd236('0x52')],'attach':_0x5a8b18['body'][_0xd236('0x14')][_0xd236('0x53')],'lastMsgAt':moment()['format'](_0xd236('0x54')),'lastMsgDirection':'in'};return db['MailInteraction'][_0xd236('0x24')]({'where':{'closed':![],'MailAccountId':_0x5a8b18[_0xd236('0x38')]['id']},'include':[{'model':db['MailMessage'],'as':_0xd236('0x55'),'attributes':[_0xd236('0x50')],'where':{'messageId':_0x5a8b18['body']['message'][_0xd236('0x56')]}}]})[_0xd236('0x20')](function(_0x4c5527){if(_0x4c5527){return[_0x4c5527,![]];}return db[_0xd236('0x57')]['create'](_0x6f83a2)[_0xd236('0x20')](function(_0x13bb7a){return[_0x13bb7a,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xd236('0x58')](function(_0x3d3954,_0x275f2b){if(_0x3d3954){_0x2d815b=_0x275f2b;if(!_0x275f2b){return _0x3d3954[_0xd236('0x59')]({'inReplyTo':_0x5a8b18['body'][_0xd236('0x14')][_0xd236('0x50')],'to':_0x5a8b18[_0xd236('0x2a')]['message'][_0xd236('0x37')],'cc':_0x5a8b18['body'][_0xd236('0x14')]['cc'],'subject':_0x5a8b18[_0xd236('0x2a')][_0xd236('0x14')]['subject'],'attach':_0x3d3954[_0xd236('0x53')]?_0x3d3954[_0xd236('0x53')]:_0x5a8b18[_0xd236('0x2a')][_0xd236('0x14')]['attach'],'substatus':null,'substatusAt':moment()[_0xd236('0x5a')](_0xd236('0x54')),'lastMsgAt':moment()[_0xd236('0x5a')](_0xd236('0x54')),'lastMsgDirection':'in'});}else{return _0x3d3954;}}})['then'](function(_0x48e465){_0x29268e[_0xd236('0x5b')]=_0x48e465['get']({'plain':!![]});_0x29268e['interaction'][_0xd236('0x5c')]=_0x2d815b;return db[_0xd236('0x5d')][_0xd236('0x4d')]({'body':_0x5a8b18[_0xd236('0x2a')][_0xd236('0x2a')],'MailAccountId':_0x5a8b18[_0xd236('0x38')]['id'],'MailInteractionId':_0x48e465['id'],'direction':'in','ContactId':_0x29268e[_0xd236('0x4f')]['id'],'messageId':_0x5a8b18[_0xd236('0x2a')]['message'][_0xd236('0x50')],'from':_0x5a8b18[_0xd236('0x2a')]['message'][_0xd236('0x37')],'to':_0x5a8b18[_0xd236('0x2a')]['message']['to'],'cc':_0x5a8b18[_0xd236('0x2a')][_0xd236('0x14')]['cc'],'subject':_0x5a8b18['body'][_0xd236('0x14')][_0xd236('0x52')],'attach':_0x5a8b18[_0xd236('0x2a')]['message']['attach'],'Attachments':_0x5a8b18['body'][_0xd236('0x14')]['attachments'],'originTo':_0x5a8b18['body'][_0xd236('0x14')][_0xd236('0x5e')],'originCc':_0x5a8b18[_0xd236('0x2a')][_0xd236('0x14')]['originCc'],'bcc':_0x5a8b18[_0xd236('0x2a')][_0xd236('0x14')][_0xd236('0x5f')],'ChatWebsiteId':_0x5a8b18['body'][_0xd236('0x14')][_0xd236('0x60')]||null,'originChannel':_0x5a8b18[_0xd236('0x2a')][_0xd236('0x14')][_0xd236('0x61')]||'Email','ChatOfflineMessageId':_0x5a8b18['body'][_0xd236('0x14')]['ChatOfflineMessageId']||null},{'include':[{'model':db[_0xd236('0x62')],'as':_0xd236('0x63')}]});})[_0xd236('0x20')](function(_0x4d22e9){_0x29268e[_0xd236('0x14')]=_0x4d22e9;if(!_0x29268e[_0xd236('0x5b')]['UserId']){return;}return db[_0xd236('0x64')][_0xd236('0x24')]({'attributes':['id','name'],'where':{'id':_0x29268e[_0xd236('0x5b')][_0xd236('0x65')]}});})['then'](function(_0x47e7b2){if(_0x47e7b2){_0x29268e[_0xd236('0x43')][_0xd236('0x66')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x47e7b2[_0xd236('0x67')]+','+(_0x29268e['account'][_0xd236('0x68')]||0xa),'interval':_0xd236('0x4a')});}if(!_0x29268e['interaction'][_0xd236('0x69')]){return;}return db[_0xd236('0x6a')]['find']({'attributes':['id',_0xd236('0x67')],'where':{'id':_0x29268e['interaction'][_0xd236('0x69')]}});})[_0xd236('0x20')](function(_0x21543c){if(_0x21543c){_0x29268e[_0xd236('0x43')]['unshift']({'id':0x0,'priority':0x1,'app':'queue','appdata':_0x21543c[_0xd236('0x67')]+','+(_0x29268e['account'][_0xd236('0x6b')]||0x12c),'interval':_0xd236('0x4a')});}return respondWithRpcPromise('Start',_0xd236('0x6c'),_0x29268e);})[_0xd236('0x20')](function(_0x4f02e7){_0x5793bf(_0x4f02e7);})[_0xd236('0x22')](function(_0x3b4e4c){_0x55c4d9(_0x442c6f[_0xd236('0x12')](0x1f4,_0x3b4e4c['message']));});});};