a7577f6914e459e1ec158af92bd072f1633b337a
[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 _0x91dc=['addMessage','MailMessage','ids','getMessages','findOne','filters','nolimit','order','where','MailInteractionId','filter','merge','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','findAll','inlineCss','true','rows','addTags','setTags','Tag','color','emit','mailInteractionTags:save','removeTags','unix','toString','join','files','tmp','root','server','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','from','bcc','subject','createdAt','Messages','get','each','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','existsSync','readFileSync','build','download','unlinkSync','eml-format','rimraf','zip-dir','bluebird','util','path','lodash','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','html-entities','redis','localhost','./mailInteraction.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','update','destroy','stack','name','send','index','MailInteraction','fieldName','type','key','getOptions','mail','user','then','catch','params','model','keys','rawAttributes','query','intersection','attributes','fields','length','includeAll','include','find','create','body','describe'];(function(_0x308f43,_0x525cfe){var _0x53f0cc=function(_0x1a768e){while(--_0x1a768e){_0x308f43['push'](_0x308f43['shift']());}};_0x53f0cc(++_0x525cfe);}(_0x91dc,0xad));var _0xc91d=function(_0x2528f4,_0x9ccff9){_0x2528f4=_0x2528f4-0x0;var _0x120ea3=_0x91dc[_0x2528f4];return _0x120ea3;};'use strict';var emlformat=require(_0xc91d('0x0'));var rimraf=require(_0xc91d('0x1'));var zipdir=require(_0xc91d('0x2'));var moment=require('moment');var BPromise=require(_0xc91d('0x3'));var util=require(_0xc91d('0x4'));var path=require(_0xc91d('0x5'));var fs=require('fs');var _=require(_0xc91d('0x6'));var juice=require(_0xc91d('0x7'));var Redis=require(_0xc91d('0x8'));var interaction=require(_0xc91d('0x9'));var qs=require(_0xc91d('0xa'));var logger=require(_0xc91d('0xb'))('api');var config=require(_0xc91d('0xc'));var db=require(_0xc91d('0xd'))['db'];var htmlEntities=require(_0xc91d('0xe'));config[_0xc91d('0xf')]=_['defaults'](config['redis'],{'host':_0xc91d('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc91d('0xf')]));require(_0xc91d('0x11'))[_0xc91d('0x12')](socket);function respondWithStatusCode(_0x2f1310,_0x1f7c8b){_0x1f7c8b=_0x1f7c8b||0xcc;return function(_0x59e21e){if(_0x59e21e){return _0x2f1310[_0xc91d('0x13')](_0x1f7c8b);}return _0x2f1310[_0xc91d('0x14')](_0x1f7c8b)[_0xc91d('0x15')]();};}function respondWithResult(_0x58396c,_0x16432c){_0x16432c=_0x16432c||0xc8;return function(_0x38cb59){if(_0x38cb59){return _0x58396c[_0xc91d('0x14')](_0x16432c)[_0xc91d('0x16')](_0x38cb59);}};}function respondWithFilteredResult(_0x5501f2,_0x533365){return function(_0x262df9){if(_0x262df9){var _0x4b5d24=typeof _0x533365[_0xc91d('0x17')]===_0xc91d('0x18')&&typeof _0x533365['limit']==='undefined';var _0x5c4092=_0x262df9[_0xc91d('0x19')];var _0x401253=_0x4b5d24?0x0:_0x533365[_0xc91d('0x17')];var _0x1e083c=_0x4b5d24?_0x262df9[_0xc91d('0x19')]:_0x533365['offset']+_0x533365[_0xc91d('0x1a')];var _0x28944f;if(_0x1e083c>=_0x5c4092){_0x1e083c=_0x5c4092;_0x28944f=0xc8;}else{_0x28944f=0xce;}_0x5501f2[_0xc91d('0x14')](_0x28944f);return _0x5501f2[_0xc91d('0x1b')](_0xc91d('0x1c'),_0x401253+'-'+_0x1e083c+'/'+_0x5c4092)[_0xc91d('0x16')](_0x262df9);}return null;};}function saveUpdates(_0x4ccddb){return function(_0x41212c){if(_0x41212c){return _0x41212c[_0xc91d('0x1d')](_0x4ccddb)['then'](function(_0x1a919e){return _0x1a919e;});}return null;};}function removeEntity(_0x341230){return function(_0x216d22){if(_0x216d22){return _0x216d22[_0xc91d('0x1e')]()['then'](function(){_0x341230['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xac685f){return function(_0x309680){if(!_0x309680){_0xac685f[_0xc91d('0x13')](0x194);}return _0x309680;};}function handleError(_0xefb353,_0x282ee5){_0x282ee5=_0x282ee5||0x1f4;return function(_0x1c8980){logger['error'](_0x1c8980[_0xc91d('0x1f')]);if(_0x1c8980[_0xc91d('0x20')]){delete _0x1c8980['name'];}_0xefb353[_0xc91d('0x14')](_0x282ee5)[_0xc91d('0x21')](_0x1c8980);};}exports[_0xc91d('0x22')]=function(_0x16b44b,_0x1da967){var _0x51dc21={};var _0x4d57a1=_['map'](db[_0xc91d('0x23')]['rawAttributes'],function(_0x1e6e09){return{'name':_0x1e6e09[_0xc91d('0x24')],'type':_0x1e6e09[_0xc91d('0x25')][_0xc91d('0x26')]};});_0x51dc21=qs[_0xc91d('0x27')](_0x4d57a1,_0x16b44b);return interaction['findAll'](_0xc91d('0x28'),_0x16b44b['query'],_0x16b44b[_0xc91d('0x29')],_0x51dc21,_0x4d57a1)[_0xc91d('0x2a')](respondWithFilteredResult(_0x1da967,_0x51dc21))[_0xc91d('0x2b')](handleError(_0x1da967,null));};exports['show']=function(_0x47d950,_0x2e0fd2){var _0xbbbdc={'raw':![],'where':{'id':_0x47d950[_0xc91d('0x2c')]['id']}},_0x20f565={};_0x20f565[_0xc91d('0x2d')]=_[_0xc91d('0x2e')](db[_0xc91d('0x23')][_0xc91d('0x2f')]);_0x20f565[_0xc91d('0x30')]=_[_0xc91d('0x2e')](_0x47d950[_0xc91d('0x30')]);_0x20f565['filters']=_[_0xc91d('0x31')](_0x20f565[_0xc91d('0x2d')],_0x20f565[_0xc91d('0x30')]);_0xbbbdc[_0xc91d('0x32')]=_['intersection'](_0x20f565['model'],qs[_0xc91d('0x33')](_0x47d950[_0xc91d('0x30')][_0xc91d('0x33')]));_0xbbbdc[_0xc91d('0x32')]=_0xbbbdc[_0xc91d('0x32')][_0xc91d('0x34')]?_0xbbbdc[_0xc91d('0x32')]:_0x20f565[_0xc91d('0x2d')];if(_0x47d950[_0xc91d('0x30')][_0xc91d('0x35')]){_0xbbbdc[_0xc91d('0x36')]=[{'all':!![]}];}_0xbbbdc=_['merge']({},_0xbbbdc,_0x47d950['options']);return db['MailInteraction'][_0xc91d('0x37')](_0xbbbdc)['then'](handleEntityNotFound(_0x2e0fd2,null))[_0xc91d('0x2a')](respondWithResult(_0x2e0fd2,null))[_0xc91d('0x2b')](handleError(_0x2e0fd2,null));};exports[_0xc91d('0x38')]=function(_0x5c7d07,_0x317ff8){return db['MailInteraction'][_0xc91d('0x38')](_0x5c7d07[_0xc91d('0x39')],{})['then'](respondWithResult(_0x317ff8,0xc9))[_0xc91d('0x2b')](handleError(_0x317ff8,null));};exports[_0xc91d('0x1d')]=function(_0x5d3f85,_0x1d983d){if(_0x5d3f85['body']['id']){delete _0x5d3f85['body']['id'];}return db['MailInteraction'][_0xc91d('0x37')]({'where':{'id':_0x5d3f85['params']['id']}})['then'](handleEntityNotFound(_0x1d983d,null))[_0xc91d('0x2a')](saveUpdates(_0x5d3f85[_0xc91d('0x39')],null))['then'](respondWithResult(_0x1d983d,null))['catch'](handleError(_0x1d983d,null));};exports[_0xc91d('0x1e')]=function(_0x4b0130,_0x523781){return db[_0xc91d('0x23')]['find']({'where':{'id':_0x4b0130[_0xc91d('0x2c')]['id']}})[_0xc91d('0x2a')](handleEntityNotFound(_0x523781,null))[_0xc91d('0x2a')](removeEntity(_0x523781,null))[_0xc91d('0x2b')](handleError(_0x523781,null));};exports[_0xc91d('0x3a')]=function(_0x34a340,_0x148f01){return db['MailInteraction'][_0xc91d('0x3a')]()[_0xc91d('0x2a')](respondWithResult(_0x148f01,null))[_0xc91d('0x2b')](handleError(_0x148f01,null));};exports[_0xc91d('0x3b')]=function(_0x135412,_0x192f14){return db[_0xc91d('0x3c')][_0xc91d('0x37')]({'where':{'id':_0x135412[_0xc91d('0x2c')]['id']}})[_0xc91d('0x2a')](handleEntityNotFound(_0x192f14,null))[_0xc91d('0x2a')](function(_0x4204d9){if(_0x4204d9){return _0x4204d9[_0xc91d('0x3b')](_0x135412[_0xc91d('0x39')]['ids'],_['omit'](_0x135412['body'],[_0xc91d('0x3d'),'id'])||{});}})[_0xc91d('0x2a')](respondWithResult(_0x192f14,null))[_0xc91d('0x2b')](handleError(_0x192f14,null));};exports[_0xc91d('0x3e')]=function(_0x348446,_0x5616c4){var _0x3923ff={'raw':![],'where':{}};var _0x49057d={};var _0x27646d={'count':0x0,'rows':[]};return db[_0xc91d('0x23')][_0xc91d('0x3f')]({'where':{'id':_0x348446[_0xc91d('0x2c')]['id']}})['then'](handleEntityNotFound(_0x5616c4,null))['then'](function(_0x28efbd){if(_0x28efbd){_0x49057d[_0xc91d('0x2d')]=_[_0xc91d('0x2e')](db['MailMessage'][_0xc91d('0x2f')]);_0x49057d['query']=_[_0xc91d('0x2e')](_0x348446[_0xc91d('0x30')]);_0x49057d[_0xc91d('0x40')]=_[_0xc91d('0x31')](_0x49057d['model'],_0x49057d[_0xc91d('0x30')]);_0x3923ff[_0xc91d('0x32')]=_[_0xc91d('0x31')](_0x49057d[_0xc91d('0x2d')],qs[_0xc91d('0x33')](_0x348446[_0xc91d('0x30')][_0xc91d('0x33')]));_0x3923ff[_0xc91d('0x32')]=_0x3923ff['attributes'][_0xc91d('0x34')]?_0x3923ff[_0xc91d('0x32')]:_0x49057d[_0xc91d('0x2d')];if(!_0x348446['query']['hasOwnProperty'](_0xc91d('0x41'))){_0x3923ff['limit']=qs[_0xc91d('0x1a')](_0x348446['query']['limit']);_0x3923ff['offset']=qs[_0xc91d('0x17')](_0x348446[_0xc91d('0x30')]['offset']);}_0x3923ff[_0xc91d('0x42')]=qs['sort'](_0x348446[_0xc91d('0x30')]['sort']);_0x3923ff['where']=qs['filters'](_['pick'](_0x348446[_0xc91d('0x30')],_0x49057d[_0xc91d('0x40')]));_0x3923ff[_0xc91d('0x43')][_0xc91d('0x44')]=_0x28efbd['id'];if(_0x348446['query'][_0xc91d('0x45')]){_0x3923ff[_0xc91d('0x43')]=_[_0xc91d('0x46')](_0x3923ff[_0xc91d('0x43')],{'$or':_['map'](_0x3923ff[_0xc91d('0x32')],function(_0x4dca6a){var _0x32574c={};_0x32574c[_0x4dca6a]={'$like':'%'+_0x348446[_0xc91d('0x30')][_0xc91d('0x45')]+'%'};return _0x32574c;})});}if(_0x348446[_0xc91d('0x30')][_0xc91d('0x47')]){var _0x2de3c5=_0x348446[_0xc91d('0x30')]['$gte'][_0xc91d('0x48')](',');var _0x2e8434={};_0x2e8434[_0x2de3c5[0x0]]={'$gte':moment(_0x2de3c5[0x1])[_0xc91d('0x49')](_0xc91d('0x4a'))};_0x3923ff[_0xc91d('0x43')]=_[_0xc91d('0x46')](_0x3923ff[_0xc91d('0x43')],_0x2e8434);}_0x3923ff=_[_0xc91d('0x46')]({},_0x3923ff,_0x348446[_0xc91d('0x4b')]);return db['MailMessage'][_0xc91d('0x19')]({'where':_0x3923ff[_0xc91d('0x43')]})[_0xc91d('0x2a')](function(_0x38b5c2){_0x27646d[_0xc91d('0x19')]=_0x38b5c2;if(_0x348446[_0xc91d('0x30')]['includeAll']){_0x3923ff[_0xc91d('0x36')]=[{'all':!![]}];}return db[_0xc91d('0x3c')][_0xc91d('0x4c')](_0x3923ff);})[_0xc91d('0x2a')](function(_0xe245b6){if(_0x348446[_0xc91d('0x30')][_0xc91d('0x4d')]===_0xc91d('0x4e')){for(var _0x401b77=0x0;_0x401b77<_0xe245b6[_0xc91d('0x34')];_0x401b77++){_0xe245b6[_0x401b77][_0xc91d('0x39')]=juice(_0xe245b6[_0x401b77]['body']);}}_0x27646d[_0xc91d('0x4f')]=_0xe245b6;return _0x27646d;});}})['then'](respondWithFilteredResult(_0x5616c4,_0x3923ff))['catch'](handleError(_0x5616c4,null));};exports[_0xc91d('0x50')]=function(_0x58f665,_0x1b520a){return db['MailInteraction'][_0xc91d('0x37')]({'where':{'id':_0x58f665[_0xc91d('0x2c')]['id']}})[_0xc91d('0x2a')](handleEntityNotFound(_0x1b520a,null))[_0xc91d('0x2a')](function(_0x14870f){if(_0x14870f){return _0x14870f[_0xc91d('0x51')](_0x58f665[_0xc91d('0x39')][_0xc91d('0x3d')],_['omit'](_0x58f665[_0xc91d('0x39')],['ids','id'])||{})['spread'](function(){return db[_0xc91d('0x52')]['findAll']({'attributes':['id',_0xc91d('0x20'),_0xc91d('0x53')],'where':{'id':_0x58f665[_0xc91d('0x39')][_0xc91d('0x3d')]}});})['then'](function(_0x18074f){socket[_0xc91d('0x54')](_0xc91d('0x55'),{'id':Number(_0x58f665[_0xc91d('0x2c')]['id']),'tags':_0x18074f||[]});return{'id':Number(_0x58f665[_0xc91d('0x2c')]['id']),'tags':_0x18074f||[]};});}})[_0xc91d('0x2a')](respondWithResult(_0x1b520a,null))[_0xc91d('0x2b')](handleError(_0x1b520a,null));};exports[_0xc91d('0x56')]=function(_0x4b1609,_0x588127){return db[_0xc91d('0x23')][_0xc91d('0x37')]({'where':{'id':_0x4b1609['params']['id']}})[_0xc91d('0x2a')](handleEntityNotFound(_0x588127,null))[_0xc91d('0x2a')](function(_0x24f7f1){if(_0x24f7f1){return _0x24f7f1[_0xc91d('0x56')](_0x4b1609[_0xc91d('0x30')][_0xc91d('0x3d')]);}})[_0xc91d('0x2a')](respondWithStatusCode(_0x588127,null))[_0xc91d('0x2b')](handleError(_0x588127,null));};exports['download']=function(_0x39345a,_0x44ddbf){var _0xb40ae0=moment()[_0xc91d('0x57')]()[_0xc91d('0x58')]();var _0x5f5ce4=path[_0xc91d('0x59')](config['root'],'server',_0xc91d('0x5a'),_0xc91d('0x5b'));var _0x2feac9=path[_0xc91d('0x59')](config[_0xc91d('0x5c')],_0xc91d('0x5d'),_0xc91d('0x5a'),_0xc91d('0x5e'));var _0x579c5d=path['join'](_0x5f5ce4,_0xb40ae0);var _0x2fee04=util[_0xc91d('0x49')](_0xc91d('0x5f'),_0x39345a['params']['id'],_0xb40ae0);var _0x2cbd94=path[_0xc91d('0x59')](_0x5f5ce4,_0x2fee04);var _0xd9c6ca=[];if(_0x39345a[_0xc91d('0x30')][_0xc91d('0x5e')]){_0xd9c6ca[_0xc91d('0x60')]({'model':db[_0xc91d('0x61')],'as':_0xc91d('0x62'),'raw':!![]});}var _0x507f72=[{'model':db['MailMessage'],'as':'Messages','attributes':['id',_0xc91d('0x39'),_0xc91d('0x63'),'to','cc',_0xc91d('0x64'),_0xc91d('0x65'),_0xc91d('0x66')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0xd9c6ca}];return db['MailInteraction'][_0xc91d('0x37')]({'where':{'id':_0x39345a['params']['id']},'include':_0x507f72})[_0xc91d('0x2a')](handleEntityNotFound(_0x44ddbf,null))[_0xc91d('0x2a')](function(_0xfc331d){if(_0xfc331d&&_0xfc331d[_0xc91d('0x67')]){var _0x6abe95=_0xfc331d[_0xc91d('0x68')]({'plain':!![]});fs['mkdirSync'](_0x579c5d);return BPromise[_0xc91d('0x69')](_0x6abe95['Messages'],function(_0x4baa18,_0x59527c){var _0x483478={'from':_0x4baa18[_0xc91d('0x63')],'to':_0x4baa18['to']||'missing.recipient@your.company.com','subject':_0x4baa18[_0xc91d('0x65')],'html':htmlEntities[_0xc91d('0x6a')](_0x4baa18[_0xc91d('0x39')]),'headers':{'Date':moment(_0x4baa18['createdAt'])[_0xc91d('0x49')](_0xc91d('0x6b'))},'attachments':[]};if(_0x4baa18['cc']){_0x483478[_0xc91d('0x6c')]['Cc']=_0x4baa18['cc'];}if(_0x4baa18[_0xc91d('0x64')]){_0x483478[_0xc91d('0x6c')][_0xc91d('0x6d')]=_0x4baa18[_0xc91d('0x64')];}return new BPromise(function(_0x315a45,_0x286f8c){if(_0x4baa18[_0xc91d('0x62')]){for(var _0x9a99a3=0x0;_0x9a99a3<_0x4baa18['Attachments']['length'];_0x9a99a3++){var _0x4bc1fb=_0x4baa18[_0xc91d('0x62')][_0x9a99a3];var _0x1eb17f=path['join'](_0x2feac9,_0x4bc1fb[_0xc91d('0x6e')]);if(fs[_0xc91d('0x6f')](_0x1eb17f)){_0x483478[_0xc91d('0x5e')][_0xc91d('0x60')]({'name':_0x4bc1fb[_0xc91d('0x20')],'contentType':_0x4bc1fb[_0xc91d('0x25')],'data':fs[_0xc91d('0x70')](_0x1eb17f)});}}}emlformat[_0xc91d('0x71')](_0x483478,function(_0x577f72,_0x44e1ad){if(_0x577f72)return _0x286f8c(_0x577f72);fs['writeFileSync'](path[_0xc91d('0x59')](_0x579c5d,util[_0xc91d('0x49')]('message%d.eml',_0x59527c)),_0x44e1ad);return _0x315a45(_0x44e1ad);});});})[_0xc91d('0x2a')](function(){return new BPromise(function(_0x38546c,_0xdf1731){zipdir(_0x579c5d,{'saveTo':_0x2cbd94},function(_0x1ec87b,_0x53f9bf){if(_0x1ec87b)return _0xdf1731(_0x1ec87b);return _0x38546c(_0x53f9bf);});})[_0xc91d('0x2a')](function(){return new BPromise(function(_0xec18a3,_0x5116fe){rimraf(_0x579c5d,function(_0x4244a6){if(_0x4244a6)_0x5116fe(_0x4244a6);return _0xec18a3();});});})[_0xc91d('0x2a')](function(){return _0x44ddbf[_0xc91d('0x72')](_0x2cbd94,_0x2fee04,function(_0x4e1f03){if(!_0x4e1f03)fs[_0xc91d('0x73')](_0x2cbd94);});});});}else{return _0x44ddbf['sendStatus'](0xc8);}})[_0xc91d('0x2b')](handleError(_0x44ddbf,null));};