Built motion from commit b0a9a629.|2.6.33
[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 _0xa3d6=['true','rows','addTags','omit','color','emit','mailInteractionTags:save','unix','toString','join','server','files','root','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','subject','get','missing.recipient@your.company.com','decode','createdAt','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','basename','existsSync','build','writeFileSync','message%d.eml','download','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util','path','lodash','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','html-entities','redis','defaults','localhost','./mailInteraction.socket','sendStatus','status','json','offset','undefined','count','limit','set','update','then','end','stack','name','send','index','map','MailInteraction','rawAttributes','fieldName','type','key','findAll','mail','query','user','catch','show','model','keys','filters','intersection','attributes','fields','length','merge','options','find','body','params','destroy','describe','addMessage','MailMessage','ids','findOne','hasOwnProperty','nolimit','order','sort','where','filter','$gte','split','format','includeAll','include','inlineCss'];(function(_0x2d7e66,_0x44633c){var _0x58b07c=function(_0x28d399){while(--_0x28d399){_0x2d7e66['push'](_0x2d7e66['shift']());}};_0x58b07c(++_0x44633c);}(_0xa3d6,0x92));var _0x6a3d=function(_0x4f9e17,_0x4cf03f){_0x4f9e17=_0x4f9e17-0x0;var _0x4e7af7=_0xa3d6[_0x4f9e17];return _0x4e7af7;};'use strict';var emlformat=require(_0x6a3d('0x0'));var rimraf=require(_0x6a3d('0x1'));var zipdir=require(_0x6a3d('0x2'));var moment=require(_0x6a3d('0x3'));var BPromise=require(_0x6a3d('0x4'));var util=require(_0x6a3d('0x5'));var path=require(_0x6a3d('0x6'));var fs=require('fs');var _=require(_0x6a3d('0x7'));var juice=require(_0x6a3d('0x8'));var Redis=require(_0x6a3d('0x9'));var interaction=require('../../components/interaction/service');var qs=require(_0x6a3d('0xa'));var logger=require(_0x6a3d('0xb'))(_0x6a3d('0xc'));var config=require(_0x6a3d('0xd'));var db=require('../../mysqldb')['db'];var htmlEntities=require(_0x6a3d('0xe'));config[_0x6a3d('0xf')]=_[_0x6a3d('0x10')](config[_0x6a3d('0xf')],{'host':_0x6a3d('0x11'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6a3d('0xf')]));require(_0x6a3d('0x12'))['register'](socket);function respondWithStatusCode(_0x1a03bf,_0x18651d){_0x18651d=_0x18651d||0xcc;return function(_0x23faf5){if(_0x23faf5){return _0x1a03bf[_0x6a3d('0x13')](_0x18651d);}return _0x1a03bf['status'](_0x18651d)['end']();};}function respondWithResult(_0x59cb2c,_0x26b847){_0x26b847=_0x26b847||0xc8;return function(_0x12b98d){if(_0x12b98d){return _0x59cb2c[_0x6a3d('0x14')](_0x26b847)[_0x6a3d('0x15')](_0x12b98d);}};}function respondWithFilteredResult(_0x238ed3,_0x4346c9){return function(_0x11765c){if(_0x11765c){var _0x433e52=typeof _0x4346c9[_0x6a3d('0x16')]===_0x6a3d('0x17')&&typeof _0x4346c9['limit']===_0x6a3d('0x17');var _0x56f719=_0x11765c[_0x6a3d('0x18')];var _0x5b6a11=_0x433e52?0x0:_0x4346c9[_0x6a3d('0x16')];var _0x4b46e3=_0x433e52?_0x11765c['count']:_0x4346c9[_0x6a3d('0x16')]+_0x4346c9[_0x6a3d('0x19')];var _0x23edc5;if(_0x4b46e3>=_0x56f719){_0x4b46e3=_0x56f719;_0x23edc5=0xc8;}else{_0x23edc5=0xce;}_0x238ed3[_0x6a3d('0x14')](_0x23edc5);return _0x238ed3[_0x6a3d('0x1a')]('Content-Range',_0x5b6a11+'-'+_0x4b46e3+'/'+_0x56f719)[_0x6a3d('0x15')](_0x11765c);}return null;};}function saveUpdates(_0x26b5a0){return function(_0x58b737){if(_0x58b737){return _0x58b737[_0x6a3d('0x1b')](_0x26b5a0)[_0x6a3d('0x1c')](function(_0x1a50d5){return _0x1a50d5;});}return null;};}function removeEntity(_0x4821a2){return function(_0x47ce01){if(_0x47ce01){return _0x47ce01['destroy']()['then'](function(){_0x4821a2[_0x6a3d('0x14')](0xcc)[_0x6a3d('0x1d')]();});}};}function handleEntityNotFound(_0x5b1089){return function(_0xb9d97b){if(!_0xb9d97b){_0x5b1089[_0x6a3d('0x13')](0x194);}return _0xb9d97b;};}function handleError(_0x52bf2a,_0x261b96){_0x261b96=_0x261b96||0x1f4;return function(_0x365505){logger['error'](_0x365505[_0x6a3d('0x1e')]);if(_0x365505[_0x6a3d('0x1f')]){delete _0x365505[_0x6a3d('0x1f')];}_0x52bf2a['status'](_0x261b96)[_0x6a3d('0x20')](_0x365505);};}exports[_0x6a3d('0x21')]=function(_0xc5518f,_0x35e8d7){var _0x4b32cf={};var _0x4966dc=_[_0x6a3d('0x22')](db[_0x6a3d('0x23')][_0x6a3d('0x24')],function(_0x288b04){return{'name':_0x288b04[_0x6a3d('0x25')],'type':_0x288b04[_0x6a3d('0x26')][_0x6a3d('0x27')]};});_0x4b32cf=qs['getOptions'](_0x4966dc,_0xc5518f);return interaction[_0x6a3d('0x28')](_0x6a3d('0x29'),_0xc5518f[_0x6a3d('0x2a')],_0xc5518f[_0x6a3d('0x2b')],_0x4b32cf,_0x4966dc)[_0x6a3d('0x1c')](respondWithFilteredResult(_0x35e8d7,_0x4b32cf))[_0x6a3d('0x2c')](handleError(_0x35e8d7,null));};exports[_0x6a3d('0x2d')]=function(_0x3beff0,_0x45eda4){var _0x58ce8c={'raw':![],'where':{'id':_0x3beff0['params']['id']}},_0x5be19a={};_0x5be19a[_0x6a3d('0x2e')]=_[_0x6a3d('0x2f')](db[_0x6a3d('0x23')]['rawAttributes']);_0x5be19a[_0x6a3d('0x2a')]=_[_0x6a3d('0x2f')](_0x3beff0[_0x6a3d('0x2a')]);_0x5be19a[_0x6a3d('0x30')]=_[_0x6a3d('0x31')](_0x5be19a['model'],_0x5be19a['query']);_0x58ce8c[_0x6a3d('0x32')]=_[_0x6a3d('0x31')](_0x5be19a[_0x6a3d('0x2e')],qs['fields'](_0x3beff0[_0x6a3d('0x2a')][_0x6a3d('0x33')]));_0x58ce8c[_0x6a3d('0x32')]=_0x58ce8c['attributes'][_0x6a3d('0x34')]?_0x58ce8c[_0x6a3d('0x32')]:_0x5be19a[_0x6a3d('0x2e')];if(_0x3beff0[_0x6a3d('0x2a')]['includeAll']){_0x58ce8c['include']=[{'all':!![]}];}_0x58ce8c=_[_0x6a3d('0x35')]({},_0x58ce8c,_0x3beff0[_0x6a3d('0x36')]);return db[_0x6a3d('0x23')][_0x6a3d('0x37')](_0x58ce8c)[_0x6a3d('0x1c')](handleEntityNotFound(_0x45eda4,null))[_0x6a3d('0x1c')](respondWithResult(_0x45eda4,null))['catch'](handleError(_0x45eda4,null));};exports['create']=function(_0x37d8ef,_0x5d4a5e){return db[_0x6a3d('0x23')]['create'](_0x37d8ef['body'],{})[_0x6a3d('0x1c')](respondWithResult(_0x5d4a5e,0xc9))[_0x6a3d('0x2c')](handleError(_0x5d4a5e,null));};exports[_0x6a3d('0x1b')]=function(_0x44b080,_0x101031){if(_0x44b080[_0x6a3d('0x38')]['id']){delete _0x44b080[_0x6a3d('0x38')]['id'];}return db['MailInteraction']['find']({'where':{'id':_0x44b080[_0x6a3d('0x39')]['id']}})[_0x6a3d('0x1c')](handleEntityNotFound(_0x101031,null))[_0x6a3d('0x1c')](saveUpdates(_0x44b080[_0x6a3d('0x38')],null))[_0x6a3d('0x1c')](respondWithResult(_0x101031,null))[_0x6a3d('0x2c')](handleError(_0x101031,null));};exports[_0x6a3d('0x3a')]=function(_0x2c87d3,_0x3fe14d){return db[_0x6a3d('0x23')][_0x6a3d('0x37')]({'where':{'id':_0x2c87d3[_0x6a3d('0x39')]['id']}})['then'](handleEntityNotFound(_0x3fe14d,null))[_0x6a3d('0x1c')](removeEntity(_0x3fe14d,null))[_0x6a3d('0x2c')](handleError(_0x3fe14d,null));};exports['describe']=function(_0x50480b,_0x497943){return db[_0x6a3d('0x23')][_0x6a3d('0x3b')]()['then'](respondWithResult(_0x497943,null))[_0x6a3d('0x2c')](handleError(_0x497943,null));};exports[_0x6a3d('0x3c')]=function(_0x56e930,_0xb176b1){return db[_0x6a3d('0x3d')][_0x6a3d('0x37')]({'where':{'id':_0x56e930['params']['id']}})[_0x6a3d('0x1c')](handleEntityNotFound(_0xb176b1,null))[_0x6a3d('0x1c')](function(_0x3e5ae8){if(_0x3e5ae8){return _0x3e5ae8['addMessage'](_0x56e930[_0x6a3d('0x38')][_0x6a3d('0x3e')],_['omit'](_0x56e930[_0x6a3d('0x38')],[_0x6a3d('0x3e'),'id'])||{});}})['then'](respondWithResult(_0xb176b1,null))[_0x6a3d('0x2c')](handleError(_0xb176b1,null));};exports['getMessages']=function(_0xc04f9f,_0xfa7811){var _0x25b241={'raw':![],'where':{}};var _0x572f57={};var _0x3859fd={'count':0x0,'rows':[]};return db[_0x6a3d('0x23')][_0x6a3d('0x3f')]({'where':{'id':_0xc04f9f[_0x6a3d('0x39')]['id']}})[_0x6a3d('0x1c')](handleEntityNotFound(_0xfa7811,null))[_0x6a3d('0x1c')](function(_0x5c74f8){if(_0x5c74f8){_0x572f57[_0x6a3d('0x2e')]=_[_0x6a3d('0x2f')](db[_0x6a3d('0x3d')]['rawAttributes']);_0x572f57[_0x6a3d('0x2a')]=_[_0x6a3d('0x2f')](_0xc04f9f[_0x6a3d('0x2a')]);_0x572f57[_0x6a3d('0x30')]=_[_0x6a3d('0x31')](_0x572f57[_0x6a3d('0x2e')],_0x572f57[_0x6a3d('0x2a')]);_0x25b241[_0x6a3d('0x32')]=_[_0x6a3d('0x31')](_0x572f57[_0x6a3d('0x2e')],qs['fields'](_0xc04f9f[_0x6a3d('0x2a')][_0x6a3d('0x33')]));_0x25b241[_0x6a3d('0x32')]=_0x25b241[_0x6a3d('0x32')][_0x6a3d('0x34')]?_0x25b241[_0x6a3d('0x32')]:_0x572f57[_0x6a3d('0x2e')];if(!_0xc04f9f[_0x6a3d('0x2a')][_0x6a3d('0x40')](_0x6a3d('0x41'))){_0x25b241[_0x6a3d('0x19')]=qs[_0x6a3d('0x19')](_0xc04f9f[_0x6a3d('0x2a')][_0x6a3d('0x19')]);_0x25b241['offset']=qs[_0x6a3d('0x16')](_0xc04f9f[_0x6a3d('0x2a')][_0x6a3d('0x16')]);}_0x25b241[_0x6a3d('0x42')]=qs[_0x6a3d('0x43')](_0xc04f9f[_0x6a3d('0x2a')]['sort']);_0x25b241[_0x6a3d('0x44')]=qs[_0x6a3d('0x30')](_['pick'](_0xc04f9f[_0x6a3d('0x2a')],_0x572f57[_0x6a3d('0x30')]));_0x25b241[_0x6a3d('0x44')]['MailInteractionId']=_0x5c74f8['id'];if(_0xc04f9f['query'][_0x6a3d('0x45')]){_0x25b241['where']=_[_0x6a3d('0x35')](_0x25b241[_0x6a3d('0x44')],{'$or':_['map'](_0x25b241[_0x6a3d('0x32')],function(_0x19f8cf){var _0x595c5a={};_0x595c5a[_0x19f8cf]={'$like':'%'+_0xc04f9f[_0x6a3d('0x2a')][_0x6a3d('0x45')]+'%'};return _0x595c5a;})});}if(_0xc04f9f[_0x6a3d('0x2a')][_0x6a3d('0x46')]){var _0x47f20c=_0xc04f9f[_0x6a3d('0x2a')][_0x6a3d('0x46')][_0x6a3d('0x47')](',');var _0x3a509={};_0x3a509[_0x47f20c[0x0]]={'$gte':moment(_0x47f20c[0x1])[_0x6a3d('0x48')]('YYYY-MM-DD\x20HH:mm:ss')};_0x25b241['where']=_[_0x6a3d('0x35')](_0x25b241['where'],_0x3a509);}_0x25b241=_[_0x6a3d('0x35')]({},_0x25b241,_0xc04f9f['options']);return db[_0x6a3d('0x3d')][_0x6a3d('0x18')]({'where':_0x25b241['where']})[_0x6a3d('0x1c')](function(_0x1bc118){_0x3859fd[_0x6a3d('0x18')]=_0x1bc118;if(_0xc04f9f['query'][_0x6a3d('0x49')]){_0x25b241[_0x6a3d('0x4a')]=[{'all':!![]}];}return db[_0x6a3d('0x3d')]['findAll'](_0x25b241);})[_0x6a3d('0x1c')](function(_0x535a2c){if(_0xc04f9f[_0x6a3d('0x2a')][_0x6a3d('0x4b')]===_0x6a3d('0x4c')){for(var _0x57ec73=0x0;_0x57ec73<_0x535a2c['length'];_0x57ec73++){_0x535a2c[_0x57ec73][_0x6a3d('0x38')]=juice(_0x535a2c[_0x57ec73][_0x6a3d('0x38')]);}}_0x3859fd[_0x6a3d('0x4d')]=_0x535a2c;return _0x3859fd;});}})[_0x6a3d('0x1c')](respondWithFilteredResult(_0xfa7811,_0x25b241))['catch'](handleError(_0xfa7811,null));};exports[_0x6a3d('0x4e')]=function(_0x495f8a,_0x2ea646){return db['MailInteraction'][_0x6a3d('0x37')]({'where':{'id':_0x495f8a['params']['id']}})[_0x6a3d('0x1c')](handleEntityNotFound(_0x2ea646,null))[_0x6a3d('0x1c')](function(_0x50c4a1){if(_0x50c4a1){return _0x50c4a1['setTags'](_0x495f8a[_0x6a3d('0x38')][_0x6a3d('0x3e')],_[_0x6a3d('0x4f')](_0x495f8a[_0x6a3d('0x38')],['ids','id'])||{})['spread'](function(){return db['Tag'][_0x6a3d('0x28')]({'attributes':['id',_0x6a3d('0x1f'),_0x6a3d('0x50')],'where':{'id':_0x495f8a[_0x6a3d('0x38')][_0x6a3d('0x3e')]}});})[_0x6a3d('0x1c')](function(_0xcdee51){socket[_0x6a3d('0x51')](_0x6a3d('0x52'),{'id':Number(_0x495f8a['params']['id']),'tags':_0xcdee51||[]});return{'id':Number(_0x495f8a[_0x6a3d('0x39')]['id']),'tags':_0xcdee51||[]};});}})[_0x6a3d('0x1c')](respondWithResult(_0x2ea646,null))[_0x6a3d('0x2c')](handleError(_0x2ea646,null));};exports['removeTags']=function(_0x2cf46a,_0x20695e){return db[_0x6a3d('0x23')]['find']({'where':{'id':_0x2cf46a[_0x6a3d('0x39')]['id']}})[_0x6a3d('0x1c')](handleEntityNotFound(_0x20695e,null))['then'](function(_0x5cc46a){if(_0x5cc46a){return _0x5cc46a['removeTags'](_0x2cf46a[_0x6a3d('0x2a')][_0x6a3d('0x3e')]);}})[_0x6a3d('0x1c')](respondWithStatusCode(_0x20695e,null))['catch'](handleError(_0x20695e,null));};exports['download']=function(_0x3706b9,_0x9cd836){var _0x5edcf2=moment()[_0x6a3d('0x53')]()[_0x6a3d('0x54')]();var _0x26869c=path[_0x6a3d('0x55')](config['root'],_0x6a3d('0x56'),_0x6a3d('0x57'),'tmp');var _0x4e1483=path[_0x6a3d('0x55')](config[_0x6a3d('0x58')],_0x6a3d('0x56'),_0x6a3d('0x57'),_0x6a3d('0x59'));var _0x230288=path[_0x6a3d('0x55')](_0x26869c,_0x5edcf2);var _0x2ae24d=util['format'](_0x6a3d('0x5a'),_0x3706b9['params']['id'],_0x5edcf2);var _0x250b5a=path[_0x6a3d('0x55')](_0x26869c,_0x2ae24d);var _0x11abfa=[];if(_0x3706b9[_0x6a3d('0x2a')]['attachments']){_0x11abfa[_0x6a3d('0x5b')]({'model':db[_0x6a3d('0x5c')],'as':_0x6a3d('0x5d'),'raw':!![]});}var _0x176766=[{'model':db['MailMessage'],'as':_0x6a3d('0x5e'),'attributes':['id',_0x6a3d('0x38'),_0x6a3d('0x5f'),'to','cc','bcc',_0x6a3d('0x60'),'createdAt'],'where':{'secret':![]},'order':qs[_0x6a3d('0x43')]('id'),'include':_0x11abfa}];return db['MailInteraction'][_0x6a3d('0x37')]({'where':{'id':_0x3706b9[_0x6a3d('0x39')]['id']},'include':_0x176766})[_0x6a3d('0x1c')](handleEntityNotFound(_0x9cd836,null))[_0x6a3d('0x1c')](function(_0x3ab104){if(_0x3ab104&&_0x3ab104[_0x6a3d('0x5e')]){var _0x354d0e=_0x3ab104[_0x6a3d('0x61')]({'plain':!![]});fs['mkdirSync'](_0x230288);return BPromise['each'](_0x354d0e[_0x6a3d('0x5e')],function(_0x2efa65,_0x89740e){var _0x295fb3={'from':_0x2efa65['from'],'to':_0x2efa65['to']||_0x6a3d('0x62'),'subject':_0x2efa65['subject'],'html':htmlEntities[_0x6a3d('0x63')](_0x2efa65[_0x6a3d('0x38')]),'headers':{'Date':moment(_0x2efa65[_0x6a3d('0x64')])[_0x6a3d('0x48')](_0x6a3d('0x65'))},'attachments':[]};if(_0x2efa65['cc']){_0x295fb3['headers']['Cc']=_0x2efa65['cc'];}if(_0x2efa65['bcc']){_0x295fb3[_0x6a3d('0x66')]['Bcc']=_0x2efa65[_0x6a3d('0x67')];}return new BPromise(function(_0x409a07,_0x1c26f6){if(_0x2efa65[_0x6a3d('0x5d')]){for(var _0x166b0d=0x0;_0x166b0d<_0x2efa65[_0x6a3d('0x5d')][_0x6a3d('0x34')];_0x166b0d++){var _0x5497b4=_0x2efa65['Attachments'][_0x166b0d];var _0x2d9705=path['join'](_0x4e1483,_0x5497b4[_0x6a3d('0x68')]);if(fs[_0x6a3d('0x69')](_0x2d9705)){_0x295fb3[_0x6a3d('0x59')][_0x6a3d('0x5b')]({'name':_0x5497b4[_0x6a3d('0x1f')],'contentType':_0x5497b4[_0x6a3d('0x26')],'data':fs['readFileSync'](_0x2d9705)});}}}emlformat[_0x6a3d('0x6a')](_0x295fb3,function(_0x362fa2,_0x3e1c9f){if(_0x362fa2)return _0x1c26f6(_0x362fa2);fs[_0x6a3d('0x6b')](path[_0x6a3d('0x55')](_0x230288,util[_0x6a3d('0x48')](_0x6a3d('0x6c'),_0x89740e)),_0x3e1c9f);return _0x409a07(_0x3e1c9f);});});})[_0x6a3d('0x1c')](function(){return new BPromise(function(_0x535600,_0x52c83d){zipdir(_0x230288,{'saveTo':_0x250b5a},function(_0xd98ed2,_0xedecf0){if(_0xd98ed2)return _0x52c83d(_0xd98ed2);return _0x535600(_0xedecf0);});})['then'](function(){return new BPromise(function(_0x51e6bf,_0x24bd8c){rimraf(_0x230288,function(_0x2ad253){if(_0x2ad253)_0x24bd8c(_0x2ad253);return _0x51e6bf();});});})[_0x6a3d('0x1c')](function(){return _0x9cd836[_0x6a3d('0x6d')](_0x250b5a,_0x2ae24d,function(_0xe4c764){if(!_0xe4c764)fs[_0x6a3d('0x6e')](_0x250b5a);});});});}else{return _0x9cd836[_0x6a3d('0x13')](0xc8);}})[_0x6a3d('0x2c')](handleError(_0x9cd836,null));};