5c6fb0b434689010bcbfe5757fa34aea29038dc9
[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 _0x11e5=['format','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','update','attach','YYYY-MM-DD\x20HH:mm:ss','interaction','created','contact','subject','attachments','originTo','originCc','bcc','originChannel','Email','Attachments','UserId','name','agent','queueId','unshift','queue','waitForTheAssignedQueue','Start','startRouting','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','redis','defaults','./mailAccount.socket','register','request','then','MailAccount,\x20%s,\x20%s','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','GetMailAccount','MailAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','catch','ShowMailAccount','find','smtp','setDataValue','smtpOptions','getSmtpOptions','body','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','isNil','from','from\x20is\x20mandatory','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','Smtp','CloudProvider','get','omit','applications','list','orderBy','priority','asc','length','close','*,*,*,*','create','messageId'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0x11e5,0x8b));var _0x511e=function(_0x5bf9fd,_0x3f1d89){_0x5bf9fd=_0x5bf9fd-0x0;var _0x3563ce=_0x11e5[_0x5bf9fd];return _0x3563ce;};'use strict';var _=require(_0x511e('0x0'));var moment=require('moment');var BPromise=require(_0x511e('0x1'));var rs=require(_0x511e('0x2'));var Redis=require('ioredis');var db=require(_0x511e('0x3'))['db'];var logger=require(_0x511e('0x4'))(_0x511e('0x5'));var config=require('../../config/environment');var jayson=require(_0x511e('0x6'));var client=jayson['client']['http']({'port':0x232c});config[_0x511e('0x7')]=_[_0x511e('0x8')](config[_0x511e('0x7')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x511e('0x7')]));require(_0x511e('0x9'))[_0x511e('0xa')](socket);function respondWithRpcPromise(_0x306694,_0x4449c4,_0x30269e){return new BPromise(function(_0x1596b3,_0x50564b){return client[_0x511e('0xb')](_0x306694,_0x30269e)[_0x511e('0xc')](function(_0x464085){logger['info'](_0x511e('0xd'),_0x4449c4,'request\x20sent');logger['debug'](_0x511e('0xe'),_0x4449c4,_0x511e('0xf'),JSON[_0x511e('0x10')](_0x464085));if(_0x464085[_0x511e('0x11')]){if(_0x464085[_0x511e('0x11')][_0x511e('0x12')]===0x1f4){logger['error'](_0x511e('0xd'),_0x4449c4,_0x464085[_0x511e('0x11')]['message']);return _0x50564b(_0x464085[_0x511e('0x11')][_0x511e('0x13')]);}logger['error'](_0x511e('0xd'),_0x4449c4,_0x464085[_0x511e('0x11')][_0x511e('0x13')]);return _0x1596b3(_0x464085[_0x511e('0x11')]['message']);}else{logger[_0x511e('0x14')](_0x511e('0xd'),_0x4449c4,_0x511e('0xf'));_0x1596b3(_0x464085['result'][_0x511e('0x13')]);}})['catch'](function(_0x34e6cd){logger['error']('MailAccount,\x20%s,\x20%s',_0x4449c4,_0x34e6cd);_0x50564b(_0x34e6cd);});});}exports[_0x511e('0x15')]=function(_0x5c4fb9){var _0x33bef5=this;return new Promise(function(_0x325278,_0x211855){return db[_0x511e('0x16')][_0x511e('0x17')]({'raw':_0x5c4fb9[_0x511e('0x18')]?_0x5c4fb9[_0x511e('0x18')][_0x511e('0x19')]===undefined?!![]:![]:!![],'where':_0x5c4fb9['options']?_0x5c4fb9[_0x511e('0x18')][_0x511e('0x1a')]||null:null,'attributes':_0x5c4fb9[_0x511e('0x18')]?_0x5c4fb9[_0x511e('0x18')][_0x511e('0x1b')]||null:null,'limit':_0x5c4fb9[_0x511e('0x18')]?_0x5c4fb9[_0x511e('0x18')][_0x511e('0x1c')]||null:null,'include':_0x5c4fb9[_0x511e('0x18')]?_0x5c4fb9[_0x511e('0x18')]['include']?_['map'](_0x5c4fb9[_0x511e('0x18')]['include'],function(_0x1ff5c4){return{'model':db[_0x1ff5c4['model']],'as':_0x1ff5c4['as'],'attributes':_0x1ff5c4[_0x511e('0x1b')],'include':_0x1ff5c4[_0x511e('0x1d')]?_[_0x511e('0x1e')](_0x1ff5c4[_0x511e('0x1d')],function(_0x1bb7f9){return{'model':db[_0x1bb7f9[_0x511e('0x1f')]],'as':_0x1bb7f9['as'],'attributes':_0x1bb7f9[_0x511e('0x1b')],'include':_0x1bb7f9[_0x511e('0x1d')]?_[_0x511e('0x1e')](_0x1bb7f9[_0x511e('0x1d')],function(_0x5b72fe){return{'model':db[_0x5b72fe[_0x511e('0x1f')]],'as':_0x5b72fe['as'],'attributes':_0x5b72fe[_0x511e('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x511e('0xc')](function(_0x1aaac1){logger[_0x511e('0x14')]('GetMailAccount',_0x5c4fb9);logger[_0x511e('0x20')]('GetMailAccount',_0x5c4fb9,JSON['stringify'](_0x1aaac1));_0x325278(_0x1aaac1);})[_0x511e('0x21')](function(_0xb1d444){logger[_0x511e('0x11')](_0x511e('0x15'),_0xb1d444[_0x511e('0x13')],_0x5c4fb9);_0x211855(_0x33bef5['error'](0x1f4,_0xb1d444[_0x511e('0x13')]));});});};exports[_0x511e('0x22')]=function(_0xf2a22){var _0x32be08=this;return new Promise(function(_0x43c95f,_0x4de0b7){return db[_0x511e('0x16')][_0x511e('0x23')]({'raw':_0xf2a22[_0x511e('0x18')]?_0xf2a22[_0x511e('0x18')][_0x511e('0x19')]===undefined?!![]:![]:!![],'where':_0xf2a22[_0x511e('0x18')]?_0xf2a22[_0x511e('0x18')][_0x511e('0x1a')]||null:null,'attributes':_0xf2a22['options']?_0xf2a22[_0x511e('0x18')][_0x511e('0x1b')]||null:null,'include':_0xf2a22[_0x511e('0x18')]?_0xf2a22[_0x511e('0x18')]['include']?_['map'](_0xf2a22[_0x511e('0x18')]['include'],function(_0x529d08){return{'model':db[_0x529d08[_0x511e('0x1f')]],'as':_0x529d08['as'],'attributes':_0x529d08[_0x511e('0x1b')],'include':_0x529d08[_0x511e('0x1d')]?_[_0x511e('0x1e')](_0x529d08[_0x511e('0x1d')],function(_0x574378){return{'model':db[_0x574378[_0x511e('0x1f')]],'as':_0x574378['as'],'attributes':_0x574378[_0x511e('0x1b')],'include':_0x574378[_0x511e('0x1d')]?_['map'](_0x574378[_0x511e('0x1d')],function(_0xbba7ce){return{'model':db[_0xbba7ce[_0x511e('0x1f')]],'as':_0xbba7ce['as'],'attributes':_0xbba7ce['attributes']};}):[]};}):[]};}):[]:[]})[_0x511e('0xc')](function(_0x2fd83d){if(_0xf2a22['options'][_0x511e('0x24')]===!![])_0x2fd83d[_0x511e('0x25')](_0x511e('0x26'),_0x2fd83d[_0x511e('0x27')]());logger[_0x511e('0x14')](_0x511e('0x22'),_0xf2a22);logger[_0x511e('0x20')](_0x511e('0x22'),_0xf2a22,JSON[_0x511e('0x10')](_0x2fd83d));_0x43c95f(_0x2fd83d);})[_0x511e('0x21')](function(_0x22de4f){logger['error'](_0x511e('0x22'),_0x22de4f['message'],_0xf2a22);_0x4de0b7(_0x32be08['error'](0x1f4,_0x22de4f[_0x511e('0x13')]));});});};exports['NotifyMailAccount']=function(_0x479981){var _0x2ce210=this;return new Promise(function(_0x200207,_0x3c0ef4){var _0x3d1e9d={'body':_0x479981[_0x511e('0x28')],'channel':_0x511e('0x29')};var _0x236077=_[_0x511e('0x2a')](_[_0x511e('0x2b')](db[_0x511e('0x2c')][_0x511e('0x2d')]),[_0x511e('0x2e'),_0x511e('0x2f'),_0x511e('0x30'),'ListId']);var _0x5a7a12=![];if(_0x479981[_0x511e('0x28')]['id']){delete _0x479981[_0x511e('0x28')]['id'];}if(_[_0x511e('0x31')](_0x479981[_0x511e('0x28')][_0x511e('0x32')])){return _0x3c0ef4(_0x2ce210['error'](0x1f4,_0x511e('0x33')));}if(_[_0x511e('0x31')](_0x479981[_0x511e('0x28')]['body'])||_0x479981['body']['body']===''){return _0x3c0ef4(_0x2ce210[_0x511e('0x11')](0x1f4,_0x511e('0x34')));}if(_[_0x511e('0x31')](_0x479981['body']['mapKey'])){return _0x3c0ef4(_0x2ce210['error'](0x1f4,_0x511e('0x35')+_0x236077));}if(!_[_0x511e('0x36')](_0x236077,_0x479981[_0x511e('0x28')][_0x511e('0x37')])){return _0x3c0ef4(_0x2ce210[_0x511e('0x11')](0x1f4,_0x511e('0x38')+_0x236077));}var _0x1d494f={};_0x1d494f[_0x479981[_0x511e('0x28')][_0x511e('0x37')]]=_0x479981[_0x511e('0x28')][_0x511e('0x32')];return db[_0x511e('0x16')][_0x511e('0x23')]({'where':{'id':_0x479981[_0x511e('0x39')]['id']},'include':[{'model':db[_0x511e('0x3a')],'as':_0x511e('0x3b'),'include':[{'model':db[_0x511e('0x2c')],'as':_0x511e('0x3c'),'where':_0x1d494f,'limit':0x1,'order':[[_0x511e('0x2f'),_0x511e('0x3d')]]}]},{'model':db[_0x511e('0x3e')],'as':_0x511e('0x3f')},{'model':db[_0x511e('0x40')],'as':_0x511e('0x41'),'include':[{'model':db[_0x511e('0x42')],'as':_0x511e('0x42')}]}]})[_0x511e('0xc')](function(_0x31e949){if(_0x31e949&&_0x31e949[_0x511e('0x3b')]){var _0x1f11ad=_0x31e949[_0x511e('0x43')]({'plain':!![]});_0x3d1e9d['account']=_[_0x511e('0x44')](_0x1f11ad,['Applications',_0x511e('0x3b')]);_0x3d1e9d[_0x511e('0x39')][_0x511e('0x26')]=_0x31e949['getSmtpOptions']();_0x3d1e9d[_0x511e('0x45')]=_0x1f11ad[_0x511e('0x3f')];_0x3d1e9d[_0x511e('0x46')]=_0x1f11ad['List'];_0x3d1e9d[_0x511e('0x45')]=_[_0x511e('0x47')](_0x3d1e9d['applications'],[_0x511e('0x48')],[_0x511e('0x49')]);if(_0x3d1e9d[_0x511e('0x39')]&&_0x3d1e9d[_0x511e('0x39')]['autoclose']){_0x3d1e9d[_0x511e('0x45')]['push']({'id':0x0,'priority':_0x3d1e9d[_0x511e('0x45')][_0x511e('0x4a')]+0x1,'app':_0x511e('0x4b'),'appdata':'autoclose','interval':_0x511e('0x4c')});}if(_0x3d1e9d['account'][_0x511e('0x3f')]){delete _0x3d1e9d[_0x511e('0x39')][_0x511e('0x3f')];}if(_0x3d1e9d[_0x511e('0x39')][_0x511e('0x3b')]){delete _0x3d1e9d['account'][_0x511e('0x3b')];}if(_0x1f11ad[_0x511e('0x3b')][_0x511e('0x3c')][_0x511e('0x4a')]){return _0x1f11ad[_0x511e('0x3b')][_0x511e('0x3c')][0x0];}var _0x4420c8=_[_0x511e('0x8')](_0x479981['body'],{'firstName':_0x479981[_0x511e('0x28')][_0x511e('0x32')],'ListId':_0x1f11ad['ListId']});_0x4420c8[_0x479981[_0x511e('0x28')][_0x511e('0x37')]]=_0x479981[_0x511e('0x28')][_0x511e('0x32')];return db[_0x511e('0x2c')][_0x511e('0x4d')](_0x4420c8);}else{throw new Error('List\x20not\x20found');}})[_0x511e('0xc')](function(_0x1c96c9){_0x3d1e9d['contact']=_0x1c96c9;if(_0x1c96c9){if(!_0x479981[_0x511e('0x28')]['message'][_0x511e('0x4e')]){_0x479981[_0x511e('0x28')]['message']['messageId']=rs['generate']()+'\x20'+_0x479981['body'][_0x511e('0x13')]['from'];}var _0x5b29be={'ContactId':_0x1c96c9['id'],'MailAccountId':_0x479981[_0x511e('0x39')]['id'],'inReplyTo':_0x479981[_0x511e('0x28')]['message'][_0x511e('0x4e')],'to':_0x479981['body'][_0x511e('0x13')]['from'],'cc':_0x479981['body']['message']['cc'],'subject':_0x479981[_0x511e('0x28')][_0x511e('0x13')]['subject'],'attach':_0x479981['body']['message']['attach'],'lastMsgAt':moment()[_0x511e('0x4f')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x511e('0x50')]['find']({'where':{'closed':![],'MailAccountId':_0x479981[_0x511e('0x39')]['id']},'include':[{'model':db[_0x511e('0x51')],'as':_0x511e('0x52'),'attributes':[_0x511e('0x4e')],'where':{'messageId':_0x479981['body'][_0x511e('0x13')][_0x511e('0x53')]}}]})[_0x511e('0xc')](function(_0x2b493f){if(_0x2b493f){return[_0x2b493f,![]];}return db[_0x511e('0x50')]['create'](_0x5b29be)['then'](function(_0x45a7b2){return[_0x45a7b2,!![]];});});}else{throw new Error(_0x511e('0x54'));}})[_0x511e('0x55')](function(_0x537df4,_0x3d0a10){if(_0x537df4){_0x5a7a12=_0x3d0a10;if(!_0x3d0a10){return _0x537df4[_0x511e('0x56')]({'inReplyTo':_0x479981[_0x511e('0x28')][_0x511e('0x13')][_0x511e('0x4e')],'to':_0x479981[_0x511e('0x28')]['message']['from'],'cc':_0x479981['body'][_0x511e('0x13')]['cc'],'subject':_0x479981['body'][_0x511e('0x13')]['subject'],'attach':_0x537df4[_0x511e('0x57')]?_0x537df4['attach']:_0x479981[_0x511e('0x28')][_0x511e('0x13')][_0x511e('0x57')],'substatus':null,'substatusAt':moment()[_0x511e('0x4f')](_0x511e('0x58')),'lastMsgAt':moment()['format'](_0x511e('0x58')),'lastMsgDirection':'in'});}else{return _0x537df4;}}})['then'](function(_0x435b2a){_0x3d1e9d[_0x511e('0x59')]=_0x435b2a[_0x511e('0x43')]({'plain':!![]});_0x3d1e9d['interaction'][_0x511e('0x5a')]=_0x5a7a12;return db[_0x511e('0x51')][_0x511e('0x4d')]({'body':_0x479981[_0x511e('0x28')]['body'],'MailAccountId':_0x479981['account']['id'],'MailInteractionId':_0x435b2a['id'],'direction':'in','ContactId':_0x3d1e9d[_0x511e('0x5b')]['id'],'messageId':_0x479981[_0x511e('0x28')]['message'][_0x511e('0x4e')],'from':_0x479981['body'][_0x511e('0x13')][_0x511e('0x32')],'to':_0x479981['body']['message']['to'],'cc':_0x479981[_0x511e('0x28')][_0x511e('0x13')]['cc'],'subject':_0x479981[_0x511e('0x28')]['message'][_0x511e('0x5c')],'attach':_0x479981[_0x511e('0x28')][_0x511e('0x13')][_0x511e('0x57')],'Attachments':_0x479981[_0x511e('0x28')][_0x511e('0x13')][_0x511e('0x5d')],'originTo':_0x479981['body'][_0x511e('0x13')][_0x511e('0x5e')],'originCc':_0x479981['body']['message'][_0x511e('0x5f')],'bcc':_0x479981[_0x511e('0x28')]['message'][_0x511e('0x60')],'ChatWebsiteId':_0x479981['body'][_0x511e('0x13')]['ChatWebsiteId']||null,'originChannel':_0x479981['body'][_0x511e('0x13')][_0x511e('0x61')]||_0x511e('0x62'),'ChatOfflineMessageId':_0x479981[_0x511e('0x28')][_0x511e('0x13')]['ChatOfflineMessageId']||null},{'include':[{'model':db['Attachment'],'as':_0x511e('0x63')}]});})[_0x511e('0xc')](function(_0x302e05){_0x3d1e9d['message']=_0x302e05;if(!_0x3d1e9d[_0x511e('0x59')][_0x511e('0x64')]){return;}return db['User']['find']({'attributes':['id',_0x511e('0x65')],'where':{'id':_0x3d1e9d[_0x511e('0x59')][_0x511e('0x64')]}});})[_0x511e('0xc')](function(_0x47359f){if(_0x47359f){_0x3d1e9d[_0x511e('0x45')]['unshift']({'id':0x0,'priority':0x0,'app':_0x511e('0x66'),'appdata':_0x47359f[_0x511e('0x65')]+','+(_0x3d1e9d['account']['waitForTheAssignedAgent']||0xa),'interval':_0x511e('0x4c')});}if(!_0x3d1e9d['interaction'][_0x511e('0x67')]){return;}return db['MailQueue']['find']({'attributes':['id',_0x511e('0x65')],'where':{'id':_0x3d1e9d[_0x511e('0x59')][_0x511e('0x67')]}});})[_0x511e('0xc')](function(_0x3b497b){if(_0x3b497b){_0x3d1e9d[_0x511e('0x45')][_0x511e('0x68')]({'id':0x0,'priority':0x1,'app':_0x511e('0x69'),'appdata':_0x3b497b[_0x511e('0x65')]+','+(_0x3d1e9d[_0x511e('0x39')][_0x511e('0x6a')]||0x12c),'interval':_0x511e('0x4c')});}return respondWithRpcPromise(_0x511e('0x6b'),_0x511e('0x6c'),_0x3d1e9d);})[_0x511e('0xc')](function(_0x327516){_0x200207(_0x327516);})['catch'](function(_0x38b1cc){_0x3c0ef4(_0x2ce210[_0x511e('0x11')](0x1f4,_0x38b1cc[_0x511e('0x13')]));});});};