Built motion from commit c116dc8b.|2.6.30
[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 _0x4d15=['eml-format','rimraf','zip-dir','moment','bluebird','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','update','error','name','send','map','MailInteraction','rawAttributes','fieldName','type','key','findAll','mail','query','user','show','params','model','keys','filters','intersection','attributes','fields','length','merge','options','find','then','catch','create','body','destroy','describe','MailMessage','addMessage','ids','omit','findOne','hasOwnProperty','nolimit','order','sort','where','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','inlineCss','rows','addTags','spread','Tag','color','mailInteractionTags:save','removeTags','download','unix','toString','join','root','files','tmp','attachments','transcript-%d-%s.zip','push','Messages','bcc','subject','createdAt','get','mkdirSync','each','from','missing.recipient@your.company.com','decode','headers','Bcc','Attachments','basename','existsSync','writeFileSync'];(function(_0x426d5e,_0x33db7e){var _0x32da92=function(_0x4fc149){while(--_0x4fc149){_0x426d5e['push'](_0x426d5e['shift']());}};_0x32da92(++_0x33db7e);}(_0x4d15,0xdc));var _0x54d1=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x4d15[_0x138adb];return _0x1b27f2;};'use strict';var emlformat=require(_0x54d1('0x0'));var rimraf=require(_0x54d1('0x1'));var zipdir=require(_0x54d1('0x2'));var moment=require(_0x54d1('0x3'));var BPromise=require(_0x54d1('0x4'));var util=require('util');var path=require('path');var fs=require('fs');var _=require('lodash');var juice=require(_0x54d1('0x5'));var Redis=require(_0x54d1('0x6'));var interaction=require(_0x54d1('0x7'));var qs=require(_0x54d1('0x8'));var logger=require(_0x54d1('0x9'))(_0x54d1('0xa'));var config=require(_0x54d1('0xb'));var db=require(_0x54d1('0xc'))['db'];var htmlEntities=require('html-entities');config[_0x54d1('0xd')]=_[_0x54d1('0xe')](config[_0x54d1('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x54d1('0xf'))(new Redis(config[_0x54d1('0xd')]));require(_0x54d1('0x10'))[_0x54d1('0x11')](socket);function respondWithStatusCode(_0x5a3783,_0x377dc2){_0x377dc2=_0x377dc2||0xcc;return function(_0x2bd832){if(_0x2bd832){return _0x5a3783[_0x54d1('0x12')](_0x377dc2);}return _0x5a3783[_0x54d1('0x13')](_0x377dc2)[_0x54d1('0x14')]();};}function respondWithResult(_0x2ad1f7,_0x6a0381){_0x6a0381=_0x6a0381||0xc8;return function(_0x3d1211){if(_0x3d1211){return _0x2ad1f7[_0x54d1('0x13')](_0x6a0381)['json'](_0x3d1211);}};}function respondWithFilteredResult(_0x1492a5,_0x48ea64){return function(_0x2707c0){if(_0x2707c0){var _0xbc3a77=typeof _0x48ea64[_0x54d1('0x15')]==='undefined'&&typeof _0x48ea64[_0x54d1('0x16')]===_0x54d1('0x17');var _0x30228e=_0x2707c0[_0x54d1('0x18')];var _0x37354a=_0xbc3a77?0x0:_0x48ea64[_0x54d1('0x15')];var _0x16e456=_0xbc3a77?_0x2707c0[_0x54d1('0x18')]:_0x48ea64['offset']+_0x48ea64[_0x54d1('0x16')];var _0x16d976;if(_0x16e456>=_0x30228e){_0x16e456=_0x30228e;_0x16d976=0xc8;}else{_0x16d976=0xce;}_0x1492a5[_0x54d1('0x13')](_0x16d976);return _0x1492a5[_0x54d1('0x19')](_0x54d1('0x1a'),_0x37354a+'-'+_0x16e456+'/'+_0x30228e)[_0x54d1('0x1b')](_0x2707c0);}return null;};}function saveUpdates(_0x496d66){return function(_0x1f29a3){if(_0x1f29a3){return _0x1f29a3[_0x54d1('0x1c')](_0x496d66)['then'](function(_0x48d3bb){return _0x48d3bb;});}return null;};}function removeEntity(_0x174220){return function(_0x325d10){if(_0x325d10){return _0x325d10['destroy']()['then'](function(){_0x174220['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c0acb){return function(_0x3bab6a){if(!_0x3bab6a){_0x3c0acb[_0x54d1('0x12')](0x194);}return _0x3bab6a;};}function handleError(_0x358510,_0x45f262){_0x45f262=_0x45f262||0x1f4;return function(_0x305d87){logger[_0x54d1('0x1d')](_0x305d87['stack']);if(_0x305d87['name']){delete _0x305d87[_0x54d1('0x1e')];}_0x358510[_0x54d1('0x13')](_0x45f262)[_0x54d1('0x1f')](_0x305d87);};}exports['index']=function(_0x35ed56,_0x2e3765){var _0x26c8b4={};var _0x42a311=_[_0x54d1('0x20')](db[_0x54d1('0x21')][_0x54d1('0x22')],function(_0x412f95){return{'name':_0x412f95[_0x54d1('0x23')],'type':_0x412f95[_0x54d1('0x24')][_0x54d1('0x25')]};});_0x26c8b4=qs['getOptions'](_0x42a311,_0x35ed56);return interaction[_0x54d1('0x26')](_0x54d1('0x27'),_0x35ed56[_0x54d1('0x28')],_0x35ed56[_0x54d1('0x29')],_0x26c8b4,_0x42a311)['then'](respondWithFilteredResult(_0x2e3765,_0x26c8b4))['catch'](handleError(_0x2e3765,null));};exports[_0x54d1('0x2a')]=function(_0x4ebee8,_0x4c0ea1){var _0x2b9d9a={'raw':![],'where':{'id':_0x4ebee8[_0x54d1('0x2b')]['id']}},_0x2ff465={};_0x2ff465[_0x54d1('0x2c')]=_[_0x54d1('0x2d')](db[_0x54d1('0x21')][_0x54d1('0x22')]);_0x2ff465[_0x54d1('0x28')]=_[_0x54d1('0x2d')](_0x4ebee8['query']);_0x2ff465[_0x54d1('0x2e')]=_[_0x54d1('0x2f')](_0x2ff465[_0x54d1('0x2c')],_0x2ff465[_0x54d1('0x28')]);_0x2b9d9a[_0x54d1('0x30')]=_[_0x54d1('0x2f')](_0x2ff465[_0x54d1('0x2c')],qs[_0x54d1('0x31')](_0x4ebee8[_0x54d1('0x28')][_0x54d1('0x31')]));_0x2b9d9a[_0x54d1('0x30')]=_0x2b9d9a[_0x54d1('0x30')][_0x54d1('0x32')]?_0x2b9d9a[_0x54d1('0x30')]:_0x2ff465['model'];if(_0x4ebee8['query']['includeAll']){_0x2b9d9a['include']=[{'all':!![]}];}_0x2b9d9a=_[_0x54d1('0x33')]({},_0x2b9d9a,_0x4ebee8[_0x54d1('0x34')]);return db[_0x54d1('0x21')][_0x54d1('0x35')](_0x2b9d9a)[_0x54d1('0x36')](handleEntityNotFound(_0x4c0ea1,null))['then'](respondWithResult(_0x4c0ea1,null))[_0x54d1('0x37')](handleError(_0x4c0ea1,null));};exports[_0x54d1('0x38')]=function(_0x6f06b,_0xf46d52){return db[_0x54d1('0x21')][_0x54d1('0x38')](_0x6f06b[_0x54d1('0x39')],{})[_0x54d1('0x36')](respondWithResult(_0xf46d52,0xc9))['catch'](handleError(_0xf46d52,null));};exports['update']=function(_0xbb2ed0,_0x546b54){if(_0xbb2ed0[_0x54d1('0x39')]['id']){delete _0xbb2ed0[_0x54d1('0x39')]['id'];}return db[_0x54d1('0x21')][_0x54d1('0x35')]({'where':{'id':_0xbb2ed0[_0x54d1('0x2b')]['id']}})[_0x54d1('0x36')](handleEntityNotFound(_0x546b54,null))[_0x54d1('0x36')](saveUpdates(_0xbb2ed0[_0x54d1('0x39')],null))['then'](respondWithResult(_0x546b54,null))['catch'](handleError(_0x546b54,null));};exports[_0x54d1('0x3a')]=function(_0x42d5d4,_0x5a52a3){return db['MailInteraction'][_0x54d1('0x35')]({'where':{'id':_0x42d5d4[_0x54d1('0x2b')]['id']}})[_0x54d1('0x36')](handleEntityNotFound(_0x5a52a3,null))[_0x54d1('0x36')](removeEntity(_0x5a52a3,null))['catch'](handleError(_0x5a52a3,null));};exports[_0x54d1('0x3b')]=function(_0x25a8bc,_0x5a5ec0){return db[_0x54d1('0x21')][_0x54d1('0x3b')]()[_0x54d1('0x36')](respondWithResult(_0x5a5ec0,null))[_0x54d1('0x37')](handleError(_0x5a5ec0,null));};exports['addMessage']=function(_0x196d6d,_0x920a91){return db[_0x54d1('0x3c')]['find']({'where':{'id':_0x196d6d['params']['id']}})[_0x54d1('0x36')](handleEntityNotFound(_0x920a91,null))[_0x54d1('0x36')](function(_0x6f89e3){if(_0x6f89e3){return _0x6f89e3[_0x54d1('0x3d')](_0x196d6d['body'][_0x54d1('0x3e')],_[_0x54d1('0x3f')](_0x196d6d['body'],[_0x54d1('0x3e'),'id'])||{});}})[_0x54d1('0x36')](respondWithResult(_0x920a91,null))[_0x54d1('0x37')](handleError(_0x920a91,null));};exports['getMessages']=function(_0x1f46a1,_0x10a9fc){var _0x455e4f={'raw':![],'where':{}};var _0x15fdb2={};var _0x1ddd25={'count':0x0,'rows':[]};return db['MailInteraction'][_0x54d1('0x40')]({'where':{'id':_0x1f46a1['params']['id']}})[_0x54d1('0x36')](handleEntityNotFound(_0x10a9fc,null))[_0x54d1('0x36')](function(_0x43123c){if(_0x43123c){_0x15fdb2[_0x54d1('0x2c')]=_['keys'](db[_0x54d1('0x3c')][_0x54d1('0x22')]);_0x15fdb2[_0x54d1('0x28')]=_[_0x54d1('0x2d')](_0x1f46a1[_0x54d1('0x28')]);_0x15fdb2[_0x54d1('0x2e')]=_['intersection'](_0x15fdb2['model'],_0x15fdb2[_0x54d1('0x28')]);_0x455e4f[_0x54d1('0x30')]=_[_0x54d1('0x2f')](_0x15fdb2[_0x54d1('0x2c')],qs[_0x54d1('0x31')](_0x1f46a1[_0x54d1('0x28')][_0x54d1('0x31')]));_0x455e4f[_0x54d1('0x30')]=_0x455e4f[_0x54d1('0x30')][_0x54d1('0x32')]?_0x455e4f[_0x54d1('0x30')]:_0x15fdb2['model'];if(!_0x1f46a1[_0x54d1('0x28')][_0x54d1('0x41')](_0x54d1('0x42'))){_0x455e4f[_0x54d1('0x16')]=qs[_0x54d1('0x16')](_0x1f46a1[_0x54d1('0x28')][_0x54d1('0x16')]);_0x455e4f[_0x54d1('0x15')]=qs[_0x54d1('0x15')](_0x1f46a1[_0x54d1('0x28')]['offset']);}_0x455e4f[_0x54d1('0x43')]=qs['sort'](_0x1f46a1[_0x54d1('0x28')][_0x54d1('0x44')]);_0x455e4f['where']=qs[_0x54d1('0x2e')](_['pick'](_0x1f46a1[_0x54d1('0x28')],_0x15fdb2[_0x54d1('0x2e')]));_0x455e4f[_0x54d1('0x45')]['MailInteractionId']=_0x43123c['id'];if(_0x1f46a1[_0x54d1('0x28')][_0x54d1('0x46')]){_0x455e4f[_0x54d1('0x45')]=_[_0x54d1('0x33')](_0x455e4f[_0x54d1('0x45')],{'$or':_[_0x54d1('0x20')](_0x455e4f['attributes'],function(_0x47e141){var _0x2c48ff={};_0x2c48ff[_0x47e141]={'$like':'%'+_0x1f46a1['query'][_0x54d1('0x46')]+'%'};return _0x2c48ff;})});}if(_0x1f46a1[_0x54d1('0x28')][_0x54d1('0x47')]){var _0x2c44ca=_0x1f46a1['query'][_0x54d1('0x47')][_0x54d1('0x48')](',');var _0x8147c8={};_0x8147c8[_0x2c44ca[0x0]]={'$gte':moment(_0x2c44ca[0x1])[_0x54d1('0x49')](_0x54d1('0x4a'))};_0x455e4f['where']=_['merge'](_0x455e4f[_0x54d1('0x45')],_0x8147c8);}_0x455e4f=_[_0x54d1('0x33')]({},_0x455e4f,_0x1f46a1[_0x54d1('0x34')]);return db[_0x54d1('0x3c')][_0x54d1('0x18')]({'where':_0x455e4f['where']})[_0x54d1('0x36')](function(_0x5776f9){_0x1ddd25[_0x54d1('0x18')]=_0x5776f9;if(_0x1f46a1[_0x54d1('0x28')][_0x54d1('0x4b')]){_0x455e4f['include']=[{'all':!![]}];}return db[_0x54d1('0x3c')]['findAll'](_0x455e4f);})[_0x54d1('0x36')](function(_0x35f938){if(_0x1f46a1['query'][_0x54d1('0x4c')]==='true'){for(var _0x32155e=0x0;_0x32155e<_0x35f938['length'];_0x32155e++){_0x35f938[_0x32155e][_0x54d1('0x39')]=juice(_0x35f938[_0x32155e][_0x54d1('0x39')]);}}_0x1ddd25[_0x54d1('0x4d')]=_0x35f938;return _0x1ddd25;});}})[_0x54d1('0x36')](respondWithFilteredResult(_0x10a9fc,_0x455e4f))[_0x54d1('0x37')](handleError(_0x10a9fc,null));};exports[_0x54d1('0x4e')]=function(_0x58482d,_0x5e5f24){return db[_0x54d1('0x21')][_0x54d1('0x35')]({'where':{'id':_0x58482d[_0x54d1('0x2b')]['id']}})[_0x54d1('0x36')](handleEntityNotFound(_0x5e5f24,null))[_0x54d1('0x36')](function(_0x50a0cc){if(_0x50a0cc){return _0x50a0cc['setTags'](_0x58482d['body'][_0x54d1('0x3e')],_['omit'](_0x58482d[_0x54d1('0x39')],[_0x54d1('0x3e'),'id'])||{})[_0x54d1('0x4f')](function(){return db[_0x54d1('0x50')]['findAll']({'attributes':['id','name',_0x54d1('0x51')],'where':{'id':_0x58482d['body']['ids']}});})[_0x54d1('0x36')](function(_0x1e7a32){socket['emit'](_0x54d1('0x52'),{'id':Number(_0x58482d[_0x54d1('0x2b')]['id']),'tags':_0x1e7a32||[]});return{'id':Number(_0x58482d[_0x54d1('0x2b')]['id']),'tags':_0x1e7a32||[]};});}})[_0x54d1('0x36')](respondWithResult(_0x5e5f24,null))[_0x54d1('0x37')](handleError(_0x5e5f24,null));};exports[_0x54d1('0x53')]=function(_0x56fd87,_0x1eb149){return db['MailInteraction'][_0x54d1('0x35')]({'where':{'id':_0x56fd87[_0x54d1('0x2b')]['id']}})[_0x54d1('0x36')](handleEntityNotFound(_0x1eb149,null))[_0x54d1('0x36')](function(_0x35d3d4){if(_0x35d3d4){return _0x35d3d4[_0x54d1('0x53')](_0x56fd87['query'][_0x54d1('0x3e')]);}})[_0x54d1('0x36')](respondWithStatusCode(_0x1eb149,null))[_0x54d1('0x37')](handleError(_0x1eb149,null));};exports[_0x54d1('0x54')]=function(_0x826ccc,_0x20bd35){var _0x5e0661=moment()[_0x54d1('0x55')]()[_0x54d1('0x56')]();var _0x347f42=path[_0x54d1('0x57')](config[_0x54d1('0x58')],'server',_0x54d1('0x59'),_0x54d1('0x5a'));var _0x4a865b=path[_0x54d1('0x57')](config['root'],'server',_0x54d1('0x59'),_0x54d1('0x5b'));var _0x4dda1b=path[_0x54d1('0x57')](_0x347f42,_0x5e0661);var _0x350ed1=util[_0x54d1('0x49')](_0x54d1('0x5c'),_0x826ccc[_0x54d1('0x2b')]['id'],_0x5e0661);var _0x46278f=path[_0x54d1('0x57')](_0x347f42,_0x350ed1);var _0x4cf81e=[];if(_0x826ccc[_0x54d1('0x28')]['attachments']){_0x4cf81e[_0x54d1('0x5d')]({'model':db['Attachment'],'as':'Attachments','raw':!![]});}var _0x467e83=[{'model':db[_0x54d1('0x3c')],'as':_0x54d1('0x5e'),'attributes':['id','body','from','to','cc',_0x54d1('0x5f'),_0x54d1('0x60'),_0x54d1('0x61')],'where':{'secret':![]},'order':qs[_0x54d1('0x44')]('id'),'include':_0x4cf81e}];return db[_0x54d1('0x21')]['find']({'where':{'id':_0x826ccc['params']['id']},'include':_0x467e83})[_0x54d1('0x36')](handleEntityNotFound(_0x20bd35,null))[_0x54d1('0x36')](function(_0xb45d5f){if(_0xb45d5f&&_0xb45d5f['Messages']){var _0x32d52d=_0xb45d5f[_0x54d1('0x62')]({'plain':!![]});fs[_0x54d1('0x63')](_0x4dda1b);return BPromise[_0x54d1('0x64')](_0x32d52d[_0x54d1('0x5e')],function(_0x412172,_0x2c73f3){var _0x22544e={'from':_0x412172[_0x54d1('0x65')],'to':_0x412172['to']||_0x54d1('0x66'),'subject':_0x412172[_0x54d1('0x60')],'html':htmlEntities[_0x54d1('0x67')](_0x412172[_0x54d1('0x39')]),'headers':{'Date':moment(_0x412172[_0x54d1('0x61')])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x412172['cc']){_0x22544e[_0x54d1('0x68')]['Cc']=_0x412172['cc'];}if(_0x412172['bcc']){_0x22544e['headers'][_0x54d1('0x69')]=_0x412172['bcc'];}return new BPromise(function(_0x5616a3,_0x22c9cf){if(_0x412172[_0x54d1('0x6a')]){for(var _0x135eaa=0x0;_0x135eaa<_0x412172['Attachments'][_0x54d1('0x32')];_0x135eaa++){var _0x2c28c4=_0x412172[_0x54d1('0x6a')][_0x135eaa];var _0x3da513=path[_0x54d1('0x57')](_0x4a865b,_0x2c28c4[_0x54d1('0x6b')]);if(fs[_0x54d1('0x6c')](_0x3da513)){_0x22544e[_0x54d1('0x5b')][_0x54d1('0x5d')]({'name':_0x2c28c4[_0x54d1('0x1e')],'contentType':_0x2c28c4['type'],'data':fs['readFileSync'](_0x3da513)});}}}emlformat['build'](_0x22544e,function(_0x591feb,_0x4deb75){if(_0x591feb)return _0x22c9cf(_0x591feb);fs[_0x54d1('0x6d')](path[_0x54d1('0x57')](_0x4dda1b,util['format']('message%d.eml',_0x2c73f3)),_0x4deb75);return _0x5616a3(_0x4deb75);});});})[_0x54d1('0x36')](function(){return new BPromise(function(_0x1370bb,_0xd9cf0b){zipdir(_0x4dda1b,{'saveTo':_0x46278f},function(_0x854b57,_0x2db188){if(_0x854b57)return _0xd9cf0b(_0x854b57);return _0x1370bb(_0x2db188);});})[_0x54d1('0x36')](function(){return new BPromise(function(_0x5cb498,_0x216662){rimraf(_0x4dda1b,function(_0x41c5dc){if(_0x41c5dc)_0x216662(_0x41c5dc);return _0x5cb498();});});})[_0x54d1('0x36')](function(){return _0x20bd35[_0x54d1('0x54')](_0x46278f,_0x350ed1,function(_0xaba50){if(!_0xaba50)fs['unlinkSync'](_0x46278f);});});});}else{return _0x20bd35['sendStatus'](0xc8);}})[_0x54d1('0x37')](handleError(_0x20bd35,null));};