4c497e70f0a4768a8ec7a7381fe134ebc0a49d80
[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 _0x2acd=['inlineCss','true','rows','addTags','setTags','spread','Tag','color','mailInteractionTags:save','removeTags','unix','join','root','server','files','transcript-%d-%s.zip','attachments','push','Attachments','bcc','subject','createdAt','sort','Messages','missing.recipient@your.company.com','decode','Bcc','readFileSync','build','message%d.eml','eml-format','rimraf','moment','bluebird','util','path','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','./mailInteraction.socket','sendStatus','end','status','offset','limit','count','Content-Range','json','update','then','destroy','error','name','send','index','key','getOptions','findAll','mail','query','user','show','params','model','keys','MailInteraction','rawAttributes','filters','intersection','fields','attributes','length','include','merge','options','find','catch','create','body','describe','addMessage','MailMessage','ids','omit','getMessages','hasOwnProperty','nolimit','order','where','pick','map','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','includeAll'];(function(_0x232715,_0x4bd63e){var _0x1e6090=function(_0x1baae7){while(--_0x1baae7){_0x232715['push'](_0x232715['shift']());}};_0x1e6090(++_0x4bd63e);}(_0x2acd,0x1be));var _0xd2ac=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x2acd[_0x5d6456];return _0x4d66c1;};'use strict';var emlformat=require(_0xd2ac('0x0'));var rimraf=require(_0xd2ac('0x1'));var zipdir=require('zip-dir');var moment=require(_0xd2ac('0x2'));var BPromise=require(_0xd2ac('0x3'));var util=require(_0xd2ac('0x4'));var path=require(_0xd2ac('0x5'));var fs=require('fs');var _=require('lodash');var juice=require(_0xd2ac('0x6'));var Redis=require(_0xd2ac('0x7'));var interaction=require(_0xd2ac('0x8'));var qs=require(_0xd2ac('0x9'));var logger=require(_0xd2ac('0xa'))('api');var config=require(_0xd2ac('0xb'));var db=require(_0xd2ac('0xc'))['db'];var htmlEntities=require(_0xd2ac('0xd'));config[_0xd2ac('0xe')]=_[_0xd2ac('0xf')](config[_0xd2ac('0xe')],{'host':_0xd2ac('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd2ac('0xe')]));require(_0xd2ac('0x11'))['register'](socket);function respondWithStatusCode(_0x237c46,_0x35f90b){_0x35f90b=_0x35f90b||0xcc;return function(_0x3da1b9){if(_0x3da1b9){return _0x237c46[_0xd2ac('0x12')](_0x35f90b);}return _0x237c46['status'](_0x35f90b)[_0xd2ac('0x13')]();};}function respondWithResult(_0x5cd61a,_0x4cdfc3){_0x4cdfc3=_0x4cdfc3||0xc8;return function(_0x54f905){if(_0x54f905){return _0x5cd61a[_0xd2ac('0x14')](_0x4cdfc3)['json'](_0x54f905);}};}function respondWithFilteredResult(_0x5dabfc,_0x376e22){return function(_0x1c2507){if(_0x1c2507){var _0x39b988=typeof _0x376e22[_0xd2ac('0x15')]==='undefined'&&typeof _0x376e22[_0xd2ac('0x16')]==='undefined';var _0x26ce1b=_0x1c2507['count'];var _0x4a0ffa=_0x39b988?0x0:_0x376e22[_0xd2ac('0x15')];var _0x9252f1=_0x39b988?_0x1c2507[_0xd2ac('0x17')]:_0x376e22[_0xd2ac('0x15')]+_0x376e22['limit'];var _0x150bd1;if(_0x9252f1>=_0x26ce1b){_0x9252f1=_0x26ce1b;_0x150bd1=0xc8;}else{_0x150bd1=0xce;}_0x5dabfc[_0xd2ac('0x14')](_0x150bd1);return _0x5dabfc['set'](_0xd2ac('0x18'),_0x4a0ffa+'-'+_0x9252f1+'/'+_0x26ce1b)[_0xd2ac('0x19')](_0x1c2507);}return null;};}function saveUpdates(_0x3b4b2b){return function(_0x38ab87){if(_0x38ab87){return _0x38ab87[_0xd2ac('0x1a')](_0x3b4b2b)[_0xd2ac('0x1b')](function(_0xb72c62){return _0xb72c62;});}return null;};}function removeEntity(_0x3670eb){return function(_0x31aead){if(_0x31aead){return _0x31aead[_0xd2ac('0x1c')]()[_0xd2ac('0x1b')](function(){_0x3670eb[_0xd2ac('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d99b7){return function(_0x51d7ac){if(!_0x51d7ac){_0x3d99b7[_0xd2ac('0x12')](0x194);}return _0x51d7ac;};}function handleError(_0x5a5fa9,_0x3da4a5){_0x3da4a5=_0x3da4a5||0x1f4;return function(_0x43331f){logger[_0xd2ac('0x1d')](_0x43331f['stack']);if(_0x43331f[_0xd2ac('0x1e')]){delete _0x43331f[_0xd2ac('0x1e')];}_0x5a5fa9['status'](_0x3da4a5)[_0xd2ac('0x1f')](_0x43331f);};}exports[_0xd2ac('0x20')]=function(_0xb61bfc,_0x524a64){var _0x218038={};var _0x2f4afb=_['map'](db['MailInteraction']['rawAttributes'],function(_0x400973){return{'name':_0x400973['fieldName'],'type':_0x400973['type'][_0xd2ac('0x21')]};});_0x218038=qs[_0xd2ac('0x22')](_0x2f4afb,_0xb61bfc);return interaction[_0xd2ac('0x23')](_0xd2ac('0x24'),_0xb61bfc[_0xd2ac('0x25')],_0xb61bfc[_0xd2ac('0x26')],_0x218038,_0x2f4afb)[_0xd2ac('0x1b')](respondWithFilteredResult(_0x524a64,_0x218038))['catch'](handleError(_0x524a64,null));};exports[_0xd2ac('0x27')]=function(_0x4010f4,_0x3a50c8){var _0x21077f={'raw':![],'where':{'id':_0x4010f4[_0xd2ac('0x28')]['id']}},_0x150fe9={};_0x150fe9[_0xd2ac('0x29')]=_[_0xd2ac('0x2a')](db[_0xd2ac('0x2b')][_0xd2ac('0x2c')]);_0x150fe9['query']=_[_0xd2ac('0x2a')](_0x4010f4[_0xd2ac('0x25')]);_0x150fe9[_0xd2ac('0x2d')]=_[_0xd2ac('0x2e')](_0x150fe9[_0xd2ac('0x29')],_0x150fe9[_0xd2ac('0x25')]);_0x21077f['attributes']=_[_0xd2ac('0x2e')](_0x150fe9['model'],qs[_0xd2ac('0x2f')](_0x4010f4[_0xd2ac('0x25')][_0xd2ac('0x2f')]));_0x21077f[_0xd2ac('0x30')]=_0x21077f[_0xd2ac('0x30')][_0xd2ac('0x31')]?_0x21077f[_0xd2ac('0x30')]:_0x150fe9[_0xd2ac('0x29')];if(_0x4010f4[_0xd2ac('0x25')]['includeAll']){_0x21077f[_0xd2ac('0x32')]=[{'all':!![]}];}_0x21077f=_[_0xd2ac('0x33')]({},_0x21077f,_0x4010f4[_0xd2ac('0x34')]);return db[_0xd2ac('0x2b')][_0xd2ac('0x35')](_0x21077f)[_0xd2ac('0x1b')](handleEntityNotFound(_0x3a50c8,null))[_0xd2ac('0x1b')](respondWithResult(_0x3a50c8,null))[_0xd2ac('0x36')](handleError(_0x3a50c8,null));};exports[_0xd2ac('0x37')]=function(_0x1bee85,_0x2dcba6){return db[_0xd2ac('0x2b')]['create'](_0x1bee85[_0xd2ac('0x38')],{})[_0xd2ac('0x1b')](respondWithResult(_0x2dcba6,0xc9))[_0xd2ac('0x36')](handleError(_0x2dcba6,null));};exports[_0xd2ac('0x1a')]=function(_0x468876,_0x10b93a){if(_0x468876[_0xd2ac('0x38')]['id']){delete _0x468876['body']['id'];}return db[_0xd2ac('0x2b')][_0xd2ac('0x35')]({'where':{'id':_0x468876[_0xd2ac('0x28')]['id']}})[_0xd2ac('0x1b')](handleEntityNotFound(_0x10b93a,null))[_0xd2ac('0x1b')](saveUpdates(_0x468876[_0xd2ac('0x38')],null))[_0xd2ac('0x1b')](respondWithResult(_0x10b93a,null))[_0xd2ac('0x36')](handleError(_0x10b93a,null));};exports[_0xd2ac('0x1c')]=function(_0x1bbe74,_0x2a8ffa){return db['MailInteraction']['find']({'where':{'id':_0x1bbe74[_0xd2ac('0x28')]['id']}})['then'](handleEntityNotFound(_0x2a8ffa,null))[_0xd2ac('0x1b')](removeEntity(_0x2a8ffa,null))['catch'](handleError(_0x2a8ffa,null));};exports[_0xd2ac('0x39')]=function(_0x595be5,_0x72bb2c){return db[_0xd2ac('0x2b')]['describe']()[_0xd2ac('0x1b')](respondWithResult(_0x72bb2c,null))[_0xd2ac('0x36')](handleError(_0x72bb2c,null));};exports[_0xd2ac('0x3a')]=function(_0x4d50e6,_0x59814e){return db[_0xd2ac('0x3b')][_0xd2ac('0x35')]({'where':{'id':_0x4d50e6[_0xd2ac('0x28')]['id']}})[_0xd2ac('0x1b')](handleEntityNotFound(_0x59814e,null))[_0xd2ac('0x1b')](function(_0x2f8ea8){if(_0x2f8ea8){return _0x2f8ea8['addMessage'](_0x4d50e6[_0xd2ac('0x38')][_0xd2ac('0x3c')],_[_0xd2ac('0x3d')](_0x4d50e6[_0xd2ac('0x38')],['ids','id'])||{});}})[_0xd2ac('0x1b')](respondWithResult(_0x59814e,null))[_0xd2ac('0x36')](handleError(_0x59814e,null));};exports[_0xd2ac('0x3e')]=function(_0x542b1d,_0x27d6e4){var _0x5a76ec={'raw':![],'where':{}};var _0xf82878={};var _0x4769ae={'count':0x0,'rows':[]};return db[_0xd2ac('0x2b')]['findOne']({'where':{'id':_0x542b1d[_0xd2ac('0x28')]['id']}})[_0xd2ac('0x1b')](handleEntityNotFound(_0x27d6e4,null))[_0xd2ac('0x1b')](function(_0xa7d80a){if(_0xa7d80a){_0xf82878[_0xd2ac('0x29')]=_[_0xd2ac('0x2a')](db[_0xd2ac('0x3b')][_0xd2ac('0x2c')]);_0xf82878['query']=_[_0xd2ac('0x2a')](_0x542b1d[_0xd2ac('0x25')]);_0xf82878['filters']=_['intersection'](_0xf82878['model'],_0xf82878['query']);_0x5a76ec['attributes']=_[_0xd2ac('0x2e')](_0xf82878[_0xd2ac('0x29')],qs[_0xd2ac('0x2f')](_0x542b1d[_0xd2ac('0x25')][_0xd2ac('0x2f')]));_0x5a76ec['attributes']=_0x5a76ec[_0xd2ac('0x30')][_0xd2ac('0x31')]?_0x5a76ec[_0xd2ac('0x30')]:_0xf82878[_0xd2ac('0x29')];if(!_0x542b1d[_0xd2ac('0x25')][_0xd2ac('0x3f')](_0xd2ac('0x40'))){_0x5a76ec[_0xd2ac('0x16')]=qs[_0xd2ac('0x16')](_0x542b1d[_0xd2ac('0x25')]['limit']);_0x5a76ec[_0xd2ac('0x15')]=qs[_0xd2ac('0x15')](_0x542b1d[_0xd2ac('0x25')][_0xd2ac('0x15')]);}_0x5a76ec[_0xd2ac('0x41')]=qs['sort'](_0x542b1d[_0xd2ac('0x25')]['sort']);_0x5a76ec[_0xd2ac('0x42')]=qs[_0xd2ac('0x2d')](_[_0xd2ac('0x43')](_0x542b1d[_0xd2ac('0x25')],_0xf82878['filters']));_0x5a76ec[_0xd2ac('0x42')]['MailInteractionId']=_0xa7d80a['id'];if(_0x542b1d[_0xd2ac('0x25')]['filter']){_0x5a76ec[_0xd2ac('0x42')]=_[_0xd2ac('0x33')](_0x5a76ec['where'],{'$or':_[_0xd2ac('0x44')](_0x5a76ec['attributes'],function(_0x36fc15){var _0x23e9e6={};_0x23e9e6[_0x36fc15]={'$like':'%'+_0x542b1d[_0xd2ac('0x25')][_0xd2ac('0x45')]+'%'};return _0x23e9e6;})});}if(_0x542b1d['query'][_0xd2ac('0x46')]){var _0x4ccaa9=_0x542b1d[_0xd2ac('0x25')][_0xd2ac('0x46')][_0xd2ac('0x47')](',');var _0x3276cb={};_0x3276cb[_0x4ccaa9[0x0]]={'$gte':moment(_0x4ccaa9[0x1])['format'](_0xd2ac('0x48'))};_0x5a76ec[_0xd2ac('0x42')]=_[_0xd2ac('0x33')](_0x5a76ec['where'],_0x3276cb);}_0x5a76ec=_['merge']({},_0x5a76ec,_0x542b1d[_0xd2ac('0x34')]);return db[_0xd2ac('0x3b')][_0xd2ac('0x17')]({'where':_0x5a76ec[_0xd2ac('0x42')]})[_0xd2ac('0x1b')](function(_0x10e743){_0x4769ae['count']=_0x10e743;if(_0x542b1d[_0xd2ac('0x25')][_0xd2ac('0x49')]){_0x5a76ec['include']=[{'all':!![]}];}return db[_0xd2ac('0x3b')]['findAll'](_0x5a76ec);})[_0xd2ac('0x1b')](function(_0x2e1b38){if(_0x542b1d[_0xd2ac('0x25')][_0xd2ac('0x4a')]===_0xd2ac('0x4b')){for(var _0x504e5a=0x0;_0x504e5a<_0x2e1b38[_0xd2ac('0x31')];_0x504e5a++){_0x2e1b38[_0x504e5a][_0xd2ac('0x38')]=juice(_0x2e1b38[_0x504e5a][_0xd2ac('0x38')]);}}_0x4769ae[_0xd2ac('0x4c')]=_0x2e1b38;return _0x4769ae;});}})[_0xd2ac('0x1b')](respondWithFilteredResult(_0x27d6e4,_0x5a76ec))['catch'](handleError(_0x27d6e4,null));};exports[_0xd2ac('0x4d')]=function(_0x564286,_0x14ea05){return db['MailInteraction'][_0xd2ac('0x35')]({'where':{'id':_0x564286['params']['id']}})[_0xd2ac('0x1b')](handleEntityNotFound(_0x14ea05,null))['then'](function(_0x138d7d){if(_0x138d7d){return _0x138d7d[_0xd2ac('0x4e')](_0x564286[_0xd2ac('0x38')][_0xd2ac('0x3c')],_[_0xd2ac('0x3d')](_0x564286['body'],[_0xd2ac('0x3c'),'id'])||{})[_0xd2ac('0x4f')](function(){return db[_0xd2ac('0x50')][_0xd2ac('0x23')]({'attributes':['id',_0xd2ac('0x1e'),_0xd2ac('0x51')],'where':{'id':_0x564286[_0xd2ac('0x38')][_0xd2ac('0x3c')]}});})[_0xd2ac('0x1b')](function(_0x503be5){socket['emit'](_0xd2ac('0x52'),{'id':Number(_0x564286['params']['id']),'tags':_0x503be5||[]});return{'id':Number(_0x564286[_0xd2ac('0x28')]['id']),'tags':_0x503be5||[]};});}})[_0xd2ac('0x1b')](respondWithResult(_0x14ea05,null))['catch'](handleError(_0x14ea05,null));};exports[_0xd2ac('0x53')]=function(_0x35b9d9,_0x5e2c8a){return db['MailInteraction']['find']({'where':{'id':_0x35b9d9['params']['id']}})['then'](handleEntityNotFound(_0x5e2c8a,null))[_0xd2ac('0x1b')](function(_0x12b455){if(_0x12b455){return _0x12b455['removeTags'](_0x35b9d9[_0xd2ac('0x25')][_0xd2ac('0x3c')]);}})[_0xd2ac('0x1b')](respondWithStatusCode(_0x5e2c8a,null))[_0xd2ac('0x36')](handleError(_0x5e2c8a,null));};exports['download']=function(_0xa7b9cc,_0xf0f5b){var _0x4802f6=moment()[_0xd2ac('0x54')]()['toString']();var _0xa75964=path[_0xd2ac('0x55')](config[_0xd2ac('0x56')],_0xd2ac('0x57'),_0xd2ac('0x58'),'tmp');var _0x23385c=path[_0xd2ac('0x55')](config[_0xd2ac('0x56')],_0xd2ac('0x57'),'files','attachments');var _0x2e8319=path['join'](_0xa75964,_0x4802f6);var _0x577950=util['format'](_0xd2ac('0x59'),_0xa7b9cc[_0xd2ac('0x28')]['id'],_0x4802f6);var _0x37e1cd=path[_0xd2ac('0x55')](_0xa75964,_0x577950);var _0x530a2e=[];if(_0xa7b9cc['query'][_0xd2ac('0x5a')]){_0x530a2e[_0xd2ac('0x5b')]({'model':db['Attachment'],'as':_0xd2ac('0x5c'),'raw':!![]});}var _0x4c1eae=[{'model':db[_0xd2ac('0x3b')],'as':'Messages','attributes':['id',_0xd2ac('0x38'),'from','to','cc',_0xd2ac('0x5d'),_0xd2ac('0x5e'),_0xd2ac('0x5f')],'where':{'secret':![]},'order':qs[_0xd2ac('0x60')]('id'),'include':_0x530a2e}];return db['MailInteraction']['find']({'where':{'id':_0xa7b9cc['params']['id']},'include':_0x4c1eae})['then'](handleEntityNotFound(_0xf0f5b,null))[_0xd2ac('0x1b')](function(_0x1f479b){if(_0x1f479b&&_0x1f479b[_0xd2ac('0x61')]){var _0x26bed0=_0x1f479b['get']({'plain':!![]});fs['mkdirSync'](_0x2e8319);return BPromise['each'](_0x26bed0['Messages'],function(_0x45e7a0,_0x83d274){var _0x43bd6b={'from':_0x45e7a0['from'],'to':_0x45e7a0['to']||_0xd2ac('0x62'),'subject':_0x45e7a0['subject'],'html':htmlEntities[_0xd2ac('0x63')](_0x45e7a0[_0xd2ac('0x38')]),'headers':{'Date':moment(_0x45e7a0['createdAt'])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x45e7a0['cc']){_0x43bd6b['headers']['Cc']=_0x45e7a0['cc'];}if(_0x45e7a0[_0xd2ac('0x5d')]){_0x43bd6b['headers'][_0xd2ac('0x64')]=_0x45e7a0[_0xd2ac('0x5d')];}return new BPromise(function(_0x28bc1b,_0x2b5bab){if(_0x45e7a0[_0xd2ac('0x5c')]){for(var _0x382f8f=0x0;_0x382f8f<_0x45e7a0['Attachments'][_0xd2ac('0x31')];_0x382f8f++){var _0x22446d=_0x45e7a0[_0xd2ac('0x5c')][_0x382f8f];var _0x1cc94a=path[_0xd2ac('0x55')](_0x23385c,_0x22446d['basename']);if(fs['existsSync'](_0x1cc94a)){_0x43bd6b['attachments'][_0xd2ac('0x5b')]({'name':_0x22446d[_0xd2ac('0x1e')],'contentType':_0x22446d['type'],'data':fs[_0xd2ac('0x65')](_0x1cc94a)});}}}emlformat[_0xd2ac('0x66')](_0x43bd6b,function(_0x28d5d1,_0x4c7ff9){if(_0x28d5d1)return _0x2b5bab(_0x28d5d1);fs['writeFileSync'](path[_0xd2ac('0x55')](_0x2e8319,util['format'](_0xd2ac('0x67'),_0x83d274)),_0x4c7ff9);return _0x28bc1b(_0x4c7ff9);});});})['then'](function(){return new BPromise(function(_0x307444,_0x3f197d){zipdir(_0x2e8319,{'saveTo':_0x37e1cd},function(_0x413a25,_0x11a29e){if(_0x413a25)return _0x3f197d(_0x413a25);return _0x307444(_0x11a29e);});})[_0xd2ac('0x1b')](function(){return new BPromise(function(_0xc71801,_0x3382aa){rimraf(_0x2e8319,function(_0x5c7723){if(_0x5c7723)_0x3382aa(_0x5c7723);return _0xc71801();});});})[_0xd2ac('0x1b')](function(){return _0xf0f5b['download'](_0x37e1cd,_0x577950,function(_0x16890c){if(!_0x16890c)fs['unlinkSync'](_0x37e1cd);});});});}else{return _0xf0f5b['sendStatus'](0xc8);}})[_0xd2ac('0x36')](handleError(_0xf0f5b,null));};