dfeecfe0f2332397dd71722355b97b5b6641c699
[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 _0xefb1=['path','lodash','juice','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','undefined','limit','offset','count','set','update','destroy','then','error','stack','name','send','index','MailInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','mail','query','catch','show','model','keys','filters','intersection','attributes','fields','length','includeAll','merge','options','find','body','describe','addMessage','MailMessage','params','ids','omit','getMessages','findOne','hasOwnProperty','order','sort','where','pick','MailInteractionId','filter','map','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','Tag','emit','removeTags','unix','toString','root','server','files','tmp','join','format','transcript-%d-%s.zip','attachments','push','Attachment','Messages','from','bcc','createdAt','get','mkdirSync','each','missing.recipient@your.company.com','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Attachments','existsSync','readFileSync','build','writeFileSync','message%d.eml','download','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util'];(function(_0x21267d,_0x18c6f5){var _0x679d4c=function(_0x7f1e92){while(--_0x7f1e92){_0x21267d['push'](_0x21267d['shift']());}};_0x679d4c(++_0x18c6f5);}(_0xefb1,0xe2));var _0x1efb=function(_0x35d8b5,_0x51500f){_0x35d8b5=_0x35d8b5-0x0;var _0x50c046=_0xefb1[_0x35d8b5];return _0x50c046;};'use strict';var emlformat=require(_0x1efb('0x0'));var rimraf=require(_0x1efb('0x1'));var zipdir=require(_0x1efb('0x2'));var moment=require(_0x1efb('0x3'));var BPromise=require(_0x1efb('0x4'));var util=require(_0x1efb('0x5'));var path=require(_0x1efb('0x6'));var fs=require('fs');var _=require(_0x1efb('0x7'));var juice=require(_0x1efb('0x8'));var Redis=require(_0x1efb('0x9'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var logger=require(_0x1efb('0xa'))(_0x1efb('0xb'));var config=require(_0x1efb('0xc'));var db=require(_0x1efb('0xd'))['db'];var htmlEntities=require(_0x1efb('0xe'));config[_0x1efb('0xf')]=_[_0x1efb('0x10')](config[_0x1efb('0xf')],{'host':_0x1efb('0x11'),'port':0x18eb});var socket=require(_0x1efb('0x12'))(new Redis(config[_0x1efb('0xf')]));require('./mailInteraction.socket')[_0x1efb('0x13')](socket);function respondWithStatusCode(_0x5ddd5c,_0x10b3de){_0x10b3de=_0x10b3de||0xcc;return function(_0x11d57a){if(_0x11d57a){return _0x5ddd5c[_0x1efb('0x14')](_0x10b3de);}return _0x5ddd5c[_0x1efb('0x15')](_0x10b3de)['end']();};}function respondWithResult(_0x5c6cde,_0x1abf9b){_0x1abf9b=_0x1abf9b||0xc8;return function(_0x401ca5){if(_0x401ca5){return _0x5c6cde[_0x1efb('0x15')](_0x1abf9b)[_0x1efb('0x16')](_0x401ca5);}};}function respondWithFilteredResult(_0x46b465,_0x27868f){return function(_0x548c1d){if(_0x548c1d){var _0x35350c=typeof _0x27868f['offset']===_0x1efb('0x17')&&typeof _0x27868f[_0x1efb('0x18')]==='undefined';var _0x19ec4e=_0x548c1d['count'];var _0x18f166=_0x35350c?0x0:_0x27868f[_0x1efb('0x19')];var _0x422753=_0x35350c?_0x548c1d[_0x1efb('0x1a')]:_0x27868f[_0x1efb('0x19')]+_0x27868f[_0x1efb('0x18')];var _0x2336d1;if(_0x422753>=_0x19ec4e){_0x422753=_0x19ec4e;_0x2336d1=0xc8;}else{_0x2336d1=0xce;}_0x46b465[_0x1efb('0x15')](_0x2336d1);return _0x46b465[_0x1efb('0x1b')]('Content-Range',_0x18f166+'-'+_0x422753+'/'+_0x19ec4e)[_0x1efb('0x16')](_0x548c1d);}return null;};}function saveUpdates(_0x53af97){return function(_0x578e52){if(_0x578e52){return _0x578e52[_0x1efb('0x1c')](_0x53af97)['then'](function(_0x3e01da){return _0x3e01da;});}return null;};}function removeEntity(_0x3c7dd0){return function(_0x53fc10){if(_0x53fc10){return _0x53fc10[_0x1efb('0x1d')]()[_0x1efb('0x1e')](function(){_0x3c7dd0[_0x1efb('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x734fd0){return function(_0x16fbf9){if(!_0x16fbf9){_0x734fd0[_0x1efb('0x14')](0x194);}return _0x16fbf9;};}function handleError(_0x22bb50,_0x3477d8){_0x3477d8=_0x3477d8||0x1f4;return function(_0x42ffc8){logger[_0x1efb('0x1f')](_0x42ffc8[_0x1efb('0x20')]);if(_0x42ffc8[_0x1efb('0x21')]){delete _0x42ffc8[_0x1efb('0x21')];}_0x22bb50[_0x1efb('0x15')](_0x3477d8)[_0x1efb('0x22')](_0x42ffc8);};}exports[_0x1efb('0x23')]=function(_0x8cb136,_0x300a54){var _0x5bbbcf={};var _0x1db225=_['map'](db[_0x1efb('0x24')][_0x1efb('0x25')],function(_0x25e508){return{'name':_0x25e508[_0x1efb('0x26')],'type':_0x25e508[_0x1efb('0x27')][_0x1efb('0x28')]};});_0x5bbbcf=qs[_0x1efb('0x29')](_0x1db225,_0x8cb136);return interaction[_0x1efb('0x2a')](_0x1efb('0x2b'),_0x8cb136[_0x1efb('0x2c')],_0x8cb136['user'],_0x5bbbcf,_0x1db225)[_0x1efb('0x1e')](respondWithFilteredResult(_0x300a54,_0x5bbbcf))[_0x1efb('0x2d')](handleError(_0x300a54,null));};exports[_0x1efb('0x2e')]=function(_0x5110e3,_0x4e5eca){var _0x26e4ab={'raw':![],'where':{'id':_0x5110e3['params']['id']}},_0x2628a6={};_0x2628a6[_0x1efb('0x2f')]=_[_0x1efb('0x30')](db[_0x1efb('0x24')][_0x1efb('0x25')]);_0x2628a6['query']=_[_0x1efb('0x30')](_0x5110e3[_0x1efb('0x2c')]);_0x2628a6[_0x1efb('0x31')]=_[_0x1efb('0x32')](_0x2628a6[_0x1efb('0x2f')],_0x2628a6['query']);_0x26e4ab[_0x1efb('0x33')]=_[_0x1efb('0x32')](_0x2628a6[_0x1efb('0x2f')],qs[_0x1efb('0x34')](_0x5110e3[_0x1efb('0x2c')][_0x1efb('0x34')]));_0x26e4ab['attributes']=_0x26e4ab[_0x1efb('0x33')][_0x1efb('0x35')]?_0x26e4ab[_0x1efb('0x33')]:_0x2628a6['model'];if(_0x5110e3['query'][_0x1efb('0x36')]){_0x26e4ab['include']=[{'all':!![]}];}_0x26e4ab=_[_0x1efb('0x37')]({},_0x26e4ab,_0x5110e3[_0x1efb('0x38')]);return db[_0x1efb('0x24')][_0x1efb('0x39')](_0x26e4ab)[_0x1efb('0x1e')](handleEntityNotFound(_0x4e5eca,null))[_0x1efb('0x1e')](respondWithResult(_0x4e5eca,null))[_0x1efb('0x2d')](handleError(_0x4e5eca,null));};exports['create']=function(_0x4bcc1c,_0x39a68e){return db[_0x1efb('0x24')]['create'](_0x4bcc1c[_0x1efb('0x3a')],{})[_0x1efb('0x1e')](respondWithResult(_0x39a68e,0xc9))[_0x1efb('0x2d')](handleError(_0x39a68e,null));};exports[_0x1efb('0x1c')]=function(_0xf85af4,_0x2ea1d1){if(_0xf85af4[_0x1efb('0x3a')]['id']){delete _0xf85af4[_0x1efb('0x3a')]['id'];}return db[_0x1efb('0x24')][_0x1efb('0x39')]({'where':{'id':_0xf85af4['params']['id']}})[_0x1efb('0x1e')](handleEntityNotFound(_0x2ea1d1,null))[_0x1efb('0x1e')](saveUpdates(_0xf85af4[_0x1efb('0x3a')],null))['then'](respondWithResult(_0x2ea1d1,null))[_0x1efb('0x2d')](handleError(_0x2ea1d1,null));};exports[_0x1efb('0x1d')]=function(_0x2da400,_0x51fe5e){return db[_0x1efb('0x24')][_0x1efb('0x39')]({'where':{'id':_0x2da400['params']['id']}})['then'](handleEntityNotFound(_0x51fe5e,null))[_0x1efb('0x1e')](removeEntity(_0x51fe5e,null))[_0x1efb('0x2d')](handleError(_0x51fe5e,null));};exports[_0x1efb('0x3b')]=function(_0x3a0bba,_0x560596){return db['MailInteraction'][_0x1efb('0x3b')]()[_0x1efb('0x1e')](respondWithResult(_0x560596,null))[_0x1efb('0x2d')](handleError(_0x560596,null));};exports[_0x1efb('0x3c')]=function(_0x314c4f,_0x41b6a1){return db[_0x1efb('0x3d')]['find']({'where':{'id':_0x314c4f[_0x1efb('0x3e')]['id']}})['then'](handleEntityNotFound(_0x41b6a1,null))[_0x1efb('0x1e')](function(_0x146148){if(_0x146148){return _0x146148['addMessage'](_0x314c4f['body'][_0x1efb('0x3f')],_[_0x1efb('0x40')](_0x314c4f[_0x1efb('0x3a')],[_0x1efb('0x3f'),'id'])||{});}})[_0x1efb('0x1e')](respondWithResult(_0x41b6a1,null))[_0x1efb('0x2d')](handleError(_0x41b6a1,null));};exports[_0x1efb('0x41')]=function(_0x30654f,_0x11687d){var _0x26b355={'raw':![],'where':{}};var _0x4f426a={};var _0x29e9a6={'count':0x0,'rows':[]};return db[_0x1efb('0x24')][_0x1efb('0x42')]({'where':{'id':_0x30654f[_0x1efb('0x3e')]['id']}})[_0x1efb('0x1e')](handleEntityNotFound(_0x11687d,null))['then'](function(_0x2ae2f6){if(_0x2ae2f6){_0x4f426a['model']=_[_0x1efb('0x30')](db[_0x1efb('0x3d')][_0x1efb('0x25')]);_0x4f426a[_0x1efb('0x2c')]=_['keys'](_0x30654f[_0x1efb('0x2c')]);_0x4f426a['filters']=_[_0x1efb('0x32')](_0x4f426a[_0x1efb('0x2f')],_0x4f426a['query']);_0x26b355[_0x1efb('0x33')]=_[_0x1efb('0x32')](_0x4f426a[_0x1efb('0x2f')],qs[_0x1efb('0x34')](_0x30654f['query'][_0x1efb('0x34')]));_0x26b355['attributes']=_0x26b355[_0x1efb('0x33')][_0x1efb('0x35')]?_0x26b355[_0x1efb('0x33')]:_0x4f426a[_0x1efb('0x2f')];if(!_0x30654f[_0x1efb('0x2c')][_0x1efb('0x43')]('nolimit')){_0x26b355[_0x1efb('0x18')]=qs[_0x1efb('0x18')](_0x30654f[_0x1efb('0x2c')][_0x1efb('0x18')]);_0x26b355[_0x1efb('0x19')]=qs[_0x1efb('0x19')](_0x30654f[_0x1efb('0x2c')][_0x1efb('0x19')]);}_0x26b355[_0x1efb('0x44')]=qs['sort'](_0x30654f[_0x1efb('0x2c')][_0x1efb('0x45')]);_0x26b355[_0x1efb('0x46')]=qs[_0x1efb('0x31')](_[_0x1efb('0x47')](_0x30654f[_0x1efb('0x2c')],_0x4f426a[_0x1efb('0x31')]));_0x26b355['where'][_0x1efb('0x48')]=_0x2ae2f6['id'];if(_0x30654f[_0x1efb('0x2c')][_0x1efb('0x49')]){_0x26b355[_0x1efb('0x46')]=_[_0x1efb('0x37')](_0x26b355[_0x1efb('0x46')],{'$or':_[_0x1efb('0x4a')](_0x26b355[_0x1efb('0x33')],function(_0x2d5821){var _0x57252e={};_0x57252e[_0x2d5821]={'$like':'%'+_0x30654f['query']['filter']+'%'};return _0x57252e;})});}if(_0x30654f[_0x1efb('0x2c')]['$gte']){var _0x32f98b=_0x30654f[_0x1efb('0x2c')][_0x1efb('0x4b')][_0x1efb('0x4c')](',');var _0x2708dd={};_0x2708dd[_0x32f98b[0x0]]={'$gte':moment(_0x32f98b[0x1])['format'](_0x1efb('0x4d'))};_0x26b355['where']=_[_0x1efb('0x37')](_0x26b355['where'],_0x2708dd);}_0x26b355=_[_0x1efb('0x37')]({},_0x26b355,_0x30654f['options']);return db['MailMessage'][_0x1efb('0x1a')]({'where':_0x26b355[_0x1efb('0x46')]})['then'](function(_0x584158){_0x29e9a6[_0x1efb('0x1a')]=_0x584158;if(_0x30654f[_0x1efb('0x2c')]['includeAll']){_0x26b355['include']=[{'all':!![]}];}return db['MailMessage'][_0x1efb('0x2a')](_0x26b355);})[_0x1efb('0x1e')](function(_0x4792f4){if(_0x30654f['query']['inlineCss']==='true'){for(var _0x10d1bb=0x0;_0x10d1bb<_0x4792f4[_0x1efb('0x35')];_0x10d1bb++){_0x4792f4[_0x10d1bb][_0x1efb('0x3a')]=juice(_0x4792f4[_0x10d1bb]['body']);}}_0x29e9a6[_0x1efb('0x4e')]=_0x4792f4;return _0x29e9a6;});}})[_0x1efb('0x1e')](respondWithFilteredResult(_0x11687d,_0x26b355))['catch'](handleError(_0x11687d,null));};exports[_0x1efb('0x4f')]=function(_0x5013ba,_0x3e4370){return db[_0x1efb('0x24')][_0x1efb('0x39')]({'where':{'id':_0x5013ba[_0x1efb('0x3e')]['id']}})['then'](handleEntityNotFound(_0x3e4370,null))[_0x1efb('0x1e')](function(_0x2376e2){if(_0x2376e2){return _0x2376e2[_0x1efb('0x50')](_0x5013ba[_0x1efb('0x3a')][_0x1efb('0x3f')],_[_0x1efb('0x40')](_0x5013ba['body'],[_0x1efb('0x3f'),'id'])||{})['spread'](function(){return db[_0x1efb('0x51')]['findAll']({'attributes':['id',_0x1efb('0x21'),'color'],'where':{'id':_0x5013ba[_0x1efb('0x3a')][_0x1efb('0x3f')]}});})[_0x1efb('0x1e')](function(_0x393005){socket[_0x1efb('0x52')]('mailInteractionTags:save',{'id':Number(_0x5013ba[_0x1efb('0x3e')]['id']),'tags':_0x393005||[]});return{'id':Number(_0x5013ba[_0x1efb('0x3e')]['id']),'tags':_0x393005||[]};});}})[_0x1efb('0x1e')](respondWithResult(_0x3e4370,null))['catch'](handleError(_0x3e4370,null));};exports[_0x1efb('0x53')]=function(_0x47ef6a,_0x17c2df){return db[_0x1efb('0x24')]['find']({'where':{'id':_0x47ef6a[_0x1efb('0x3e')]['id']}})[_0x1efb('0x1e')](handleEntityNotFound(_0x17c2df,null))[_0x1efb('0x1e')](function(_0x4af0c0){if(_0x4af0c0){return _0x4af0c0[_0x1efb('0x53')](_0x47ef6a[_0x1efb('0x2c')][_0x1efb('0x3f')]);}})[_0x1efb('0x1e')](respondWithStatusCode(_0x17c2df,null))[_0x1efb('0x2d')](handleError(_0x17c2df,null));};exports['download']=function(_0x3b54bf,_0x291d64){var _0x3ebead=moment()[_0x1efb('0x54')]()[_0x1efb('0x55')]();var _0x1d3c1b=path['join'](config[_0x1efb('0x56')],_0x1efb('0x57'),_0x1efb('0x58'),_0x1efb('0x59'));var _0x5da7e5=path[_0x1efb('0x5a')](config[_0x1efb('0x56')],'server','files','attachments');var _0x3e8036=path['join'](_0x1d3c1b,_0x3ebead);var _0x57470e=util[_0x1efb('0x5b')](_0x1efb('0x5c'),_0x3b54bf['params']['id'],_0x3ebead);var _0x486e53=path['join'](_0x1d3c1b,_0x57470e);var _0x3d4769=[];if(_0x3b54bf[_0x1efb('0x2c')][_0x1efb('0x5d')]){_0x3d4769[_0x1efb('0x5e')]({'model':db[_0x1efb('0x5f')],'as':'Attachments','raw':!![]});}var _0x168e6d=[{'model':db[_0x1efb('0x3d')],'as':_0x1efb('0x60'),'attributes':['id','body',_0x1efb('0x61'),'to','cc',_0x1efb('0x62'),'subject',_0x1efb('0x63')],'where':{'secret':![]},'order':qs[_0x1efb('0x45')]('id'),'include':_0x3d4769}];return db[_0x1efb('0x24')][_0x1efb('0x39')]({'where':{'id':_0x3b54bf[_0x1efb('0x3e')]['id']},'include':_0x168e6d})[_0x1efb('0x1e')](handleEntityNotFound(_0x291d64,null))[_0x1efb('0x1e')](function(_0x54a006){if(_0x54a006&&_0x54a006[_0x1efb('0x60')]){var _0x42ba95=_0x54a006[_0x1efb('0x64')]({'plain':!![]});fs[_0x1efb('0x65')](_0x3e8036);return BPromise[_0x1efb('0x66')](_0x42ba95['Messages'],function(_0x470cd5,_0x524555){var _0x1330d1={'from':_0x470cd5[_0x1efb('0x61')],'to':_0x470cd5['to']||_0x1efb('0x67'),'subject':_0x470cd5[_0x1efb('0x68')],'html':htmlEntities[_0x1efb('0x69')](_0x470cd5['body']),'headers':{'Date':moment(_0x470cd5['createdAt'])[_0x1efb('0x5b')](_0x1efb('0x6a'))},'attachments':[]};if(_0x470cd5['cc']){_0x1330d1[_0x1efb('0x6b')]['Cc']=_0x470cd5['cc'];}if(_0x470cd5[_0x1efb('0x62')]){_0x1330d1['headers']['Bcc']=_0x470cd5[_0x1efb('0x62')];}return new BPromise(function(_0x48fe3c,_0x220bd8){if(_0x470cd5[_0x1efb('0x6c')]){for(var _0x59afd5=0x0;_0x59afd5<_0x470cd5[_0x1efb('0x6c')]['length'];_0x59afd5++){var _0x314dbd=_0x470cd5[_0x1efb('0x6c')][_0x59afd5];var _0x3d03f9=path['join'](_0x5da7e5,_0x314dbd['basename']);if(fs[_0x1efb('0x6d')](_0x3d03f9)){_0x1330d1[_0x1efb('0x5d')][_0x1efb('0x5e')]({'name':_0x314dbd['name'],'contentType':_0x314dbd[_0x1efb('0x27')],'data':fs[_0x1efb('0x6e')](_0x3d03f9)});}}}emlformat[_0x1efb('0x6f')](_0x1330d1,function(_0x564db9,_0x5c36bc){if(_0x564db9)return _0x220bd8(_0x564db9);fs[_0x1efb('0x70')](path[_0x1efb('0x5a')](_0x3e8036,util[_0x1efb('0x5b')](_0x1efb('0x71'),_0x524555)),_0x5c36bc);return _0x48fe3c(_0x5c36bc);});});})[_0x1efb('0x1e')](function(){return new BPromise(function(_0x5d6d67,_0x11475e){zipdir(_0x3e8036,{'saveTo':_0x486e53},function(_0x7d8711,_0x3d5862){if(_0x7d8711)return _0x11475e(_0x7d8711);return _0x5d6d67(_0x3d5862);});})[_0x1efb('0x1e')](function(){return new BPromise(function(_0x2dd8a6,_0x204b7f){rimraf(_0x3e8036,function(_0x2de895){if(_0x2de895)_0x204b7f(_0x2de895);return _0x2dd8a6();});});})[_0x1efb('0x1e')](function(){return _0x291d64[_0x1efb('0x72')](_0x486e53,_0x57470e,function(_0x33dc22){if(!_0x33dc22)fs[_0x1efb('0x73')](_0x486e53);});});});}else{return _0x291d64['sendStatus'](0xc8);}})[_0x1efb('0x2d')](handleError(_0x291d64,null));};