a6db8f51334abaa74db9af12643490705366d2c4
[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 _0x5464=['offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','MailInteraction','fieldName','type','key','getOptions','findAll','mail','query','user','catch','show','params','model','keys','filters','intersection','attributes','fields','includeAll','include','options','find','body','describe','MailMessage','addMessage','ids','omit','getMessages','findOne','rawAttributes','length','hasOwnProperty','order','sort','where','map','filter','$gte','split','format','merge','inlineCss','true','rows','addTags','spread','color','emit','mailInteractionTags:save','removeTags','unix','toString','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','push','Attachments','Messages','from','bcc','subject','createdAt','get','mkdirSync','missing.recipient@your.company.com','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','existsSync','readFileSync','build','writeFileSync','message%d.eml','eml-format','rimraf','moment','bluebird','util','path','lodash','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../mysqldb','html-entities','redis','localhost','./mailInteraction.socket','register','sendStatus','status','json'];(function(_0x587783,_0x6296e6){var _0x1cca44=function(_0x2c5082){while(--_0x2c5082){_0x587783['push'](_0x587783['shift']());}};_0x1cca44(++_0x6296e6);}(_0x5464,0x1b7));var _0x4546=function(_0x2d3ca5,_0x27eb05){_0x2d3ca5=_0x2d3ca5-0x0;var _0x48b89a=_0x5464[_0x2d3ca5];return _0x48b89a;};'use strict';var emlformat=require(_0x4546('0x0'));var rimraf=require(_0x4546('0x1'));var zipdir=require('zip-dir');var moment=require(_0x4546('0x2'));var BPromise=require(_0x4546('0x3'));var util=require(_0x4546('0x4'));var path=require(_0x4546('0x5'));var fs=require('fs');var _=require(_0x4546('0x6'));var juice=require(_0x4546('0x7'));var Redis=require(_0x4546('0x8'));var interaction=require(_0x4546('0x9'));var qs=require(_0x4546('0xa'));var logger=require('../../config/logger')(_0x4546('0xb'));var config=require('../../config/environment');var db=require(_0x4546('0xc'))['db'];var htmlEntities=require(_0x4546('0xd'));config[_0x4546('0xe')]=_['defaults'](config[_0x4546('0xe')],{'host':_0x4546('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4546('0xe')]));require(_0x4546('0x10'))[_0x4546('0x11')](socket);function respondWithStatusCode(_0x486950,_0x2f3906){_0x2f3906=_0x2f3906||0xcc;return function(_0x563e3e){if(_0x563e3e){return _0x486950[_0x4546('0x12')](_0x2f3906);}return _0x486950[_0x4546('0x13')](_0x2f3906)['end']();};}function respondWithResult(_0x199dc2,_0x2df255){_0x2df255=_0x2df255||0xc8;return function(_0xe53ee9){if(_0xe53ee9){return _0x199dc2[_0x4546('0x13')](_0x2df255)[_0x4546('0x14')](_0xe53ee9);}};}function respondWithFilteredResult(_0x1c6719,_0x2a6544){return function(_0x3927c7){if(_0x3927c7){var _0x4046e5=typeof _0x2a6544[_0x4546('0x15')]===_0x4546('0x16')&&typeof _0x2a6544[_0x4546('0x17')]==='undefined';var _0xd19ef7=_0x3927c7['count'];var _0x2cdd60=_0x4046e5?0x0:_0x2a6544[_0x4546('0x15')];var _0x1a17db=_0x4046e5?_0x3927c7[_0x4546('0x18')]:_0x2a6544['offset']+_0x2a6544[_0x4546('0x17')];var _0x845a56;if(_0x1a17db>=_0xd19ef7){_0x1a17db=_0xd19ef7;_0x845a56=0xc8;}else{_0x845a56=0xce;}_0x1c6719[_0x4546('0x13')](_0x845a56);return _0x1c6719[_0x4546('0x19')](_0x4546('0x1a'),_0x2cdd60+'-'+_0x1a17db+'/'+_0xd19ef7)[_0x4546('0x14')](_0x3927c7);}return null;};}function saveUpdates(_0x1bf23a){return function(_0x133c64){if(_0x133c64){return _0x133c64[_0x4546('0x1b')](_0x1bf23a)[_0x4546('0x1c')](function(_0xe237bd){return _0xe237bd;});}return null;};}function removeEntity(_0x3180f2){return function(_0xe74519){if(_0xe74519){return _0xe74519[_0x4546('0x1d')]()[_0x4546('0x1c')](function(){_0x3180f2[_0x4546('0x13')](0xcc)[_0x4546('0x1e')]();});}};}function handleEntityNotFound(_0x14bbb1){return function(_0x462403){if(!_0x462403){_0x14bbb1[_0x4546('0x12')](0x194);}return _0x462403;};}function handleError(_0x251d51,_0x1cef46){_0x1cef46=_0x1cef46||0x1f4;return function(_0x3a3dd1){logger['error'](_0x3a3dd1[_0x4546('0x1f')]);if(_0x3a3dd1[_0x4546('0x20')]){delete _0x3a3dd1[_0x4546('0x20')];}_0x251d51['status'](_0x1cef46)[_0x4546('0x21')](_0x3a3dd1);};}exports[_0x4546('0x22')]=function(_0x5d34a7,_0x3d14ab){var _0x351ce7={};var _0x2cf482=_['map'](db[_0x4546('0x23')]['rawAttributes'],function(_0x56ef4f){return{'name':_0x56ef4f[_0x4546('0x24')],'type':_0x56ef4f[_0x4546('0x25')][_0x4546('0x26')]};});_0x351ce7=qs[_0x4546('0x27')](_0x2cf482,_0x5d34a7);return interaction[_0x4546('0x28')](_0x4546('0x29'),_0x5d34a7[_0x4546('0x2a')],_0x5d34a7[_0x4546('0x2b')],_0x351ce7,_0x2cf482)['then'](respondWithFilteredResult(_0x3d14ab,_0x351ce7))[_0x4546('0x2c')](handleError(_0x3d14ab,null));};exports[_0x4546('0x2d')]=function(_0x42f220,_0x287ed7){var _0x3b7f78={'raw':![],'where':{'id':_0x42f220[_0x4546('0x2e')]['id']}},_0x42be8a={};_0x42be8a[_0x4546('0x2f')]=_[_0x4546('0x30')](db['MailInteraction']['rawAttributes']);_0x42be8a[_0x4546('0x2a')]=_[_0x4546('0x30')](_0x42f220[_0x4546('0x2a')]);_0x42be8a[_0x4546('0x31')]=_[_0x4546('0x32')](_0x42be8a['model'],_0x42be8a['query']);_0x3b7f78[_0x4546('0x33')]=_[_0x4546('0x32')](_0x42be8a[_0x4546('0x2f')],qs[_0x4546('0x34')](_0x42f220['query'][_0x4546('0x34')]));_0x3b7f78[_0x4546('0x33')]=_0x3b7f78['attributes']['length']?_0x3b7f78[_0x4546('0x33')]:_0x42be8a[_0x4546('0x2f')];if(_0x42f220[_0x4546('0x2a')][_0x4546('0x35')]){_0x3b7f78[_0x4546('0x36')]=[{'all':!![]}];}_0x3b7f78=_['merge']({},_0x3b7f78,_0x42f220[_0x4546('0x37')]);return db[_0x4546('0x23')][_0x4546('0x38')](_0x3b7f78)[_0x4546('0x1c')](handleEntityNotFound(_0x287ed7,null))[_0x4546('0x1c')](respondWithResult(_0x287ed7,null))[_0x4546('0x2c')](handleError(_0x287ed7,null));};exports['create']=function(_0x5f3b2a,_0x24a0f3){return db[_0x4546('0x23')]['create'](_0x5f3b2a['body'],{})[_0x4546('0x1c')](respondWithResult(_0x24a0f3,0xc9))['catch'](handleError(_0x24a0f3,null));};exports[_0x4546('0x1b')]=function(_0x49ff1f,_0x5548e0){if(_0x49ff1f[_0x4546('0x39')]['id']){delete _0x49ff1f[_0x4546('0x39')]['id'];}return db[_0x4546('0x23')][_0x4546('0x38')]({'where':{'id':_0x49ff1f[_0x4546('0x2e')]['id']}})['then'](handleEntityNotFound(_0x5548e0,null))[_0x4546('0x1c')](saveUpdates(_0x49ff1f[_0x4546('0x39')],null))['then'](respondWithResult(_0x5548e0,null))[_0x4546('0x2c')](handleError(_0x5548e0,null));};exports['destroy']=function(_0x4bf190,_0x4d81a6){return db['MailInteraction'][_0x4546('0x38')]({'where':{'id':_0x4bf190[_0x4546('0x2e')]['id']}})['then'](handleEntityNotFound(_0x4d81a6,null))[_0x4546('0x1c')](removeEntity(_0x4d81a6,null))[_0x4546('0x2c')](handleError(_0x4d81a6,null));};exports[_0x4546('0x3a')]=function(_0x286026,_0xab4f94){return db[_0x4546('0x23')]['describe']()['then'](respondWithResult(_0xab4f94,null))[_0x4546('0x2c')](handleError(_0xab4f94,null));};exports['addMessage']=function(_0x3ce7ee,_0x11cbd2){return db[_0x4546('0x3b')]['find']({'where':{'id':_0x3ce7ee[_0x4546('0x2e')]['id']}})[_0x4546('0x1c')](handleEntityNotFound(_0x11cbd2,null))['then'](function(_0x1805c8){if(_0x1805c8){return _0x1805c8[_0x4546('0x3c')](_0x3ce7ee[_0x4546('0x39')][_0x4546('0x3d')],_[_0x4546('0x3e')](_0x3ce7ee[_0x4546('0x39')],[_0x4546('0x3d'),'id'])||{});}})[_0x4546('0x1c')](respondWithResult(_0x11cbd2,null))[_0x4546('0x2c')](handleError(_0x11cbd2,null));};exports[_0x4546('0x3f')]=function(_0x40dc21,_0x4f49ca){var _0x54d364={'raw':![],'where':{}};var _0x517a8f={};var _0x4eeb60={'count':0x0,'rows':[]};return db[_0x4546('0x23')][_0x4546('0x40')]({'where':{'id':_0x40dc21[_0x4546('0x2e')]['id']}})[_0x4546('0x1c')](handleEntityNotFound(_0x4f49ca,null))[_0x4546('0x1c')](function(_0x163319){if(_0x163319){_0x517a8f[_0x4546('0x2f')]=_[_0x4546('0x30')](db[_0x4546('0x3b')][_0x4546('0x41')]);_0x517a8f['query']=_[_0x4546('0x30')](_0x40dc21['query']);_0x517a8f[_0x4546('0x31')]=_[_0x4546('0x32')](_0x517a8f[_0x4546('0x2f')],_0x517a8f[_0x4546('0x2a')]);_0x54d364['attributes']=_[_0x4546('0x32')](_0x517a8f['model'],qs[_0x4546('0x34')](_0x40dc21[_0x4546('0x2a')]['fields']));_0x54d364[_0x4546('0x33')]=_0x54d364[_0x4546('0x33')][_0x4546('0x42')]?_0x54d364[_0x4546('0x33')]:_0x517a8f[_0x4546('0x2f')];if(!_0x40dc21[_0x4546('0x2a')][_0x4546('0x43')]('nolimit')){_0x54d364[_0x4546('0x17')]=qs['limit'](_0x40dc21[_0x4546('0x2a')][_0x4546('0x17')]);_0x54d364[_0x4546('0x15')]=qs[_0x4546('0x15')](_0x40dc21[_0x4546('0x2a')]['offset']);}_0x54d364[_0x4546('0x44')]=qs[_0x4546('0x45')](_0x40dc21[_0x4546('0x2a')]['sort']);_0x54d364[_0x4546('0x46')]=qs[_0x4546('0x31')](_['pick'](_0x40dc21[_0x4546('0x2a')],_0x517a8f[_0x4546('0x31')]));_0x54d364[_0x4546('0x46')]['MailInteractionId']=_0x163319['id'];if(_0x40dc21[_0x4546('0x2a')]['filter']){_0x54d364[_0x4546('0x46')]=_['merge'](_0x54d364['where'],{'$or':_[_0x4546('0x47')](_0x54d364['attributes'],function(_0x228ce8){var _0x10f2e7={};_0x10f2e7[_0x228ce8]={'$like':'%'+_0x40dc21[_0x4546('0x2a')][_0x4546('0x48')]+'%'};return _0x10f2e7;})});}if(_0x40dc21[_0x4546('0x2a')][_0x4546('0x49')]){var _0x1086d2=_0x40dc21[_0x4546('0x2a')]['$gte'][_0x4546('0x4a')](',');var _0x383951={};_0x383951[_0x1086d2[0x0]]={'$gte':moment(_0x1086d2[0x1])[_0x4546('0x4b')]('YYYY-MM-DD\x20HH:mm:ss')};_0x54d364[_0x4546('0x46')]=_[_0x4546('0x4c')](_0x54d364[_0x4546('0x46')],_0x383951);}_0x54d364=_[_0x4546('0x4c')]({},_0x54d364,_0x40dc21['options']);return db[_0x4546('0x3b')][_0x4546('0x18')]({'where':_0x54d364[_0x4546('0x46')]})['then'](function(_0x2f4fe5){_0x4eeb60[_0x4546('0x18')]=_0x2f4fe5;if(_0x40dc21[_0x4546('0x2a')]['includeAll']){_0x54d364[_0x4546('0x36')]=[{'all':!![]}];}return db[_0x4546('0x3b')][_0x4546('0x28')](_0x54d364);})['then'](function(_0x5d0e58){if(_0x40dc21[_0x4546('0x2a')][_0x4546('0x4d')]===_0x4546('0x4e')){for(var _0x46019b=0x0;_0x46019b<_0x5d0e58[_0x4546('0x42')];_0x46019b++){_0x5d0e58[_0x46019b][_0x4546('0x39')]=juice(_0x5d0e58[_0x46019b]['body']);}}_0x4eeb60[_0x4546('0x4f')]=_0x5d0e58;return _0x4eeb60;});}})[_0x4546('0x1c')](respondWithFilteredResult(_0x4f49ca,_0x54d364))[_0x4546('0x2c')](handleError(_0x4f49ca,null));};exports[_0x4546('0x50')]=function(_0x416189,_0x4d220a){return db[_0x4546('0x23')]['find']({'where':{'id':_0x416189[_0x4546('0x2e')]['id']}})[_0x4546('0x1c')](handleEntityNotFound(_0x4d220a,null))['then'](function(_0x124060){if(_0x124060){return _0x124060['setTags'](_0x416189['body'][_0x4546('0x3d')],_['omit'](_0x416189[_0x4546('0x39')],['ids','id'])||{})[_0x4546('0x51')](function(){return db['Tag'][_0x4546('0x28')]({'attributes':['id',_0x4546('0x20'),_0x4546('0x52')],'where':{'id':_0x416189[_0x4546('0x39')][_0x4546('0x3d')]}});})[_0x4546('0x1c')](function(_0xdfd569){socket[_0x4546('0x53')](_0x4546('0x54'),{'id':Number(_0x416189[_0x4546('0x2e')]['id']),'tags':_0xdfd569||[]});return{'id':Number(_0x416189[_0x4546('0x2e')]['id']),'tags':_0xdfd569||[]};});}})[_0x4546('0x1c')](respondWithResult(_0x4d220a,null))[_0x4546('0x2c')](handleError(_0x4d220a,null));};exports['removeTags']=function(_0x1ca668,_0x5ab05f){return db[_0x4546('0x23')][_0x4546('0x38')]({'where':{'id':_0x1ca668['params']['id']}})[_0x4546('0x1c')](handleEntityNotFound(_0x5ab05f,null))['then'](function(_0xb994a8){if(_0xb994a8){return _0xb994a8[_0x4546('0x55')](_0x1ca668[_0x4546('0x2a')][_0x4546('0x3d')]);}})[_0x4546('0x1c')](respondWithStatusCode(_0x5ab05f,null))[_0x4546('0x2c')](handleError(_0x5ab05f,null));};exports['download']=function(_0xcf0ab5,_0x14359e){var _0x56c9bd=moment()[_0x4546('0x56')]()[_0x4546('0x57')]();var _0xb98025=path[_0x4546('0x58')](config[_0x4546('0x59')],_0x4546('0x5a'),'files',_0x4546('0x5b'));var _0x439d19=path[_0x4546('0x58')](config[_0x4546('0x59')],_0x4546('0x5a'),_0x4546('0x5c'),_0x4546('0x5d'));var _0x13c263=path['join'](_0xb98025,_0x56c9bd);var _0x34ae0d=util[_0x4546('0x4b')](_0x4546('0x5e'),_0xcf0ab5['params']['id'],_0x56c9bd);var _0x2f201d=path['join'](_0xb98025,_0x34ae0d);var _0x111c03=[];if(_0xcf0ab5[_0x4546('0x2a')][_0x4546('0x5d')]){_0x111c03[_0x4546('0x5f')]({'model':db['Attachment'],'as':_0x4546('0x60'),'raw':!![]});}var _0x3da749=[{'model':db[_0x4546('0x3b')],'as':_0x4546('0x61'),'attributes':['id',_0x4546('0x39'),_0x4546('0x62'),'to','cc',_0x4546('0x63'),_0x4546('0x64'),_0x4546('0x65')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x111c03}];return db['MailInteraction'][_0x4546('0x38')]({'where':{'id':_0xcf0ab5['params']['id']},'include':_0x3da749})[_0x4546('0x1c')](handleEntityNotFound(_0x14359e,null))[_0x4546('0x1c')](function(_0x681923){if(_0x681923&&_0x681923[_0x4546('0x61')]){var _0x502858=_0x681923[_0x4546('0x66')]({'plain':!![]});fs[_0x4546('0x67')](_0x13c263);return BPromise['each'](_0x502858[_0x4546('0x61')],function(_0x270296,_0x1736d0){var _0xb70bd5={'from':_0x270296[_0x4546('0x62')],'to':_0x270296['to']||_0x4546('0x68'),'subject':_0x270296[_0x4546('0x64')],'html':htmlEntities[_0x4546('0x69')](_0x270296[_0x4546('0x39')]),'headers':{'Date':moment(_0x270296[_0x4546('0x65')])[_0x4546('0x4b')](_0x4546('0x6a'))},'attachments':[]};if(_0x270296['cc']){_0xb70bd5[_0x4546('0x6b')]['Cc']=_0x270296['cc'];}if(_0x270296[_0x4546('0x63')]){_0xb70bd5[_0x4546('0x6b')][_0x4546('0x6c')]=_0x270296['bcc'];}return new BPromise(function(_0x2618b7,_0x2c543d){if(_0x270296[_0x4546('0x60')]){for(var _0xe512d4=0x0;_0xe512d4<_0x270296[_0x4546('0x60')]['length'];_0xe512d4++){var _0x5e3fc2=_0x270296[_0x4546('0x60')][_0xe512d4];var _0x1caf98=path[_0x4546('0x58')](_0x439d19,_0x5e3fc2[_0x4546('0x6d')]);if(fs[_0x4546('0x6e')](_0x1caf98)){_0xb70bd5[_0x4546('0x5d')]['push']({'name':_0x5e3fc2[_0x4546('0x20')],'contentType':_0x5e3fc2[_0x4546('0x25')],'data':fs[_0x4546('0x6f')](_0x1caf98)});}}}emlformat[_0x4546('0x70')](_0xb70bd5,function(_0x45de5e,_0x267558){if(_0x45de5e)return _0x2c543d(_0x45de5e);fs[_0x4546('0x71')](path['join'](_0x13c263,util[_0x4546('0x4b')](_0x4546('0x72'),_0x1736d0)),_0x267558);return _0x2618b7(_0x267558);});});})[_0x4546('0x1c')](function(){return new BPromise(function(_0x4284a3,_0x521be5){zipdir(_0x13c263,{'saveTo':_0x2f201d},function(_0x253adc,_0x2c19ad){if(_0x253adc)return _0x521be5(_0x253adc);return _0x4284a3(_0x2c19ad);});})['then'](function(){return new BPromise(function(_0x302a76,_0x4bdade){rimraf(_0x13c263,function(_0x393f27){if(_0x393f27)_0x4bdade(_0x393f27);return _0x302a76();});});})['then'](function(){return _0x14359e['download'](_0x2f201d,_0x34ae0d,function(_0x4986a3){if(!_0x4986a3)fs['unlinkSync'](_0x2f201d);});});});}else{return _0x14359e[_0x4546('0x12')](0xc8);}})[_0x4546('0x2c')](handleError(_0x14359e,null));};