877481157025ceddf5d4963398a5b74367f58f2c
[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 _0x938c=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','register','then','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','GetMailAccount','MailAccount','findAll','options','raw','where','limit','include','model','attributes','map','stringify','find','ShowMailAccount','body','mail','difference','CmContact','rawAttributes','createdAt','updatedAt','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','account','CmList','List','DESC','MailApplication','MailServerOut','Smtp','get','omit','applications','list','orderBy','asc','autoclose','push','close','*,*,*,*','Applications','length','Contacts','create','contact','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Contact\x20not\x20found','spread','attach','interaction','created','attachments','originCc','Attachment','name','UserId','unshift','agent','Start','startRouting','lodash','util','bluebird','../../mysqldb'];(function(_0x30e53f,_0x19ca0d){var _0x5cd021=function(_0x3475e3){while(--_0x3475e3){_0x30e53f['push'](_0x30e53f['shift']());}};_0x5cd021(++_0x19ca0d);}(_0x938c,0x11f));var _0xc938=function(_0x197d68,_0x434f5c){_0x197d68=_0x197d68-0x0;var _0x437adb=_0x938c[_0x197d68];return _0x437adb;};'use strict';var _=require(_0xc938('0x0'));var util=require(_0xc938('0x1'));var moment=require('moment');var BPromise=require(_0xc938('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc938('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xc938('0x4'))(_0xc938('0x5'));var config=require(_0xc938('0x6'));var jayson=require(_0xc938('0x7'));var client=jayson[_0xc938('0x8')][_0xc938('0x9')]({'port':0x232c});config['redis']=_[_0xc938('0xa')](config[_0xc938('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xc938('0xc'))(new Redis(config[_0xc938('0xb')]));require('./mailAccount.socket')[_0xc938('0xd')](socket);function respondWithRpcPromise(_0x525c9b,_0x5c4957,_0x7a17e4){return new BPromise(function(_0x47788a,_0x3a6609){return client['request'](_0x525c9b,_0x7a17e4)[_0xc938('0xe')](function(_0x3fc197){logger['info'](_0xc938('0xf'),_0x5c4957,'request\x20sent');logger[_0xc938('0x10')](_0xc938('0x11'),_0x5c4957,_0xc938('0x12'),JSON['stringify'](_0x3fc197));if(_0x3fc197[_0xc938('0x13')]){if(_0x3fc197[_0xc938('0x13')][_0xc938('0x14')]===0x1f4){logger['error']('MailAccount,\x20%s,\x20%s',_0x5c4957,_0x3fc197['error'][_0xc938('0x15')]);return _0x3a6609(_0x3fc197[_0xc938('0x13')][_0xc938('0x15')]);}logger['error'](_0xc938('0xf'),_0x5c4957,_0x3fc197['error'][_0xc938('0x15')]);return _0x47788a(_0x3fc197[_0xc938('0x13')]['message']);}else{logger[_0xc938('0x16')](_0xc938('0xf'),_0x5c4957,'request\x20sent');_0x47788a(_0x3fc197[_0xc938('0x17')]['message']);}})[_0xc938('0x18')](function(_0x2d646a){logger[_0xc938('0x13')]('MailAccount,\x20%s,\x20%s',_0x5c4957,_0x2d646a);_0x3a6609(_0x2d646a);});});}exports[_0xc938('0x19')]=function(_0x24a18b){var _0xcc71a3=this;return new Promise(function(_0x41b66c,_0x33d533){return db[_0xc938('0x1a')][_0xc938('0x1b')]({'raw':_0x24a18b[_0xc938('0x1c')]?_0x24a18b['options'][_0xc938('0x1d')]===undefined?!![]:![]:!![],'where':_0x24a18b[_0xc938('0x1c')]?_0x24a18b['options'][_0xc938('0x1e')]||null:null,'attributes':_0x24a18b['options']?_0x24a18b[_0xc938('0x1c')]['attributes']||null:null,'limit':_0x24a18b[_0xc938('0x1c')]?_0x24a18b[_0xc938('0x1c')][_0xc938('0x1f')]||null:null,'include':_0x24a18b['options']?_0x24a18b[_0xc938('0x1c')][_0xc938('0x20')]?_['map'](_0x24a18b['options'][_0xc938('0x20')],function(_0x136f6f){return{'model':db[_0x136f6f[_0xc938('0x21')]],'as':_0x136f6f['as'],'attributes':_0x136f6f[_0xc938('0x22')],'include':_0x136f6f[_0xc938('0x20')]?_[_0xc938('0x23')](_0x136f6f[_0xc938('0x20')],function(_0x156126){return{'model':db[_0x156126[_0xc938('0x21')]],'as':_0x156126['as'],'attributes':_0x156126[_0xc938('0x22')],'include':_0x156126[_0xc938('0x20')]?_[_0xc938('0x23')](_0x156126[_0xc938('0x20')],function(_0xa84e9){return{'model':db[_0xa84e9[_0xc938('0x21')]],'as':_0xa84e9['as'],'attributes':_0xa84e9['attributes']};}):[]};}):[]};}):[]:[]})[_0xc938('0xe')](function(_0x3765a6){logger[_0xc938('0x16')](_0xc938('0x19'),_0x24a18b);logger['debug'](_0xc938('0x19'),_0x24a18b,JSON[_0xc938('0x24')](_0x3765a6));_0x41b66c(_0x3765a6);})[_0xc938('0x18')](function(_0xeb24d){logger[_0xc938('0x13')](_0xc938('0x19'),_0xeb24d[_0xc938('0x15')],_0x24a18b);_0x33d533(_0xcc71a3[_0xc938('0x13')](0x1f4,_0xeb24d[_0xc938('0x15')]));});});};exports['ShowMailAccount']=function(_0x4300c0){var _0x3c0dd2=this;return new Promise(function(_0x173561,_0x198c1d){return db[_0xc938('0x1a')][_0xc938('0x25')]({'raw':_0x4300c0[_0xc938('0x1c')]?_0x4300c0[_0xc938('0x1c')][_0xc938('0x1d')]===undefined?!![]:![]:!![],'where':_0x4300c0[_0xc938('0x1c')]?_0x4300c0[_0xc938('0x1c')][_0xc938('0x1e')]||null:null,'attributes':_0x4300c0['options']?_0x4300c0[_0xc938('0x1c')][_0xc938('0x22')]||null:null,'include':_0x4300c0[_0xc938('0x1c')]?_0x4300c0['options'][_0xc938('0x20')]?_[_0xc938('0x23')](_0x4300c0['options'][_0xc938('0x20')],function(_0x581d7f){return{'model':db[_0x581d7f['model']],'as':_0x581d7f['as'],'attributes':_0x581d7f[_0xc938('0x22')],'include':_0x581d7f[_0xc938('0x20')]?_['map'](_0x581d7f[_0xc938('0x20')],function(_0x167fd7){return{'model':db[_0x167fd7[_0xc938('0x21')]],'as':_0x167fd7['as'],'attributes':_0x167fd7['attributes'],'include':_0x167fd7[_0xc938('0x20')]?_['map'](_0x167fd7[_0xc938('0x20')],function(_0x3c601b){return{'model':db[_0x3c601b['model']],'as':_0x3c601b['as'],'attributes':_0x3c601b['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x25c889){logger[_0xc938('0x16')](_0xc938('0x26'),_0x4300c0);logger[_0xc938('0x10')](_0xc938('0x26'),_0x4300c0,JSON[_0xc938('0x24')](_0x25c889));_0x173561(_0x25c889);})[_0xc938('0x18')](function(_0x3367dd){logger['error'](_0xc938('0x26'),_0x3367dd[_0xc938('0x15')],_0x4300c0);_0x198c1d(_0x3c0dd2[_0xc938('0x13')](0x1f4,_0x3367dd[_0xc938('0x15')]));});});};exports['NotifyMailAccount']=function(_0x55aec4){var _0x5683ff=this;return new Promise(function(_0x2d36e4,_0x29ab3a){var _0x2f798e={'body':_0x55aec4[_0xc938('0x27')],'channel':_0xc938('0x28')};var _0x207267=_[_0xc938('0x29')](_['keys'](db[_0xc938('0x2a')][_0xc938('0x2b')]),[_0xc938('0x2c'),_0xc938('0x2d'),'CompanyId',_0xc938('0x2e')]);var _0x5c8af5=![];if(_0x55aec4[_0xc938('0x27')]['id']){delete _0x55aec4['body']['id'];}if(_[_0xc938('0x2f')](_0x55aec4[_0xc938('0x27')][_0xc938('0x30')])){return _0x29ab3a(_0x5683ff[_0xc938('0x13')](0x1f4,_0xc938('0x31')));}if(_[_0xc938('0x2f')](_0x55aec4[_0xc938('0x27')]['body'])||_0x55aec4[_0xc938('0x27')][_0xc938('0x27')]===''){return _0x29ab3a(_0x5683ff[_0xc938('0x13')](0x1f4,_0xc938('0x32')));}if(_[_0xc938('0x2f')](_0x55aec4[_0xc938('0x27')][_0xc938('0x33')])){return _0x29ab3a(_0x5683ff[_0xc938('0x13')](0x1f4,_0xc938('0x34')+_0x207267));}if(!_[_0xc938('0x35')](_0x207267,_0x55aec4[_0xc938('0x27')][_0xc938('0x33')])){return _0x29ab3a(_0x5683ff[_0xc938('0x13')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x207267));}var _0x5031bf={};_0x5031bf[_0x55aec4['body']['mapKey']]=_0x55aec4[_0xc938('0x27')][_0xc938('0x30')];return db[_0xc938('0x1a')][_0xc938('0x25')]({'where':{'id':_0x55aec4[_0xc938('0x36')]['id']},'include':[{'model':db[_0xc938('0x37')],'as':_0xc938('0x38'),'include':[{'model':db[_0xc938('0x2a')],'as':'Contacts','where':_0x5031bf,'limit':0x1,'order':[['updatedAt',_0xc938('0x39')]]}]},{'model':db[_0xc938('0x3a')],'as':'Applications'},{'model':db[_0xc938('0x3b')],'as':_0xc938('0x3c')}]})[_0xc938('0xe')](function(_0x5d5f71){if(_0x5d5f71&&_0x5d5f71[_0xc938('0x38')]){var _0x834f48=_0x5d5f71[_0xc938('0x3d')]({'plain':!![]});_0x2f798e[_0xc938('0x36')]=_[_0xc938('0x3e')](_0x834f48,['Applications','List']);_0x2f798e[_0xc938('0x3f')]=_0x834f48['Applications'];_0x2f798e[_0xc938('0x40')]=_0x834f48[_0xc938('0x38')];_0x2f798e['applications']=_[_0xc938('0x41')](_0x2f798e[_0xc938('0x3f')],['priority'],[_0xc938('0x42')]);if(_0x2f798e[_0xc938('0x36')]&&_0x2f798e['account'][_0xc938('0x43')]){_0x2f798e['applications'][_0xc938('0x44')]({'id':0x0,'priority':_0x2f798e[_0xc938('0x3f')]['length']+0x1,'app':_0xc938('0x45'),'appdata':_0xc938('0x43'),'interval':_0xc938('0x46')});}if(_0x2f798e[_0xc938('0x36')][_0xc938('0x47')]){delete _0x2f798e[_0xc938('0x36')]['Applications'];}if(_0x2f798e[_0xc938('0x36')][_0xc938('0x38')]){delete _0x2f798e[_0xc938('0x36')]['List'];}if(_0x834f48['List']['Contacts'][_0xc938('0x48')]){return _0x834f48[_0xc938('0x38')][_0xc938('0x49')][0x0];}var _0x37fe9b=_[_0xc938('0xa')](_0x55aec4[_0xc938('0x27')],{'firstName':_0x55aec4[_0xc938('0x27')]['from'],'ListId':_0x834f48['ListId']});_0x37fe9b[_0x55aec4[_0xc938('0x27')][_0xc938('0x33')]]=_0x55aec4[_0xc938('0x27')][_0xc938('0x30')];return db[_0xc938('0x2a')][_0xc938('0x4a')](_0x37fe9b);}else{throw new Error('List\x20not\x20found');}})['then'](function(_0x36bff4){_0x2f798e[_0xc938('0x4b')]=_0x36bff4;if(_0x36bff4){if(!_0x55aec4[_0xc938('0x27')][_0xc938('0x15')][_0xc938('0x4c')]){_0x55aec4[_0xc938('0x27')][_0xc938('0x15')]['messageId']=rs[_0xc938('0x4d')]()+'\x20'+_0x55aec4[_0xc938('0x27')]['message'][_0xc938('0x30')];}var _0x41f0f0={'ContactId':_0x36bff4['id'],'MailAccountId':_0x55aec4[_0xc938('0x36')]['id'],'inReplyTo':_0x55aec4[_0xc938('0x27')][_0xc938('0x15')]['messageId'],'to':_0x55aec4[_0xc938('0x27')]['message'][_0xc938('0x30')],'cc':_0x55aec4[_0xc938('0x27')][_0xc938('0x15')]['cc'],'subject':_0x55aec4[_0xc938('0x27')][_0xc938('0x15')][_0xc938('0x4e')],'attach':_0x55aec4[_0xc938('0x27')][_0xc938('0x15')]['attach'],'lastMsgAt':moment()[_0xc938('0x4f')](_0xc938('0x50')),'lastMsgDirection':'in','lastMsgBody':_0x55aec4[_0xc938('0x27')][_0xc938('0x27')]};return db[_0xc938('0x51')][_0xc938('0x25')]({'where':{'closed':![],'MailAccountId':_0x55aec4[_0xc938('0x36')]['id']},'include':[{'model':db[_0xc938('0x52')],'as':'Messages','attributes':[_0xc938('0x4c')],'where':{'messageId':_0x55aec4[_0xc938('0x27')][_0xc938('0x15')]['inReplyTo']}}]})[_0xc938('0xe')](function(_0x202cf6){if(_0x202cf6){return[_0x202cf6,![]];}return db[_0xc938('0x51')][_0xc938('0x4a')](_0x41f0f0)[_0xc938('0xe')](function(_0x35b668){return[_0x35b668,!![]];});});}else{throw new Error(_0xc938('0x53'));}})[_0xc938('0x54')](function(_0x348ae5,_0x24ca04){if(_0x348ae5){_0x5c8af5=_0x24ca04;if(!_0x24ca04){return _0x348ae5['update']({'inReplyTo':_0x55aec4[_0xc938('0x27')]['message'][_0xc938('0x4c')],'to':_0x55aec4['body'][_0xc938('0x15')][_0xc938('0x30')],'cc':_0x55aec4['body'][_0xc938('0x15')]['cc'],'subject':_0x55aec4[_0xc938('0x27')][_0xc938('0x15')][_0xc938('0x4e')],'attach':_0x348ae5[_0xc938('0x55')]?_0x348ae5['attach']:_0x55aec4[_0xc938('0x27')][_0xc938('0x15')][_0xc938('0x55')],'substatus':null,'substatusAt':moment()[_0xc938('0x4f')](_0xc938('0x50')),'lastMsgAt':moment()[_0xc938('0x4f')](_0xc938('0x50')),'lastMsgDirection':'in','lastMsgBody':_0x55aec4[_0xc938('0x27')][_0xc938('0x27')]});}else{return _0x348ae5;}}})[_0xc938('0xe')](function(_0xa1c77e){_0x2f798e[_0xc938('0x56')]=_0xa1c77e[_0xc938('0x3d')]({'plain':!![]});_0x2f798e[_0xc938('0x56')][_0xc938('0x57')]=_0x5c8af5;return db[_0xc938('0x52')][_0xc938('0x4a')]({'body':_0x55aec4[_0xc938('0x27')][_0xc938('0x27')],'MailAccountId':_0x55aec4[_0xc938('0x36')]['id'],'MailInteractionId':_0xa1c77e['id'],'direction':'in','ContactId':_0x2f798e['contact']['id'],'messageId':_0x55aec4[_0xc938('0x27')][_0xc938('0x15')]['messageId'],'from':_0x55aec4[_0xc938('0x27')]['message'][_0xc938('0x30')],'to':_0x55aec4['body'][_0xc938('0x15')]['to'],'cc':_0x55aec4['body'][_0xc938('0x15')]['cc'],'subject':_0x55aec4[_0xc938('0x27')][_0xc938('0x15')][_0xc938('0x4e')],'attach':_0x55aec4[_0xc938('0x27')][_0xc938('0x15')][_0xc938('0x55')],'Attachments':_0x55aec4[_0xc938('0x27')][_0xc938('0x15')][_0xc938('0x58')],'originTo':_0x55aec4['body'][_0xc938('0x15')]['originTo'],'originCc':_0x55aec4[_0xc938('0x27')][_0xc938('0x15')][_0xc938('0x59')],'bcc':_0x55aec4[_0xc938('0x27')][_0xc938('0x15')]['bcc']},{'include':[{'model':db[_0xc938('0x5a')],'as':'Attachments'}]});})[_0xc938('0xe')](function(_0xdd54dd){_0x2f798e[_0xc938('0x15')]=_0xdd54dd;if(_0x2f798e[_0xc938('0x56')]['UserId']){return db['User'][_0xc938('0x25')]({'attributes':['id',_0xc938('0x5b')],'where':{'id':_0x2f798e['interaction'][_0xc938('0x5c')]}})['then'](function(_0x58f264){if(_0x58f264){_0x2f798e['applications'][_0xc938('0x5d')]({'id':0x0,'priority':0x0,'app':_0xc938('0x5e'),'appdata':_0x58f264[_0xc938('0x5b')]+','+(_0x2f798e[_0xc938('0x36')]['waitForTheAssignedAgent']||0xa),'interval':_0xc938('0x46')});}return respondWithRpcPromise(_0xc938('0x5f'),_0xc938('0x60'),_0x2f798e);});}return respondWithRpcPromise('Start',_0xc938('0x60'),_0x2f798e);})[_0xc938('0xe')](function(_0x3281a6){_0x2d36e4(_0x3281a6);})[_0xc938('0x18')](function(_0xa11f62){_0x29ab3a(_0x5683ff[_0xc938('0x13')](0x1f4,_0xa11f62['message']));});});};