ae13567978e5f5da31c93a405dd00e1f27ec5ce2
[motion2.git] / server / api / mailInteraction / mailInteraction.controller.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 _0xc2d9=['Bcc','Attachments','basename','build','message%d.eml','unlinkSync','eml-format','rimraf','moment','bluebird','util','path','lodash','juice','../../components/interaction/service','../../components/parsers/qs','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','end','offset','undefined','count','status','set','Content-Range','json','update','then','destroy','name','map','MailInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','query','user','catch','params','keys','filters','intersection','model','attributes','fields','includeAll','merge','options','create','body','find','describe','addMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','limit','order','sort','where','pick','MailInteractionId','filter','split','format','MailMessage','inlineCss','length','rows','addTags','setTags','spread','Tag','unix','toString','join','root','server','tmp','files','attachments','push','Attachment','Messages','bcc','subject','createdAt','get','mkdirSync','each','missing.recipient@your.company.com','decode','headers'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0xc2d9,0x144));var _0x9c2d=function(_0x2e4774,_0x44bec2){_0x2e4774=_0x2e4774-0x0;var _0x327525=_0xc2d9[_0x2e4774];return _0x327525;};'use strict';var emlformat=require(_0x9c2d('0x0'));var rimraf=require(_0x9c2d('0x1'));var zipdir=require('zip-dir');var moment=require(_0x9c2d('0x2'));var BPromise=require(_0x9c2d('0x3'));var util=require(_0x9c2d('0x4'));var path=require(_0x9c2d('0x5'));var fs=require('fs');var _=require(_0x9c2d('0x6'));var juice=require(_0x9c2d('0x7'));var Redis=require('ioredis');var interaction=require(_0x9c2d('0x8'));var qs=require(_0x9c2d('0x9'));var logger=require('../../config/logger')(_0x9c2d('0xa'));var config=require('../../config/environment');var db=require(_0x9c2d('0xb'))['db'];var htmlEntities=require('html-entities');config[_0x9c2d('0xc')]=_[_0x9c2d('0xd')](config[_0x9c2d('0xc')],{'host':_0x9c2d('0xe'),'port':0x18eb});var socket=require(_0x9c2d('0xf'))(new Redis(config['redis']));require(_0x9c2d('0x10'))[_0x9c2d('0x11')](socket);function respondWithStatusCode(_0x5c44e5,_0x210b72){_0x210b72=_0x210b72||0xcc;return function(_0xee0b8){if(_0xee0b8){return _0x5c44e5[_0x9c2d('0x12')](_0x210b72);}return _0x5c44e5['status'](_0x210b72)[_0x9c2d('0x13')]();};}function respondWithResult(_0x2ab2b8,_0x52e798){_0x52e798=_0x52e798||0xc8;return function(_0x27f6cd){if(_0x27f6cd){return _0x2ab2b8['status'](_0x52e798)['json'](_0x27f6cd);}};}function respondWithFilteredResult(_0x15d0cc,_0x109165){return function(_0x1aacaa){if(_0x1aacaa){var _0x1514c4=typeof _0x109165[_0x9c2d('0x14')]===_0x9c2d('0x15')&&typeof _0x109165['limit']===_0x9c2d('0x15');var _0x555866=_0x1aacaa[_0x9c2d('0x16')];var _0x3fe657=_0x1514c4?0x0:_0x109165[_0x9c2d('0x14')];var _0x5e4720=_0x1514c4?_0x1aacaa['count']:_0x109165['offset']+_0x109165['limit'];var _0x5ae5b4;if(_0x5e4720>=_0x555866){_0x5e4720=_0x555866;_0x5ae5b4=0xc8;}else{_0x5ae5b4=0xce;}_0x15d0cc[_0x9c2d('0x17')](_0x5ae5b4);return _0x15d0cc[_0x9c2d('0x18')](_0x9c2d('0x19'),_0x3fe657+'-'+_0x5e4720+'/'+_0x555866)[_0x9c2d('0x1a')](_0x1aacaa);}return null;};}function saveUpdates(_0xb75a65){return function(_0x2fc7f9){if(_0x2fc7f9){return _0x2fc7f9[_0x9c2d('0x1b')](_0xb75a65)[_0x9c2d('0x1c')](function(_0x5ac8d4){return _0x5ac8d4;});}return null;};}function removeEntity(_0x4d6f48){return function(_0x9e1750){if(_0x9e1750){return _0x9e1750[_0x9c2d('0x1d')]()[_0x9c2d('0x1c')](function(){_0x4d6f48[_0x9c2d('0x17')](0xcc)[_0x9c2d('0x13')]();});}};}function handleEntityNotFound(_0x582a9a){return function(_0x57cc9f){if(!_0x57cc9f){_0x582a9a[_0x9c2d('0x12')](0x194);}return _0x57cc9f;};}function handleError(_0x4ecdbd,_0x13c72f){_0x13c72f=_0x13c72f||0x1f4;return function(_0x2250b5){logger['error'](_0x2250b5['stack']);if(_0x2250b5[_0x9c2d('0x1e')]){delete _0x2250b5[_0x9c2d('0x1e')];}_0x4ecdbd[_0x9c2d('0x17')](_0x13c72f)['send'](_0x2250b5);};}exports['index']=function(_0xd302b8,_0x27819e){var _0x966b07={};var _0x5cfdc0=_[_0x9c2d('0x1f')](db[_0x9c2d('0x20')][_0x9c2d('0x21')],function(_0x53581c){return{'name':_0x53581c[_0x9c2d('0x22')],'type':_0x53581c[_0x9c2d('0x23')][_0x9c2d('0x24')]};});_0x966b07=qs[_0x9c2d('0x25')](_0x5cfdc0,_0xd302b8);return interaction[_0x9c2d('0x26')]('mail',_0xd302b8[_0x9c2d('0x27')],_0xd302b8[_0x9c2d('0x28')],_0x966b07,_0x5cfdc0)['then'](respondWithFilteredResult(_0x27819e,_0x966b07))[_0x9c2d('0x29')](handleError(_0x27819e,null));};exports['show']=function(_0x4be854,_0x5327e0){var _0x3f344b={'raw':![],'where':{'id':_0x4be854[_0x9c2d('0x2a')]['id']}},_0x12df32={};_0x12df32['model']=_[_0x9c2d('0x2b')](db[_0x9c2d('0x20')][_0x9c2d('0x21')]);_0x12df32[_0x9c2d('0x27')]=_[_0x9c2d('0x2b')](_0x4be854[_0x9c2d('0x27')]);_0x12df32[_0x9c2d('0x2c')]=_[_0x9c2d('0x2d')](_0x12df32[_0x9c2d('0x2e')],_0x12df32[_0x9c2d('0x27')]);_0x3f344b[_0x9c2d('0x2f')]=_['intersection'](_0x12df32[_0x9c2d('0x2e')],qs[_0x9c2d('0x30')](_0x4be854[_0x9c2d('0x27')]['fields']));_0x3f344b[_0x9c2d('0x2f')]=_0x3f344b[_0x9c2d('0x2f')]['length']?_0x3f344b[_0x9c2d('0x2f')]:_0x12df32[_0x9c2d('0x2e')];if(_0x4be854[_0x9c2d('0x27')][_0x9c2d('0x31')]){_0x3f344b['include']=[{'all':!![]}];}_0x3f344b=_[_0x9c2d('0x32')]({},_0x3f344b,_0x4be854[_0x9c2d('0x33')]);return db[_0x9c2d('0x20')]['find'](_0x3f344b)[_0x9c2d('0x1c')](handleEntityNotFound(_0x5327e0,null))[_0x9c2d('0x1c')](respondWithResult(_0x5327e0,null))[_0x9c2d('0x29')](handleError(_0x5327e0,null));};exports[_0x9c2d('0x34')]=function(_0x54ed04,_0x18d0a6){return db[_0x9c2d('0x20')][_0x9c2d('0x34')](_0x54ed04[_0x9c2d('0x35')],{})[_0x9c2d('0x1c')](respondWithResult(_0x18d0a6,0xc9))[_0x9c2d('0x29')](handleError(_0x18d0a6,null));};exports[_0x9c2d('0x1b')]=function(_0x5149c1,_0x2ff1a3){if(_0x5149c1[_0x9c2d('0x35')]['id']){delete _0x5149c1['body']['id'];}return db[_0x9c2d('0x20')][_0x9c2d('0x36')]({'where':{'id':_0x5149c1[_0x9c2d('0x2a')]['id']}})[_0x9c2d('0x1c')](handleEntityNotFound(_0x2ff1a3,null))[_0x9c2d('0x1c')](saveUpdates(_0x5149c1[_0x9c2d('0x35')],null))['then'](respondWithResult(_0x2ff1a3,null))[_0x9c2d('0x29')](handleError(_0x2ff1a3,null));};exports[_0x9c2d('0x1d')]=function(_0x208ac8,_0x10a3ac){return db[_0x9c2d('0x20')][_0x9c2d('0x36')]({'where':{'id':_0x208ac8[_0x9c2d('0x2a')]['id']}})['then'](handleEntityNotFound(_0x10a3ac,null))[_0x9c2d('0x1c')](removeEntity(_0x10a3ac,null))[_0x9c2d('0x29')](handleError(_0x10a3ac,null));};exports[_0x9c2d('0x37')]=function(_0x58a5ac,_0x5143ad){return db[_0x9c2d('0x20')][_0x9c2d('0x37')]()['then'](respondWithResult(_0x5143ad,null))[_0x9c2d('0x29')](handleError(_0x5143ad,null));};exports[_0x9c2d('0x38')]=function(_0x51b08c,_0x37d636){return db['MailMessage']['find']({'where':{'id':_0x51b08c[_0x9c2d('0x2a')]['id']}})[_0x9c2d('0x1c')](handleEntityNotFound(_0x37d636,null))['then'](function(_0x26f5b8){if(_0x26f5b8){return _0x26f5b8[_0x9c2d('0x38')](_0x51b08c['body'][_0x9c2d('0x39')],_[_0x9c2d('0x3a')](_0x51b08c[_0x9c2d('0x35')],['ids','id'])||{});}})[_0x9c2d('0x1c')](respondWithResult(_0x37d636,null))[_0x9c2d('0x29')](handleError(_0x37d636,null));};exports[_0x9c2d('0x3b')]=function(_0x43e8cd,_0x50d0e2){var _0x43a98a={'raw':![],'where':{}};var _0x15ca9b={};var _0x252846={'count':0x0,'rows':[]};return db[_0x9c2d('0x20')][_0x9c2d('0x3c')]({'where':{'id':_0x43e8cd[_0x9c2d('0x2a')]['id']}})[_0x9c2d('0x1c')](handleEntityNotFound(_0x50d0e2,null))[_0x9c2d('0x1c')](function(_0x6caa93){if(_0x6caa93){_0x15ca9b[_0x9c2d('0x2e')]=_[_0x9c2d('0x2b')](db['MailMessage'][_0x9c2d('0x21')]);_0x15ca9b[_0x9c2d('0x27')]=_[_0x9c2d('0x2b')](_0x43e8cd[_0x9c2d('0x27')]);_0x15ca9b[_0x9c2d('0x2c')]=_[_0x9c2d('0x2d')](_0x15ca9b[_0x9c2d('0x2e')],_0x15ca9b['query']);_0x43a98a[_0x9c2d('0x2f')]=_[_0x9c2d('0x2d')](_0x15ca9b[_0x9c2d('0x2e')],qs[_0x9c2d('0x30')](_0x43e8cd[_0x9c2d('0x27')][_0x9c2d('0x30')]));_0x43a98a[_0x9c2d('0x2f')]=_0x43a98a[_0x9c2d('0x2f')]['length']?_0x43a98a['attributes']:_0x15ca9b[_0x9c2d('0x2e')];if(!_0x43e8cd['query'][_0x9c2d('0x3d')](_0x9c2d('0x3e'))){_0x43a98a[_0x9c2d('0x3f')]=qs[_0x9c2d('0x3f')](_0x43e8cd[_0x9c2d('0x27')][_0x9c2d('0x3f')]);_0x43a98a[_0x9c2d('0x14')]=qs[_0x9c2d('0x14')](_0x43e8cd[_0x9c2d('0x27')][_0x9c2d('0x14')]);}_0x43a98a[_0x9c2d('0x40')]=qs[_0x9c2d('0x41')](_0x43e8cd[_0x9c2d('0x27')][_0x9c2d('0x41')]);_0x43a98a[_0x9c2d('0x42')]=qs[_0x9c2d('0x2c')](_[_0x9c2d('0x43')](_0x43e8cd[_0x9c2d('0x27')],_0x15ca9b[_0x9c2d('0x2c')]));_0x43a98a[_0x9c2d('0x42')][_0x9c2d('0x44')]=_0x6caa93['id'];if(_0x43e8cd[_0x9c2d('0x27')][_0x9c2d('0x45')]){_0x43a98a['where']=_[_0x9c2d('0x32')](_0x43a98a[_0x9c2d('0x42')],{'$or':_[_0x9c2d('0x1f')](_0x43a98a['attributes'],function(_0x2b73c5){var _0x3f9137={};_0x3f9137[_0x2b73c5]={'$like':'%'+_0x43e8cd[_0x9c2d('0x27')][_0x9c2d('0x45')]+'%'};return _0x3f9137;})});}if(_0x43e8cd[_0x9c2d('0x27')]['$gte']){var _0x1bcb78=_0x43e8cd[_0x9c2d('0x27')]['$gte'][_0x9c2d('0x46')](',');var _0x5b2a5f={};_0x5b2a5f[_0x1bcb78[0x0]]={'$gte':moment(_0x1bcb78[0x1])[_0x9c2d('0x47')]('YYYY-MM-DD\x20HH:mm:ss')};_0x43a98a[_0x9c2d('0x42')]=_[_0x9c2d('0x32')](_0x43a98a[_0x9c2d('0x42')],_0x5b2a5f);}_0x43a98a=_[_0x9c2d('0x32')]({},_0x43a98a,_0x43e8cd[_0x9c2d('0x33')]);return db[_0x9c2d('0x48')][_0x9c2d('0x16')]({'where':_0x43a98a['where']})['then'](function(_0x48e7fd){_0x252846[_0x9c2d('0x16')]=_0x48e7fd;if(_0x43e8cd[_0x9c2d('0x27')][_0x9c2d('0x31')]){_0x43a98a['include']=[{'all':!![]}];}return db[_0x9c2d('0x48')][_0x9c2d('0x26')](_0x43a98a);})[_0x9c2d('0x1c')](function(_0x2fdb36){if(_0x43e8cd[_0x9c2d('0x27')][_0x9c2d('0x49')]==='true'){for(var _0x286dc5=0x0;_0x286dc5<_0x2fdb36[_0x9c2d('0x4a')];_0x286dc5++){_0x2fdb36[_0x286dc5][_0x9c2d('0x35')]=juice(_0x2fdb36[_0x286dc5][_0x9c2d('0x35')]);}}_0x252846[_0x9c2d('0x4b')]=_0x2fdb36;return _0x252846;});}})[_0x9c2d('0x1c')](respondWithFilteredResult(_0x50d0e2,_0x43a98a))[_0x9c2d('0x29')](handleError(_0x50d0e2,null));};exports[_0x9c2d('0x4c')]=function(_0x31fd3e,_0x56ab30){return db['MailInteraction'][_0x9c2d('0x36')]({'where':{'id':_0x31fd3e[_0x9c2d('0x2a')]['id']}})[_0x9c2d('0x1c')](handleEntityNotFound(_0x56ab30,null))[_0x9c2d('0x1c')](function(_0x38b0f4){if(_0x38b0f4){return _0x38b0f4[_0x9c2d('0x4d')](_0x31fd3e[_0x9c2d('0x35')]['ids'],_[_0x9c2d('0x3a')](_0x31fd3e['body'],[_0x9c2d('0x39'),'id'])||{})[_0x9c2d('0x4e')](function(){return db[_0x9c2d('0x4f')][_0x9c2d('0x26')]({'attributes':['id',_0x9c2d('0x1e'),'color'],'where':{'id':_0x31fd3e['body'][_0x9c2d('0x39')]}});})['then'](function(_0x217d6b){socket['emit']('mailInteractionTags:save',{'id':Number(_0x31fd3e[_0x9c2d('0x2a')]['id']),'tags':_0x217d6b||[]});return{'id':Number(_0x31fd3e[_0x9c2d('0x2a')]['id']),'tags':_0x217d6b||[]};});}})['then'](respondWithResult(_0x56ab30,null))[_0x9c2d('0x29')](handleError(_0x56ab30,null));};exports['removeTags']=function(_0x1bb9d0,_0x28d0f5){return db['MailInteraction'][_0x9c2d('0x36')]({'where':{'id':_0x1bb9d0[_0x9c2d('0x2a')]['id']}})[_0x9c2d('0x1c')](handleEntityNotFound(_0x28d0f5,null))[_0x9c2d('0x1c')](function(_0x16e2bf){if(_0x16e2bf){return _0x16e2bf['removeTags'](_0x1bb9d0[_0x9c2d('0x27')]['ids']);}})[_0x9c2d('0x1c')](respondWithStatusCode(_0x28d0f5,null))[_0x9c2d('0x29')](handleError(_0x28d0f5,null));};exports['download']=function(_0x29ce78,_0x32f2b3){var _0x35a4e8=moment()[_0x9c2d('0x50')]()[_0x9c2d('0x51')]();var _0x46508c=path[_0x9c2d('0x52')](config[_0x9c2d('0x53')],_0x9c2d('0x54'),'files',_0x9c2d('0x55'));var _0x4b4413=path[_0x9c2d('0x52')](config[_0x9c2d('0x53')],_0x9c2d('0x54'),_0x9c2d('0x56'),_0x9c2d('0x57'));var _0x2d78ae=path[_0x9c2d('0x52')](_0x46508c,_0x35a4e8);var _0x2deba7=util['format']('transcript-%d-%s.zip',_0x29ce78[_0x9c2d('0x2a')]['id'],_0x35a4e8);var _0x5bdf7b=path[_0x9c2d('0x52')](_0x46508c,_0x2deba7);var _0x96546d=[];if(_0x29ce78['query']['attachments']){_0x96546d[_0x9c2d('0x58')]({'model':db[_0x9c2d('0x59')],'as':'Attachments','raw':!![]});}var _0x2c345c=[{'model':db['MailMessage'],'as':_0x9c2d('0x5a'),'attributes':['id','body','from','to','cc',_0x9c2d('0x5b'),_0x9c2d('0x5c'),_0x9c2d('0x5d')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x96546d}];return db[_0x9c2d('0x20')][_0x9c2d('0x36')]({'where':{'id':_0x29ce78[_0x9c2d('0x2a')]['id']},'include':_0x2c345c})[_0x9c2d('0x1c')](handleEntityNotFound(_0x32f2b3,null))[_0x9c2d('0x1c')](function(_0x3c5556){if(_0x3c5556&&_0x3c5556[_0x9c2d('0x5a')]){var _0x3d4ceb=_0x3c5556[_0x9c2d('0x5e')]({'plain':!![]});fs[_0x9c2d('0x5f')](_0x2d78ae);return BPromise[_0x9c2d('0x60')](_0x3d4ceb[_0x9c2d('0x5a')],function(_0x3efea3,_0x19cb70){var _0x3a5dcf={'from':_0x3efea3['from'],'to':_0x3efea3['to']||_0x9c2d('0x61'),'subject':_0x3efea3[_0x9c2d('0x5c')],'html':htmlEntities[_0x9c2d('0x62')](_0x3efea3[_0x9c2d('0x35')]),'headers':{'Date':moment(_0x3efea3[_0x9c2d('0x5d')])[_0x9c2d('0x47')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x3efea3['cc']){_0x3a5dcf[_0x9c2d('0x63')]['Cc']=_0x3efea3['cc'];}if(_0x3efea3[_0x9c2d('0x5b')]){_0x3a5dcf['headers'][_0x9c2d('0x64')]=_0x3efea3['bcc'];}return new BPromise(function(_0x3a6e8a,_0x5b8b11){if(_0x3efea3[_0x9c2d('0x65')]){for(var _0x3e479c=0x0;_0x3e479c<_0x3efea3[_0x9c2d('0x65')][_0x9c2d('0x4a')];_0x3e479c++){var _0xf2a276=_0x3efea3[_0x9c2d('0x65')][_0x3e479c];var _0x402337=path[_0x9c2d('0x52')](_0x4b4413,_0xf2a276[_0x9c2d('0x66')]);if(fs['existsSync'](_0x402337)){_0x3a5dcf[_0x9c2d('0x57')][_0x9c2d('0x58')]({'name':_0xf2a276['name'],'contentType':_0xf2a276['type'],'data':fs['readFileSync'](_0x402337)});}}}emlformat[_0x9c2d('0x67')](_0x3a5dcf,function(_0x76d1b2,_0x1514db){if(_0x76d1b2)return _0x5b8b11(_0x76d1b2);fs['writeFileSync'](path[_0x9c2d('0x52')](_0x2d78ae,util[_0x9c2d('0x47')](_0x9c2d('0x68'),_0x19cb70)),_0x1514db);return _0x3a6e8a(_0x1514db);});});})[_0x9c2d('0x1c')](function(){return new BPromise(function(_0x51708d,_0x5ce892){zipdir(_0x2d78ae,{'saveTo':_0x5bdf7b},function(_0x4b8eda,_0x415fc7){if(_0x4b8eda)return _0x5ce892(_0x4b8eda);return _0x51708d(_0x415fc7);});})['then'](function(){return new BPromise(function(_0x23eedc,_0xbf42b9){rimraf(_0x2d78ae,function(_0xb15a3b){if(_0xb15a3b)_0xbf42b9(_0xb15a3b);return _0x23eedc();});});})[_0x9c2d('0x1c')](function(){return _0x32f2b3['download'](_0x5bdf7b,_0x2deba7,function(_0x22bb0c){if(!_0x22bb0c)fs[_0x9c2d('0x69')](_0x5bdf7b);});});});}else{return _0x32f2b3[_0x9c2d('0x12')](0xc8);}})[_0x9c2d('0x29')](handleError(_0x32f2b3,null));};