6ecef3ac533c7f0f85d86a68de1443aef782734b
[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 _0xf65c=['../../config/environment','jayson/promise','client','redis','./mailAccount.socket','then','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','MailAccount','findAll','options','limit','include','model','attributes','map','GetMailAccount','catch','find','raw','ShowMailAccount','mail','difference','keys','CmContact','createdAt','CompanyId','ListId','body','isNil','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','List','DESC','MailApplication','MailServerOut','Smtp','get','omit','applications','Applications','list','orderBy','priority','asc','autoclose','push','close','*,*,*,*','Contacts','length','defaults','create','messageId','subject','attach','format','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','update','YYYY-MM-DD\x20HH:mm:ss','interaction','created','attachments','originCc','bcc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','UserId','User','name','unshift','Start','startRouting','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x2ffaab,_0x216a91){var _0x2c1d0a=function(_0xa1c5e6){while(--_0xa1c5e6){_0x2ffaab['push'](_0x2ffaab['shift']());}};_0x2c1d0a(++_0x216a91);}(_0xf65c,0xc1));var _0xcf65=function(_0x39f442,_0x2002da){_0x39f442=_0x39f442-0x0;var _0x49781d=_0xf65c[_0x39f442];return _0x49781d;};'use strict';var _=require('lodash');var util=require(_0xcf65('0x0'));var moment=require(_0xcf65('0x1'));var BPromise=require(_0xcf65('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcf65('0x3'));var db=require(_0xcf65('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xcf65('0x5'))(_0xcf65('0x6'));var config=require(_0xcf65('0x7'));var jayson=require(_0xcf65('0x8'));var client=jayson[_0xcf65('0x9')]['http']({'port':0x232c});config[_0xcf65('0xa')]=_['defaults'](config[_0xcf65('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcf65('0xa')]));require(_0xcf65('0xb'))['register'](socket);function respondWithRpcPromise(_0x3f4d72,_0x1d880d,_0x1e9dec){return new BPromise(function(_0x152b23,_0x59692d){return client['request'](_0x3f4d72,_0x1e9dec)[_0xcf65('0xc')](function(_0x3f91b9){logger['info'](_0xcf65('0xd'),_0x1d880d,'request\x20sent');logger[_0xcf65('0xe')](_0xcf65('0xf'),_0x1d880d,_0xcf65('0x10'),JSON[_0xcf65('0x11')](_0x3f91b9));if(_0x3f91b9[_0xcf65('0x12')]){if(_0x3f91b9[_0xcf65('0x12')][_0xcf65('0x13')]===0x1f4){logger[_0xcf65('0x12')](_0xcf65('0xd'),_0x1d880d,_0x3f91b9[_0xcf65('0x12')][_0xcf65('0x14')]);return _0x59692d(_0x3f91b9['error'][_0xcf65('0x14')]);}logger[_0xcf65('0x12')](_0xcf65('0xd'),_0x1d880d,_0x3f91b9[_0xcf65('0x12')][_0xcf65('0x14')]);return _0x152b23(_0x3f91b9[_0xcf65('0x12')]['message']);}else{logger[_0xcf65('0x15')]('MailAccount,\x20%s,\x20%s',_0x1d880d,'request\x20sent');_0x152b23(_0x3f91b9[_0xcf65('0x16')][_0xcf65('0x14')]);}})['catch'](function(_0x1d639a){logger[_0xcf65('0x12')](_0xcf65('0xd'),_0x1d880d,_0x1d639a);_0x59692d(_0x1d639a);});});}exports['GetMailAccount']=function(_0x447d01){var _0x5181e8=this;return new Promise(function(_0x14aa92,_0x216220){return db[_0xcf65('0x17')][_0xcf65('0x18')]({'raw':_0x447d01[_0xcf65('0x19')]?_0x447d01[_0xcf65('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x447d01[_0xcf65('0x19')]?_0x447d01['options']['where']||null:null,'attributes':_0x447d01[_0xcf65('0x19')]?_0x447d01[_0xcf65('0x19')]['attributes']||null:null,'limit':_0x447d01[_0xcf65('0x19')]?_0x447d01['options'][_0xcf65('0x1a')]||null:null,'include':_0x447d01[_0xcf65('0x19')]?_0x447d01[_0xcf65('0x19')][_0xcf65('0x1b')]?_['map'](_0x447d01[_0xcf65('0x19')]['include'],function(_0x446e78){return{'model':db[_0x446e78[_0xcf65('0x1c')]],'as':_0x446e78['as'],'attributes':_0x446e78[_0xcf65('0x1d')],'include':_0x446e78[_0xcf65('0x1b')]?_[_0xcf65('0x1e')](_0x446e78['include'],function(_0x41065f){return{'model':db[_0x41065f[_0xcf65('0x1c')]],'as':_0x41065f['as'],'attributes':_0x41065f[_0xcf65('0x1d')],'include':_0x41065f[_0xcf65('0x1b')]?_[_0xcf65('0x1e')](_0x41065f[_0xcf65('0x1b')],function(_0x461c23){return{'model':db[_0x461c23['model']],'as':_0x461c23['as'],'attributes':_0x461c23[_0xcf65('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xcf65('0xc')](function(_0x10f67c){logger[_0xcf65('0x15')](_0xcf65('0x1f'),_0x447d01);logger[_0xcf65('0xe')](_0xcf65('0x1f'),_0x447d01,JSON[_0xcf65('0x11')](_0x10f67c));_0x14aa92(_0x10f67c);})[_0xcf65('0x20')](function(_0x220fe4){logger['error'](_0xcf65('0x1f'),_0x220fe4[_0xcf65('0x14')],_0x447d01);_0x216220(_0x5181e8['error'](0x1f4,_0x220fe4['message']));});});};exports['ShowMailAccount']=function(_0x38c50a){var _0x4f4f91=this;return new Promise(function(_0x3c0547,_0x426439){return db['MailAccount'][_0xcf65('0x21')]({'raw':_0x38c50a['options']?_0x38c50a[_0xcf65('0x19')][_0xcf65('0x22')]===undefined?!![]:![]:!![],'where':_0x38c50a['options']?_0x38c50a[_0xcf65('0x19')]['where']||null:null,'attributes':_0x38c50a[_0xcf65('0x19')]?_0x38c50a[_0xcf65('0x19')][_0xcf65('0x1d')]||null:null,'include':_0x38c50a[_0xcf65('0x19')]?_0x38c50a[_0xcf65('0x19')]['include']?_[_0xcf65('0x1e')](_0x38c50a[_0xcf65('0x19')][_0xcf65('0x1b')],function(_0x5cb71f){return{'model':db[_0x5cb71f['model']],'as':_0x5cb71f['as'],'attributes':_0x5cb71f[_0xcf65('0x1d')],'include':_0x5cb71f[_0xcf65('0x1b')]?_[_0xcf65('0x1e')](_0x5cb71f[_0xcf65('0x1b')],function(_0x3a6fee){return{'model':db[_0x3a6fee[_0xcf65('0x1c')]],'as':_0x3a6fee['as'],'attributes':_0x3a6fee[_0xcf65('0x1d')],'include':_0x3a6fee[_0xcf65('0x1b')]?_[_0xcf65('0x1e')](_0x3a6fee[_0xcf65('0x1b')],function(_0x695dde){return{'model':db[_0x695dde[_0xcf65('0x1c')]],'as':_0x695dde['as'],'attributes':_0x695dde[_0xcf65('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xcf65('0xc')](function(_0x34409b){logger[_0xcf65('0x15')](_0xcf65('0x23'),_0x38c50a);logger['debug'](_0xcf65('0x23'),_0x38c50a,JSON[_0xcf65('0x11')](_0x34409b));_0x3c0547(_0x34409b);})['catch'](function(_0x486540){logger[_0xcf65('0x12')](_0xcf65('0x23'),_0x486540[_0xcf65('0x14')],_0x38c50a);_0x426439(_0x4f4f91[_0xcf65('0x12')](0x1f4,_0x486540[_0xcf65('0x14')]));});});};exports['NotifyMailAccount']=function(_0x58d5e7){var _0x5eb1f8=this;return new Promise(function(_0x548ba1,_0xf1b08){var _0x183694={'body':_0x58d5e7['body'],'channel':_0xcf65('0x24')};var _0x3dc8f8=_[_0xcf65('0x25')](_[_0xcf65('0x26')](db[_0xcf65('0x27')]['rawAttributes']),[_0xcf65('0x28'),'updatedAt',_0xcf65('0x29'),_0xcf65('0x2a')]);var _0x39c4f7=![];if(_0x58d5e7['body']['id']){delete _0x58d5e7[_0xcf65('0x2b')]['id'];}if(_[_0xcf65('0x2c')](_0x58d5e7[_0xcf65('0x2b')]['from'])){return _0xf1b08(_0x5eb1f8['error'](0x1f4,_0xcf65('0x2d')));}if(_[_0xcf65('0x2c')](_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x2b')])||_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x2b')]===''){return _0xf1b08(_0x5eb1f8[_0xcf65('0x12')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0xcf65('0x2c')](_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x2e')])){return _0xf1b08(_0x5eb1f8[_0xcf65('0x12')](0x1f4,_0xcf65('0x2f')+_0x3dc8f8));}if(!_['includes'](_0x3dc8f8,_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x2e')])){return _0xf1b08(_0x5eb1f8['error'](0x1f4,_0xcf65('0x30')+_0x3dc8f8));}var _0xd41064={};_0xd41064[_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x2e')]]=_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x31')];return db[_0xcf65('0x17')][_0xcf65('0x21')]({'where':{'id':_0x58d5e7[_0xcf65('0x32')]['id']},'include':[{'model':db['CmList'],'as':_0xcf65('0x33'),'include':[{'model':db[_0xcf65('0x27')],'as':'Contacts','where':_0xd41064,'limit':0x1,'order':[['updatedAt',_0xcf65('0x34')]]}]},{'model':db[_0xcf65('0x35')],'as':'Applications'},{'model':db[_0xcf65('0x36')],'as':_0xcf65('0x37')}]})['then'](function(_0x4d4dc0){if(_0x4d4dc0&&_0x4d4dc0[_0xcf65('0x33')]){var _0x47158a=_0x4d4dc0[_0xcf65('0x38')]({'plain':!![]});_0x183694[_0xcf65('0x32')]=_[_0xcf65('0x39')](_0x47158a,['Applications',_0xcf65('0x33')]);_0x183694[_0xcf65('0x3a')]=_0x47158a[_0xcf65('0x3b')];_0x183694[_0xcf65('0x3c')]=_0x47158a[_0xcf65('0x33')];_0x183694[_0xcf65('0x3a')]=_[_0xcf65('0x3d')](_0x183694[_0xcf65('0x3a')],[_0xcf65('0x3e')],[_0xcf65('0x3f')]);if(_0x183694[_0xcf65('0x32')]&&_0x183694[_0xcf65('0x32')][_0xcf65('0x40')]){_0x183694[_0xcf65('0x3a')][_0xcf65('0x41')]({'id':0x0,'priority':_0x183694[_0xcf65('0x3a')]['length']+0x1,'app':_0xcf65('0x42'),'appdata':'autoclose','interval':_0xcf65('0x43')});}if(_0x183694['account']['Applications']){delete _0x183694[_0xcf65('0x32')]['Applications'];}if(_0x183694[_0xcf65('0x32')]['List']){delete _0x183694[_0xcf65('0x32')]['List'];}if(_0x47158a[_0xcf65('0x33')][_0xcf65('0x44')][_0xcf65('0x45')]){return _0x47158a['List'][_0xcf65('0x44')][0x0];}var _0x107ca4=_[_0xcf65('0x46')](_0x58d5e7[_0xcf65('0x2b')],{'firstName':_0x58d5e7[_0xcf65('0x2b')]['from'],'ListId':_0x47158a[_0xcf65('0x2a')]});_0x107ca4[_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x2e')]]=_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x31')];return db['CmContact'][_0xcf65('0x47')](_0x107ca4);}else{throw new Error('List\x20not\x20found');}})[_0xcf65('0xc')](function(_0x105867){_0x183694['contact']=_0x105867;if(_0x105867){if(!_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')][_0xcf65('0x48')]){_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')]['messageId']=rs['generate']()+'\x20'+_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')][_0xcf65('0x31')];}var _0x566027={'ContactId':_0x105867['id'],'MailAccountId':_0x58d5e7[_0xcf65('0x32')]['id'],'inReplyTo':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')][_0xcf65('0x48')],'to':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')][_0xcf65('0x31')],'cc':_0x58d5e7['body'][_0xcf65('0x14')]['cc'],'subject':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')][_0xcf65('0x49')],'attach':_0x58d5e7[_0xcf65('0x2b')]['message'][_0xcf65('0x4a')],'lastMsgAt':moment()[_0xcf65('0x4b')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0xcf65('0x4c')][_0xcf65('0x21')]({'where':{'closed':![],'MailAccountId':_0x58d5e7[_0xcf65('0x32')]['id']},'include':[{'model':db[_0xcf65('0x4d')],'as':_0xcf65('0x4e'),'attributes':[_0xcf65('0x48')],'where':{'messageId':_0x58d5e7['body'][_0xcf65('0x14')][_0xcf65('0x4f')]}}]})[_0xcf65('0xc')](function(_0x2a3fc8){if(_0x2a3fc8){return[_0x2a3fc8,![]];}return db[_0xcf65('0x4c')][_0xcf65('0x47')](_0x566027)['then'](function(_0x566ec9){return[_0x566ec9,!![]];});});}else{throw new Error(_0xcf65('0x50'));}})[_0xcf65('0x51')](function(_0x28fdad,_0x36d710){if(_0x28fdad){_0x39c4f7=_0x36d710;if(!_0x36d710){return _0x28fdad[_0xcf65('0x52')]({'inReplyTo':_0x58d5e7[_0xcf65('0x2b')]['message'][_0xcf65('0x48')],'to':_0x58d5e7['body']['message'][_0xcf65('0x31')],'cc':_0x58d5e7['body']['message']['cc'],'subject':_0x58d5e7[_0xcf65('0x2b')]['message'][_0xcf65('0x49')],'attach':_0x28fdad[_0xcf65('0x4a')]?_0x28fdad[_0xcf65('0x4a')]:_0x58d5e7[_0xcf65('0x2b')]['message'][_0xcf65('0x4a')],'substatus':null,'substatusAt':moment()[_0xcf65('0x4b')](_0xcf65('0x53')),'lastMsgAt':moment()[_0xcf65('0x4b')](_0xcf65('0x53')),'lastMsgDirection':'in'});}else{return _0x28fdad;}}})['then'](function(_0x28cbbb){_0x183694[_0xcf65('0x54')]=_0x28cbbb[_0xcf65('0x38')]({'plain':!![]});_0x183694[_0xcf65('0x54')][_0xcf65('0x55')]=_0x39c4f7;return db[_0xcf65('0x4d')][_0xcf65('0x47')]({'body':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x2b')],'MailAccountId':_0x58d5e7['account']['id'],'MailInteractionId':_0x28cbbb['id'],'direction':'in','ContactId':_0x183694['contact']['id'],'messageId':_0x58d5e7['body'][_0xcf65('0x14')][_0xcf65('0x48')],'from':_0x58d5e7['body'][_0xcf65('0x14')]['from'],'to':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')]['to'],'cc':_0x58d5e7['body'][_0xcf65('0x14')]['cc'],'subject':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')][_0xcf65('0x49')],'attach':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')][_0xcf65('0x4a')],'Attachments':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')][_0xcf65('0x56')],'originTo':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')]['originTo'],'originCc':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')][_0xcf65('0x57')],'bcc':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')][_0xcf65('0x58')],'ChatWebsiteId':_0x58d5e7[_0xcf65('0x2b')]['message'][_0xcf65('0x59')]||null,'originChannel':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')][_0xcf65('0x5a')]||_0xcf65('0x5b'),'ChatOfflineMessageId':_0x58d5e7[_0xcf65('0x2b')][_0xcf65('0x14')][_0xcf65('0x5c')]||null},{'include':[{'model':db[_0xcf65('0x5d')],'as':'Attachments'}]});})[_0xcf65('0xc')](function(_0x48ce0b){_0x183694[_0xcf65('0x14')]=_0x48ce0b;if(_0x183694[_0xcf65('0x54')][_0xcf65('0x5e')]){return db[_0xcf65('0x5f')]['find']({'attributes':['id',_0xcf65('0x60')],'where':{'id':_0x183694[_0xcf65('0x54')][_0xcf65('0x5e')]}})[_0xcf65('0xc')](function(_0x4ebd28){if(_0x4ebd28){_0x183694[_0xcf65('0x3a')][_0xcf65('0x61')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4ebd28[_0xcf65('0x60')]+','+(_0x183694[_0xcf65('0x32')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xcf65('0x62'),_0xcf65('0x63'),_0x183694);});}return respondWithRpcPromise(_0xcf65('0x62'),_0xcf65('0x63'),_0x183694);})[_0xcf65('0xc')](function(_0x1d0aa9){_0x548ba1(_0x1d0aa9);})[_0xcf65('0x20')](function(_0x3c3b82){_0xf1b08(_0x5eb1f8['error'](0x1f4,_0x3c3b82[_0xcf65('0x14')]));});});};