Built motion from commit e02f907f.|2.6.14
[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 _0xf4fc=['user','catch','show','params','keys','query','intersection','attributes','model','fields','length','include','merge','options','find','create','body','destroy','describe','addMessage','MailMessage','ids','omit','getMessages','findOne','filters','hasOwnProperty','nolimit','order','sort','where','pick','$gte','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','rows','addTags','spread','Tag','emit','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','get','mkdirSync','missing.recipient@your.company.com','decode','format','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','basename','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','sendStatus','rimraf','zip-dir','moment','bluebird','util','path','lodash','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./mailInteraction.socket','register','status','offset','undefined','limit','count','Content-Range','json','update','then','end','stack','send','index','map','MailInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','mail'];(function(_0x381bff,_0x19d01f){var _0x201ab1=function(_0x7d6446){while(--_0x7d6446){_0x381bff['push'](_0x381bff['shift']());}};_0x201ab1(++_0x19d01f);}(_0xf4fc,0x1a2));var _0xcf4f=function(_0x3ec400,_0xd083bb){_0x3ec400=_0x3ec400-0x0;var _0x5fc639=_0xf4fc[_0x3ec400];return _0x5fc639;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcf4f('0x0'));var zipdir=require(_0xcf4f('0x1'));var moment=require(_0xcf4f('0x2'));var BPromise=require(_0xcf4f('0x3'));var util=require(_0xcf4f('0x4'));var path=require(_0xcf4f('0x5'));var fs=require('fs');var _=require(_0xcf4f('0x6'));var juice=require(_0xcf4f('0x7'));var Redis=require(_0xcf4f('0x8'));var interaction=require(_0xcf4f('0x9'));var qs=require(_0xcf4f('0xa'));var logger=require(_0xcf4f('0xb'))('api');var config=require(_0xcf4f('0xc'));var db=require(_0xcf4f('0xd'))['db'];var htmlEntities=require('html-entities');config['redis']=_[_0xcf4f('0xe')](config['redis'],{'host':_0xcf4f('0xf'),'port':0x18eb});var socket=require(_0xcf4f('0x10'))(new Redis(config[_0xcf4f('0x11')]));require(_0xcf4f('0x12'))[_0xcf4f('0x13')](socket);function respondWithStatusCode(_0x28b99e,_0x308760){_0x308760=_0x308760||0xcc;return function(_0x393781){if(_0x393781){return _0x28b99e['sendStatus'](_0x308760);}return _0x28b99e[_0xcf4f('0x14')](_0x308760)['end']();};}function respondWithResult(_0x35cde6,_0x58999c){_0x58999c=_0x58999c||0xc8;return function(_0x36d4b6){if(_0x36d4b6){return _0x35cde6[_0xcf4f('0x14')](_0x58999c)['json'](_0x36d4b6);}};}function respondWithFilteredResult(_0xb298b2,_0x582c7b){return function(_0x42f66e){if(_0x42f66e){var _0x18abed=typeof _0x582c7b[_0xcf4f('0x15')]===_0xcf4f('0x16')&&typeof _0x582c7b[_0xcf4f('0x17')]===_0xcf4f('0x16');var _0x30a6ec=_0x42f66e[_0xcf4f('0x18')];var _0x202f65=_0x18abed?0x0:_0x582c7b[_0xcf4f('0x15')];var _0x1a25f8=_0x18abed?_0x42f66e[_0xcf4f('0x18')]:_0x582c7b[_0xcf4f('0x15')]+_0x582c7b[_0xcf4f('0x17')];var _0x3b1689;if(_0x1a25f8>=_0x30a6ec){_0x1a25f8=_0x30a6ec;_0x3b1689=0xc8;}else{_0x3b1689=0xce;}_0xb298b2['status'](_0x3b1689);return _0xb298b2['set'](_0xcf4f('0x19'),_0x202f65+'-'+_0x1a25f8+'/'+_0x30a6ec)[_0xcf4f('0x1a')](_0x42f66e);}return null;};}function saveUpdates(_0x242550){return function(_0x475d6f){if(_0x475d6f){return _0x475d6f[_0xcf4f('0x1b')](_0x242550)[_0xcf4f('0x1c')](function(_0x917cc8){return _0x917cc8;});}return null;};}function removeEntity(_0x2189e8){return function(_0x138908){if(_0x138908){return _0x138908['destroy']()[_0xcf4f('0x1c')](function(){_0x2189e8['status'](0xcc)[_0xcf4f('0x1d')]();});}};}function handleEntityNotFound(_0x4b8313){return function(_0x234082){if(!_0x234082){_0x4b8313['sendStatus'](0x194);}return _0x234082;};}function handleError(_0x1a979a,_0x3fa230){_0x3fa230=_0x3fa230||0x1f4;return function(_0x5c2b89){logger['error'](_0x5c2b89[_0xcf4f('0x1e')]);if(_0x5c2b89['name']){delete _0x5c2b89['name'];}_0x1a979a['status'](_0x3fa230)[_0xcf4f('0x1f')](_0x5c2b89);};}exports[_0xcf4f('0x20')]=function(_0x5ad5f0,_0x1eb9ee){var _0x15a18c={};var _0x37f864=_[_0xcf4f('0x21')](db[_0xcf4f('0x22')][_0xcf4f('0x23')],function(_0x4f5f63){return{'name':_0x4f5f63[_0xcf4f('0x24')],'type':_0x4f5f63[_0xcf4f('0x25')][_0xcf4f('0x26')]};});_0x15a18c=qs[_0xcf4f('0x27')](_0x37f864,_0x5ad5f0);return interaction[_0xcf4f('0x28')](_0xcf4f('0x29'),_0x5ad5f0['query'],_0x5ad5f0[_0xcf4f('0x2a')],_0x15a18c,_0x37f864)['then'](respondWithFilteredResult(_0x1eb9ee,_0x15a18c))[_0xcf4f('0x2b')](handleError(_0x1eb9ee,null));};exports[_0xcf4f('0x2c')]=function(_0x16bfc4,_0x261c56){var _0x5ebdf2={'raw':![],'where':{'id':_0x16bfc4[_0xcf4f('0x2d')]['id']}},_0x30c5f6={};_0x30c5f6['model']=_[_0xcf4f('0x2e')](db[_0xcf4f('0x22')][_0xcf4f('0x23')]);_0x30c5f6[_0xcf4f('0x2f')]=_['keys'](_0x16bfc4[_0xcf4f('0x2f')]);_0x30c5f6['filters']=_[_0xcf4f('0x30')](_0x30c5f6['model'],_0x30c5f6['query']);_0x5ebdf2[_0xcf4f('0x31')]=_[_0xcf4f('0x30')](_0x30c5f6[_0xcf4f('0x32')],qs[_0xcf4f('0x33')](_0x16bfc4[_0xcf4f('0x2f')][_0xcf4f('0x33')]));_0x5ebdf2['attributes']=_0x5ebdf2[_0xcf4f('0x31')][_0xcf4f('0x34')]?_0x5ebdf2[_0xcf4f('0x31')]:_0x30c5f6[_0xcf4f('0x32')];if(_0x16bfc4['query']['includeAll']){_0x5ebdf2[_0xcf4f('0x35')]=[{'all':!![]}];}_0x5ebdf2=_[_0xcf4f('0x36')]({},_0x5ebdf2,_0x16bfc4[_0xcf4f('0x37')]);return db[_0xcf4f('0x22')][_0xcf4f('0x38')](_0x5ebdf2)['then'](handleEntityNotFound(_0x261c56,null))[_0xcf4f('0x1c')](respondWithResult(_0x261c56,null))[_0xcf4f('0x2b')](handleError(_0x261c56,null));};exports[_0xcf4f('0x39')]=function(_0x1c9fd5,_0x448171){return db[_0xcf4f('0x22')][_0xcf4f('0x39')](_0x1c9fd5[_0xcf4f('0x3a')],{})[_0xcf4f('0x1c')](respondWithResult(_0x448171,0xc9))[_0xcf4f('0x2b')](handleError(_0x448171,null));};exports[_0xcf4f('0x1b')]=function(_0x1b0516,_0xbae16c){if(_0x1b0516['body']['id']){delete _0x1b0516[_0xcf4f('0x3a')]['id'];}return db[_0xcf4f('0x22')]['find']({'where':{'id':_0x1b0516[_0xcf4f('0x2d')]['id']}})[_0xcf4f('0x1c')](handleEntityNotFound(_0xbae16c,null))[_0xcf4f('0x1c')](saveUpdates(_0x1b0516[_0xcf4f('0x3a')],null))[_0xcf4f('0x1c')](respondWithResult(_0xbae16c,null))[_0xcf4f('0x2b')](handleError(_0xbae16c,null));};exports[_0xcf4f('0x3b')]=function(_0x5de279,_0x3ef6b1){return db[_0xcf4f('0x22')]['find']({'where':{'id':_0x5de279[_0xcf4f('0x2d')]['id']}})[_0xcf4f('0x1c')](handleEntityNotFound(_0x3ef6b1,null))['then'](removeEntity(_0x3ef6b1,null))[_0xcf4f('0x2b')](handleError(_0x3ef6b1,null));};exports['describe']=function(_0x399bb8,_0x5e5843){return db[_0xcf4f('0x22')][_0xcf4f('0x3c')]()[_0xcf4f('0x1c')](respondWithResult(_0x5e5843,null))['catch'](handleError(_0x5e5843,null));};exports[_0xcf4f('0x3d')]=function(_0x21c3dd,_0x4a6694){return db[_0xcf4f('0x3e')]['find']({'where':{'id':_0x21c3dd['params']['id']}})[_0xcf4f('0x1c')](handleEntityNotFound(_0x4a6694,null))['then'](function(_0x3b60ba){if(_0x3b60ba){return _0x3b60ba[_0xcf4f('0x3d')](_0x21c3dd[_0xcf4f('0x3a')][_0xcf4f('0x3f')],_[_0xcf4f('0x40')](_0x21c3dd['body'],[_0xcf4f('0x3f'),'id'])||{});}})[_0xcf4f('0x1c')](respondWithResult(_0x4a6694,null))[_0xcf4f('0x2b')](handleError(_0x4a6694,null));};exports[_0xcf4f('0x41')]=function(_0x59c03d,_0x5db49d){var _0x2b3f6c={'raw':![],'where':{}};var _0x2b5d5e={};var _0x597fe0={'count':0x0,'rows':[]};return db[_0xcf4f('0x22')][_0xcf4f('0x42')]({'where':{'id':_0x59c03d['params']['id']}})[_0xcf4f('0x1c')](handleEntityNotFound(_0x5db49d,null))[_0xcf4f('0x1c')](function(_0x79039f){if(_0x79039f){_0x2b5d5e['model']=_[_0xcf4f('0x2e')](db[_0xcf4f('0x3e')][_0xcf4f('0x23')]);_0x2b5d5e[_0xcf4f('0x2f')]=_[_0xcf4f('0x2e')](_0x59c03d['query']);_0x2b5d5e[_0xcf4f('0x43')]=_[_0xcf4f('0x30')](_0x2b5d5e['model'],_0x2b5d5e[_0xcf4f('0x2f')]);_0x2b3f6c[_0xcf4f('0x31')]=_[_0xcf4f('0x30')](_0x2b5d5e[_0xcf4f('0x32')],qs[_0xcf4f('0x33')](_0x59c03d[_0xcf4f('0x2f')][_0xcf4f('0x33')]));_0x2b3f6c['attributes']=_0x2b3f6c[_0xcf4f('0x31')][_0xcf4f('0x34')]?_0x2b3f6c['attributes']:_0x2b5d5e[_0xcf4f('0x32')];if(!_0x59c03d[_0xcf4f('0x2f')][_0xcf4f('0x44')](_0xcf4f('0x45'))){_0x2b3f6c[_0xcf4f('0x17')]=qs[_0xcf4f('0x17')](_0x59c03d['query']['limit']);_0x2b3f6c[_0xcf4f('0x15')]=qs[_0xcf4f('0x15')](_0x59c03d[_0xcf4f('0x2f')][_0xcf4f('0x15')]);}_0x2b3f6c[_0xcf4f('0x46')]=qs[_0xcf4f('0x47')](_0x59c03d[_0xcf4f('0x2f')]['sort']);_0x2b3f6c[_0xcf4f('0x48')]=qs[_0xcf4f('0x43')](_[_0xcf4f('0x49')](_0x59c03d[_0xcf4f('0x2f')],_0x2b5d5e['filters']));_0x2b3f6c['where']['MailInteractionId']=_0x79039f['id'];if(_0x59c03d[_0xcf4f('0x2f')]['filter']){_0x2b3f6c['where']=_[_0xcf4f('0x36')](_0x2b3f6c['where'],{'$or':_['map'](_0x2b3f6c[_0xcf4f('0x31')],function(_0x90483e){var _0x1285af={};_0x1285af[_0x90483e]={'$like':'%'+_0x59c03d[_0xcf4f('0x2f')]['filter']+'%'};return _0x1285af;})});}if(_0x59c03d['query'][_0xcf4f('0x4a')]){var _0x275a10=_0x59c03d[_0xcf4f('0x2f')][_0xcf4f('0x4a')]['split'](',');var _0x255189={};_0x255189[_0x275a10[0x0]]={'$gte':moment(_0x275a10[0x1])['format'](_0xcf4f('0x4b'))};_0x2b3f6c[_0xcf4f('0x48')]=_[_0xcf4f('0x36')](_0x2b3f6c[_0xcf4f('0x48')],_0x255189);}_0x2b3f6c=_[_0xcf4f('0x36')]({},_0x2b3f6c,_0x59c03d['options']);return db[_0xcf4f('0x3e')][_0xcf4f('0x18')]({'where':_0x2b3f6c[_0xcf4f('0x48')]})[_0xcf4f('0x1c')](function(_0x84bdb4){_0x597fe0[_0xcf4f('0x18')]=_0x84bdb4;if(_0x59c03d[_0xcf4f('0x2f')]['includeAll']){_0x2b3f6c[_0xcf4f('0x35')]=[{'all':!![]}];}return db['MailMessage'][_0xcf4f('0x28')](_0x2b3f6c);})[_0xcf4f('0x1c')](function(_0x2e8c74){if(_0x59c03d['query'][_0xcf4f('0x4c')]===_0xcf4f('0x4d')){for(var _0x21d3eb=0x0;_0x21d3eb<_0x2e8c74[_0xcf4f('0x34')];_0x21d3eb++){_0x2e8c74[_0x21d3eb][_0xcf4f('0x3a')]=juice(_0x2e8c74[_0x21d3eb][_0xcf4f('0x3a')]);}}_0x597fe0[_0xcf4f('0x4e')]=_0x2e8c74;return _0x597fe0;});}})[_0xcf4f('0x1c')](respondWithFilteredResult(_0x5db49d,_0x2b3f6c))[_0xcf4f('0x2b')](handleError(_0x5db49d,null));};exports[_0xcf4f('0x4f')]=function(_0xc0f90a,_0x27e794){return db[_0xcf4f('0x22')][_0xcf4f('0x38')]({'where':{'id':_0xc0f90a['params']['id']}})[_0xcf4f('0x1c')](handleEntityNotFound(_0x27e794,null))[_0xcf4f('0x1c')](function(_0x11cba9){if(_0x11cba9){return _0x11cba9['setTags'](_0xc0f90a[_0xcf4f('0x3a')][_0xcf4f('0x3f')],_['omit'](_0xc0f90a[_0xcf4f('0x3a')],[_0xcf4f('0x3f'),'id'])||{})[_0xcf4f('0x50')](function(){return db[_0xcf4f('0x51')][_0xcf4f('0x28')]({'attributes':['id','name','color'],'where':{'id':_0xc0f90a[_0xcf4f('0x3a')][_0xcf4f('0x3f')]}});})[_0xcf4f('0x1c')](function(_0x56af60){socket[_0xcf4f('0x52')]('mailInteractionTags:save',{'id':Number(_0xc0f90a[_0xcf4f('0x2d')]['id']),'tags':_0x56af60||[]});return{'id':Number(_0xc0f90a['params']['id']),'tags':_0x56af60||[]};});}})[_0xcf4f('0x1c')](respondWithResult(_0x27e794,null))[_0xcf4f('0x2b')](handleError(_0x27e794,null));};exports['removeTags']=function(_0x1fe714,_0x364437){return db[_0xcf4f('0x22')][_0xcf4f('0x38')]({'where':{'id':_0x1fe714[_0xcf4f('0x2d')]['id']}})[_0xcf4f('0x1c')](handleEntityNotFound(_0x364437,null))[_0xcf4f('0x1c')](function(_0x4fe188){if(_0x4fe188){return _0x4fe188[_0xcf4f('0x53')](_0x1fe714[_0xcf4f('0x2f')][_0xcf4f('0x3f')]);}})[_0xcf4f('0x1c')](respondWithStatusCode(_0x364437,null))[_0xcf4f('0x2b')](handleError(_0x364437,null));};exports[_0xcf4f('0x54')]=function(_0x5bb64b,_0x16b5b6){var _0x391672=moment()[_0xcf4f('0x55')]()['toString']();var _0x525390=path[_0xcf4f('0x56')](config[_0xcf4f('0x57')],_0xcf4f('0x58'),_0xcf4f('0x59'),_0xcf4f('0x5a'));var _0x331d4f=path[_0xcf4f('0x56')](config['root'],'server','files',_0xcf4f('0x5b'));var _0x1b3d91=path[_0xcf4f('0x56')](_0x525390,_0x391672);var _0xbf484=util['format'](_0xcf4f('0x5c'),_0x5bb64b['params']['id'],_0x391672);var _0xfcd01=path[_0xcf4f('0x56')](_0x525390,_0xbf484);var _0x3645a9=[];if(_0x5bb64b[_0xcf4f('0x2f')][_0xcf4f('0x5b')]){_0x3645a9[_0xcf4f('0x5d')]({'model':db[_0xcf4f('0x5e')],'as':_0xcf4f('0x5f'),'raw':!![]});}var _0x4d8767=[{'model':db[_0xcf4f('0x3e')],'as':_0xcf4f('0x60'),'attributes':['id',_0xcf4f('0x3a'),_0xcf4f('0x61'),'to','cc',_0xcf4f('0x62'),_0xcf4f('0x63'),_0xcf4f('0x64')],'where':{'secret':![]},'order':qs[_0xcf4f('0x47')]('id'),'include':_0x3645a9}];return db[_0xcf4f('0x22')][_0xcf4f('0x38')]({'where':{'id':_0x5bb64b['params']['id']},'include':_0x4d8767})[_0xcf4f('0x1c')](handleEntityNotFound(_0x16b5b6,null))[_0xcf4f('0x1c')](function(_0x4697ab){if(_0x4697ab&&_0x4697ab['Messages']){var _0x29b805=_0x4697ab[_0xcf4f('0x65')]({'plain':!![]});fs[_0xcf4f('0x66')](_0x1b3d91);return BPromise['each'](_0x29b805[_0xcf4f('0x60')],function(_0x570c19,_0x211784){var _0x2577e5={'from':_0x570c19[_0xcf4f('0x61')],'to':_0x570c19['to']||_0xcf4f('0x67'),'subject':_0x570c19['subject'],'html':htmlEntities[_0xcf4f('0x68')](_0x570c19[_0xcf4f('0x3a')]),'headers':{'Date':moment(_0x570c19[_0xcf4f('0x64')])[_0xcf4f('0x69')](_0xcf4f('0x6a'))},'attachments':[]};if(_0x570c19['cc']){_0x2577e5['headers']['Cc']=_0x570c19['cc'];}if(_0x570c19[_0xcf4f('0x62')]){_0x2577e5[_0xcf4f('0x6b')]['Bcc']=_0x570c19[_0xcf4f('0x62')];}return new BPromise(function(_0x203f96,_0x593249){if(_0x570c19['Attachments']){for(var _0x11674b=0x0;_0x11674b<_0x570c19[_0xcf4f('0x5f')][_0xcf4f('0x34')];_0x11674b++){var _0x3ba8d9=_0x570c19[_0xcf4f('0x5f')][_0x11674b];var _0x2b67b3=path[_0xcf4f('0x56')](_0x331d4f,_0x3ba8d9[_0xcf4f('0x6c')]);if(fs['existsSync'](_0x2b67b3)){_0x2577e5[_0xcf4f('0x5b')][_0xcf4f('0x5d')]({'name':_0x3ba8d9['name'],'contentType':_0x3ba8d9[_0xcf4f('0x25')],'data':fs[_0xcf4f('0x6d')](_0x2b67b3)});}}}emlformat[_0xcf4f('0x6e')](_0x2577e5,function(_0x5e5130,_0x59f08c){if(_0x5e5130)return _0x593249(_0x5e5130);fs[_0xcf4f('0x6f')](path[_0xcf4f('0x56')](_0x1b3d91,util['format'](_0xcf4f('0x70'),_0x211784)),_0x59f08c);return _0x203f96(_0x59f08c);});});})[_0xcf4f('0x1c')](function(){return new BPromise(function(_0x106247,_0x2fec89){zipdir(_0x1b3d91,{'saveTo':_0xfcd01},function(_0x1095fc,_0x4d50f1){if(_0x1095fc)return _0x2fec89(_0x1095fc);return _0x106247(_0x4d50f1);});})[_0xcf4f('0x1c')](function(){return new BPromise(function(_0x5ce250,_0x1a37ae){rimraf(_0x1b3d91,function(_0x67f073){if(_0x67f073)_0x1a37ae(_0x67f073);return _0x5ce250();});});})['then'](function(){return _0x16b5b6[_0xcf4f('0x54')](_0xfcd01,_0xbf484,function(_0x28f052){if(!_0x28f052)fs[_0xcf4f('0x71')](_0xfcd01);});});});}else{return _0x16b5b6[_0xcf4f('0x72')](0xc8);}})['catch'](handleError(_0x16b5b6,null));};