c9744341592696df4790f83606727cbaca2532ea
[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 _0xd547=['model','attributes','ShowMailAccount','find','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','body','from','from\x20is\x20mandatory','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','Contacts','MailApplication','Applications','MailServerOut','Smtp','get','list','applications','orderBy','asc','autoclose','push','close','*,*,*,*','length','create','List\x20not\x20found','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','inReplyTo','Contact\x20not\x20found','attach','interaction','created','MailMessage','contact','originTo','originCc','bcc','Attachment','Attachments','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','client','http','redis','socket.io-emitter','register','request','then','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','MailAccount,\x20%s,\x20%s','message','info','result','catch','GetMailAccount','MailAccount','options','raw','where','limit','include','map'];(function(_0xec72d8,_0x38ebe4){var _0x4c8693=function(_0x496b6a){while(--_0x496b6a){_0xec72d8['push'](_0xec72d8['shift']());}};_0x4c8693(++_0x38ebe4);}(_0xd547,0x1c1));var _0x7d54=function(_0x4bae1a,_0x5b0916){_0x4bae1a=_0x4bae1a-0x0;var _0x27f6d2=_0xd547[_0x4bae1a];return _0x27f6d2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7d54('0x0'));var BPromise=require(_0x7d54('0x1'));var rs=require(_0x7d54('0x2'));var fs=require('fs');var Redis=require(_0x7d54('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7d54('0x4'))('rpc');var config=require(_0x7d54('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x7d54('0x6')][_0x7d54('0x7')]({'port':0x232c});config[_0x7d54('0x8')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x7d54('0x9'))(new Redis(config[_0x7d54('0x8')]));require('./mailAccount.socket')[_0x7d54('0xa')](socket);function respondWithRpcPromise(_0x48b250,_0x2bede6,_0x4d9dc3){return new BPromise(function(_0x1d7ff7,_0x570460){return client[_0x7d54('0xb')](_0x48b250,_0x4d9dc3)[_0x7d54('0xc')](function(_0x5bd01a){logger['info']('MailAccount,\x20%s,\x20%s',_0x2bede6,_0x7d54('0xd'));logger[_0x7d54('0xe')](_0x7d54('0xf'),_0x2bede6,'request\x20sent',JSON[_0x7d54('0x10')](_0x5bd01a));if(_0x5bd01a['error']){if(_0x5bd01a[_0x7d54('0x11')]['code']===0x1f4){logger[_0x7d54('0x11')](_0x7d54('0x12'),_0x2bede6,_0x5bd01a['error'][_0x7d54('0x13')]);return _0x570460(_0x5bd01a[_0x7d54('0x11')][_0x7d54('0x13')]);}logger['error'](_0x7d54('0x12'),_0x2bede6,_0x5bd01a[_0x7d54('0x11')][_0x7d54('0x13')]);return _0x1d7ff7(_0x5bd01a[_0x7d54('0x11')][_0x7d54('0x13')]);}else{logger[_0x7d54('0x14')]('MailAccount,\x20%s,\x20%s',_0x2bede6,_0x7d54('0xd'));_0x1d7ff7(_0x5bd01a[_0x7d54('0x15')]['message']);}})[_0x7d54('0x16')](function(_0x4b9caf){logger['error'](_0x7d54('0x12'),_0x2bede6,_0x4b9caf);_0x570460(_0x4b9caf);});});}exports[_0x7d54('0x17')]=function(_0x42e632){var _0x6c696d=this;return new Promise(function(_0x54e783,_0x23ea55){return db[_0x7d54('0x18')]['findAll']({'raw':_0x42e632[_0x7d54('0x19')]?_0x42e632[_0x7d54('0x19')][_0x7d54('0x1a')]===undefined?!![]:![]:!![],'where':_0x42e632[_0x7d54('0x19')]?_0x42e632[_0x7d54('0x19')][_0x7d54('0x1b')]||null:null,'attributes':_0x42e632[_0x7d54('0x19')]?_0x42e632['options']['attributes']||null:null,'limit':_0x42e632['options']?_0x42e632[_0x7d54('0x19')][_0x7d54('0x1c')]||null:null,'include':_0x42e632['options']?_0x42e632[_0x7d54('0x19')][_0x7d54('0x1d')]?_[_0x7d54('0x1e')](_0x42e632[_0x7d54('0x19')][_0x7d54('0x1d')],function(_0x6d0375){return{'model':db[_0x6d0375[_0x7d54('0x1f')]],'as':_0x6d0375['as'],'attributes':_0x6d0375[_0x7d54('0x20')],'include':_0x6d0375['include']?_[_0x7d54('0x1e')](_0x6d0375[_0x7d54('0x1d')],function(_0x5117a4){return{'model':db[_0x5117a4['model']],'as':_0x5117a4['as'],'attributes':_0x5117a4['attributes'],'include':_0x5117a4['include']?_[_0x7d54('0x1e')](_0x5117a4[_0x7d54('0x1d')],function(_0x57e2ce){return{'model':db[_0x57e2ce[_0x7d54('0x1f')]],'as':_0x57e2ce['as'],'attributes':_0x57e2ce[_0x7d54('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x472032){logger[_0x7d54('0x14')](_0x7d54('0x17'),_0x42e632);logger[_0x7d54('0xe')](_0x7d54('0x17'),_0x42e632,JSON[_0x7d54('0x10')](_0x472032));_0x54e783(_0x472032);})[_0x7d54('0x16')](function(_0x30737a){logger['error'](_0x7d54('0x17'),_0x30737a['message'],_0x42e632);_0x23ea55(_0x6c696d['error'](0x1f4,_0x30737a[_0x7d54('0x13')]));});});};exports[_0x7d54('0x21')]=function(_0x4a700e){var _0xf567bc=this;return new Promise(function(_0x4489ee,_0x2e2708){return db[_0x7d54('0x18')][_0x7d54('0x22')]({'raw':_0x4a700e[_0x7d54('0x19')]?_0x4a700e[_0x7d54('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4a700e[_0x7d54('0x19')]?_0x4a700e[_0x7d54('0x19')]['where']||null:null,'attributes':_0x4a700e[_0x7d54('0x19')]?_0x4a700e[_0x7d54('0x19')][_0x7d54('0x20')]||null:null,'include':_0x4a700e['options']?_0x4a700e[_0x7d54('0x19')][_0x7d54('0x1d')]?_[_0x7d54('0x1e')](_0x4a700e[_0x7d54('0x19')][_0x7d54('0x1d')],function(_0x5adaf7){return{'model':db[_0x5adaf7[_0x7d54('0x1f')]],'as':_0x5adaf7['as'],'attributes':_0x5adaf7[_0x7d54('0x20')],'include':_0x5adaf7['include']?_[_0x7d54('0x1e')](_0x5adaf7[_0x7d54('0x1d')],function(_0x37088e){return{'model':db[_0x37088e[_0x7d54('0x1f')]],'as':_0x37088e['as'],'attributes':_0x37088e[_0x7d54('0x20')],'include':_0x37088e[_0x7d54('0x1d')]?_[_0x7d54('0x1e')](_0x37088e[_0x7d54('0x1d')],function(_0x125974){return{'model':db[_0x125974[_0x7d54('0x1f')]],'as':_0x125974['as'],'attributes':_0x125974[_0x7d54('0x20')]};}):[]};}):[]};}):[]:[]})[_0x7d54('0xc')](function(_0x4f637b){logger['info'](_0x7d54('0x21'),_0x4a700e);logger[_0x7d54('0xe')](_0x7d54('0x21'),_0x4a700e,JSON[_0x7d54('0x10')](_0x4f637b));_0x4489ee(_0x4f637b);})['catch'](function(_0x5b49d4){logger[_0x7d54('0x11')]('ShowMailAccount',_0x5b49d4[_0x7d54('0x13')],_0x4a700e);_0x2e2708(_0xf567bc[_0x7d54('0x11')](0x1f4,_0x5b49d4['message']));});});};exports['NotifyMailAccount']=function(_0x20c2ed){var _0x279a81=this;return new Promise(function(_0x57203d,_0x2db9aa){var _0x8218a6={'body':_0x20c2ed['body'],'channel':'mail'};var _0x2ef6bf=_[_0x7d54('0x23')](_[_0x7d54('0x24')](db[_0x7d54('0x25')][_0x7d54('0x26')]),[_0x7d54('0x27'),_0x7d54('0x28'),_0x7d54('0x29'),_0x7d54('0x2a')]);var _0x2fbdf7=![];if(_0x20c2ed[_0x7d54('0x2b')]['id']){delete _0x20c2ed['body']['id'];}if(_['isNil'](_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x2c')])){return _0x2db9aa(_0x279a81[_0x7d54('0x11')](0x1f4,_0x7d54('0x2d')));}if(_[_0x7d54('0x2e')](_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x2b')])||_0x20c2ed['body'][_0x7d54('0x2b')]===''){return _0x2db9aa(_0x279a81['error'](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x7d54('0x2e')](_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x2f')])){return _0x2db9aa(_0x279a81[_0x7d54('0x11')](0x1f4,_0x7d54('0x30')+_0x2ef6bf));}if(!_['includes'](_0x2ef6bf,_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x2f')])){return _0x2db9aa(_0x279a81['error'](0x1f4,_0x7d54('0x31')+_0x2ef6bf));}var _0x793350={};_0x793350[_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x2f')]]=_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x2c')];return db['MailAccount'][_0x7d54('0x22')]({'where':{'id':_0x20c2ed[_0x7d54('0x32')]['id']},'include':[{'model':db[_0x7d54('0x33')],'as':_0x7d54('0x34'),'include':[{'model':db[_0x7d54('0x25')],'as':_0x7d54('0x35'),'where':_0x793350,'limit':0x1,'order':[[_0x7d54('0x28'),'DESC']]}]},{'model':db[_0x7d54('0x36')],'as':_0x7d54('0x37')},{'model':db[_0x7d54('0x38')],'as':_0x7d54('0x39')}]})[_0x7d54('0xc')](function(_0x5a2c6b){if(_0x5a2c6b&&_0x5a2c6b[_0x7d54('0x34')]){var _0x4e8c02=_0x5a2c6b[_0x7d54('0x3a')]({'plain':!![]});_0x8218a6['account']=_['omit'](_0x4e8c02,[_0x7d54('0x37'),'List']);_0x8218a6['applications']=_0x4e8c02[_0x7d54('0x37')];_0x8218a6[_0x7d54('0x3b')]=_0x4e8c02['List'];_0x8218a6[_0x7d54('0x3c')]=_[_0x7d54('0x3d')](_0x8218a6[_0x7d54('0x3c')],['priority'],[_0x7d54('0x3e')]);if(_0x8218a6['account']&&_0x8218a6[_0x7d54('0x32')][_0x7d54('0x3f')]){_0x8218a6[_0x7d54('0x3c')][_0x7d54('0x40')]({'id':0x0,'priority':_0x8218a6['applications']['length']+0x1,'app':_0x7d54('0x41'),'appdata':_0x7d54('0x3f'),'interval':_0x7d54('0x42')});}if(_0x8218a6[_0x7d54('0x32')][_0x7d54('0x37')]){delete _0x8218a6['account'][_0x7d54('0x37')];}if(_0x8218a6[_0x7d54('0x32')]['List']){delete _0x8218a6[_0x7d54('0x32')][_0x7d54('0x34')];}if(_0x4e8c02[_0x7d54('0x34')][_0x7d54('0x35')][_0x7d54('0x43')]){return _0x4e8c02[_0x7d54('0x34')][_0x7d54('0x35')][0x0];}var _0x36b43c=_['defaults'](_0x20c2ed[_0x7d54('0x2b')],{'firstName':_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x2c')],'ListId':_0x4e8c02['ListId']});_0x36b43c[_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x2f')]]=_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x2c')];return db['CmContact'][_0x7d54('0x44')](_0x36b43c);}else{throw new Error(_0x7d54('0x45'));}})[_0x7d54('0xc')](function(_0x55ee74){_0x8218a6['contact']=_0x55ee74;if(_0x55ee74){if(!_0x20c2ed['body']['message'][_0x7d54('0x46')]){_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x13')][_0x7d54('0x46')]=rs[_0x7d54('0x47')]()+'\x20'+_0x20c2ed['body']['message']['from'];}var _0x47fab7={'ContactId':_0x55ee74['id'],'MailAccountId':_0x20c2ed[_0x7d54('0x32')]['id'],'inReplyTo':_0x20c2ed['body'][_0x7d54('0x13')]['messageId'],'to':_0x20c2ed[_0x7d54('0x2b')]['message'][_0x7d54('0x2c')],'cc':_0x20c2ed[_0x7d54('0x2b')]['message']['cc'],'subject':_0x20c2ed['body']['message'][_0x7d54('0x48')],'attach':_0x20c2ed[_0x7d54('0x2b')]['message']['attach'],'lastMsgAt':moment()[_0x7d54('0x49')](_0x7d54('0x4a')),'lastMsgDirection':'in','lastMsgBody':_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x2b')]};return db[_0x7d54('0x4b')]['find']({'where':{'closed':![],'MailAccountId':_0x20c2ed[_0x7d54('0x32')]['id']},'include':[{'model':db['MailMessage'],'as':'Messages','attributes':[_0x7d54('0x46')],'where':{'messageId':_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x13')][_0x7d54('0x4c')]}}]})[_0x7d54('0xc')](function(_0x4c146a){if(_0x4c146a){return[_0x4c146a,![]];}return db['MailInteraction']['create'](_0x47fab7)['then'](function(_0x45d5f3){return[_0x45d5f3,!![]];});});}else{throw new Error(_0x7d54('0x4d'));}})['spread'](function(_0x731983,_0x42ce91){if(_0x731983){_0x2fbdf7=_0x42ce91;if(!_0x42ce91){return _0x731983['update']({'inReplyTo':_0x20c2ed['body'][_0x7d54('0x13')][_0x7d54('0x46')],'to':_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x13')]['from'],'cc':_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x13')]['cc'],'subject':_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x13')][_0x7d54('0x48')],'attach':_0x731983[_0x7d54('0x4e')]?_0x731983[_0x7d54('0x4e')]:_0x20c2ed['body']['message'][_0x7d54('0x4e')],'substatus':null,'substatusAt':moment()['format'](_0x7d54('0x4a')),'lastMsgAt':moment()[_0x7d54('0x49')](_0x7d54('0x4a')),'lastMsgDirection':'in','lastMsgBody':_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x2b')]});}else{return _0x731983;}}})[_0x7d54('0xc')](function(_0x5e0c12){_0x8218a6[_0x7d54('0x4f')]=_0x5e0c12[_0x7d54('0x3a')]({'plain':!![]});_0x8218a6[_0x7d54('0x4f')][_0x7d54('0x50')]=_0x2fbdf7;return db[_0x7d54('0x51')][_0x7d54('0x44')]({'body':_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x2b')],'MailAccountId':_0x20c2ed['account']['id'],'MailInteractionId':_0x5e0c12['id'],'direction':'in','ContactId':_0x8218a6[_0x7d54('0x52')]['id'],'messageId':_0x20c2ed[_0x7d54('0x2b')]['message'][_0x7d54('0x46')],'from':_0x20c2ed[_0x7d54('0x2b')]['message']['from'],'to':_0x20c2ed[_0x7d54('0x2b')]['message']['to'],'cc':_0x20c2ed['body'][_0x7d54('0x13')]['cc'],'subject':_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x13')][_0x7d54('0x48')],'attach':_0x20c2ed[_0x7d54('0x2b')]['message'][_0x7d54('0x4e')],'Attachments':_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x13')]['attachments'],'originTo':_0x20c2ed['body']['message'][_0x7d54('0x53')],'originCc':_0x20c2ed['body']['message'][_0x7d54('0x54')],'bcc':_0x20c2ed[_0x7d54('0x2b')][_0x7d54('0x13')][_0x7d54('0x55')]},{'include':[{'model':db[_0x7d54('0x56')],'as':_0x7d54('0x57')}]});})[_0x7d54('0xc')](function(_0x29c5d0){_0x8218a6[_0x7d54('0x13')]=_0x29c5d0;if(_0x8218a6['interaction'][_0x7d54('0x58')]){return db[_0x7d54('0x59')][_0x7d54('0x22')]({'attributes':['id',_0x7d54('0x5a')],'where':{'id':_0x8218a6[_0x7d54('0x4f')]['UserId']}})['then'](function(_0x35029f){if(_0x35029f){_0x8218a6['applications'][_0x7d54('0x5b')]({'id':0x0,'priority':0x0,'app':_0x7d54('0x5c'),'appdata':_0x35029f[_0x7d54('0x5a')]+','+(_0x8218a6[_0x7d54('0x32')][_0x7d54('0x5d')]||0xa),'interval':_0x7d54('0x42')});}return respondWithRpcPromise(_0x7d54('0x5e'),_0x7d54('0x5f'),_0x8218a6);});}return respondWithRpcPromise(_0x7d54('0x5e'),_0x7d54('0x5f'),_0x8218a6);})[_0x7d54('0xc')](function(_0x127ee7){_0x57203d(_0x127ee7);})[_0x7d54('0x16')](function(_0x215d29){_0x2db9aa(_0x279a81[_0x7d54('0x11')](0x1f4,_0x215d29[_0x7d54('0x13')]));});});};