61cc92d6efc4a79e2c02285f0bcb983c5b86953a
[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 _0xf56e=['body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','find','account','List','DESC','MailApplication','omit','Applications','applications','list','orderBy','priority','asc','autoclose','push','length','close','*,*,*,*','Contacts','create','List\x20not\x20found','contact','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','inReplyTo','Contact\x20not\x20found','spread','interaction','MailMessage','attachments','originTo','originCc','originChannel','Email','ChatOfflineMessageId','Attachments','User','name','unshift','Start','startRouting','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./mailAccount.socket','register','request','then','info','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailAccount,\x20%s,\x20%s','catch','GetMailAccount','MailAccount','options','raw','limit','include','map','model','attributes','ShowMailAccount','NotifyMailAccount','body','mail','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','isNil','from\x20is\x20mandatory'];(function(_0x17b94e,_0x1b2f59){var _0x14ab53=function(_0x4cdf1f){while(--_0x4cdf1f){_0x17b94e['push'](_0x17b94e['shift']());}};_0x14ab53(++_0x1b2f59);}(_0xf56e,0x97));var _0xef56=function(_0x27b2b1,_0x23466d){_0x27b2b1=_0x27b2b1-0x0;var _0x44640e=_0xf56e[_0x27b2b1];return _0x44640e;};'use strict';var _=require(_0xef56('0x0'));var util=require(_0xef56('0x1'));var moment=require(_0xef56('0x2'));var BPromise=require(_0xef56('0x3'));var rs=require(_0xef56('0x4'));var fs=require('fs');var Redis=require(_0xef56('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xef56('0x6'));var logger=require(_0xef56('0x7'))('rpc');var config=require(_0xef56('0x8'));var jayson=require(_0xef56('0x9'));var client=jayson['client'][_0xef56('0xa')]({'port':0x232c});config['redis']=_[_0xef56('0xb')](config[_0xef56('0xc')],{'host':_0xef56('0xd'),'port':0x18eb});var socket=require(_0xef56('0xe'))(new Redis(config[_0xef56('0xc')]));require(_0xef56('0xf'))[_0xef56('0x10')](socket);function respondWithRpcPromise(_0x30abdf,_0x371c62,_0x1e33ca){return new BPromise(function(_0x17fabb,_0x17d2c6){return client[_0xef56('0x11')](_0x30abdf,_0x1e33ca)[_0xef56('0x12')](function(_0x4b0395){logger[_0xef56('0x13')]('MailAccount,\x20%s,\x20%s',_0x371c62,_0xef56('0x14'));logger[_0xef56('0x15')](_0xef56('0x16'),_0x371c62,'request\x20sent',JSON[_0xef56('0x17')](_0x4b0395));if(_0x4b0395[_0xef56('0x18')]){if(_0x4b0395[_0xef56('0x18')][_0xef56('0x19')]===0x1f4){logger['error']('MailAccount,\x20%s,\x20%s',_0x371c62,_0x4b0395['error']['message']);return _0x17d2c6(_0x4b0395['error'][_0xef56('0x1a')]);}logger[_0xef56('0x18')](_0xef56('0x1b'),_0x371c62,_0x4b0395[_0xef56('0x18')]['message']);return _0x17fabb(_0x4b0395['error'][_0xef56('0x1a')]);}else{logger[_0xef56('0x13')](_0xef56('0x1b'),_0x371c62,_0xef56('0x14'));_0x17fabb(_0x4b0395['result'][_0xef56('0x1a')]);}})[_0xef56('0x1c')](function(_0x132ce3){logger[_0xef56('0x18')](_0xef56('0x1b'),_0x371c62,_0x132ce3);_0x17d2c6(_0x132ce3);});});}exports[_0xef56('0x1d')]=function(_0x46b864){var _0x124b37=this;return new Promise(function(_0x5b5653,_0x52d5fa){return db[_0xef56('0x1e')]['findAll']({'raw':_0x46b864[_0xef56('0x1f')]?_0x46b864[_0xef56('0x1f')][_0xef56('0x20')]===undefined?!![]:![]:!![],'where':_0x46b864['options']?_0x46b864['options']['where']||null:null,'attributes':_0x46b864[_0xef56('0x1f')]?_0x46b864['options']['attributes']||null:null,'limit':_0x46b864[_0xef56('0x1f')]?_0x46b864['options'][_0xef56('0x21')]||null:null,'include':_0x46b864['options']?_0x46b864[_0xef56('0x1f')][_0xef56('0x22')]?_[_0xef56('0x23')](_0x46b864['options'][_0xef56('0x22')],function(_0x2ff14d){return{'model':db[_0x2ff14d[_0xef56('0x24')]],'as':_0x2ff14d['as'],'attributes':_0x2ff14d[_0xef56('0x25')],'include':_0x2ff14d[_0xef56('0x22')]?_['map'](_0x2ff14d['include'],function(_0x2347fa){return{'model':db[_0x2347fa['model']],'as':_0x2347fa['as'],'attributes':_0x2347fa[_0xef56('0x25')],'include':_0x2347fa['include']?_[_0xef56('0x23')](_0x2347fa[_0xef56('0x22')],function(_0x515893){return{'model':db[_0x515893['model']],'as':_0x515893['as'],'attributes':_0x515893[_0xef56('0x25')]};}):[]};}):[]};}):[]:[]})[_0xef56('0x12')](function(_0x1c4dff){logger[_0xef56('0x13')](_0xef56('0x1d'),_0x46b864);logger['debug']('GetMailAccount',_0x46b864,JSON[_0xef56('0x17')](_0x1c4dff));_0x5b5653(_0x1c4dff);})[_0xef56('0x1c')](function(_0x2940ac){logger[_0xef56('0x18')](_0xef56('0x1d'),_0x2940ac['message'],_0x46b864);_0x52d5fa(_0x124b37[_0xef56('0x18')](0x1f4,_0x2940ac[_0xef56('0x1a')]));});});};exports[_0xef56('0x26')]=function(_0x453101){var _0x420258=this;return new Promise(function(_0x15b2a8,_0x525df0){return db[_0xef56('0x1e')]['find']({'raw':_0x453101[_0xef56('0x1f')]?_0x453101[_0xef56('0x1f')][_0xef56('0x20')]===undefined?!![]:![]:!![],'where':_0x453101[_0xef56('0x1f')]?_0x453101[_0xef56('0x1f')]['where']||null:null,'attributes':_0x453101['options']?_0x453101[_0xef56('0x1f')]['attributes']||null:null,'include':_0x453101[_0xef56('0x1f')]?_0x453101[_0xef56('0x1f')][_0xef56('0x22')]?_['map'](_0x453101[_0xef56('0x1f')][_0xef56('0x22')],function(_0x57436d){return{'model':db[_0x57436d[_0xef56('0x24')]],'as':_0x57436d['as'],'attributes':_0x57436d['attributes'],'include':_0x57436d[_0xef56('0x22')]?_[_0xef56('0x23')](_0x57436d['include'],function(_0x4fe4b6){return{'model':db[_0x4fe4b6[_0xef56('0x24')]],'as':_0x4fe4b6['as'],'attributes':_0x4fe4b6[_0xef56('0x25')],'include':_0x4fe4b6[_0xef56('0x22')]?_[_0xef56('0x23')](_0x4fe4b6[_0xef56('0x22')],function(_0x148b7f){return{'model':db[_0x148b7f[_0xef56('0x24')]],'as':_0x148b7f['as'],'attributes':_0x148b7f[_0xef56('0x25')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2bd361){logger[_0xef56('0x13')](_0xef56('0x26'),_0x453101);logger['debug'](_0xef56('0x26'),_0x453101,JSON[_0xef56('0x17')](_0x2bd361));_0x15b2a8(_0x2bd361);})[_0xef56('0x1c')](function(_0x3b06aa){logger['error'](_0xef56('0x26'),_0x3b06aa[_0xef56('0x1a')],_0x453101);_0x525df0(_0x420258[_0xef56('0x18')](0x1f4,_0x3b06aa[_0xef56('0x1a')]));});});};exports[_0xef56('0x27')]=function(_0x16a089){var _0x580e55=this;return new Promise(function(_0x580de4,_0x4c3a09){var _0x19951a={'body':_0x16a089[_0xef56('0x28')],'channel':_0xef56('0x29')};var _0x12e7bc=_['difference'](_[_0xef56('0x2a')](db[_0xef56('0x2b')][_0xef56('0x2c')]),[_0xef56('0x2d'),_0xef56('0x2e'),_0xef56('0x2f'),_0xef56('0x30')]);var _0x2abcb=![];if(_0x16a089[_0xef56('0x28')]['id']){delete _0x16a089[_0xef56('0x28')]['id'];}if(_[_0xef56('0x31')](_0x16a089[_0xef56('0x28')]['from'])){return _0x4c3a09(_0x580e55[_0xef56('0x18')](0x1f4,_0xef56('0x32')));}if(_['isNil'](_0x16a089[_0xef56('0x28')]['body'])||_0x16a089[_0xef56('0x28')]['body']===''){return _0x4c3a09(_0x580e55[_0xef56('0x18')](0x1f4,_0xef56('0x33')));}if(_[_0xef56('0x31')](_0x16a089[_0xef56('0x28')][_0xef56('0x34')])){return _0x4c3a09(_0x580e55['error'](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x12e7bc));}if(!_[_0xef56('0x35')](_0x12e7bc,_0x16a089[_0xef56('0x28')][_0xef56('0x34')])){return _0x4c3a09(_0x580e55[_0xef56('0x18')](0x1f4,_0xef56('0x36')+_0x12e7bc));}var _0x7c6fee={};_0x7c6fee[_0x16a089[_0xef56('0x28')][_0xef56('0x34')]]=_0x16a089[_0xef56('0x28')][_0xef56('0x37')];return db[_0xef56('0x1e')][_0xef56('0x38')]({'where':{'id':_0x16a089[_0xef56('0x39')]['id']},'include':[{'model':db['CmList'],'as':_0xef56('0x3a'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x7c6fee,'limit':0x1,'order':[[_0xef56('0x2e'),_0xef56('0x3b')]]}]},{'model':db[_0xef56('0x3c')],'as':'Applications'},{'model':db['MailServerOut'],'as':'Smtp'}]})[_0xef56('0x12')](function(_0x1fefd6){if(_0x1fefd6&&_0x1fefd6['List']){var _0x2e6f2e=_0x1fefd6['get']({'plain':!![]});_0x19951a[_0xef56('0x39')]=_[_0xef56('0x3d')](_0x2e6f2e,[_0xef56('0x3e'),_0xef56('0x3a')]);_0x19951a[_0xef56('0x3f')]=_0x2e6f2e[_0xef56('0x3e')];_0x19951a[_0xef56('0x40')]=_0x2e6f2e[_0xef56('0x3a')];_0x19951a[_0xef56('0x3f')]=_[_0xef56('0x41')](_0x19951a['applications'],[_0xef56('0x42')],[_0xef56('0x43')]);if(_0x19951a[_0xef56('0x39')]&&_0x19951a[_0xef56('0x39')][_0xef56('0x44')]){_0x19951a[_0xef56('0x3f')][_0xef56('0x45')]({'id':0x0,'priority':_0x19951a[_0xef56('0x3f')][_0xef56('0x46')]+0x1,'app':_0xef56('0x47'),'appdata':_0xef56('0x44'),'interval':_0xef56('0x48')});}if(_0x19951a[_0xef56('0x39')][_0xef56('0x3e')]){delete _0x19951a[_0xef56('0x39')][_0xef56('0x3e')];}if(_0x19951a['account']['List']){delete _0x19951a['account'][_0xef56('0x3a')];}if(_0x2e6f2e[_0xef56('0x3a')][_0xef56('0x49')][_0xef56('0x46')]){return _0x2e6f2e[_0xef56('0x3a')]['Contacts'][0x0];}var _0x1b8986=_[_0xef56('0xb')](_0x16a089[_0xef56('0x28')],{'firstName':_0x16a089['body']['from'],'ListId':_0x2e6f2e[_0xef56('0x30')]});_0x1b8986[_0x16a089[_0xef56('0x28')][_0xef56('0x34')]]=_0x16a089['body'][_0xef56('0x37')];return db[_0xef56('0x2b')][_0xef56('0x4a')](_0x1b8986);}else{throw new Error(_0xef56('0x4b'));}})[_0xef56('0x12')](function(_0x324ab7){_0x19951a[_0xef56('0x4c')]=_0x324ab7;if(_0x324ab7){if(!_0x16a089[_0xef56('0x28')][_0xef56('0x1a')][_0xef56('0x4d')]){_0x16a089[_0xef56('0x28')]['message']['messageId']=rs[_0xef56('0x4e')]()+'\x20'+_0x16a089[_0xef56('0x28')]['message'][_0xef56('0x37')];}var _0x5b540e={'ContactId':_0x324ab7['id'],'MailAccountId':_0x16a089[_0xef56('0x39')]['id'],'inReplyTo':_0x16a089[_0xef56('0x28')]['message'][_0xef56('0x4d')],'to':_0x16a089[_0xef56('0x28')]['message'][_0xef56('0x37')],'cc':_0x16a089[_0xef56('0x28')][_0xef56('0x1a')]['cc'],'subject':_0x16a089['body'][_0xef56('0x1a')][_0xef56('0x4f')],'attach':_0x16a089[_0xef56('0x28')][_0xef56('0x1a')][_0xef56('0x50')],'lastMsgAt':moment()[_0xef56('0x51')](_0xef56('0x52')),'lastMsgDirection':'in'};return db[_0xef56('0x53')]['find']({'where':{'closed':![],'MailAccountId':_0x16a089[_0xef56('0x39')]['id']},'include':[{'model':db['MailMessage'],'as':'Messages','attributes':['messageId'],'where':{'messageId':_0x16a089[_0xef56('0x28')][_0xef56('0x1a')][_0xef56('0x54')]}}]})[_0xef56('0x12')](function(_0x31cabb){if(_0x31cabb){return[_0x31cabb,![]];}return db[_0xef56('0x53')]['create'](_0x5b540e)['then'](function(_0x4d89f9){return[_0x4d89f9,!![]];});});}else{throw new Error(_0xef56('0x55'));}})[_0xef56('0x56')](function(_0x422d71,_0x56ec9b){if(_0x422d71){_0x2abcb=_0x56ec9b;if(!_0x56ec9b){return _0x422d71['update']({'inReplyTo':_0x16a089['body'][_0xef56('0x1a')][_0xef56('0x4d')],'to':_0x16a089[_0xef56('0x28')]['message'][_0xef56('0x37')],'cc':_0x16a089[_0xef56('0x28')][_0xef56('0x1a')]['cc'],'subject':_0x16a089[_0xef56('0x28')][_0xef56('0x1a')][_0xef56('0x4f')],'attach':_0x422d71[_0xef56('0x50')]?_0x422d71[_0xef56('0x50')]:_0x16a089[_0xef56('0x28')][_0xef56('0x1a')]['attach'],'substatus':null,'substatusAt':moment()[_0xef56('0x51')](_0xef56('0x52')),'lastMsgAt':moment()[_0xef56('0x51')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x422d71;}}})[_0xef56('0x12')](function(_0x1b0f9){_0x19951a[_0xef56('0x57')]=_0x1b0f9['get']({'plain':!![]});_0x19951a[_0xef56('0x57')]['created']=_0x2abcb;return db[_0xef56('0x58')][_0xef56('0x4a')]({'body':_0x16a089[_0xef56('0x28')][_0xef56('0x28')],'MailAccountId':_0x16a089[_0xef56('0x39')]['id'],'MailInteractionId':_0x1b0f9['id'],'direction':'in','ContactId':_0x19951a[_0xef56('0x4c')]['id'],'messageId':_0x16a089[_0xef56('0x28')]['message'][_0xef56('0x4d')],'from':_0x16a089[_0xef56('0x28')]['message'][_0xef56('0x37')],'to':_0x16a089[_0xef56('0x28')][_0xef56('0x1a')]['to'],'cc':_0x16a089[_0xef56('0x28')]['message']['cc'],'subject':_0x16a089[_0xef56('0x28')][_0xef56('0x1a')]['subject'],'attach':_0x16a089[_0xef56('0x28')][_0xef56('0x1a')][_0xef56('0x50')],'Attachments':_0x16a089['body'][_0xef56('0x1a')][_0xef56('0x59')],'originTo':_0x16a089[_0xef56('0x28')][_0xef56('0x1a')][_0xef56('0x5a')],'originCc':_0x16a089['body']['message'][_0xef56('0x5b')],'bcc':_0x16a089['body'][_0xef56('0x1a')]['bcc'],'ChatWebsiteId':_0x16a089[_0xef56('0x28')][_0xef56('0x1a')]['ChatWebsiteId']||null,'originChannel':_0x16a089[_0xef56('0x28')][_0xef56('0x1a')][_0xef56('0x5c')]||_0xef56('0x5d'),'ChatOfflineMessageId':_0x16a089['body'][_0xef56('0x1a')][_0xef56('0x5e')]||null},{'include':[{'model':db['Attachment'],'as':_0xef56('0x5f')}]});})[_0xef56('0x12')](function(_0x267073){_0x19951a[_0xef56('0x1a')]=_0x267073;if(_0x19951a['interaction']['UserId']){return db[_0xef56('0x60')][_0xef56('0x38')]({'attributes':['id',_0xef56('0x61')],'where':{'id':_0x19951a[_0xef56('0x57')]['UserId']}})[_0xef56('0x12')](function(_0x1183c8){if(_0x1183c8){_0x19951a[_0xef56('0x3f')][_0xef56('0x62')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x1183c8[_0xef56('0x61')]+','+(_0x19951a[_0xef56('0x39')]['waitForTheAssignedAgent']||0xa),'interval':_0xef56('0x48')});}return respondWithRpcPromise(_0xef56('0x63'),_0xef56('0x64'),_0x19951a);});}return respondWithRpcPromise('Start',_0xef56('0x64'),_0x19951a);})['then'](function(_0x3d8c6f){_0x580de4(_0x3d8c6f);})[_0xef56('0x1c')](function(_0xe1354f){_0x4c3a09(_0x580e55[_0xef56('0x18')](0x1f4,_0xe1354f['message']));});});};