c9de737c17b7c0ad8fae128628eaa93644c4a566
[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 _0xca97=['true','rows','addTags','setTags','spread','findAll','mailInteractionTags:save','removeTags','download','toString','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','bcc','createdAt','get','mkdirSync','each','missing.recipient@your.company.com','decode','headers','basename','existsSync','build','writeFileSync','eml-format','zip-dir','bluebird','util','path','lodash','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','socket.io-emitter','sendStatus','end','status','json','undefined','limit','count','update','then','name','send','MailInteraction','fieldName','type','mail','query','catch','show','params','model','rawAttributes','keys','filters','intersection','attributes','fields','length','include','find','create','body','describe','MailMessage','addMessage','ids','omit','getMessages','hasOwnProperty','nolimit','offset','order','sort','pick','where','MailInteractionId','filter','merge','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','inlineCss'];(function(_0x5926e3,_0x242120){var _0x56f1ca=function(_0x16a7d5){while(--_0x16a7d5){_0x5926e3['push'](_0x5926e3['shift']());}};_0x56f1ca(++_0x242120);}(_0xca97,0x1ce));var _0x7ca9=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xca97[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0x7ca9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7ca9('0x1'));var moment=require('moment');var BPromise=require(_0x7ca9('0x2'));var util=require(_0x7ca9('0x3'));var path=require(_0x7ca9('0x4'));var fs=require('fs');var _=require(_0x7ca9('0x5'));var juice=require(_0x7ca9('0x6'));var Redis=require(_0x7ca9('0x7'));var interaction=require(_0x7ca9('0x8'));var qs=require(_0x7ca9('0x9'));var logger=require(_0x7ca9('0xa'))('api');var config=require(_0x7ca9('0xb'));var db=require(_0x7ca9('0xc'))['db'];var htmlEntities=require(_0x7ca9('0xd'));config[_0x7ca9('0xe')]=_[_0x7ca9('0xf')](config[_0x7ca9('0xe')],{'host':_0x7ca9('0x10'),'port':0x18eb});var socket=require(_0x7ca9('0x11'))(new Redis(config[_0x7ca9('0xe')]));require('./mailInteraction.socket')['register'](socket);function respondWithStatusCode(_0x230632,_0x3287ea){_0x3287ea=_0x3287ea||0xcc;return function(_0x3fe046){if(_0x3fe046){return _0x230632[_0x7ca9('0x12')](_0x3287ea);}return _0x230632['status'](_0x3287ea)[_0x7ca9('0x13')]();};}function respondWithResult(_0x42bb0e,_0x46c07a){_0x46c07a=_0x46c07a||0xc8;return function(_0x518034){if(_0x518034){return _0x42bb0e[_0x7ca9('0x14')](_0x46c07a)[_0x7ca9('0x15')](_0x518034);}};}function respondWithFilteredResult(_0x3ebd05,_0x3ab5ac){return function(_0x276652){if(_0x276652){var _0xd1af9e=typeof _0x3ab5ac['offset']===_0x7ca9('0x16')&&typeof _0x3ab5ac[_0x7ca9('0x17')]===_0x7ca9('0x16');var _0x1ac9ac=_0x276652['count'];var _0x250d18=_0xd1af9e?0x0:_0x3ab5ac['offset'];var _0x38b7a5=_0xd1af9e?_0x276652[_0x7ca9('0x18')]:_0x3ab5ac['offset']+_0x3ab5ac[_0x7ca9('0x17')];var _0x287b80;if(_0x38b7a5>=_0x1ac9ac){_0x38b7a5=_0x1ac9ac;_0x287b80=0xc8;}else{_0x287b80=0xce;}_0x3ebd05[_0x7ca9('0x14')](_0x287b80);return _0x3ebd05['set']('Content-Range',_0x250d18+'-'+_0x38b7a5+'/'+_0x1ac9ac)[_0x7ca9('0x15')](_0x276652);}return null;};}function saveUpdates(_0x396f3){return function(_0x18113c){if(_0x18113c){return _0x18113c[_0x7ca9('0x19')](_0x396f3)[_0x7ca9('0x1a')](function(_0x2062b9){return _0x2062b9;});}return null;};}function removeEntity(_0x1f7715){return function(_0x3f42df){if(_0x3f42df){return _0x3f42df['destroy']()[_0x7ca9('0x1a')](function(){_0x1f7715[_0x7ca9('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4c3b9a){return function(_0x341d23){if(!_0x341d23){_0x4c3b9a['sendStatus'](0x194);}return _0x341d23;};}function handleError(_0x135ca5,_0x1a581f){_0x1a581f=_0x1a581f||0x1f4;return function(_0x3b7022){logger['error'](_0x3b7022['stack']);if(_0x3b7022[_0x7ca9('0x1b')]){delete _0x3b7022[_0x7ca9('0x1b')];}_0x135ca5[_0x7ca9('0x14')](_0x1a581f)[_0x7ca9('0x1c')](_0x3b7022);};}exports['index']=function(_0x217727,_0x2dd1f9){var _0x26981b={};var _0x25f95d=_['map'](db[_0x7ca9('0x1d')]['rawAttributes'],function(_0x5e3661){return{'name':_0x5e3661[_0x7ca9('0x1e')],'type':_0x5e3661[_0x7ca9('0x1f')]['key']};});_0x26981b=qs['getOptions'](_0x25f95d,_0x217727);return interaction['findAll'](_0x7ca9('0x20'),_0x217727[_0x7ca9('0x21')],_0x217727['user'],_0x26981b,_0x25f95d)['then'](respondWithFilteredResult(_0x2dd1f9,_0x26981b))[_0x7ca9('0x22')](handleError(_0x2dd1f9,null));};exports[_0x7ca9('0x23')]=function(_0x56aa3e,_0x30288f){var _0x3d3a6a={'raw':![],'where':{'id':_0x56aa3e[_0x7ca9('0x24')]['id']}},_0x52f1d1={};_0x52f1d1[_0x7ca9('0x25')]=_['keys'](db['MailInteraction'][_0x7ca9('0x26')]);_0x52f1d1[_0x7ca9('0x21')]=_[_0x7ca9('0x27')](_0x56aa3e['query']);_0x52f1d1[_0x7ca9('0x28')]=_[_0x7ca9('0x29')](_0x52f1d1['model'],_0x52f1d1[_0x7ca9('0x21')]);_0x3d3a6a[_0x7ca9('0x2a')]=_[_0x7ca9('0x29')](_0x52f1d1['model'],qs[_0x7ca9('0x2b')](_0x56aa3e[_0x7ca9('0x21')][_0x7ca9('0x2b')]));_0x3d3a6a[_0x7ca9('0x2a')]=_0x3d3a6a['attributes'][_0x7ca9('0x2c')]?_0x3d3a6a[_0x7ca9('0x2a')]:_0x52f1d1['model'];if(_0x56aa3e[_0x7ca9('0x21')]['includeAll']){_0x3d3a6a[_0x7ca9('0x2d')]=[{'all':!![]}];}_0x3d3a6a=_['merge']({},_0x3d3a6a,_0x56aa3e['options']);return db[_0x7ca9('0x1d')][_0x7ca9('0x2e')](_0x3d3a6a)[_0x7ca9('0x1a')](handleEntityNotFound(_0x30288f,null))[_0x7ca9('0x1a')](respondWithResult(_0x30288f,null))[_0x7ca9('0x22')](handleError(_0x30288f,null));};exports['create']=function(_0x2ebf01,_0x5ae3c2){return db['MailInteraction'][_0x7ca9('0x2f')](_0x2ebf01['body'],{})['then'](respondWithResult(_0x5ae3c2,0xc9))[_0x7ca9('0x22')](handleError(_0x5ae3c2,null));};exports[_0x7ca9('0x19')]=function(_0x199bbe,_0x414f78){if(_0x199bbe[_0x7ca9('0x30')]['id']){delete _0x199bbe[_0x7ca9('0x30')]['id'];}return db['MailInteraction'][_0x7ca9('0x2e')]({'where':{'id':_0x199bbe['params']['id']}})['then'](handleEntityNotFound(_0x414f78,null))[_0x7ca9('0x1a')](saveUpdates(_0x199bbe[_0x7ca9('0x30')],null))[_0x7ca9('0x1a')](respondWithResult(_0x414f78,null))[_0x7ca9('0x22')](handleError(_0x414f78,null));};exports['destroy']=function(_0x37e8d3,_0x5725b0){return db[_0x7ca9('0x1d')][_0x7ca9('0x2e')]({'where':{'id':_0x37e8d3['params']['id']}})[_0x7ca9('0x1a')](handleEntityNotFound(_0x5725b0,null))['then'](removeEntity(_0x5725b0,null))[_0x7ca9('0x22')](handleError(_0x5725b0,null));};exports[_0x7ca9('0x31')]=function(_0x1499e9,_0x1ecb36){return db[_0x7ca9('0x1d')][_0x7ca9('0x31')]()[_0x7ca9('0x1a')](respondWithResult(_0x1ecb36,null))[_0x7ca9('0x22')](handleError(_0x1ecb36,null));};exports['addMessage']=function(_0xd9529f,_0xbf4f82){return db[_0x7ca9('0x32')]['find']({'where':{'id':_0xd9529f[_0x7ca9('0x24')]['id']}})[_0x7ca9('0x1a')](handleEntityNotFound(_0xbf4f82,null))[_0x7ca9('0x1a')](function(_0x776a16){if(_0x776a16){return _0x776a16[_0x7ca9('0x33')](_0xd9529f[_0x7ca9('0x30')][_0x7ca9('0x34')],_[_0x7ca9('0x35')](_0xd9529f[_0x7ca9('0x30')],[_0x7ca9('0x34'),'id'])||{});}})[_0x7ca9('0x1a')](respondWithResult(_0xbf4f82,null))[_0x7ca9('0x22')](handleError(_0xbf4f82,null));};exports[_0x7ca9('0x36')]=function(_0x579b12,_0x1bd109){var _0x5ab70={'raw':![],'where':{}};var _0x4040f6={};var _0x30c6b7={'count':0x0,'rows':[]};return db['MailInteraction']['findOne']({'where':{'id':_0x579b12[_0x7ca9('0x24')]['id']}})[_0x7ca9('0x1a')](handleEntityNotFound(_0x1bd109,null))[_0x7ca9('0x1a')](function(_0x240bee){if(_0x240bee){_0x4040f6['model']=_[_0x7ca9('0x27')](db[_0x7ca9('0x32')][_0x7ca9('0x26')]);_0x4040f6[_0x7ca9('0x21')]=_['keys'](_0x579b12[_0x7ca9('0x21')]);_0x4040f6['filters']=_[_0x7ca9('0x29')](_0x4040f6['model'],_0x4040f6['query']);_0x5ab70[_0x7ca9('0x2a')]=_[_0x7ca9('0x29')](_0x4040f6[_0x7ca9('0x25')],qs[_0x7ca9('0x2b')](_0x579b12['query'][_0x7ca9('0x2b')]));_0x5ab70[_0x7ca9('0x2a')]=_0x5ab70[_0x7ca9('0x2a')][_0x7ca9('0x2c')]?_0x5ab70[_0x7ca9('0x2a')]:_0x4040f6[_0x7ca9('0x25')];if(!_0x579b12[_0x7ca9('0x21')][_0x7ca9('0x37')](_0x7ca9('0x38'))){_0x5ab70['limit']=qs['limit'](_0x579b12[_0x7ca9('0x21')][_0x7ca9('0x17')]);_0x5ab70[_0x7ca9('0x39')]=qs['offset'](_0x579b12[_0x7ca9('0x21')][_0x7ca9('0x39')]);}_0x5ab70[_0x7ca9('0x3a')]=qs[_0x7ca9('0x3b')](_0x579b12['query'][_0x7ca9('0x3b')]);_0x5ab70['where']=qs[_0x7ca9('0x28')](_[_0x7ca9('0x3c')](_0x579b12[_0x7ca9('0x21')],_0x4040f6[_0x7ca9('0x28')]));_0x5ab70[_0x7ca9('0x3d')][_0x7ca9('0x3e')]=_0x240bee['id'];if(_0x579b12[_0x7ca9('0x21')][_0x7ca9('0x3f')]){_0x5ab70[_0x7ca9('0x3d')]=_[_0x7ca9('0x40')](_0x5ab70[_0x7ca9('0x3d')],{'$or':_[_0x7ca9('0x41')](_0x5ab70['attributes'],function(_0x46f5c0){var _0x128ad7={};_0x128ad7[_0x46f5c0]={'$like':'%'+_0x579b12[_0x7ca9('0x21')][_0x7ca9('0x3f')]+'%'};return _0x128ad7;})});}if(_0x579b12[_0x7ca9('0x21')][_0x7ca9('0x42')]){var _0x5d493f=_0x579b12['query'][_0x7ca9('0x42')][_0x7ca9('0x43')](',');var _0x1437db={};_0x1437db[_0x5d493f[0x0]]={'$gte':moment(_0x5d493f[0x1])[_0x7ca9('0x44')](_0x7ca9('0x45'))};_0x5ab70[_0x7ca9('0x3d')]=_[_0x7ca9('0x40')](_0x5ab70['where'],_0x1437db);}_0x5ab70=_[_0x7ca9('0x40')]({},_0x5ab70,_0x579b12[_0x7ca9('0x46')]);return db['MailMessage'][_0x7ca9('0x18')]({'where':_0x5ab70['where']})[_0x7ca9('0x1a')](function(_0x11a649){_0x30c6b7[_0x7ca9('0x18')]=_0x11a649;if(_0x579b12[_0x7ca9('0x21')][_0x7ca9('0x47')]){_0x5ab70[_0x7ca9('0x2d')]=[{'all':!![]}];}return db['MailMessage']['findAll'](_0x5ab70);})[_0x7ca9('0x1a')](function(_0xb323f0){if(_0x579b12[_0x7ca9('0x21')][_0x7ca9('0x48')]===_0x7ca9('0x49')){for(var _0xdce552=0x0;_0xdce552<_0xb323f0[_0x7ca9('0x2c')];_0xdce552++){_0xb323f0[_0xdce552][_0x7ca9('0x30')]=juice(_0xb323f0[_0xdce552][_0x7ca9('0x30')]);}}_0x30c6b7[_0x7ca9('0x4a')]=_0xb323f0;return _0x30c6b7;});}})['then'](respondWithFilteredResult(_0x1bd109,_0x5ab70))[_0x7ca9('0x22')](handleError(_0x1bd109,null));};exports[_0x7ca9('0x4b')]=function(_0x3d9b38,_0x2da2b1){return db[_0x7ca9('0x1d')][_0x7ca9('0x2e')]({'where':{'id':_0x3d9b38[_0x7ca9('0x24')]['id']}})[_0x7ca9('0x1a')](handleEntityNotFound(_0x2da2b1,null))[_0x7ca9('0x1a')](function(_0x202d14){if(_0x202d14){return _0x202d14[_0x7ca9('0x4c')](_0x3d9b38[_0x7ca9('0x30')][_0x7ca9('0x34')],_[_0x7ca9('0x35')](_0x3d9b38['body'],[_0x7ca9('0x34'),'id'])||{})[_0x7ca9('0x4d')](function(){return db['Tag'][_0x7ca9('0x4e')]({'attributes':['id',_0x7ca9('0x1b'),'color'],'where':{'id':_0x3d9b38['body'][_0x7ca9('0x34')]}});})[_0x7ca9('0x1a')](function(_0x30ccaf){socket['emit'](_0x7ca9('0x4f'),{'id':Number(_0x3d9b38[_0x7ca9('0x24')]['id']),'tags':_0x30ccaf||[]});return{'id':Number(_0x3d9b38[_0x7ca9('0x24')]['id']),'tags':_0x30ccaf||[]};});}})[_0x7ca9('0x1a')](respondWithResult(_0x2da2b1,null))[_0x7ca9('0x22')](handleError(_0x2da2b1,null));};exports[_0x7ca9('0x50')]=function(_0x768a8f,_0x4141dc){return db['MailInteraction'][_0x7ca9('0x2e')]({'where':{'id':_0x768a8f[_0x7ca9('0x24')]['id']}})['then'](handleEntityNotFound(_0x4141dc,null))['then'](function(_0x2d11a8){if(_0x2d11a8){return _0x2d11a8[_0x7ca9('0x50')](_0x768a8f[_0x7ca9('0x21')][_0x7ca9('0x34')]);}})[_0x7ca9('0x1a')](respondWithStatusCode(_0x4141dc,null))[_0x7ca9('0x22')](handleError(_0x4141dc,null));};exports[_0x7ca9('0x51')]=function(_0x387741,_0x1e1d8b){var _0x4b740a=moment()['unix']()[_0x7ca9('0x52')]();var _0x295aa0=path[_0x7ca9('0x53')](config[_0x7ca9('0x54')],'server',_0x7ca9('0x55'),_0x7ca9('0x56'));var _0x31caa2=path[_0x7ca9('0x53')](config[_0x7ca9('0x54')],_0x7ca9('0x57'),_0x7ca9('0x55'),_0x7ca9('0x58'));var _0xbaec5d=path[_0x7ca9('0x53')](_0x295aa0,_0x4b740a);var _0x2f919=util[_0x7ca9('0x44')](_0x7ca9('0x59'),_0x387741[_0x7ca9('0x24')]['id'],_0x4b740a);var _0x2db312=path['join'](_0x295aa0,_0x2f919);var _0x5c328b=[];if(_0x387741[_0x7ca9('0x21')][_0x7ca9('0x58')]){_0x5c328b[_0x7ca9('0x5a')]({'model':db[_0x7ca9('0x5b')],'as':_0x7ca9('0x5c'),'raw':!![]});}var _0x10cd71=[{'model':db[_0x7ca9('0x32')],'as':_0x7ca9('0x5d'),'attributes':['id','body',_0x7ca9('0x5e'),'to','cc',_0x7ca9('0x5f'),'subject',_0x7ca9('0x60')],'where':{'secret':![]},'order':qs[_0x7ca9('0x3b')]('id'),'include':_0x5c328b}];return db[_0x7ca9('0x1d')][_0x7ca9('0x2e')]({'where':{'id':_0x387741[_0x7ca9('0x24')]['id']},'include':_0x10cd71})[_0x7ca9('0x1a')](handleEntityNotFound(_0x1e1d8b,null))[_0x7ca9('0x1a')](function(_0x1147a4){if(_0x1147a4&&_0x1147a4[_0x7ca9('0x5d')]){var _0x2b766e=_0x1147a4[_0x7ca9('0x61')]({'plain':!![]});fs[_0x7ca9('0x62')](_0xbaec5d);return BPromise[_0x7ca9('0x63')](_0x2b766e[_0x7ca9('0x5d')],function(_0x18fe66,_0x99a045){var _0x493eb={'from':_0x18fe66[_0x7ca9('0x5e')],'to':_0x18fe66['to']||_0x7ca9('0x64'),'subject':_0x18fe66['subject'],'html':htmlEntities[_0x7ca9('0x65')](_0x18fe66[_0x7ca9('0x30')]),'headers':{'Date':moment(_0x18fe66['createdAt'])[_0x7ca9('0x44')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x18fe66['cc']){_0x493eb[_0x7ca9('0x66')]['Cc']=_0x18fe66['cc'];}if(_0x18fe66[_0x7ca9('0x5f')]){_0x493eb[_0x7ca9('0x66')]['Bcc']=_0x18fe66['bcc'];}return new BPromise(function(_0x498319,_0x245caa){if(_0x18fe66[_0x7ca9('0x5c')]){for(var _0x12ea79=0x0;_0x12ea79<_0x18fe66[_0x7ca9('0x5c')][_0x7ca9('0x2c')];_0x12ea79++){var _0x3fe7c1=_0x18fe66[_0x7ca9('0x5c')][_0x12ea79];var _0x5e684f=path[_0x7ca9('0x53')](_0x31caa2,_0x3fe7c1[_0x7ca9('0x67')]);if(fs[_0x7ca9('0x68')](_0x5e684f)){_0x493eb[_0x7ca9('0x58')][_0x7ca9('0x5a')]({'name':_0x3fe7c1[_0x7ca9('0x1b')],'contentType':_0x3fe7c1['type'],'data':fs['readFileSync'](_0x5e684f)});}}}emlformat[_0x7ca9('0x69')](_0x493eb,function(_0x394dba,_0x2fa5f6){if(_0x394dba)return _0x245caa(_0x394dba);fs[_0x7ca9('0x6a')](path['join'](_0xbaec5d,util[_0x7ca9('0x44')]('message%d.eml',_0x99a045)),_0x2fa5f6);return _0x498319(_0x2fa5f6);});});})[_0x7ca9('0x1a')](function(){return new BPromise(function(_0x245768,_0x3cfe43){zipdir(_0xbaec5d,{'saveTo':_0x2db312},function(_0x4b82f8,_0x4b6252){if(_0x4b82f8)return _0x3cfe43(_0x4b82f8);return _0x245768(_0x4b6252);});})[_0x7ca9('0x1a')](function(){return new BPromise(function(_0x3620d4,_0x586f8d){rimraf(_0xbaec5d,function(_0xf4c712){if(_0xf4c712)_0x586f8d(_0xf4c712);return _0x3620d4();});});})[_0x7ca9('0x1a')](function(){return _0x1e1d8b[_0x7ca9('0x51')](_0x2db312,_0x2f919,function(_0x2016ed){if(!_0x2016ed)fs['unlinkSync'](_0x2db312);});});});}else{return _0x1e1d8b[_0x7ca9('0x12')](0xc8);}})[_0x7ca9('0x22')](handleError(_0x1e1d8b,null));};