Built motion from commit (unavailable).|2.4.18
[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 _0x8130=['Applications','MailServerOut','Smtp','get','omit','applications','orderBy','asc','autoclose','push','*,*,*,*','length','create','List\x20not\x20found','contact','messageId','generate','attach','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','update','subject','interaction','attachments','originTo','originCc','Attachment','Attachments','UserId','User','unshift','agent','name','waitForTheAssignedAgent','Start','startRouting','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','register','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','GetMailAccount','findAll','options','raw','where','map','include','model','attributes','catch','ShowMailAccount','NotifyMailAccount','mail','difference','CmContact','rawAttributes','createdAt','CompanyId','ListId','body','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','MailAccount','find','account','CmList','List','updatedAt','DESC','MailApplication'];(function(_0x49ff8c,_0x2d94c5){var _0xb5cd09=function(_0xa81265){while(--_0xa81265){_0x49ff8c['push'](_0x49ff8c['shift']());}};_0xb5cd09(++_0x2d94c5);}(_0x8130,0x146));var _0x0813=function(_0x457f72,_0x439018){_0x457f72=_0x457f72-0x0;var _0x2f35c4=_0x8130[_0x457f72];return _0x2f35c4;};'use strict';var _=require(_0x0813('0x0'));var util=require(_0x0813('0x1'));var moment=require('moment');var BPromise=require(_0x0813('0x2'));var rs=require(_0x0813('0x3'));var fs=require('fs');var Redis=require(_0x0813('0x4'));var db=require(_0x0813('0x5'))['db'];var utils=require(_0x0813('0x6'));var logger=require(_0x0813('0x7'))('rpc');var config=require(_0x0813('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0813('0x9')]({'port':0x232c});config[_0x0813('0xa')]=_[_0x0813('0xb')](config[_0x0813('0xa')],{'host':_0x0813('0xc'),'port':0x18eb});var socket=require(_0x0813('0xd'))(new Redis(config[_0x0813('0xa')]));require('./mailAccount.socket')[_0x0813('0xe')](socket);function respondWithRpcPromise(_0x1815be,_0x251ca8,_0x5a9c5e){return new BPromise(function(_0x5550c8,_0x15f8d6){return client['request'](_0x1815be,_0x5a9c5e)[_0x0813('0xf')](function(_0x5b54ec){logger[_0x0813('0x10')](_0x0813('0x11'),_0x251ca8,_0x0813('0x12'));logger[_0x0813('0x13')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x251ca8,'request\x20sent',JSON[_0x0813('0x14')](_0x5b54ec));if(_0x5b54ec[_0x0813('0x15')]){if(_0x5b54ec['error'][_0x0813('0x16')]===0x1f4){logger['error']('MailAccount,\x20%s,\x20%s',_0x251ca8,_0x5b54ec[_0x0813('0x15')][_0x0813('0x17')]);return _0x15f8d6(_0x5b54ec['error'][_0x0813('0x17')]);}logger['error'](_0x0813('0x11'),_0x251ca8,_0x5b54ec[_0x0813('0x15')][_0x0813('0x17')]);return _0x5550c8(_0x5b54ec[_0x0813('0x15')][_0x0813('0x17')]);}else{logger[_0x0813('0x10')](_0x0813('0x11'),_0x251ca8,_0x0813('0x12'));_0x5550c8(_0x5b54ec['result'][_0x0813('0x17')]);}})['catch'](function(_0x112720){logger[_0x0813('0x15')]('MailAccount,\x20%s,\x20%s',_0x251ca8,_0x112720);_0x15f8d6(_0x112720);});});}exports[_0x0813('0x18')]=function(_0x3639fc){var _0x4945df=this;return new Promise(function(_0x1ee739,_0x334741){return db['MailAccount'][_0x0813('0x19')]({'raw':_0x3639fc[_0x0813('0x1a')]?_0x3639fc[_0x0813('0x1a')][_0x0813('0x1b')]===undefined?!![]:![]:!![],'where':_0x3639fc[_0x0813('0x1a')]?_0x3639fc['options'][_0x0813('0x1c')]||null:null,'attributes':_0x3639fc[_0x0813('0x1a')]?_0x3639fc[_0x0813('0x1a')]['attributes']||null:null,'limit':_0x3639fc[_0x0813('0x1a')]?_0x3639fc['options']['limit']||null:null,'include':_0x3639fc[_0x0813('0x1a')]?_0x3639fc['options']['include']?_[_0x0813('0x1d')](_0x3639fc[_0x0813('0x1a')][_0x0813('0x1e')],function(_0x2f8849){return{'model':db[_0x2f8849[_0x0813('0x1f')]],'as':_0x2f8849['as'],'attributes':_0x2f8849[_0x0813('0x20')],'include':_0x2f8849[_0x0813('0x1e')]?_[_0x0813('0x1d')](_0x2f8849['include'],function(_0x1c76b0){return{'model':db[_0x1c76b0[_0x0813('0x1f')]],'as':_0x1c76b0['as'],'attributes':_0x1c76b0[_0x0813('0x20')],'include':_0x1c76b0[_0x0813('0x1e')]?_[_0x0813('0x1d')](_0x1c76b0[_0x0813('0x1e')],function(_0x55e115){return{'model':db[_0x55e115[_0x0813('0x1f')]],'as':_0x55e115['as'],'attributes':_0x55e115[_0x0813('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x54bf5d){logger[_0x0813('0x10')](_0x0813('0x18'),_0x3639fc);logger[_0x0813('0x13')](_0x0813('0x18'),_0x3639fc,JSON[_0x0813('0x14')](_0x54bf5d));_0x1ee739(_0x54bf5d);})[_0x0813('0x21')](function(_0x5eba65){logger[_0x0813('0x15')](_0x0813('0x18'),_0x5eba65['message'],_0x3639fc);_0x334741(_0x4945df['error'](0x1f4,_0x5eba65[_0x0813('0x17')]));});});};exports[_0x0813('0x22')]=function(_0x3134bb){var _0x4e303b=this;return new Promise(function(_0x200ffa,_0x206313){return db['MailAccount']['find']({'raw':_0x3134bb[_0x0813('0x1a')]?_0x3134bb[_0x0813('0x1a')][_0x0813('0x1b')]===undefined?!![]:![]:!![],'where':_0x3134bb[_0x0813('0x1a')]?_0x3134bb['options'][_0x0813('0x1c')]||null:null,'attributes':_0x3134bb[_0x0813('0x1a')]?_0x3134bb[_0x0813('0x1a')][_0x0813('0x20')]||null:null,'include':_0x3134bb['options']?_0x3134bb['options'][_0x0813('0x1e')]?_[_0x0813('0x1d')](_0x3134bb[_0x0813('0x1a')]['include'],function(_0x2c902d){return{'model':db[_0x2c902d[_0x0813('0x1f')]],'as':_0x2c902d['as'],'attributes':_0x2c902d[_0x0813('0x20')],'include':_0x2c902d['include']?_['map'](_0x2c902d[_0x0813('0x1e')],function(_0x296565){return{'model':db[_0x296565[_0x0813('0x1f')]],'as':_0x296565['as'],'attributes':_0x296565[_0x0813('0x20')],'include':_0x296565[_0x0813('0x1e')]?_[_0x0813('0x1d')](_0x296565['include'],function(_0x18d162){return{'model':db[_0x18d162['model']],'as':_0x18d162['as'],'attributes':_0x18d162['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1cdb40){logger[_0x0813('0x10')]('ShowMailAccount',_0x3134bb);logger['debug'](_0x0813('0x22'),_0x3134bb,JSON[_0x0813('0x14')](_0x1cdb40));_0x200ffa(_0x1cdb40);})[_0x0813('0x21')](function(_0x45a1d7){logger[_0x0813('0x15')](_0x0813('0x22'),_0x45a1d7[_0x0813('0x17')],_0x3134bb);_0x206313(_0x4e303b[_0x0813('0x15')](0x1f4,_0x45a1d7[_0x0813('0x17')]));});});};exports[_0x0813('0x23')]=function(_0x54b271){var _0x4c4f29=this;return new Promise(function(_0x5af8be,_0x23036d){var _0xee399={'body':_0x54b271['body'],'channel':_0x0813('0x24')};var _0x15b4aa=_[_0x0813('0x25')](_['keys'](db[_0x0813('0x26')][_0x0813('0x27')]),[_0x0813('0x28'),'updatedAt',_0x0813('0x29'),_0x0813('0x2a')]);var _0x2931da=![];if(_0x54b271['body']['id']){delete _0x54b271[_0x0813('0x2b')]['id'];}if(_[_0x0813('0x2c')](_0x54b271['body'][_0x0813('0x2d')])){return _0x23036d(_0x4c4f29[_0x0813('0x15')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x0813('0x2c')](_0x54b271['body'][_0x0813('0x2b')])||_0x54b271[_0x0813('0x2b')][_0x0813('0x2b')]===''){return _0x23036d(_0x4c4f29['error'](0x1f4,_0x0813('0x2e')));}if(_['isNil'](_0x54b271[_0x0813('0x2b')][_0x0813('0x2f')])){return _0x23036d(_0x4c4f29[_0x0813('0x15')](0x1f4,_0x0813('0x30')+_0x15b4aa));}if(!_[_0x0813('0x31')](_0x15b4aa,_0x54b271[_0x0813('0x2b')]['mapKey'])){return _0x23036d(_0x4c4f29[_0x0813('0x15')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x15b4aa));}var _0x182154={};_0x182154[_0x54b271['body']['mapKey']]=_0x54b271['body'][_0x0813('0x2d')];return db[_0x0813('0x32')][_0x0813('0x33')]({'where':{'id':_0x54b271[_0x0813('0x34')]['id']},'include':[{'model':db[_0x0813('0x35')],'as':_0x0813('0x36'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x182154,'limit':0x1,'order':[[_0x0813('0x37'),_0x0813('0x38')]]}]},{'model':db[_0x0813('0x39')],'as':_0x0813('0x3a')},{'model':db[_0x0813('0x3b')],'as':_0x0813('0x3c')}]})[_0x0813('0xf')](function(_0x436819){if(_0x436819&&_0x436819['List']){var _0x405529=_0x436819[_0x0813('0x3d')]({'plain':!![]});_0xee399[_0x0813('0x34')]=_[_0x0813('0x3e')](_0x405529,[_0x0813('0x3a'),_0x0813('0x36')]);_0xee399['applications']=_0x405529[_0x0813('0x3a')];_0xee399['list']=_0x405529[_0x0813('0x36')];_0xee399[_0x0813('0x3f')]=_[_0x0813('0x40')](_0xee399[_0x0813('0x3f')],['priority'],[_0x0813('0x41')]);if(_0xee399[_0x0813('0x34')]&&_0xee399[_0x0813('0x34')][_0x0813('0x42')]){_0xee399['applications'][_0x0813('0x43')]({'id':0x0,'priority':_0xee399[_0x0813('0x3f')]['length']+0x1,'app':'close','appdata':_0x0813('0x42'),'interval':_0x0813('0x44')});}if(_0xee399[_0x0813('0x34')]['Applications']){delete _0xee399['account']['Applications'];}if(_0xee399['account'][_0x0813('0x36')]){delete _0xee399[_0x0813('0x34')][_0x0813('0x36')];}if(_0x405529[_0x0813('0x36')]['Contacts'][_0x0813('0x45')]){return _0x405529[_0x0813('0x36')]['Contacts'][0x0];}var _0x50047d=_[_0x0813('0xb')](_0x54b271['body'],{'firstName':_0x54b271[_0x0813('0x2b')][_0x0813('0x2d')],'ListId':_0x405529[_0x0813('0x2a')]});_0x50047d[_0x54b271['body'][_0x0813('0x2f')]]=_0x54b271[_0x0813('0x2b')][_0x0813('0x2d')];return db[_0x0813('0x26')][_0x0813('0x46')](_0x50047d);}else{throw new Error(_0x0813('0x47'));}})['then'](function(_0x50733e){_0xee399[_0x0813('0x48')]=_0x50733e;if(_0x50733e){if(!_0x54b271[_0x0813('0x2b')][_0x0813('0x17')][_0x0813('0x49')]){_0x54b271['body'][_0x0813('0x17')]['messageId']=rs[_0x0813('0x4a')]()+'\x20'+_0x54b271[_0x0813('0x2b')][_0x0813('0x17')][_0x0813('0x2d')];}var _0x19b183={'ContactId':_0x50733e['id'],'MailAccountId':_0x54b271[_0x0813('0x34')]['id'],'inReplyTo':_0x54b271[_0x0813('0x2b')][_0x0813('0x17')]['messageId'],'to':_0x54b271[_0x0813('0x2b')][_0x0813('0x17')][_0x0813('0x2d')],'cc':_0x54b271[_0x0813('0x2b')][_0x0813('0x17')]['cc'],'subject':_0x54b271[_0x0813('0x2b')][_0x0813('0x17')]['subject'],'attach':_0x54b271[_0x0813('0x2b')][_0x0813('0x17')][_0x0813('0x4b')],'lastMsgAt':moment()['format'](_0x0813('0x4c')),'lastMsgDirection':'in','lastMsgBody':_0x54b271[_0x0813('0x2b')][_0x0813('0x2b')]};return db[_0x0813('0x4d')][_0x0813('0x33')]({'where':{'closed':![],'MailAccountId':_0x54b271[_0x0813('0x34')]['id']},'include':[{'model':db[_0x0813('0x4e')],'as':_0x0813('0x4f'),'attributes':[_0x0813('0x49')],'where':{'messageId':_0x54b271[_0x0813('0x2b')][_0x0813('0x17')]['inReplyTo']}}]})[_0x0813('0xf')](function(_0x26045c){if(_0x26045c){return[_0x26045c,![]];}return db['MailInteraction'][_0x0813('0x46')](_0x19b183)['then'](function(_0x477844){return[_0x477844,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x523fbe,_0x24eab3){if(_0x523fbe){_0x2931da=_0x24eab3;if(!_0x24eab3){return _0x523fbe[_0x0813('0x50')]({'inReplyTo':_0x54b271[_0x0813('0x2b')]['message'][_0x0813('0x49')],'to':_0x54b271['body']['message'][_0x0813('0x2d')],'cc':_0x54b271['body'][_0x0813('0x17')]['cc'],'subject':_0x54b271[_0x0813('0x2b')][_0x0813('0x17')][_0x0813('0x51')],'attach':_0x523fbe[_0x0813('0x4b')]?_0x523fbe[_0x0813('0x4b')]:_0x54b271[_0x0813('0x2b')][_0x0813('0x17')][_0x0813('0x4b')],'substatus':null,'substatusAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()['format'](_0x0813('0x4c')),'lastMsgDirection':'in','lastMsgBody':_0x54b271[_0x0813('0x2b')][_0x0813('0x2b')]});}else{return _0x523fbe;}}})[_0x0813('0xf')](function(_0x33c215){_0xee399['interaction']=_0x33c215['get']({'plain':!![]});_0xee399[_0x0813('0x52')]['created']=_0x2931da;return db[_0x0813('0x4e')]['create']({'body':_0x54b271[_0x0813('0x2b')][_0x0813('0x2b')],'MailAccountId':_0x54b271['account']['id'],'MailInteractionId':_0x33c215['id'],'direction':'in','ContactId':_0xee399['contact']['id'],'messageId':_0x54b271[_0x0813('0x2b')][_0x0813('0x17')][_0x0813('0x49')],'from':_0x54b271['body'][_0x0813('0x17')][_0x0813('0x2d')],'to':_0x54b271['body'][_0x0813('0x17')]['to'],'cc':_0x54b271[_0x0813('0x2b')]['message']['cc'],'subject':_0x54b271[_0x0813('0x2b')][_0x0813('0x17')][_0x0813('0x51')],'attach':_0x54b271['body'][_0x0813('0x17')][_0x0813('0x4b')],'Attachments':_0x54b271['body'][_0x0813('0x17')][_0x0813('0x53')],'originTo':_0x54b271[_0x0813('0x2b')][_0x0813('0x17')][_0x0813('0x54')],'originCc':_0x54b271[_0x0813('0x2b')]['message'][_0x0813('0x55')],'bcc':_0x54b271[_0x0813('0x2b')]['message']['bcc']},{'include':[{'model':db[_0x0813('0x56')],'as':_0x0813('0x57')}]});})[_0x0813('0xf')](function(_0xbbf167){_0xee399['message']=_0xbbf167;if(_0xee399['interaction'][_0x0813('0x58')]){return db[_0x0813('0x59')][_0x0813('0x33')]({'attributes':['id','name'],'where':{'id':_0xee399[_0x0813('0x52')][_0x0813('0x58')]}})[_0x0813('0xf')](function(_0x361cf5){if(_0x361cf5){_0xee399['applications'][_0x0813('0x5a')]({'id':0x0,'priority':0x0,'app':_0x0813('0x5b'),'appdata':_0x361cf5[_0x0813('0x5c')]+','+(_0xee399[_0x0813('0x34')][_0x0813('0x5d')]||0xa),'interval':_0x0813('0x44')});}return respondWithRpcPromise(_0x0813('0x5e'),_0x0813('0x5f'),_0xee399);});}return respondWithRpcPromise(_0x0813('0x5e'),_0x0813('0x5f'),_0xee399);})[_0x0813('0xf')](function(_0x154b23){_0x5af8be(_0x154b23);})[_0x0813('0x21')](function(_0x21afd0){_0x23036d(_0x4c4f29[_0x0813('0x15')](0x1f4,_0x21afd0[_0x0813('0x17')]));});});};