Built motion from commit 9d1906d1.|2.5.40
[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 _0x3e96=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','register','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','GetMailAccount','MailAccount','options','raw','where','attributes','limit','include','model','map','then','stringify','ShowMailAccount','find','body','mail','keys','rawAttributes','createdAt','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','mapKey','includes','account','CmContact','Contacts','MailApplication','Applications','MailServerOut','Smtp','List','get','applications','list','orderBy','autoclose','push','close','*,*,*,*','length','defaults','create','contact','messageId','generate','subject','format','MailInteraction','inReplyTo','update','attach','YYYY-MM-DD\x20HH:mm:ss','interaction','created','MailMessage','originTo','originCc','originChannel','ChatOfflineMessageId','Attachment','Attachments','User','unshift','agent','name','waitForTheAssignedAgent','Start','startRouting'];(function(_0x42ca15,_0x193ccb){var _0x1c6ded=function(_0x40989a){while(--_0x40989a){_0x42ca15['push'](_0x42ca15['shift']());}};_0x1c6ded(++_0x193ccb);}(_0x3e96,0x1db));var _0x63e9=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0x3e96[_0x5a3cf0];return _0x5a64ee;};'use strict';var _=require(_0x63e9('0x0'));var util=require(_0x63e9('0x1'));var moment=require(_0x63e9('0x2'));var BPromise=require(_0x63e9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x63e9('0x4'));var db=require(_0x63e9('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x63e9('0x6'))(_0x63e9('0x7'));var config=require(_0x63e9('0x8'));var jayson=require(_0x63e9('0x9'));var client=jayson[_0x63e9('0xa')][_0x63e9('0xb')]({'port':0x232c});config[_0x63e9('0xc')]=_['defaults'](config[_0x63e9('0xc')],{'host':_0x63e9('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x63e9('0xc')]));require('./mailAccount.socket')[_0x63e9('0xe')](socket);function respondWithRpcPromise(_0x2feb7c,_0x52e1b0,_0x35a38b){return new BPromise(function(_0x5670ee,_0x12ce63){return client['request'](_0x2feb7c,_0x35a38b)['then'](function(_0x2221a9){logger[_0x63e9('0xf')](_0x63e9('0x10'),_0x52e1b0,_0x63e9('0x11'));logger[_0x63e9('0x12')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x52e1b0,_0x63e9('0x11'),JSON['stringify'](_0x2221a9));if(_0x2221a9[_0x63e9('0x13')]){if(_0x2221a9[_0x63e9('0x13')][_0x63e9('0x14')]===0x1f4){logger[_0x63e9('0x13')](_0x63e9('0x10'),_0x52e1b0,_0x2221a9[_0x63e9('0x13')][_0x63e9('0x15')]);return _0x12ce63(_0x2221a9[_0x63e9('0x13')][_0x63e9('0x15')]);}logger['error'](_0x63e9('0x10'),_0x52e1b0,_0x2221a9[_0x63e9('0x13')][_0x63e9('0x15')]);return _0x5670ee(_0x2221a9[_0x63e9('0x13')][_0x63e9('0x15')]);}else{logger[_0x63e9('0xf')]('MailAccount,\x20%s,\x20%s',_0x52e1b0,'request\x20sent');_0x5670ee(_0x2221a9[_0x63e9('0x16')][_0x63e9('0x15')]);}})[_0x63e9('0x17')](function(_0x2a2814){logger[_0x63e9('0x13')](_0x63e9('0x10'),_0x52e1b0,_0x2a2814);_0x12ce63(_0x2a2814);});});}exports[_0x63e9('0x18')]=function(_0x4cf52e){var _0x3e8f90=this;return new Promise(function(_0x430556,_0x31b30c){return db[_0x63e9('0x19')]['findAll']({'raw':_0x4cf52e[_0x63e9('0x1a')]?_0x4cf52e[_0x63e9('0x1a')][_0x63e9('0x1b')]===undefined?!![]:![]:!![],'where':_0x4cf52e[_0x63e9('0x1a')]?_0x4cf52e['options'][_0x63e9('0x1c')]||null:null,'attributes':_0x4cf52e[_0x63e9('0x1a')]?_0x4cf52e[_0x63e9('0x1a')][_0x63e9('0x1d')]||null:null,'limit':_0x4cf52e[_0x63e9('0x1a')]?_0x4cf52e['options'][_0x63e9('0x1e')]||null:null,'include':_0x4cf52e['options']?_0x4cf52e[_0x63e9('0x1a')]['include']?_['map'](_0x4cf52e['options'][_0x63e9('0x1f')],function(_0x21499b){return{'model':db[_0x21499b[_0x63e9('0x20')]],'as':_0x21499b['as'],'attributes':_0x21499b[_0x63e9('0x1d')],'include':_0x21499b['include']?_['map'](_0x21499b[_0x63e9('0x1f')],function(_0x129a54){return{'model':db[_0x129a54['model']],'as':_0x129a54['as'],'attributes':_0x129a54['attributes'],'include':_0x129a54[_0x63e9('0x1f')]?_[_0x63e9('0x21')](_0x129a54['include'],function(_0x4edb1d){return{'model':db[_0x4edb1d[_0x63e9('0x20')]],'as':_0x4edb1d['as'],'attributes':_0x4edb1d[_0x63e9('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x63e9('0x22')](function(_0xe31c79){logger[_0x63e9('0xf')](_0x63e9('0x18'),_0x4cf52e);logger[_0x63e9('0x12')](_0x63e9('0x18'),_0x4cf52e,JSON[_0x63e9('0x23')](_0xe31c79));_0x430556(_0xe31c79);})['catch'](function(_0x251a94){logger[_0x63e9('0x13')](_0x63e9('0x18'),_0x251a94['message'],_0x4cf52e);_0x31b30c(_0x3e8f90[_0x63e9('0x13')](0x1f4,_0x251a94[_0x63e9('0x15')]));});});};exports[_0x63e9('0x24')]=function(_0x404b80){var _0x59e365=this;return new Promise(function(_0x4b616a,_0x363e47){return db[_0x63e9('0x19')][_0x63e9('0x25')]({'raw':_0x404b80[_0x63e9('0x1a')]?_0x404b80[_0x63e9('0x1a')][_0x63e9('0x1b')]===undefined?!![]:![]:!![],'where':_0x404b80[_0x63e9('0x1a')]?_0x404b80['options']['where']||null:null,'attributes':_0x404b80[_0x63e9('0x1a')]?_0x404b80[_0x63e9('0x1a')][_0x63e9('0x1d')]||null:null,'include':_0x404b80[_0x63e9('0x1a')]?_0x404b80[_0x63e9('0x1a')]['include']?_[_0x63e9('0x21')](_0x404b80[_0x63e9('0x1a')][_0x63e9('0x1f')],function(_0xc29995){return{'model':db[_0xc29995[_0x63e9('0x20')]],'as':_0xc29995['as'],'attributes':_0xc29995[_0x63e9('0x1d')],'include':_0xc29995[_0x63e9('0x1f')]?_[_0x63e9('0x21')](_0xc29995['include'],function(_0x3fd8f7){return{'model':db[_0x3fd8f7['model']],'as':_0x3fd8f7['as'],'attributes':_0x3fd8f7[_0x63e9('0x1d')],'include':_0x3fd8f7[_0x63e9('0x1f')]?_[_0x63e9('0x21')](_0x3fd8f7[_0x63e9('0x1f')],function(_0x17c735){return{'model':db[_0x17c735[_0x63e9('0x20')]],'as':_0x17c735['as'],'attributes':_0x17c735[_0x63e9('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x63e9('0x22')](function(_0x2f231b){logger[_0x63e9('0xf')](_0x63e9('0x24'),_0x404b80);logger[_0x63e9('0x12')]('ShowMailAccount',_0x404b80,JSON[_0x63e9('0x23')](_0x2f231b));_0x4b616a(_0x2f231b);})[_0x63e9('0x17')](function(_0x3cdf9e){logger[_0x63e9('0x13')](_0x63e9('0x24'),_0x3cdf9e[_0x63e9('0x15')],_0x404b80);_0x363e47(_0x59e365[_0x63e9('0x13')](0x1f4,_0x3cdf9e['message']));});});};exports['NotifyMailAccount']=function(_0x7b3675){var _0x2de356=this;return new Promise(function(_0x3d3692,_0x3e0e25){var _0x7a1dbd={'body':_0x7b3675[_0x63e9('0x26')],'channel':_0x63e9('0x27')};var _0x2d3de0=_['difference'](_[_0x63e9('0x28')](db['CmContact'][_0x63e9('0x29')]),[_0x63e9('0x2a'),_0x63e9('0x2b'),_0x63e9('0x2c'),_0x63e9('0x2d')]);var _0x56313d=![];if(_0x7b3675[_0x63e9('0x26')]['id']){delete _0x7b3675[_0x63e9('0x26')]['id'];}if(_['isNil'](_0x7b3675[_0x63e9('0x26')][_0x63e9('0x2e')])){return _0x3e0e25(_0x2de356[_0x63e9('0x13')](0x1f4,_0x63e9('0x2f')));}if(_['isNil'](_0x7b3675[_0x63e9('0x26')]['body'])||_0x7b3675[_0x63e9('0x26')][_0x63e9('0x26')]===''){return _0x3e0e25(_0x2de356[_0x63e9('0x13')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0x7b3675[_0x63e9('0x26')][_0x63e9('0x30')])){return _0x3e0e25(_0x2de356['error'](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x2d3de0));}if(!_[_0x63e9('0x31')](_0x2d3de0,_0x7b3675['body']['mapKey'])){return _0x3e0e25(_0x2de356[_0x63e9('0x13')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x2d3de0));}var _0x557dd4={};_0x557dd4[_0x7b3675[_0x63e9('0x26')][_0x63e9('0x30')]]=_0x7b3675[_0x63e9('0x26')][_0x63e9('0x2e')];return db['MailAccount'][_0x63e9('0x25')]({'where':{'id':_0x7b3675[_0x63e9('0x32')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x63e9('0x33')],'as':_0x63e9('0x34'),'where':_0x557dd4,'limit':0x1,'order':[[_0x63e9('0x2b'),'DESC']]}]},{'model':db[_0x63e9('0x35')],'as':_0x63e9('0x36')},{'model':db[_0x63e9('0x37')],'as':_0x63e9('0x38')}]})[_0x63e9('0x22')](function(_0x3a511a){if(_0x3a511a&&_0x3a511a[_0x63e9('0x39')]){var _0x20bcec=_0x3a511a[_0x63e9('0x3a')]({'plain':!![]});_0x7a1dbd[_0x63e9('0x32')]=_['omit'](_0x20bcec,[_0x63e9('0x36'),_0x63e9('0x39')]);_0x7a1dbd[_0x63e9('0x3b')]=_0x20bcec[_0x63e9('0x36')];_0x7a1dbd[_0x63e9('0x3c')]=_0x20bcec[_0x63e9('0x39')];_0x7a1dbd[_0x63e9('0x3b')]=_[_0x63e9('0x3d')](_0x7a1dbd[_0x63e9('0x3b')],['priority'],['asc']);if(_0x7a1dbd['account']&&_0x7a1dbd['account'][_0x63e9('0x3e')]){_0x7a1dbd[_0x63e9('0x3b')][_0x63e9('0x3f')]({'id':0x0,'priority':_0x7a1dbd['applications']['length']+0x1,'app':_0x63e9('0x40'),'appdata':_0x63e9('0x3e'),'interval':_0x63e9('0x41')});}if(_0x7a1dbd[_0x63e9('0x32')][_0x63e9('0x36')]){delete _0x7a1dbd[_0x63e9('0x32')]['Applications'];}if(_0x7a1dbd[_0x63e9('0x32')][_0x63e9('0x39')]){delete _0x7a1dbd[_0x63e9('0x32')][_0x63e9('0x39')];}if(_0x20bcec['List'][_0x63e9('0x34')][_0x63e9('0x42')]){return _0x20bcec[_0x63e9('0x39')]['Contacts'][0x0];}var _0xfb1411=_[_0x63e9('0x43')](_0x7b3675[_0x63e9('0x26')],{'firstName':_0x7b3675[_0x63e9('0x26')]['from'],'ListId':_0x20bcec[_0x63e9('0x2d')]});_0xfb1411[_0x7b3675[_0x63e9('0x26')]['mapKey']]=_0x7b3675[_0x63e9('0x26')][_0x63e9('0x2e')];return db['CmContact'][_0x63e9('0x44')](_0xfb1411);}else{throw new Error('List\x20not\x20found');}})[_0x63e9('0x22')](function(_0x2c3225){_0x7a1dbd[_0x63e9('0x45')]=_0x2c3225;if(_0x2c3225){if(!_0x7b3675[_0x63e9('0x26')]['message'][_0x63e9('0x46')]){_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')][_0x63e9('0x46')]=rs[_0x63e9('0x47')]()+'\x20'+_0x7b3675['body'][_0x63e9('0x15')][_0x63e9('0x2e')];}var _0x2cf4aa={'ContactId':_0x2c3225['id'],'MailAccountId':_0x7b3675[_0x63e9('0x32')]['id'],'inReplyTo':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')][_0x63e9('0x46')],'to':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')][_0x63e9('0x2e')],'cc':_0x7b3675[_0x63e9('0x26')]['message']['cc'],'subject':_0x7b3675[_0x63e9('0x26')]['message'][_0x63e9('0x48')],'attach':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')]['attach'],'lastMsgAt':moment()[_0x63e9('0x49')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x63e9('0x4a')][_0x63e9('0x25')]({'where':{'closed':![],'MailAccountId':_0x7b3675[_0x63e9('0x32')]['id']},'include':[{'model':db['MailMessage'],'as':'Messages','attributes':[_0x63e9('0x46')],'where':{'messageId':_0x7b3675['body'][_0x63e9('0x15')][_0x63e9('0x4b')]}}]})[_0x63e9('0x22')](function(_0x2d0885){if(_0x2d0885){return[_0x2d0885,![]];}return db['MailInteraction'][_0x63e9('0x44')](_0x2cf4aa)[_0x63e9('0x22')](function(_0x33ee29){return[_0x33ee29,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x107146,_0x2923fc){if(_0x107146){_0x56313d=_0x2923fc;if(!_0x2923fc){return _0x107146[_0x63e9('0x4c')]({'inReplyTo':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')]['messageId'],'to':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')][_0x63e9('0x2e')],'cc':_0x7b3675['body'][_0x63e9('0x15')]['cc'],'subject':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')][_0x63e9('0x48')],'attach':_0x107146['attach']?_0x107146[_0x63e9('0x4d')]:_0x7b3675['body'][_0x63e9('0x15')]['attach'],'substatus':null,'substatusAt':moment()['format'](_0x63e9('0x4e')),'lastMsgAt':moment()[_0x63e9('0x49')](_0x63e9('0x4e')),'lastMsgDirection':'in'});}else{return _0x107146;}}})[_0x63e9('0x22')](function(_0x521a0d){_0x7a1dbd[_0x63e9('0x4f')]=_0x521a0d[_0x63e9('0x3a')]({'plain':!![]});_0x7a1dbd['interaction'][_0x63e9('0x50')]=_0x56313d;return db[_0x63e9('0x51')][_0x63e9('0x44')]({'body':_0x7b3675[_0x63e9('0x26')]['body'],'MailAccountId':_0x7b3675['account']['id'],'MailInteractionId':_0x521a0d['id'],'direction':'in','ContactId':_0x7a1dbd['contact']['id'],'messageId':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')][_0x63e9('0x46')],'from':_0x7b3675[_0x63e9('0x26')]['message'][_0x63e9('0x2e')],'to':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')]['to'],'cc':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')]['cc'],'subject':_0x7b3675['body'][_0x63e9('0x15')][_0x63e9('0x48')],'attach':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')][_0x63e9('0x4d')],'Attachments':_0x7b3675[_0x63e9('0x26')]['message']['attachments'],'originTo':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')][_0x63e9('0x52')],'originCc':_0x7b3675['body'][_0x63e9('0x15')][_0x63e9('0x53')],'bcc':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')]['bcc'],'ChatWebsiteId':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')]['ChatWebsiteId']||null,'originChannel':_0x7b3675[_0x63e9('0x26')][_0x63e9('0x15')][_0x63e9('0x54')]||'Email','ChatOfflineMessageId':_0x7b3675[_0x63e9('0x26')]['message'][_0x63e9('0x55')]||null},{'include':[{'model':db[_0x63e9('0x56')],'as':_0x63e9('0x57')}]});})[_0x63e9('0x22')](function(_0x1c72b5){_0x7a1dbd[_0x63e9('0x15')]=_0x1c72b5;if(_0x7a1dbd[_0x63e9('0x4f')]['UserId']){return db[_0x63e9('0x58')][_0x63e9('0x25')]({'attributes':['id','name'],'where':{'id':_0x7a1dbd[_0x63e9('0x4f')]['UserId']}})[_0x63e9('0x22')](function(_0x2c9548){if(_0x2c9548){_0x7a1dbd['applications'][_0x63e9('0x59')]({'id':0x0,'priority':0x0,'app':_0x63e9('0x5a'),'appdata':_0x2c9548[_0x63e9('0x5b')]+','+(_0x7a1dbd[_0x63e9('0x32')][_0x63e9('0x5c')]||0xa),'interval':_0x63e9('0x41')});}return respondWithRpcPromise(_0x63e9('0x5d'),_0x63e9('0x5e'),_0x7a1dbd);});}return respondWithRpcPromise(_0x63e9('0x5d'),'startRouting',_0x7a1dbd);})['then'](function(_0x49ec0d){_0x3d3692(_0x49ec0d);})[_0x63e9('0x17')](function(_0x2ba032){_0x3e0e25(_0x2de356[_0x63e9('0x13')](0x1f4,_0x2ba032[_0x63e9('0x15')]));});});};