c3cd93238b3a1f4e857c569c342c8c33f0572ccb
[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 _0xb097=['then','ShowMailAccount','NotifyMailAccount','difference','CmContact','rawAttributes','updatedAt','CompanyId','ListId','body','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','DESC','MailApplication','Applications','MailServerOut','Smtp','get','applications','list','orderBy','priority','autoclose','close','*,*,*,*','Contacts','length','create','List\x20not\x20found','contact','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','update','interaction','attachments','originCc','bcc','Email','ChatOfflineMessageId','Attachments','UserId','agent','name','waitForTheAssignedAgent','Start','startRouting','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetMailAccount','options','raw','where','limit','include','map','model','attributes','catch','find'];(function(_0x4db0ed,_0xcebe27){var _0x27127c=function(_0xffafd8){while(--_0xffafd8){_0x4db0ed['push'](_0x4db0ed['shift']());}};_0x27127c(++_0xcebe27);}(_0xb097,0xa1));var _0x7b09=function(_0x26c06a,_0x4c9947){_0x26c06a=_0x26c06a-0x0;var _0x1583e7=_0xb097[_0x26c06a];return _0x1583e7;};'use strict';var _=require(_0x7b09('0x0'));var util=require(_0x7b09('0x1'));var moment=require('moment');var BPromise=require(_0x7b09('0x2'));var rs=require(_0x7b09('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b09('0x4'))['db'];var utils=require(_0x7b09('0x5'));var logger=require(_0x7b09('0x6'))(_0x7b09('0x7'));var config=require(_0x7b09('0x8'));var jayson=require(_0x7b09('0x9'));var client=jayson[_0x7b09('0xa')][_0x7b09('0xb')]({'port':0x232c});config[_0x7b09('0xc')]=_[_0x7b09('0xd')](config[_0x7b09('0xc')],{'host':_0x7b09('0xe'),'port':0x18eb});var socket=require(_0x7b09('0xf'))(new Redis(config[_0x7b09('0xc')]));require('./mailAccount.socket')[_0x7b09('0x10')](socket);function respondWithRpcPromise(_0x17644c,_0x1d1749,_0x2361e1){return new BPromise(function(_0x23a2c4,_0x19f1e2){return client[_0x7b09('0x11')](_0x17644c,_0x2361e1)['then'](function(_0x1caa37){logger['info'](_0x7b09('0x12'),_0x1d1749,_0x7b09('0x13'));logger[_0x7b09('0x14')](_0x7b09('0x15'),_0x1d1749,_0x7b09('0x13'),JSON[_0x7b09('0x16')](_0x1caa37));if(_0x1caa37['error']){if(_0x1caa37[_0x7b09('0x17')][_0x7b09('0x18')]===0x1f4){logger[_0x7b09('0x17')](_0x7b09('0x12'),_0x1d1749,_0x1caa37['error'][_0x7b09('0x19')]);return _0x19f1e2(_0x1caa37['error']['message']);}logger[_0x7b09('0x17')](_0x7b09('0x12'),_0x1d1749,_0x1caa37[_0x7b09('0x17')]['message']);return _0x23a2c4(_0x1caa37[_0x7b09('0x17')][_0x7b09('0x19')]);}else{logger[_0x7b09('0x1a')](_0x7b09('0x12'),_0x1d1749,_0x7b09('0x13'));_0x23a2c4(_0x1caa37[_0x7b09('0x1b')][_0x7b09('0x19')]);}})['catch'](function(_0x1a9b10){logger[_0x7b09('0x17')]('MailAccount,\x20%s,\x20%s',_0x1d1749,_0x1a9b10);_0x19f1e2(_0x1a9b10);});});}exports[_0x7b09('0x1c')]=function(_0x17f3a5){var _0x5b1e69=this;return new Promise(function(_0x452de1,_0xe1da08){return db['MailAccount']['findAll']({'raw':_0x17f3a5[_0x7b09('0x1d')]?_0x17f3a5[_0x7b09('0x1d')][_0x7b09('0x1e')]===undefined?!![]:![]:!![],'where':_0x17f3a5[_0x7b09('0x1d')]?_0x17f3a5[_0x7b09('0x1d')][_0x7b09('0x1f')]||null:null,'attributes':_0x17f3a5[_0x7b09('0x1d')]?_0x17f3a5['options']['attributes']||null:null,'limit':_0x17f3a5[_0x7b09('0x1d')]?_0x17f3a5[_0x7b09('0x1d')][_0x7b09('0x20')]||null:null,'include':_0x17f3a5[_0x7b09('0x1d')]?_0x17f3a5[_0x7b09('0x1d')][_0x7b09('0x21')]?_[_0x7b09('0x22')](_0x17f3a5[_0x7b09('0x1d')][_0x7b09('0x21')],function(_0x1a139c){return{'model':db[_0x1a139c[_0x7b09('0x23')]],'as':_0x1a139c['as'],'attributes':_0x1a139c['attributes'],'include':_0x1a139c['include']?_[_0x7b09('0x22')](_0x1a139c['include'],function(_0x39aa99){return{'model':db[_0x39aa99[_0x7b09('0x23')]],'as':_0x39aa99['as'],'attributes':_0x39aa99['attributes'],'include':_0x39aa99['include']?_[_0x7b09('0x22')](_0x39aa99[_0x7b09('0x21')],function(_0x25784e){return{'model':db[_0x25784e[_0x7b09('0x23')]],'as':_0x25784e['as'],'attributes':_0x25784e[_0x7b09('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x386c75){logger['info']('GetMailAccount',_0x17f3a5);logger[_0x7b09('0x14')](_0x7b09('0x1c'),_0x17f3a5,JSON['stringify'](_0x386c75));_0x452de1(_0x386c75);})[_0x7b09('0x25')](function(_0x51185c){logger[_0x7b09('0x17')](_0x7b09('0x1c'),_0x51185c[_0x7b09('0x19')],_0x17f3a5);_0xe1da08(_0x5b1e69[_0x7b09('0x17')](0x1f4,_0x51185c[_0x7b09('0x19')]));});});};exports['ShowMailAccount']=function(_0x2b10db){var _0x14a3d7=this;return new Promise(function(_0x4efba1,_0x2f9c26){return db['MailAccount'][_0x7b09('0x26')]({'raw':_0x2b10db[_0x7b09('0x1d')]?_0x2b10db['options'][_0x7b09('0x1e')]===undefined?!![]:![]:!![],'where':_0x2b10db[_0x7b09('0x1d')]?_0x2b10db[_0x7b09('0x1d')][_0x7b09('0x1f')]||null:null,'attributes':_0x2b10db[_0x7b09('0x1d')]?_0x2b10db[_0x7b09('0x1d')][_0x7b09('0x24')]||null:null,'include':_0x2b10db[_0x7b09('0x1d')]?_0x2b10db[_0x7b09('0x1d')][_0x7b09('0x21')]?_['map'](_0x2b10db[_0x7b09('0x1d')]['include'],function(_0x427600){return{'model':db[_0x427600[_0x7b09('0x23')]],'as':_0x427600['as'],'attributes':_0x427600[_0x7b09('0x24')],'include':_0x427600['include']?_[_0x7b09('0x22')](_0x427600['include'],function(_0x13f414){return{'model':db[_0x13f414['model']],'as':_0x13f414['as'],'attributes':_0x13f414[_0x7b09('0x24')],'include':_0x13f414[_0x7b09('0x21')]?_[_0x7b09('0x22')](_0x13f414[_0x7b09('0x21')],function(_0x43aac6){return{'model':db[_0x43aac6['model']],'as':_0x43aac6['as'],'attributes':_0x43aac6[_0x7b09('0x24')]};}):[]};}):[]};}):[]:[]})[_0x7b09('0x27')](function(_0x27d973){logger[_0x7b09('0x1a')](_0x7b09('0x28'),_0x2b10db);logger[_0x7b09('0x14')](_0x7b09('0x28'),_0x2b10db,JSON['stringify'](_0x27d973));_0x4efba1(_0x27d973);})['catch'](function(_0x4a1815){logger['error']('ShowMailAccount',_0x4a1815[_0x7b09('0x19')],_0x2b10db);_0x2f9c26(_0x14a3d7[_0x7b09('0x17')](0x1f4,_0x4a1815[_0x7b09('0x19')]));});});};exports[_0x7b09('0x29')]=function(_0x3fa7ab){var _0xc2b63e=this;return new Promise(function(_0xfdc2a7,_0x422456){var _0x1df755={'body':_0x3fa7ab['body'],'channel':'mail'};var _0x5c8cfb=_[_0x7b09('0x2a')](_['keys'](db[_0x7b09('0x2b')][_0x7b09('0x2c')]),['createdAt',_0x7b09('0x2d'),_0x7b09('0x2e'),_0x7b09('0x2f')]);var _0x282ccb=![];if(_0x3fa7ab[_0x7b09('0x30')]['id']){delete _0x3fa7ab[_0x7b09('0x30')]['id'];}if(_['isNil'](_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x31')])){return _0x422456(_0xc2b63e[_0x7b09('0x17')](0x1f4,_0x7b09('0x32')));}if(_[_0x7b09('0x33')](_0x3fa7ab[_0x7b09('0x30')]['body'])||_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x30')]===''){return _0x422456(_0xc2b63e[_0x7b09('0x17')](0x1f4,_0x7b09('0x34')));}if(_[_0x7b09('0x33')](_0x3fa7ab[_0x7b09('0x30')]['mapKey'])){return _0x422456(_0xc2b63e[_0x7b09('0x17')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5c8cfb));}if(!_[_0x7b09('0x35')](_0x5c8cfb,_0x3fa7ab[_0x7b09('0x30')]['mapKey'])){return _0x422456(_0xc2b63e['error'](0x1f4,_0x7b09('0x36')+_0x5c8cfb));}var _0x286422={};_0x286422[_0x3fa7ab['body']['mapKey']]=_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x31')];return db['MailAccount']['find']({'where':{'id':_0x3fa7ab[_0x7b09('0x37')]['id']},'include':[{'model':db[_0x7b09('0x38')],'as':_0x7b09('0x39'),'include':[{'model':db[_0x7b09('0x2b')],'as':'Contacts','where':_0x286422,'limit':0x1,'order':[[_0x7b09('0x2d'),_0x7b09('0x3a')]]}]},{'model':db[_0x7b09('0x3b')],'as':_0x7b09('0x3c')},{'model':db[_0x7b09('0x3d')],'as':_0x7b09('0x3e')}]})[_0x7b09('0x27')](function(_0x31d3fe){if(_0x31d3fe&&_0x31d3fe[_0x7b09('0x39')]){var _0x52c33b=_0x31d3fe[_0x7b09('0x3f')]({'plain':!![]});_0x1df755[_0x7b09('0x37')]=_['omit'](_0x52c33b,[_0x7b09('0x3c'),'List']);_0x1df755[_0x7b09('0x40')]=_0x52c33b['Applications'];_0x1df755[_0x7b09('0x41')]=_0x52c33b[_0x7b09('0x39')];_0x1df755[_0x7b09('0x40')]=_[_0x7b09('0x42')](_0x1df755[_0x7b09('0x40')],[_0x7b09('0x43')],['asc']);if(_0x1df755['account']&&_0x1df755[_0x7b09('0x37')][_0x7b09('0x44')]){_0x1df755[_0x7b09('0x40')]['push']({'id':0x0,'priority':_0x1df755[_0x7b09('0x40')]['length']+0x1,'app':_0x7b09('0x45'),'appdata':_0x7b09('0x44'),'interval':_0x7b09('0x46')});}if(_0x1df755['account'][_0x7b09('0x3c')]){delete _0x1df755[_0x7b09('0x37')][_0x7b09('0x3c')];}if(_0x1df755['account'][_0x7b09('0x39')]){delete _0x1df755[_0x7b09('0x37')][_0x7b09('0x39')];}if(_0x52c33b[_0x7b09('0x39')][_0x7b09('0x47')][_0x7b09('0x48')]){return _0x52c33b[_0x7b09('0x39')]['Contacts'][0x0];}var _0x55c50b=_[_0x7b09('0xd')](_0x3fa7ab[_0x7b09('0x30')],{'firstName':_0x3fa7ab[_0x7b09('0x30')]['from'],'ListId':_0x52c33b[_0x7b09('0x2f')]});_0x55c50b[_0x3fa7ab[_0x7b09('0x30')]['mapKey']]=_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x31')];return db['CmContact'][_0x7b09('0x49')](_0x55c50b);}else{throw new Error(_0x7b09('0x4a'));}})[_0x7b09('0x27')](function(_0x2d4661){_0x1df755[_0x7b09('0x4b')]=_0x2d4661;if(_0x2d4661){if(!_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')][_0x7b09('0x4c')]){_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')][_0x7b09('0x4c')]=rs[_0x7b09('0x4d')]()+'\x20'+_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')][_0x7b09('0x31')];}var _0x311bb1={'ContactId':_0x2d4661['id'],'MailAccountId':_0x3fa7ab['account']['id'],'inReplyTo':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')][_0x7b09('0x4c')],'to':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')][_0x7b09('0x31')],'cc':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')]['cc'],'subject':_0x3fa7ab['body'][_0x7b09('0x19')][_0x7b09('0x4e')],'attach':_0x3fa7ab[_0x7b09('0x30')]['message'][_0x7b09('0x4f')],'lastMsgAt':moment()[_0x7b09('0x50')](_0x7b09('0x51')),'lastMsgDirection':'in'};return db['MailInteraction'][_0x7b09('0x26')]({'where':{'closed':![],'MailAccountId':_0x3fa7ab['account']['id']},'include':[{'model':db[_0x7b09('0x52')],'as':_0x7b09('0x53'),'attributes':[_0x7b09('0x4c')],'where':{'messageId':_0x3fa7ab[_0x7b09('0x30')]['message'][_0x7b09('0x54')]}}]})['then'](function(_0x2b8413){if(_0x2b8413){return[_0x2b8413,![]];}return db['MailInteraction'][_0x7b09('0x49')](_0x311bb1)[_0x7b09('0x27')](function(_0x12c0e9){return[_0x12c0e9,!![]];});});}else{throw new Error(_0x7b09('0x55'));}})['spread'](function(_0x410d2d,_0x307ac2){if(_0x410d2d){_0x282ccb=_0x307ac2;if(!_0x307ac2){return _0x410d2d[_0x7b09('0x56')]({'inReplyTo':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')][_0x7b09('0x4c')],'to':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')][_0x7b09('0x31')],'cc':_0x3fa7ab['body'][_0x7b09('0x19')]['cc'],'subject':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')][_0x7b09('0x4e')],'attach':_0x410d2d[_0x7b09('0x4f')]?_0x410d2d[_0x7b09('0x4f')]:_0x3fa7ab['body'][_0x7b09('0x19')][_0x7b09('0x4f')],'substatus':null,'substatusAt':moment()[_0x7b09('0x50')](_0x7b09('0x51')),'lastMsgAt':moment()[_0x7b09('0x50')](_0x7b09('0x51')),'lastMsgDirection':'in'});}else{return _0x410d2d;}}})[_0x7b09('0x27')](function(_0x50791a){_0x1df755[_0x7b09('0x57')]=_0x50791a[_0x7b09('0x3f')]({'plain':!![]});_0x1df755[_0x7b09('0x57')]['created']=_0x282ccb;return db[_0x7b09('0x52')]['create']({'body':_0x3fa7ab[_0x7b09('0x30')]['body'],'MailAccountId':_0x3fa7ab[_0x7b09('0x37')]['id'],'MailInteractionId':_0x50791a['id'],'direction':'in','ContactId':_0x1df755[_0x7b09('0x4b')]['id'],'messageId':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')]['messageId'],'from':_0x3fa7ab[_0x7b09('0x30')]['message'][_0x7b09('0x31')],'to':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')]['to'],'cc':_0x3fa7ab[_0x7b09('0x30')]['message']['cc'],'subject':_0x3fa7ab['body'][_0x7b09('0x19')]['subject'],'attach':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')]['attach'],'Attachments':_0x3fa7ab[_0x7b09('0x30')]['message'][_0x7b09('0x58')],'originTo':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')]['originTo'],'originCc':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')][_0x7b09('0x59')],'bcc':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')][_0x7b09('0x5a')],'ChatWebsiteId':_0x3fa7ab[_0x7b09('0x30')]['message']['ChatWebsiteId']||null,'originChannel':_0x3fa7ab[_0x7b09('0x30')][_0x7b09('0x19')]['originChannel']||_0x7b09('0x5b'),'ChatOfflineMessageId':_0x3fa7ab['body'][_0x7b09('0x19')][_0x7b09('0x5c')]||null},{'include':[{'model':db['Attachment'],'as':_0x7b09('0x5d')}]});})[_0x7b09('0x27')](function(_0x55ae41){_0x1df755[_0x7b09('0x19')]=_0x55ae41;if(_0x1df755['interaction'][_0x7b09('0x5e')]){return db['User'][_0x7b09('0x26')]({'attributes':['id','name'],'where':{'id':_0x1df755['interaction'][_0x7b09('0x5e')]}})[_0x7b09('0x27')](function(_0xaa8975){if(_0xaa8975){_0x1df755['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0x7b09('0x5f'),'appdata':_0xaa8975[_0x7b09('0x60')]+','+(_0x1df755['account'][_0x7b09('0x61')]||0xa),'interval':_0x7b09('0x46')});}return respondWithRpcPromise(_0x7b09('0x62'),_0x7b09('0x63'),_0x1df755);});}return respondWithRpcPromise(_0x7b09('0x62'),'startRouting',_0x1df755);})[_0x7b09('0x27')](function(_0x2b6926){_0xfdc2a7(_0x2b6926);})[_0x7b09('0x25')](function(_0x1c650c){_0x422456(_0xc2b63e[_0x7b09('0x17')](0x1f4,_0x1c650c[_0x7b09('0x19')]));});});};