7d8bda174294d97a1bf5fa808b269666adbc1abc
[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 _0x876b=['CmContact','createdAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','account','CmList','List','Contacts','DESC','MailApplication','MailServerOut','Smtp','get','omit','Applications','applications','orderBy','priority','asc','autoclose','length','close','defaults','create','List\x20not\x20found','contact','messageId','generate','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','find','MailMessage','Contact\x20not\x20found','spread','update','subject','attach','format','interaction','created','attachments','Attachment','Attachments','UserId','User','unshift','agent','name','waitForTheAssignedAgent','*,*,*,*','startRouting','Start','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','register','then','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetMailAccount','options','raw','attributes','limit','include','map','model','ShowMailAccount','MailAccount','where','NotifyMailAccount','body','mail','difference'];(function(_0x5a70a2,_0xf1e7f9){var _0x1c88fd=function(_0x2b36f3){while(--_0x2b36f3){_0x5a70a2['push'](_0x5a70a2['shift']());}};_0x1c88fd(++_0xf1e7f9);}(_0x876b,0x1ba));var _0xb876=function(_0x3f1c4a,_0x3a8f1b){_0x3f1c4a=_0x3f1c4a-0x0;var _0x346a49=_0x876b[_0x3f1c4a];return _0x346a49;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb876('0x0'));var BPromise=require(_0xb876('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb876('0x2'))['db'];var utils=require(_0xb876('0x3'));var logger=require('../../config/logger')(_0xb876('0x4'));var config=require(_0xb876('0x5'));var jayson=require(_0xb876('0x6'));var client=jayson['client'][_0xb876('0x7')]({'port':0x232c});config[_0xb876('0x8')]=_['defaults'](config[_0xb876('0x8')],{'host':_0xb876('0x9'),'port':0x18eb});var socket=require(_0xb876('0xa'))(new Redis(config[_0xb876('0x8')]));require('./mailAccount.socket')[_0xb876('0xb')](socket);function respondWithRpcPromise(_0x488dc4,_0x4770a2,_0x26bbb5){return new BPromise(function(_0x59a812,_0x5cd511){return client['request'](_0x488dc4,_0x26bbb5)[_0xb876('0xc')](function(_0x5a0da3){logger[_0xb876('0xd')](_0xb876('0xe'),_0x4770a2,'request\x20sent');logger[_0xb876('0xf')](_0xb876('0x10'),_0x4770a2,_0xb876('0x11'),JSON[_0xb876('0x12')](_0x5a0da3));if(_0x5a0da3[_0xb876('0x13')]){if(_0x5a0da3[_0xb876('0x13')][_0xb876('0x14')]===0x1f4){logger[_0xb876('0x13')](_0xb876('0xe'),_0x4770a2,_0x5a0da3[_0xb876('0x13')][_0xb876('0x15')]);return _0x5cd511(_0x5a0da3[_0xb876('0x13')]['message']);}logger[_0xb876('0x13')](_0xb876('0xe'),_0x4770a2,_0x5a0da3[_0xb876('0x13')][_0xb876('0x15')]);return _0x59a812(_0x5a0da3[_0xb876('0x13')][_0xb876('0x15')]);}else{logger['info'](_0xb876('0xe'),_0x4770a2,_0xb876('0x11'));_0x59a812(_0x5a0da3['result']['message']);}})[_0xb876('0x16')](function(_0x2af9c8){logger[_0xb876('0x13')]('MailAccount,\x20%s,\x20%s',_0x4770a2,_0x2af9c8);_0x5cd511(_0x2af9c8);});});}exports[_0xb876('0x17')]=function(_0x19b249){var _0x51a7ab=this;return new Promise(function(_0xf14899,_0x10b085){return db['MailAccount']['findAll']({'raw':_0x19b249['options']?_0x19b249[_0xb876('0x18')][_0xb876('0x19')]===undefined?!![]:![]:!![],'where':_0x19b249[_0xb876('0x18')]?_0x19b249[_0xb876('0x18')]['where']||null:null,'attributes':_0x19b249[_0xb876('0x18')]?_0x19b249[_0xb876('0x18')][_0xb876('0x1a')]||null:null,'limit':_0x19b249[_0xb876('0x18')]?_0x19b249[_0xb876('0x18')][_0xb876('0x1b')]||null:null,'include':_0x19b249[_0xb876('0x18')]?_0x19b249[_0xb876('0x18')][_0xb876('0x1c')]?_[_0xb876('0x1d')](_0x19b249[_0xb876('0x18')][_0xb876('0x1c')],function(_0x30a7f8){return{'model':db[_0x30a7f8[_0xb876('0x1e')]],'as':_0x30a7f8['as'],'attributes':_0x30a7f8[_0xb876('0x1a')],'include':_0x30a7f8[_0xb876('0x1c')]?_[_0xb876('0x1d')](_0x30a7f8['include'],function(_0x118824){return{'model':db[_0x118824[_0xb876('0x1e')]],'as':_0x118824['as'],'attributes':_0x118824[_0xb876('0x1a')],'include':_0x118824['include']?_[_0xb876('0x1d')](_0x118824[_0xb876('0x1c')],function(_0x11c061){return{'model':db[_0x11c061['model']],'as':_0x11c061['as'],'attributes':_0x11c061[_0xb876('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xb876('0xc')](function(_0x5d88ac){logger[_0xb876('0xd')]('GetMailAccount',_0x19b249);logger[_0xb876('0xf')](_0xb876('0x17'),_0x19b249,JSON[_0xb876('0x12')](_0x5d88ac));_0xf14899(_0x5d88ac);})[_0xb876('0x16')](function(_0x5bb2b7){logger[_0xb876('0x13')](_0xb876('0x17'),_0x5bb2b7[_0xb876('0x15')],_0x19b249);_0x10b085(_0x51a7ab[_0xb876('0x13')](0x1f4,_0x5bb2b7[_0xb876('0x15')]));});});};exports[_0xb876('0x1f')]=function(_0x427851){var _0x4b4da2=this;return new Promise(function(_0x26c9f9,_0x3843e5){return db[_0xb876('0x20')]['find']({'raw':_0x427851['options']?_0x427851[_0xb876('0x18')][_0xb876('0x19')]===undefined?!![]:![]:!![],'where':_0x427851[_0xb876('0x18')]?_0x427851['options'][_0xb876('0x21')]||null:null,'attributes':_0x427851['options']?_0x427851[_0xb876('0x18')][_0xb876('0x1a')]||null:null,'include':_0x427851[_0xb876('0x18')]?_0x427851['options'][_0xb876('0x1c')]?_[_0xb876('0x1d')](_0x427851[_0xb876('0x18')][_0xb876('0x1c')],function(_0x29b70e){return{'model':db[_0x29b70e[_0xb876('0x1e')]],'as':_0x29b70e['as'],'attributes':_0x29b70e[_0xb876('0x1a')],'include':_0x29b70e[_0xb876('0x1c')]?_['map'](_0x29b70e['include'],function(_0x23148e){return{'model':db[_0x23148e[_0xb876('0x1e')]],'as':_0x23148e['as'],'attributes':_0x23148e[_0xb876('0x1a')],'include':_0x23148e[_0xb876('0x1c')]?_['map'](_0x23148e[_0xb876('0x1c')],function(_0x3d162c){return{'model':db[_0x3d162c[_0xb876('0x1e')]],'as':_0x3d162c['as'],'attributes':_0x3d162c[_0xb876('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xb876('0xc')](function(_0xbf8dbc){logger[_0xb876('0xd')](_0xb876('0x1f'),_0x427851);logger['debug'](_0xb876('0x1f'),_0x427851,JSON['stringify'](_0xbf8dbc));_0x26c9f9(_0xbf8dbc);})[_0xb876('0x16')](function(_0x1a7882){logger['error']('ShowMailAccount',_0x1a7882[_0xb876('0x15')],_0x427851);_0x3843e5(_0x4b4da2['error'](0x1f4,_0x1a7882[_0xb876('0x15')]));});});};exports[_0xb876('0x22')]=function(_0x1cc915){var _0x233bdf=this;return new Promise(function(_0x29a102,_0x44b51e){var _0x390336={'body':_0x1cc915[_0xb876('0x23')],'channel':_0xb876('0x24')};var _0x2ae372=_[_0xb876('0x25')](_['keys'](db[_0xb876('0x26')]['rawAttributes']),[_0xb876('0x27'),'updatedAt',_0xb876('0x28'),_0xb876('0x29')]);var _0x142234=![];if(_0x1cc915[_0xb876('0x23')]['id']){delete _0x1cc915[_0xb876('0x23')]['id'];}if(_[_0xb876('0x2a')](_0x1cc915[_0xb876('0x23')][_0xb876('0x2b')])){return _0x44b51e(_0x233bdf[_0xb876('0x13')](0x1f4,_0xb876('0x2c')));}if(_[_0xb876('0x2a')](_0x1cc915['body'][_0xb876('0x23')])||_0x1cc915[_0xb876('0x23')][_0xb876('0x23')]===''){return _0x44b51e(_0x233bdf['error'](0x1f4,_0xb876('0x2d')));}if(_['isNil'](_0x1cc915[_0xb876('0x23')][_0xb876('0x2e')])){return _0x44b51e(_0x233bdf[_0xb876('0x13')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x2ae372));}if(!_[_0xb876('0x2f')](_0x2ae372,_0x1cc915['body'][_0xb876('0x2e')])){return _0x44b51e(_0x233bdf['error'](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x2ae372));}var _0x17c650={};_0x17c650[_0x1cc915[_0xb876('0x23')]['mapKey']]=_0x1cc915[_0xb876('0x23')][_0xb876('0x2b')];return db[_0xb876('0x20')]['find']({'where':{'id':_0x1cc915[_0xb876('0x30')]['id']},'include':[{'model':db[_0xb876('0x31')],'as':_0xb876('0x32'),'include':[{'model':db['CmContact'],'as':_0xb876('0x33'),'where':_0x17c650,'limit':0x1,'order':[['updatedAt',_0xb876('0x34')]]}]},{'model':db[_0xb876('0x35')],'as':'Applications'},{'model':db[_0xb876('0x36')],'as':_0xb876('0x37')}]})[_0xb876('0xc')](function(_0x30af05){if(_0x30af05&&_0x30af05[_0xb876('0x32')]){var _0x2cb6a9=_0x30af05[_0xb876('0x38')]({'plain':!![]});_0x390336[_0xb876('0x30')]=_[_0xb876('0x39')](_0x2cb6a9,[_0xb876('0x3a'),_0xb876('0x32')]);_0x390336[_0xb876('0x3b')]=_0x2cb6a9[_0xb876('0x3a')];_0x390336['list']=_0x2cb6a9['List'];_0x390336['applications']=_[_0xb876('0x3c')](_0x390336[_0xb876('0x3b')],[_0xb876('0x3d')],[_0xb876('0x3e')]);if(_0x390336[_0xb876('0x30')]&&_0x390336[_0xb876('0x30')][_0xb876('0x3f')]){_0x390336[_0xb876('0x3b')]['push']({'id':0x0,'priority':_0x390336[_0xb876('0x3b')][_0xb876('0x40')]+0x1,'app':_0xb876('0x41'),'appdata':_0xb876('0x3f'),'interval':'*,*,*,*'});}if(_0x390336[_0xb876('0x30')][_0xb876('0x3a')]){delete _0x390336[_0xb876('0x30')][_0xb876('0x3a')];}if(_0x390336[_0xb876('0x30')][_0xb876('0x32')]){delete _0x390336['account']['List'];}if(_0x2cb6a9[_0xb876('0x32')][_0xb876('0x33')][_0xb876('0x40')]){return _0x2cb6a9[_0xb876('0x32')][_0xb876('0x33')][0x0];}var _0x5cd816=_[_0xb876('0x42')](_0x1cc915[_0xb876('0x23')],{'firstName':_0x1cc915[_0xb876('0x23')][_0xb876('0x2b')],'ListId':_0x2cb6a9[_0xb876('0x29')]});_0x5cd816[_0x1cc915[_0xb876('0x23')]['mapKey']]=_0x1cc915[_0xb876('0x23')][_0xb876('0x2b')];return db[_0xb876('0x26')][_0xb876('0x43')](_0x5cd816);}else{throw new Error(_0xb876('0x44'));}})[_0xb876('0xc')](function(_0x179f1a){_0x390336[_0xb876('0x45')]=_0x179f1a;if(_0x179f1a){if(!_0x1cc915[_0xb876('0x23')][_0xb876('0x15')][_0xb876('0x46')]){_0x1cc915[_0xb876('0x23')][_0xb876('0x15')]['messageId']=rs[_0xb876('0x47')]()+'\x20'+_0x1cc915[_0xb876('0x23')][_0xb876('0x15')]['from'];}var _0x24e6ba={'ContactId':_0x179f1a['id'],'MailAccountId':_0x1cc915['account']['id'],'inReplyTo':_0x1cc915[_0xb876('0x23')][_0xb876('0x15')][_0xb876('0x46')],'to':_0x1cc915[_0xb876('0x23')][_0xb876('0x15')][_0xb876('0x2b')],'cc':_0x1cc915[_0xb876('0x23')][_0xb876('0x15')]['cc'],'subject':_0x1cc915[_0xb876('0x23')][_0xb876('0x15')]['subject'],'attach':_0x1cc915[_0xb876('0x23')][_0xb876('0x15')]['attach'],'lastMsgAt':moment()['format'](_0xb876('0x48')),'lastMsgDirection':'in','lastMsgBody':_0x1cc915['body'][_0xb876('0x23')]};return db[_0xb876('0x49')][_0xb876('0x4a')]({'where':{'closed':![],'MailAccountId':_0x1cc915[_0xb876('0x30')]['id']},'include':[{'model':db[_0xb876('0x4b')],'as':'Messages','attributes':['messageId'],'where':{'messageId':_0x1cc915[_0xb876('0x23')]['message']['inReplyTo']}}]})[_0xb876('0xc')](function(_0x4631f8){if(_0x4631f8){return[_0x4631f8,![]];}return db[_0xb876('0x49')][_0xb876('0x43')](_0x24e6ba)[_0xb876('0xc')](function(_0x27556c){return[_0x27556c,!![]];});});}else{throw new Error(_0xb876('0x4c'));}})[_0xb876('0x4d')](function(_0x55ff2f,_0x5ebeea){if(_0x55ff2f){_0x142234=_0x5ebeea;if(!_0x5ebeea){return _0x55ff2f[_0xb876('0x4e')]({'inReplyTo':_0x1cc915[_0xb876('0x23')]['message']['messageId'],'to':_0x1cc915[_0xb876('0x23')][_0xb876('0x15')][_0xb876('0x2b')],'cc':_0x1cc915['body'][_0xb876('0x15')]['cc'],'subject':_0x1cc915['body'][_0xb876('0x15')][_0xb876('0x4f')],'attach':_0x55ff2f[_0xb876('0x50')]?_0x55ff2f[_0xb876('0x50')]:_0x1cc915['body'][_0xb876('0x15')]['attach'],'substatus':null,'substatusAt':moment()['format'](_0xb876('0x48')),'lastMsgAt':moment()[_0xb876('0x51')](_0xb876('0x48')),'lastMsgDirection':'in','lastMsgBody':_0x1cc915[_0xb876('0x23')][_0xb876('0x23')]});}else{return _0x55ff2f;}}})[_0xb876('0xc')](function(_0x1c757c){_0x390336['interaction']=_0x1c757c['get']({'plain':!![]});_0x390336[_0xb876('0x52')][_0xb876('0x53')]=_0x142234;return db[_0xb876('0x4b')][_0xb876('0x43')]({'body':_0x1cc915[_0xb876('0x23')][_0xb876('0x23')],'MailAccountId':_0x1cc915['account']['id'],'MailInteractionId':_0x1c757c['id'],'direction':'in','ContactId':_0x390336['contact']['id'],'messageId':_0x1cc915[_0xb876('0x23')]['message']['messageId'],'from':_0x1cc915['body'][_0xb876('0x15')]['from'],'to':_0x1cc915[_0xb876('0x23')][_0xb876('0x15')]['to'],'cc':_0x1cc915[_0xb876('0x23')][_0xb876('0x15')]['cc'],'subject':_0x1cc915[_0xb876('0x23')][_0xb876('0x15')][_0xb876('0x4f')],'attach':_0x1cc915[_0xb876('0x23')]['message'][_0xb876('0x50')],'Attachments':_0x1cc915[_0xb876('0x23')]['message'][_0xb876('0x54')],'originTo':_0x1cc915[_0xb876('0x23')][_0xb876('0x15')]['originTo'],'originCc':_0x1cc915['body']['message']['originCc'],'bcc':_0x1cc915[_0xb876('0x23')][_0xb876('0x15')]['bcc']},{'include':[{'model':db[_0xb876('0x55')],'as':_0xb876('0x56')}]});})[_0xb876('0xc')](function(_0x49dc45){_0x390336['message']=_0x49dc45;if(_0x390336['interaction'][_0xb876('0x57')]){return db[_0xb876('0x58')]['find']({'attributes':['id','name'],'where':{'id':_0x390336[_0xb876('0x52')]['UserId']}})[_0xb876('0xc')](function(_0x470665){if(_0x470665){_0x390336[_0xb876('0x3b')][_0xb876('0x59')]({'id':0x0,'priority':0x0,'app':_0xb876('0x5a'),'appdata':_0x470665[_0xb876('0x5b')]+','+(_0x390336[_0xb876('0x30')][_0xb876('0x5c')]||0xa),'interval':_0xb876('0x5d')});}return respondWithRpcPromise('Start',_0xb876('0x5e'),_0x390336);});}return respondWithRpcPromise(_0xb876('0x5f'),'startRouting',_0x390336);})['then'](function(_0x3c522f){_0x29a102(_0x3c522f);})['catch'](function(_0x51b25f){_0x44b51e(_0x233bdf[_0xb876('0x13')](0x1f4,_0x51b25f[_0xb876('0x15')]));});});};