Built motion from commit a134ab58.|2.6.29
[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 _0xfc33=['destroy','name','send','index','MailInteraction','type','getOptions','findAll','mail','query','catch','params','model','keys','filters','attributes','intersection','fields','length','includeAll','include','find','create','body','describe','MailMessage','addMessage','ids','omit','getMessages','findOne','rawAttributes','hasOwnProperty','limit','order','sort','pick','where','MailInteractionId','filter','merge','$gte','split','format','options','inlineCss','true','rows','addTags','spread','Tag','emit','mailInteractionTags:save','removeTags','download','toString','join','root','server','files','tmp','attachments','Attachment','Attachments','Messages','from','get','missing.recipient@your.company.com','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','existsSync','push','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','eml-format','zip-dir','moment','bluebird','util','path','lodash','juice','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','update','then'];(function(_0x5b3fb7,_0x24fcf6){var _0x4b947b=function(_0x2fa059){while(--_0x2fa059){_0x5b3fb7['push'](_0x5b3fb7['shift']());}};_0x4b947b(++_0x24fcf6);}(_0xfc33,0xbc));var _0x3fc3=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0xfc33[_0x29d915];return _0x160f86;};'use strict';var emlformat=require(_0x3fc3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3fc3('0x1'));var moment=require(_0x3fc3('0x2'));var BPromise=require(_0x3fc3('0x3'));var util=require(_0x3fc3('0x4'));var path=require(_0x3fc3('0x5'));var fs=require('fs');var _=require(_0x3fc3('0x6'));var juice=require(_0x3fc3('0x7'));var Redis=require('ioredis');var interaction=require(_0x3fc3('0x8'));var qs=require(_0x3fc3('0x9'));var logger=require(_0x3fc3('0xa'))(_0x3fc3('0xb'));var config=require(_0x3fc3('0xc'));var db=require(_0x3fc3('0xd'))['db'];var htmlEntities=require(_0x3fc3('0xe'));config[_0x3fc3('0xf')]=_[_0x3fc3('0x10')](config[_0x3fc3('0xf')],{'host':_0x3fc3('0x11'),'port':0x18eb});var socket=require(_0x3fc3('0x12'))(new Redis(config[_0x3fc3('0xf')]));require('./mailInteraction.socket')['register'](socket);function respondWithStatusCode(_0x165e8b,_0x4f7c59){_0x4f7c59=_0x4f7c59||0xcc;return function(_0x3a394d){if(_0x3a394d){return _0x165e8b[_0x3fc3('0x13')](_0x4f7c59);}return _0x165e8b[_0x3fc3('0x14')](_0x4f7c59)[_0x3fc3('0x15')]();};}function respondWithResult(_0x58947e,_0x3bc24b){_0x3bc24b=_0x3bc24b||0xc8;return function(_0x157159){if(_0x157159){return _0x58947e[_0x3fc3('0x14')](_0x3bc24b)['json'](_0x157159);}};}function respondWithFilteredResult(_0x359b51,_0x4eeccc){return function(_0x3c3846){if(_0x3c3846){var _0x182606=typeof _0x4eeccc[_0x3fc3('0x16')]===_0x3fc3('0x17')&&typeof _0x4eeccc['limit']===_0x3fc3('0x17');var _0x5d6a13=_0x3c3846[_0x3fc3('0x18')];var _0x5865b1=_0x182606?0x0:_0x4eeccc['offset'];var _0xd73fe9=_0x182606?_0x3c3846[_0x3fc3('0x18')]:_0x4eeccc[_0x3fc3('0x16')]+_0x4eeccc['limit'];var _0x3f9a42;if(_0xd73fe9>=_0x5d6a13){_0xd73fe9=_0x5d6a13;_0x3f9a42=0xc8;}else{_0x3f9a42=0xce;}_0x359b51['status'](_0x3f9a42);return _0x359b51[_0x3fc3('0x19')](_0x3fc3('0x1a'),_0x5865b1+'-'+_0xd73fe9+'/'+_0x5d6a13)[_0x3fc3('0x1b')](_0x3c3846);}return null;};}function saveUpdates(_0x4bd24d){return function(_0x397303){if(_0x397303){return _0x397303[_0x3fc3('0x1c')](_0x4bd24d)[_0x3fc3('0x1d')](function(_0x12f03f){return _0x12f03f;});}return null;};}function removeEntity(_0x257fa5){return function(_0x5766ac){if(_0x5766ac){return _0x5766ac[_0x3fc3('0x1e')]()[_0x3fc3('0x1d')](function(){_0x257fa5[_0x3fc3('0x14')](0xcc)[_0x3fc3('0x15')]();});}};}function handleEntityNotFound(_0x10630b){return function(_0x2eaae8){if(!_0x2eaae8){_0x10630b[_0x3fc3('0x13')](0x194);}return _0x2eaae8;};}function handleError(_0x39f385,_0xaff9da){_0xaff9da=_0xaff9da||0x1f4;return function(_0x7e0d4e){logger['error'](_0x7e0d4e['stack']);if(_0x7e0d4e[_0x3fc3('0x1f')]){delete _0x7e0d4e[_0x3fc3('0x1f')];}_0x39f385[_0x3fc3('0x14')](_0xaff9da)[_0x3fc3('0x20')](_0x7e0d4e);};}exports[_0x3fc3('0x21')]=function(_0x5b139e,_0x3a1fb7){var _0x463bc6={};var _0x302bed=_['map'](db[_0x3fc3('0x22')]['rawAttributes'],function(_0x16e73a){return{'name':_0x16e73a['fieldName'],'type':_0x16e73a[_0x3fc3('0x23')]['key']};});_0x463bc6=qs[_0x3fc3('0x24')](_0x302bed,_0x5b139e);return interaction[_0x3fc3('0x25')](_0x3fc3('0x26'),_0x5b139e[_0x3fc3('0x27')],_0x5b139e['user'],_0x463bc6,_0x302bed)[_0x3fc3('0x1d')](respondWithFilteredResult(_0x3a1fb7,_0x463bc6))[_0x3fc3('0x28')](handleError(_0x3a1fb7,null));};exports['show']=function(_0x1fe95b,_0xfe9d7c){var _0x3920db={'raw':![],'where':{'id':_0x1fe95b[_0x3fc3('0x29')]['id']}},_0xdb3bb4={};_0xdb3bb4[_0x3fc3('0x2a')]=_[_0x3fc3('0x2b')](db[_0x3fc3('0x22')]['rawAttributes']);_0xdb3bb4[_0x3fc3('0x27')]=_[_0x3fc3('0x2b')](_0x1fe95b[_0x3fc3('0x27')]);_0xdb3bb4[_0x3fc3('0x2c')]=_['intersection'](_0xdb3bb4[_0x3fc3('0x2a')],_0xdb3bb4[_0x3fc3('0x27')]);_0x3920db[_0x3fc3('0x2d')]=_[_0x3fc3('0x2e')](_0xdb3bb4[_0x3fc3('0x2a')],qs[_0x3fc3('0x2f')](_0x1fe95b[_0x3fc3('0x27')]['fields']));_0x3920db[_0x3fc3('0x2d')]=_0x3920db[_0x3fc3('0x2d')][_0x3fc3('0x30')]?_0x3920db[_0x3fc3('0x2d')]:_0xdb3bb4['model'];if(_0x1fe95b[_0x3fc3('0x27')][_0x3fc3('0x31')]){_0x3920db[_0x3fc3('0x32')]=[{'all':!![]}];}_0x3920db=_['merge']({},_0x3920db,_0x1fe95b['options']);return db[_0x3fc3('0x22')][_0x3fc3('0x33')](_0x3920db)[_0x3fc3('0x1d')](handleEntityNotFound(_0xfe9d7c,null))[_0x3fc3('0x1d')](respondWithResult(_0xfe9d7c,null))[_0x3fc3('0x28')](handleError(_0xfe9d7c,null));};exports[_0x3fc3('0x34')]=function(_0x14819f,_0xea2cdd){return db[_0x3fc3('0x22')][_0x3fc3('0x34')](_0x14819f[_0x3fc3('0x35')],{})['then'](respondWithResult(_0xea2cdd,0xc9))[_0x3fc3('0x28')](handleError(_0xea2cdd,null));};exports[_0x3fc3('0x1c')]=function(_0x487d8a,_0x2724dc){if(_0x487d8a[_0x3fc3('0x35')]['id']){delete _0x487d8a[_0x3fc3('0x35')]['id'];}return db[_0x3fc3('0x22')][_0x3fc3('0x33')]({'where':{'id':_0x487d8a['params']['id']}})[_0x3fc3('0x1d')](handleEntityNotFound(_0x2724dc,null))[_0x3fc3('0x1d')](saveUpdates(_0x487d8a['body'],null))[_0x3fc3('0x1d')](respondWithResult(_0x2724dc,null))[_0x3fc3('0x28')](handleError(_0x2724dc,null));};exports['destroy']=function(_0x1ea3d0,_0x41f429){return db[_0x3fc3('0x22')][_0x3fc3('0x33')]({'where':{'id':_0x1ea3d0[_0x3fc3('0x29')]['id']}})[_0x3fc3('0x1d')](handleEntityNotFound(_0x41f429,null))[_0x3fc3('0x1d')](removeEntity(_0x41f429,null))[_0x3fc3('0x28')](handleError(_0x41f429,null));};exports[_0x3fc3('0x36')]=function(_0x3e5e9a,_0xbfc84c){return db[_0x3fc3('0x22')]['describe']()[_0x3fc3('0x1d')](respondWithResult(_0xbfc84c,null))[_0x3fc3('0x28')](handleError(_0xbfc84c,null));};exports['addMessage']=function(_0x261215,_0x26b623){return db[_0x3fc3('0x37')][_0x3fc3('0x33')]({'where':{'id':_0x261215[_0x3fc3('0x29')]['id']}})['then'](handleEntityNotFound(_0x26b623,null))[_0x3fc3('0x1d')](function(_0x2f1f21){if(_0x2f1f21){return _0x2f1f21[_0x3fc3('0x38')](_0x261215['body'][_0x3fc3('0x39')],_[_0x3fc3('0x3a')](_0x261215[_0x3fc3('0x35')],[_0x3fc3('0x39'),'id'])||{});}})[_0x3fc3('0x1d')](respondWithResult(_0x26b623,null))['catch'](handleError(_0x26b623,null));};exports[_0x3fc3('0x3b')]=function(_0x216368,_0x1e93f3){var _0x13a17b={'raw':![],'where':{}};var _0x31fc47={};var _0x222bd8={'count':0x0,'rows':[]};return db[_0x3fc3('0x22')][_0x3fc3('0x3c')]({'where':{'id':_0x216368[_0x3fc3('0x29')]['id']}})[_0x3fc3('0x1d')](handleEntityNotFound(_0x1e93f3,null))[_0x3fc3('0x1d')](function(_0x55771a){if(_0x55771a){_0x31fc47[_0x3fc3('0x2a')]=_[_0x3fc3('0x2b')](db[_0x3fc3('0x37')][_0x3fc3('0x3d')]);_0x31fc47[_0x3fc3('0x27')]=_[_0x3fc3('0x2b')](_0x216368[_0x3fc3('0x27')]);_0x31fc47['filters']=_[_0x3fc3('0x2e')](_0x31fc47[_0x3fc3('0x2a')],_0x31fc47[_0x3fc3('0x27')]);_0x13a17b[_0x3fc3('0x2d')]=_[_0x3fc3('0x2e')](_0x31fc47[_0x3fc3('0x2a')],qs[_0x3fc3('0x2f')](_0x216368[_0x3fc3('0x27')][_0x3fc3('0x2f')]));_0x13a17b['attributes']=_0x13a17b[_0x3fc3('0x2d')][_0x3fc3('0x30')]?_0x13a17b[_0x3fc3('0x2d')]:_0x31fc47[_0x3fc3('0x2a')];if(!_0x216368['query'][_0x3fc3('0x3e')]('nolimit')){_0x13a17b[_0x3fc3('0x3f')]=qs[_0x3fc3('0x3f')](_0x216368[_0x3fc3('0x27')]['limit']);_0x13a17b['offset']=qs[_0x3fc3('0x16')](_0x216368['query']['offset']);}_0x13a17b[_0x3fc3('0x40')]=qs[_0x3fc3('0x41')](_0x216368[_0x3fc3('0x27')]['sort']);_0x13a17b['where']=qs[_0x3fc3('0x2c')](_[_0x3fc3('0x42')](_0x216368[_0x3fc3('0x27')],_0x31fc47[_0x3fc3('0x2c')]));_0x13a17b[_0x3fc3('0x43')][_0x3fc3('0x44')]=_0x55771a['id'];if(_0x216368['query'][_0x3fc3('0x45')]){_0x13a17b['where']=_[_0x3fc3('0x46')](_0x13a17b[_0x3fc3('0x43')],{'$or':_['map'](_0x13a17b[_0x3fc3('0x2d')],function(_0x2b15b7){var _0x3bf9bf={};_0x3bf9bf[_0x2b15b7]={'$like':'%'+_0x216368[_0x3fc3('0x27')]['filter']+'%'};return _0x3bf9bf;})});}if(_0x216368['query'][_0x3fc3('0x47')]){var _0x5edec7=_0x216368[_0x3fc3('0x27')][_0x3fc3('0x47')][_0x3fc3('0x48')](',');var _0x292cb5={};_0x292cb5[_0x5edec7[0x0]]={'$gte':moment(_0x5edec7[0x1])[_0x3fc3('0x49')]('YYYY-MM-DD\x20HH:mm:ss')};_0x13a17b['where']=_[_0x3fc3('0x46')](_0x13a17b[_0x3fc3('0x43')],_0x292cb5);}_0x13a17b=_[_0x3fc3('0x46')]({},_0x13a17b,_0x216368[_0x3fc3('0x4a')]);return db['MailMessage']['count']({'where':_0x13a17b['where']})['then'](function(_0x181fc4){_0x222bd8['count']=_0x181fc4;if(_0x216368[_0x3fc3('0x27')]['includeAll']){_0x13a17b[_0x3fc3('0x32')]=[{'all':!![]}];}return db[_0x3fc3('0x37')]['findAll'](_0x13a17b);})[_0x3fc3('0x1d')](function(_0x51e9ef){if(_0x216368['query'][_0x3fc3('0x4b')]===_0x3fc3('0x4c')){for(var _0x45c3c7=0x0;_0x45c3c7<_0x51e9ef['length'];_0x45c3c7++){_0x51e9ef[_0x45c3c7][_0x3fc3('0x35')]=juice(_0x51e9ef[_0x45c3c7][_0x3fc3('0x35')]);}}_0x222bd8[_0x3fc3('0x4d')]=_0x51e9ef;return _0x222bd8;});}})[_0x3fc3('0x1d')](respondWithFilteredResult(_0x1e93f3,_0x13a17b))[_0x3fc3('0x28')](handleError(_0x1e93f3,null));};exports[_0x3fc3('0x4e')]=function(_0x620d7,_0x2759c2){return db[_0x3fc3('0x22')][_0x3fc3('0x33')]({'where':{'id':_0x620d7[_0x3fc3('0x29')]['id']}})['then'](handleEntityNotFound(_0x2759c2,null))['then'](function(_0x47e782){if(_0x47e782){return _0x47e782['setTags'](_0x620d7[_0x3fc3('0x35')]['ids'],_[_0x3fc3('0x3a')](_0x620d7['body'],[_0x3fc3('0x39'),'id'])||{})[_0x3fc3('0x4f')](function(){return db[_0x3fc3('0x50')][_0x3fc3('0x25')]({'attributes':['id',_0x3fc3('0x1f'),'color'],'where':{'id':_0x620d7['body']['ids']}});})[_0x3fc3('0x1d')](function(_0x349de2){socket[_0x3fc3('0x51')](_0x3fc3('0x52'),{'id':Number(_0x620d7[_0x3fc3('0x29')]['id']),'tags':_0x349de2||[]});return{'id':Number(_0x620d7[_0x3fc3('0x29')]['id']),'tags':_0x349de2||[]};});}})[_0x3fc3('0x1d')](respondWithResult(_0x2759c2,null))[_0x3fc3('0x28')](handleError(_0x2759c2,null));};exports[_0x3fc3('0x53')]=function(_0x496695,_0xff8e32){return db[_0x3fc3('0x22')][_0x3fc3('0x33')]({'where':{'id':_0x496695['params']['id']}})[_0x3fc3('0x1d')](handleEntityNotFound(_0xff8e32,null))['then'](function(_0x4d2a52){if(_0x4d2a52){return _0x4d2a52['removeTags'](_0x496695[_0x3fc3('0x27')][_0x3fc3('0x39')]);}})[_0x3fc3('0x1d')](respondWithStatusCode(_0xff8e32,null))[_0x3fc3('0x28')](handleError(_0xff8e32,null));};exports[_0x3fc3('0x54')]=function(_0x44be6e,_0x43fa59){var _0x112637=moment()['unix']()[_0x3fc3('0x55')]();var _0x2d8ecd=path[_0x3fc3('0x56')](config[_0x3fc3('0x57')],_0x3fc3('0x58'),_0x3fc3('0x59'),_0x3fc3('0x5a'));var _0x418b4f=path[_0x3fc3('0x56')](config[_0x3fc3('0x57')],_0x3fc3('0x58'),'files',_0x3fc3('0x5b'));var _0x47ddef=path[_0x3fc3('0x56')](_0x2d8ecd,_0x112637);var _0x205ed2=util[_0x3fc3('0x49')]('transcript-%d-%s.zip',_0x44be6e['params']['id'],_0x112637);var _0x52fda1=path['join'](_0x2d8ecd,_0x205ed2);var _0x4f1c3c=[];if(_0x44be6e[_0x3fc3('0x27')][_0x3fc3('0x5b')]){_0x4f1c3c['push']({'model':db[_0x3fc3('0x5c')],'as':_0x3fc3('0x5d'),'raw':!![]});}var _0x14ca9b=[{'model':db[_0x3fc3('0x37')],'as':_0x3fc3('0x5e'),'attributes':['id',_0x3fc3('0x35'),_0x3fc3('0x5f'),'to','cc','bcc','subject','createdAt'],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x4f1c3c}];return db[_0x3fc3('0x22')][_0x3fc3('0x33')]({'where':{'id':_0x44be6e['params']['id']},'include':_0x14ca9b})[_0x3fc3('0x1d')](handleEntityNotFound(_0x43fa59,null))['then'](function(_0x40e25f){if(_0x40e25f&&_0x40e25f[_0x3fc3('0x5e')]){var _0x35bb5d=_0x40e25f[_0x3fc3('0x60')]({'plain':!![]});fs['mkdirSync'](_0x47ddef);return BPromise['each'](_0x35bb5d[_0x3fc3('0x5e')],function(_0x240650,_0x406a00){var _0xc6045b={'from':_0x240650[_0x3fc3('0x5f')],'to':_0x240650['to']||_0x3fc3('0x61'),'subject':_0x240650['subject'],'html':htmlEntities['decode'](_0x240650[_0x3fc3('0x35')]),'headers':{'Date':moment(_0x240650['createdAt'])[_0x3fc3('0x49')](_0x3fc3('0x62'))},'attachments':[]};if(_0x240650['cc']){_0xc6045b[_0x3fc3('0x63')]['Cc']=_0x240650['cc'];}if(_0x240650['bcc']){_0xc6045b[_0x3fc3('0x63')][_0x3fc3('0x64')]=_0x240650['bcc'];}return new BPromise(function(_0x4248b4,_0x2361e5){if(_0x240650[_0x3fc3('0x5d')]){for(var _0x2ee0ce=0x0;_0x2ee0ce<_0x240650[_0x3fc3('0x5d')][_0x3fc3('0x30')];_0x2ee0ce++){var _0x7a912=_0x240650[_0x3fc3('0x5d')][_0x2ee0ce];var _0x1755d0=path[_0x3fc3('0x56')](_0x418b4f,_0x7a912[_0x3fc3('0x65')]);if(fs[_0x3fc3('0x66')](_0x1755d0)){_0xc6045b[_0x3fc3('0x5b')][_0x3fc3('0x67')]({'name':_0x7a912['name'],'contentType':_0x7a912['type'],'data':fs[_0x3fc3('0x68')](_0x1755d0)});}}}emlformat[_0x3fc3('0x69')](_0xc6045b,function(_0x2771d2,_0x51a746){if(_0x2771d2)return _0x2361e5(_0x2771d2);fs[_0x3fc3('0x6a')](path[_0x3fc3('0x56')](_0x47ddef,util['format'](_0x3fc3('0x6b'),_0x406a00)),_0x51a746);return _0x4248b4(_0x51a746);});});})[_0x3fc3('0x1d')](function(){return new BPromise(function(_0x2470b6,_0x29b2be){zipdir(_0x47ddef,{'saveTo':_0x52fda1},function(_0x4847e9,_0x50e796){if(_0x4847e9)return _0x29b2be(_0x4847e9);return _0x2470b6(_0x50e796);});})[_0x3fc3('0x1d')](function(){return new BPromise(function(_0x21e011,_0x131f00){rimraf(_0x47ddef,function(_0x45fedb){if(_0x45fedb)_0x131f00(_0x45fedb);return _0x21e011();});});})[_0x3fc3('0x1d')](function(){return _0x43fa59['download'](_0x52fda1,_0x205ed2,function(_0x49588e){if(!_0x49588e)fs[_0x3fc3('0x6c')](_0x52fda1);});});});}else{return _0x43fa59[_0x3fc3('0x13')](0xc8);}})['catch'](handleError(_0x43fa59,null));};