fb8747d6d31a87928f321cc05413d4706d3fe859
[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 _0x0648=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./mailAccount.socket','register','request','then','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','MailAccount','findAll','options','raw','where','attributes','limit','map','include','model','GetMailAccount','ShowMailAccount','find','info','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','updatedAt','CompanyId','ListId','isNil','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','from','CmList','List','Contacts','MailApplication','Applications','MailServerOut','Smtp','get','account','omit','applications','list','asc','autoclose','push','length','*,*,*,*','create','List\x20not\x20found','contact','messageId','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','Messages','inReplyTo','MailInteraction','Contact\x20not\x20found','spread','update','interaction','created','originTo','originCc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','agent','startRouting','Start'];(function(_0x20c086,_0x2772c7){var _0x28047e=function(_0x362fc0){while(--_0x362fc0){_0x20c086['push'](_0x20c086['shift']());}};_0x28047e(++_0x2772c7);}(_0x0648,0x150));var _0x8064=function(_0x97ed74,_0x5e7ec3){_0x97ed74=_0x97ed74-0x0;var _0x36c62b=_0x0648[_0x97ed74];return _0x36c62b;};'use strict';var _=require(_0x8064('0x0'));var util=require(_0x8064('0x1'));var moment=require(_0x8064('0x2'));var BPromise=require(_0x8064('0x3'));var rs=require(_0x8064('0x4'));var fs=require('fs');var Redis=require(_0x8064('0x5'));var db=require(_0x8064('0x6'))['db'];var utils=require(_0x8064('0x7'));var logger=require(_0x8064('0x8'))(_0x8064('0x9'));var config=require(_0x8064('0xa'));var jayson=require(_0x8064('0xb'));var client=jayson[_0x8064('0xc')][_0x8064('0xd')]({'port':0x232c});config['redis']=_[_0x8064('0xe')](config[_0x8064('0xf')],{'host':_0x8064('0x10'),'port':0x18eb});var socket=require(_0x8064('0x11'))(new Redis(config[_0x8064('0xf')]));require(_0x8064('0x12'))[_0x8064('0x13')](socket);function respondWithRpcPromise(_0x15095f,_0x43cac5,_0x591426){return new BPromise(function(_0x54734c,_0x26520f){return client[_0x8064('0x14')](_0x15095f,_0x591426)[_0x8064('0x15')](function(_0x2f2792){logger['info'](_0x8064('0x16'),_0x43cac5,_0x8064('0x17'));logger[_0x8064('0x18')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x43cac5,_0x8064('0x17'),JSON[_0x8064('0x19')](_0x2f2792));if(_0x2f2792[_0x8064('0x1a')]){if(_0x2f2792[_0x8064('0x1a')][_0x8064('0x1b')]===0x1f4){logger[_0x8064('0x1a')](_0x8064('0x16'),_0x43cac5,_0x2f2792['error']['message']);return _0x26520f(_0x2f2792[_0x8064('0x1a')][_0x8064('0x1c')]);}logger['error'](_0x8064('0x16'),_0x43cac5,_0x2f2792[_0x8064('0x1a')][_0x8064('0x1c')]);return _0x54734c(_0x2f2792['error']['message']);}else{logger['info'](_0x8064('0x16'),_0x43cac5,_0x8064('0x17'));_0x54734c(_0x2f2792[_0x8064('0x1d')][_0x8064('0x1c')]);}})[_0x8064('0x1e')](function(_0x15dc2c){logger[_0x8064('0x1a')]('MailAccount,\x20%s,\x20%s',_0x43cac5,_0x15dc2c);_0x26520f(_0x15dc2c);});});}exports['GetMailAccount']=function(_0x52dcba){var _0x2018c9=this;return new Promise(function(_0xecd8ad,_0x109ebd){return db[_0x8064('0x1f')][_0x8064('0x20')]({'raw':_0x52dcba[_0x8064('0x21')]?_0x52dcba['options'][_0x8064('0x22')]===undefined?!![]:![]:!![],'where':_0x52dcba['options']?_0x52dcba[_0x8064('0x21')][_0x8064('0x23')]||null:null,'attributes':_0x52dcba[_0x8064('0x21')]?_0x52dcba[_0x8064('0x21')][_0x8064('0x24')]||null:null,'limit':_0x52dcba[_0x8064('0x21')]?_0x52dcba[_0x8064('0x21')][_0x8064('0x25')]||null:null,'include':_0x52dcba['options']?_0x52dcba[_0x8064('0x21')]['include']?_[_0x8064('0x26')](_0x52dcba['options'][_0x8064('0x27')],function(_0x528fb5){return{'model':db[_0x528fb5[_0x8064('0x28')]],'as':_0x528fb5['as'],'attributes':_0x528fb5['attributes'],'include':_0x528fb5[_0x8064('0x27')]?_[_0x8064('0x26')](_0x528fb5[_0x8064('0x27')],function(_0x112f10){return{'model':db[_0x112f10['model']],'as':_0x112f10['as'],'attributes':_0x112f10[_0x8064('0x24')],'include':_0x112f10[_0x8064('0x27')]?_[_0x8064('0x26')](_0x112f10[_0x8064('0x27')],function(_0xcfd454){return{'model':db[_0xcfd454[_0x8064('0x28')]],'as':_0xcfd454['as'],'attributes':_0xcfd454[_0x8064('0x24')]};}):[]};}):[]};}):[]:[]})[_0x8064('0x15')](function(_0x453f7d){logger['info']('GetMailAccount',_0x52dcba);logger[_0x8064('0x18')](_0x8064('0x29'),_0x52dcba,JSON[_0x8064('0x19')](_0x453f7d));_0xecd8ad(_0x453f7d);})[_0x8064('0x1e')](function(_0x3441a3){logger['error'](_0x8064('0x29'),_0x3441a3[_0x8064('0x1c')],_0x52dcba);_0x109ebd(_0x2018c9['error'](0x1f4,_0x3441a3[_0x8064('0x1c')]));});});};exports[_0x8064('0x2a')]=function(_0x57651b){var _0x560a56=this;return new Promise(function(_0x302bb5,_0x3042b1){return db['MailAccount'][_0x8064('0x2b')]({'raw':_0x57651b[_0x8064('0x21')]?_0x57651b[_0x8064('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x57651b['options']?_0x57651b[_0x8064('0x21')][_0x8064('0x23')]||null:null,'attributes':_0x57651b['options']?_0x57651b[_0x8064('0x21')][_0x8064('0x24')]||null:null,'include':_0x57651b[_0x8064('0x21')]?_0x57651b[_0x8064('0x21')]['include']?_[_0x8064('0x26')](_0x57651b[_0x8064('0x21')]['include'],function(_0x958fce){return{'model':db[_0x958fce[_0x8064('0x28')]],'as':_0x958fce['as'],'attributes':_0x958fce[_0x8064('0x24')],'include':_0x958fce[_0x8064('0x27')]?_['map'](_0x958fce[_0x8064('0x27')],function(_0x1291bb){return{'model':db[_0x1291bb[_0x8064('0x28')]],'as':_0x1291bb['as'],'attributes':_0x1291bb[_0x8064('0x24')],'include':_0x1291bb['include']?_[_0x8064('0x26')](_0x1291bb['include'],function(_0x463531){return{'model':db[_0x463531[_0x8064('0x28')]],'as':_0x463531['as'],'attributes':_0x463531[_0x8064('0x24')]};}):[]};}):[]};}):[]:[]})[_0x8064('0x15')](function(_0x44b164){logger[_0x8064('0x2c')](_0x8064('0x2a'),_0x57651b);logger[_0x8064('0x18')](_0x8064('0x2a'),_0x57651b,JSON[_0x8064('0x19')](_0x44b164));_0x302bb5(_0x44b164);})[_0x8064('0x1e')](function(_0x53fcb2){logger[_0x8064('0x1a')](_0x8064('0x2a'),_0x53fcb2['message'],_0x57651b);_0x3042b1(_0x560a56['error'](0x1f4,_0x53fcb2[_0x8064('0x1c')]));});});};exports[_0x8064('0x2d')]=function(_0x4e2ebf){var _0x592720=this;return new Promise(function(_0x36740f,_0x38fd6c){var _0x24aba5={'body':_0x4e2ebf[_0x8064('0x2e')],'channel':_0x8064('0x2f')};var _0x3a8a6b=_[_0x8064('0x30')](_[_0x8064('0x31')](db[_0x8064('0x32')][_0x8064('0x33')]),['createdAt',_0x8064('0x34'),_0x8064('0x35'),_0x8064('0x36')]);var _0x204616=![];if(_0x4e2ebf[_0x8064('0x2e')]['id']){delete _0x4e2ebf[_0x8064('0x2e')]['id'];}if(_[_0x8064('0x37')](_0x4e2ebf[_0x8064('0x2e')]['from'])){return _0x38fd6c(_0x592720[_0x8064('0x1a')](0x1f4,_0x8064('0x38')));}if(_[_0x8064('0x37')](_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x2e')])||_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x2e')]===''){return _0x38fd6c(_0x592720[_0x8064('0x1a')](0x1f4,_0x8064('0x39')));}if(_[_0x8064('0x37')](_0x4e2ebf[_0x8064('0x2e')]['mapKey'])){return _0x38fd6c(_0x592720[_0x8064('0x1a')](0x1f4,_0x8064('0x3a')+_0x3a8a6b));}if(!_[_0x8064('0x3b')](_0x3a8a6b,_0x4e2ebf['body'][_0x8064('0x3c')])){return _0x38fd6c(_0x592720['error'](0x1f4,_0x8064('0x3d')+_0x3a8a6b));}var _0x5665d4={};_0x5665d4[_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x3c')]]=_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x3e')];return db[_0x8064('0x1f')][_0x8064('0x2b')]({'where':{'id':_0x4e2ebf['account']['id']},'include':[{'model':db[_0x8064('0x3f')],'as':_0x8064('0x40'),'include':[{'model':db['CmContact'],'as':_0x8064('0x41'),'where':_0x5665d4,'limit':0x1,'order':[[_0x8064('0x34'),'DESC']]}]},{'model':db[_0x8064('0x42')],'as':_0x8064('0x43')},{'model':db[_0x8064('0x44')],'as':_0x8064('0x45')}]})[_0x8064('0x15')](function(_0x4f3dbf){if(_0x4f3dbf&&_0x4f3dbf[_0x8064('0x40')]){var _0x3eee39=_0x4f3dbf[_0x8064('0x46')]({'plain':!![]});_0x24aba5[_0x8064('0x47')]=_[_0x8064('0x48')](_0x3eee39,['Applications',_0x8064('0x40')]);_0x24aba5[_0x8064('0x49')]=_0x3eee39[_0x8064('0x43')];_0x24aba5[_0x8064('0x4a')]=_0x3eee39[_0x8064('0x40')];_0x24aba5[_0x8064('0x49')]=_['orderBy'](_0x24aba5['applications'],['priority'],[_0x8064('0x4b')]);if(_0x24aba5[_0x8064('0x47')]&&_0x24aba5['account'][_0x8064('0x4c')]){_0x24aba5[_0x8064('0x49')][_0x8064('0x4d')]({'id':0x0,'priority':_0x24aba5[_0x8064('0x49')][_0x8064('0x4e')]+0x1,'app':'close','appdata':_0x8064('0x4c'),'interval':_0x8064('0x4f')});}if(_0x24aba5[_0x8064('0x47')][_0x8064('0x43')]){delete _0x24aba5[_0x8064('0x47')][_0x8064('0x43')];}if(_0x24aba5['account'][_0x8064('0x40')]){delete _0x24aba5[_0x8064('0x47')][_0x8064('0x40')];}if(_0x3eee39[_0x8064('0x40')][_0x8064('0x41')][_0x8064('0x4e')]){return _0x3eee39['List'][_0x8064('0x41')][0x0];}var _0x2ca320=_['defaults'](_0x4e2ebf[_0x8064('0x2e')],{'firstName':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x3e')],'ListId':_0x3eee39['ListId']});_0x2ca320[_0x4e2ebf[_0x8064('0x2e')]['mapKey']]=_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x3e')];return db[_0x8064('0x32')][_0x8064('0x50')](_0x2ca320);}else{throw new Error(_0x8064('0x51'));}})['then'](function(_0x4d326c){_0x24aba5[_0x8064('0x52')]=_0x4d326c;if(_0x4d326c){if(!_0x4e2ebf['body'][_0x8064('0x1c')][_0x8064('0x53')]){_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')][_0x8064('0x53')]=rs['generate']()+'\x20'+_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')]['from'];}var _0x5654e2={'ContactId':_0x4d326c['id'],'MailAccountId':_0x4e2ebf[_0x8064('0x47')]['id'],'inReplyTo':_0x4e2ebf['body'][_0x8064('0x1c')][_0x8064('0x53')],'to':_0x4e2ebf[_0x8064('0x2e')]['message'][_0x8064('0x3e')],'cc':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')]['cc'],'subject':_0x4e2ebf['body'][_0x8064('0x1c')][_0x8064('0x54')],'attach':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')][_0x8064('0x55')],'lastMsgAt':moment()[_0x8064('0x56')](_0x8064('0x57')),'lastMsgDirection':'in'};return db['MailInteraction'][_0x8064('0x2b')]({'where':{'closed':![],'MailAccountId':_0x4e2ebf['account']['id']},'include':[{'model':db[_0x8064('0x58')],'as':_0x8064('0x59'),'attributes':['messageId'],'where':{'messageId':_0x4e2ebf[_0x8064('0x2e')]['message'][_0x8064('0x5a')]}}]})['then'](function(_0x4a6fc4){if(_0x4a6fc4){return[_0x4a6fc4,![]];}return db[_0x8064('0x5b')]['create'](_0x5654e2)[_0x8064('0x15')](function(_0x2814a0){return[_0x2814a0,!![]];});});}else{throw new Error(_0x8064('0x5c'));}})[_0x8064('0x5d')](function(_0x1ad7e1,_0x4a214f){if(_0x1ad7e1){_0x204616=_0x4a214f;if(!_0x4a214f){return _0x1ad7e1[_0x8064('0x5e')]({'inReplyTo':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')][_0x8064('0x53')],'to':_0x4e2ebf['body'][_0x8064('0x1c')][_0x8064('0x3e')],'cc':_0x4e2ebf['body']['message']['cc'],'subject':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')]['subject'],'attach':_0x1ad7e1['attach']?_0x1ad7e1[_0x8064('0x55')]:_0x4e2ebf['body']['message'][_0x8064('0x55')],'substatus':null,'substatusAt':moment()[_0x8064('0x56')](_0x8064('0x57')),'lastMsgAt':moment()['format'](_0x8064('0x57')),'lastMsgDirection':'in'});}else{return _0x1ad7e1;}}})[_0x8064('0x15')](function(_0x484f4f){_0x24aba5[_0x8064('0x5f')]=_0x484f4f['get']({'plain':!![]});_0x24aba5[_0x8064('0x5f')][_0x8064('0x60')]=_0x204616;return db[_0x8064('0x58')][_0x8064('0x50')]({'body':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x2e')],'MailAccountId':_0x4e2ebf['account']['id'],'MailInteractionId':_0x484f4f['id'],'direction':'in','ContactId':_0x24aba5['contact']['id'],'messageId':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')][_0x8064('0x53')],'from':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')][_0x8064('0x3e')],'to':_0x4e2ebf['body'][_0x8064('0x1c')]['to'],'cc':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')]['cc'],'subject':_0x4e2ebf['body'][_0x8064('0x1c')][_0x8064('0x54')],'attach':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')][_0x8064('0x55')],'Attachments':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')]['attachments'],'originTo':_0x4e2ebf[_0x8064('0x2e')]['message'][_0x8064('0x61')],'originCc':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')][_0x8064('0x62')],'bcc':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')]['bcc'],'ChatWebsiteId':_0x4e2ebf['body'][_0x8064('0x1c')][_0x8064('0x63')]||null,'originChannel':_0x4e2ebf['body']['message'][_0x8064('0x64')]||_0x8064('0x65'),'ChatOfflineMessageId':_0x4e2ebf[_0x8064('0x2e')][_0x8064('0x1c')][_0x8064('0x66')]||null},{'include':[{'model':db[_0x8064('0x67')],'as':_0x8064('0x68')}]});})[_0x8064('0x15')](function(_0x110074){_0x24aba5[_0x8064('0x1c')]=_0x110074;if(_0x24aba5['interaction'][_0x8064('0x69')]){return db[_0x8064('0x6a')][_0x8064('0x2b')]({'attributes':['id',_0x8064('0x6b')],'where':{'id':_0x24aba5[_0x8064('0x5f')][_0x8064('0x69')]}})[_0x8064('0x15')](function(_0x1a0bda){if(_0x1a0bda){_0x24aba5['applications'][_0x8064('0x6c')]({'id':0x0,'priority':0x0,'app':_0x8064('0x6d'),'appdata':_0x1a0bda['name']+','+(_0x24aba5[_0x8064('0x47')]['waitForTheAssignedAgent']||0xa),'interval':_0x8064('0x4f')});}return respondWithRpcPromise('Start',_0x8064('0x6e'),_0x24aba5);});}return respondWithRpcPromise(_0x8064('0x6f'),'startRouting',_0x24aba5);})['then'](function(_0xb561e7){_0x36740f(_0xb561e7);})[_0x8064('0x1e')](function(_0x28a0b4){_0x38fd6c(_0x592720[_0x8064('0x1a')](0x1f4,_0x28a0b4['message']));});});};