dcb7cc51110544d098ffe8657b26b5aa84813094
[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 _0xade9=['params','model','keys','query','filters','intersection','fields','attributes','length','include','merge','find','create','body','describe','addMessage','MailMessage','ids','findOne','hasOwnProperty','nolimit','order','sort','where','pick','MailInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','inlineCss','true','rows','addTags','setTags','spread','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','transcript-%d-%s.zip','attachments','push','Attachment','Attachments','Messages','from','subject','createdAt','get','mkdirSync','each','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','rimraf','zip-dir','moment','bluebird','lodash','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','MailInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','mail','catch','show'];(function(_0x2e8e99,_0x3eae1c){var _0x308334=function(_0x2d8a43){while(--_0x2d8a43){_0x2e8e99['push'](_0x2e8e99['shift']());}};_0x308334(++_0x3eae1c);}(_0xade9,0x1c0));var _0x9ade=function(_0x174a72,_0x46034c){_0x174a72=_0x174a72-0x0;var _0x32cecd=_0xade9[_0x174a72];return _0x32cecd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9ade('0x0'));var zipdir=require(_0x9ade('0x1'));var moment=require(_0x9ade('0x2'));var BPromise=require(_0x9ade('0x3'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0x9ade('0x4'));var juice=require(_0x9ade('0x5'));var Redis=require(_0x9ade('0x6'));var interaction=require(_0x9ade('0x7'));var qs=require(_0x9ade('0x8'));var logger=require('../../config/logger')(_0x9ade('0x9'));var config=require(_0x9ade('0xa'));var db=require(_0x9ade('0xb'))['db'];var htmlEntities=require(_0x9ade('0xc'));config[_0x9ade('0xd')]=_[_0x9ade('0xe')](config['redis'],{'host':_0x9ade('0xf'),'port':0x18eb});var socket=require(_0x9ade('0x10'))(new Redis(config[_0x9ade('0xd')]));require(_0x9ade('0x11'))[_0x9ade('0x12')](socket);function respondWithStatusCode(_0x1b308a,_0x50c932){_0x50c932=_0x50c932||0xcc;return function(_0xb71fd0){if(_0xb71fd0){return _0x1b308a[_0x9ade('0x13')](_0x50c932);}return _0x1b308a['status'](_0x50c932)[_0x9ade('0x14')]();};}function respondWithResult(_0x485c78,_0x2b3027){_0x2b3027=_0x2b3027||0xc8;return function(_0xcf3d74){if(_0xcf3d74){return _0x485c78[_0x9ade('0x15')](_0x2b3027)[_0x9ade('0x16')](_0xcf3d74);}};}function respondWithFilteredResult(_0x40c707,_0x50d0e3){return function(_0x13cfaf){if(_0x13cfaf){var _0x5e4d8d=typeof _0x50d0e3[_0x9ade('0x17')]===_0x9ade('0x18')&&typeof _0x50d0e3[_0x9ade('0x19')]===_0x9ade('0x18');var _0x3a63c9=_0x13cfaf['count'];var _0x921b1b=_0x5e4d8d?0x0:_0x50d0e3[_0x9ade('0x17')];var _0x3b890=_0x5e4d8d?_0x13cfaf[_0x9ade('0x1a')]:_0x50d0e3[_0x9ade('0x17')]+_0x50d0e3['limit'];var _0xd4ef5b;if(_0x3b890>=_0x3a63c9){_0x3b890=_0x3a63c9;_0xd4ef5b=0xc8;}else{_0xd4ef5b=0xce;}_0x40c707['status'](_0xd4ef5b);return _0x40c707[_0x9ade('0x1b')](_0x9ade('0x1c'),_0x921b1b+'-'+_0x3b890+'/'+_0x3a63c9)[_0x9ade('0x16')](_0x13cfaf);}return null;};}function saveUpdates(_0x10c4a0){return function(_0x4f64aa){if(_0x4f64aa){return _0x4f64aa[_0x9ade('0x1d')](_0x10c4a0)[_0x9ade('0x1e')](function(_0x5b132e){return _0x5b132e;});}return null;};}function removeEntity(_0x33c6c8){return function(_0x7b34a2){if(_0x7b34a2){return _0x7b34a2[_0x9ade('0x1f')]()[_0x9ade('0x1e')](function(){_0x33c6c8[_0x9ade('0x15')](0xcc)[_0x9ade('0x14')]();});}};}function handleEntityNotFound(_0x4cb7c1){return function(_0x1e62ee){if(!_0x1e62ee){_0x4cb7c1[_0x9ade('0x13')](0x194);}return _0x1e62ee;};}function handleError(_0x3ed9ca,_0x341691){_0x341691=_0x341691||0x1f4;return function(_0x203aba){logger[_0x9ade('0x20')](_0x203aba[_0x9ade('0x21')]);if(_0x203aba[_0x9ade('0x22')]){delete _0x203aba[_0x9ade('0x22')];}_0x3ed9ca[_0x9ade('0x15')](_0x341691)[_0x9ade('0x23')](_0x203aba);};}exports[_0x9ade('0x24')]=function(_0x51a0dc,_0x12b879){var _0x2721cf={};var _0x5e7c96=_[_0x9ade('0x25')](db[_0x9ade('0x26')][_0x9ade('0x27')],function(_0x409ab9){return{'name':_0x409ab9[_0x9ade('0x28')],'type':_0x409ab9[_0x9ade('0x29')][_0x9ade('0x2a')]};});_0x2721cf=qs[_0x9ade('0x2b')](_0x5e7c96,_0x51a0dc);return interaction[_0x9ade('0x2c')](_0x9ade('0x2d'),_0x51a0dc['query'],_0x51a0dc['user'],_0x2721cf,_0x5e7c96)[_0x9ade('0x1e')](respondWithFilteredResult(_0x12b879,_0x2721cf))[_0x9ade('0x2e')](handleError(_0x12b879,null));};exports[_0x9ade('0x2f')]=function(_0x57f5b7,_0x3fc6ab){var _0xd77e18={'raw':![],'where':{'id':_0x57f5b7[_0x9ade('0x30')]['id']}},_0x5bf12f={};_0x5bf12f[_0x9ade('0x31')]=_[_0x9ade('0x32')](db['MailInteraction'][_0x9ade('0x27')]);_0x5bf12f[_0x9ade('0x33')]=_['keys'](_0x57f5b7[_0x9ade('0x33')]);_0x5bf12f[_0x9ade('0x34')]=_[_0x9ade('0x35')](_0x5bf12f[_0x9ade('0x31')],_0x5bf12f[_0x9ade('0x33')]);_0xd77e18['attributes']=_[_0x9ade('0x35')](_0x5bf12f[_0x9ade('0x31')],qs['fields'](_0x57f5b7[_0x9ade('0x33')][_0x9ade('0x36')]));_0xd77e18[_0x9ade('0x37')]=_0xd77e18[_0x9ade('0x37')][_0x9ade('0x38')]?_0xd77e18[_0x9ade('0x37')]:_0x5bf12f[_0x9ade('0x31')];if(_0x57f5b7[_0x9ade('0x33')]['includeAll']){_0xd77e18[_0x9ade('0x39')]=[{'all':!![]}];}_0xd77e18=_[_0x9ade('0x3a')]({},_0xd77e18,_0x57f5b7['options']);return db['MailInteraction'][_0x9ade('0x3b')](_0xd77e18)[_0x9ade('0x1e')](handleEntityNotFound(_0x3fc6ab,null))['then'](respondWithResult(_0x3fc6ab,null))['catch'](handleError(_0x3fc6ab,null));};exports[_0x9ade('0x3c')]=function(_0x52af24,_0x14ef51){return db[_0x9ade('0x26')]['create'](_0x52af24[_0x9ade('0x3d')],{})[_0x9ade('0x1e')](respondWithResult(_0x14ef51,0xc9))[_0x9ade('0x2e')](handleError(_0x14ef51,null));};exports[_0x9ade('0x1d')]=function(_0x3736bb,_0x17dddc){if(_0x3736bb[_0x9ade('0x3d')]['id']){delete _0x3736bb['body']['id'];}return db['MailInteraction']['find']({'where':{'id':_0x3736bb[_0x9ade('0x30')]['id']}})[_0x9ade('0x1e')](handleEntityNotFound(_0x17dddc,null))[_0x9ade('0x1e')](saveUpdates(_0x3736bb[_0x9ade('0x3d')],null))['then'](respondWithResult(_0x17dddc,null))[_0x9ade('0x2e')](handleError(_0x17dddc,null));};exports[_0x9ade('0x1f')]=function(_0xa02524,_0x208f78){return db[_0x9ade('0x26')][_0x9ade('0x3b')]({'where':{'id':_0xa02524['params']['id']}})[_0x9ade('0x1e')](handleEntityNotFound(_0x208f78,null))[_0x9ade('0x1e')](removeEntity(_0x208f78,null))[_0x9ade('0x2e')](handleError(_0x208f78,null));};exports[_0x9ade('0x3e')]=function(_0x4e810c,_0x160eed){return db[_0x9ade('0x26')][_0x9ade('0x3e')]()[_0x9ade('0x1e')](respondWithResult(_0x160eed,null))[_0x9ade('0x2e')](handleError(_0x160eed,null));};exports[_0x9ade('0x3f')]=function(_0x3d1246,_0x3bd681){return db[_0x9ade('0x40')]['find']({'where':{'id':_0x3d1246[_0x9ade('0x30')]['id']}})[_0x9ade('0x1e')](handleEntityNotFound(_0x3bd681,null))[_0x9ade('0x1e')](function(_0x59db3b){if(_0x59db3b){return _0x59db3b['addMessage'](_0x3d1246[_0x9ade('0x3d')]['ids'],_['omit'](_0x3d1246[_0x9ade('0x3d')],[_0x9ade('0x41'),'id'])||{});}})[_0x9ade('0x1e')](respondWithResult(_0x3bd681,null))[_0x9ade('0x2e')](handleError(_0x3bd681,null));};exports['getMessages']=function(_0xe33754,_0x45ccfd){var _0x2484bf={'raw':![],'where':{}};var _0x1b2df7={};var _0x21b1d6={'count':0x0,'rows':[]};return db[_0x9ade('0x26')][_0x9ade('0x42')]({'where':{'id':_0xe33754[_0x9ade('0x30')]['id']}})[_0x9ade('0x1e')](handleEntityNotFound(_0x45ccfd,null))['then'](function(_0x53f656){if(_0x53f656){_0x1b2df7[_0x9ade('0x31')]=_[_0x9ade('0x32')](db[_0x9ade('0x40')][_0x9ade('0x27')]);_0x1b2df7[_0x9ade('0x33')]=_['keys'](_0xe33754[_0x9ade('0x33')]);_0x1b2df7[_0x9ade('0x34')]=_[_0x9ade('0x35')](_0x1b2df7[_0x9ade('0x31')],_0x1b2df7[_0x9ade('0x33')]);_0x2484bf['attributes']=_[_0x9ade('0x35')](_0x1b2df7['model'],qs[_0x9ade('0x36')](_0xe33754['query'][_0x9ade('0x36')]));_0x2484bf[_0x9ade('0x37')]=_0x2484bf['attributes'][_0x9ade('0x38')]?_0x2484bf[_0x9ade('0x37')]:_0x1b2df7[_0x9ade('0x31')];if(!_0xe33754[_0x9ade('0x33')][_0x9ade('0x43')](_0x9ade('0x44'))){_0x2484bf[_0x9ade('0x19')]=qs[_0x9ade('0x19')](_0xe33754[_0x9ade('0x33')]['limit']);_0x2484bf[_0x9ade('0x17')]=qs[_0x9ade('0x17')](_0xe33754[_0x9ade('0x33')][_0x9ade('0x17')]);}_0x2484bf[_0x9ade('0x45')]=qs[_0x9ade('0x46')](_0xe33754[_0x9ade('0x33')][_0x9ade('0x46')]);_0x2484bf[_0x9ade('0x47')]=qs[_0x9ade('0x34')](_[_0x9ade('0x48')](_0xe33754[_0x9ade('0x33')],_0x1b2df7[_0x9ade('0x34')]));_0x2484bf[_0x9ade('0x47')][_0x9ade('0x49')]=_0x53f656['id'];if(_0xe33754['query'][_0x9ade('0x4a')]){_0x2484bf[_0x9ade('0x47')]=_[_0x9ade('0x3a')](_0x2484bf[_0x9ade('0x47')],{'$or':_[_0x9ade('0x25')](_0x2484bf[_0x9ade('0x37')],function(_0x52956b){var _0x3dd203={};_0x3dd203[_0x52956b]={'$like':'%'+_0xe33754[_0x9ade('0x33')][_0x9ade('0x4a')]+'%'};return _0x3dd203;})});}if(_0xe33754[_0x9ade('0x33')][_0x9ade('0x4b')]){var _0x100503=_0xe33754[_0x9ade('0x33')][_0x9ade('0x4b')][_0x9ade('0x4c')](',');var _0xa6a103={};_0xa6a103[_0x100503[0x0]]={'$gte':moment(_0x100503[0x1])[_0x9ade('0x4d')](_0x9ade('0x4e'))};_0x2484bf[_0x9ade('0x47')]=_[_0x9ade('0x3a')](_0x2484bf['where'],_0xa6a103);}_0x2484bf=_[_0x9ade('0x3a')]({},_0x2484bf,_0xe33754[_0x9ade('0x4f')]);return db[_0x9ade('0x40')][_0x9ade('0x1a')]({'where':_0x2484bf['where']})['then'](function(_0x30aaba){_0x21b1d6['count']=_0x30aaba;if(_0xe33754[_0x9ade('0x33')][_0x9ade('0x50')]){_0x2484bf['include']=[{'all':!![]}];}return db['MailMessage'][_0x9ade('0x2c')](_0x2484bf);})[_0x9ade('0x1e')](function(_0x44e8a9){if(_0xe33754[_0x9ade('0x33')][_0x9ade('0x51')]===_0x9ade('0x52')){for(var _0x4e46e7=0x0;_0x4e46e7<_0x44e8a9[_0x9ade('0x38')];_0x4e46e7++){_0x44e8a9[_0x4e46e7][_0x9ade('0x3d')]=juice(_0x44e8a9[_0x4e46e7][_0x9ade('0x3d')]);}}_0x21b1d6[_0x9ade('0x53')]=_0x44e8a9;return _0x21b1d6;});}})[_0x9ade('0x1e')](respondWithFilteredResult(_0x45ccfd,_0x2484bf))[_0x9ade('0x2e')](handleError(_0x45ccfd,null));};exports[_0x9ade('0x54')]=function(_0x6a4490,_0x2d3109){return db[_0x9ade('0x26')][_0x9ade('0x3b')]({'where':{'id':_0x6a4490[_0x9ade('0x30')]['id']}})[_0x9ade('0x1e')](handleEntityNotFound(_0x2d3109,null))[_0x9ade('0x1e')](function(_0x3a2275){if(_0x3a2275){return _0x3a2275[_0x9ade('0x55')](_0x6a4490[_0x9ade('0x3d')][_0x9ade('0x41')],_['omit'](_0x6a4490[_0x9ade('0x3d')],['ids','id'])||{})[_0x9ade('0x56')](function(){return db[_0x9ade('0x57')]['findAll']({'attributes':['id',_0x9ade('0x22'),_0x9ade('0x58')],'where':{'id':_0x6a4490[_0x9ade('0x3d')][_0x9ade('0x41')]}});})[_0x9ade('0x1e')](function(_0x3be650){socket[_0x9ade('0x59')](_0x9ade('0x5a'),{'id':Number(_0x6a4490[_0x9ade('0x30')]['id']),'tags':_0x3be650||[]});return{'id':Number(_0x6a4490['params']['id']),'tags':_0x3be650||[]};});}})['then'](respondWithResult(_0x2d3109,null))[_0x9ade('0x2e')](handleError(_0x2d3109,null));};exports[_0x9ade('0x5b')]=function(_0x4620a8,_0x2bb846){return db[_0x9ade('0x26')][_0x9ade('0x3b')]({'where':{'id':_0x4620a8[_0x9ade('0x30')]['id']}})['then'](handleEntityNotFound(_0x2bb846,null))['then'](function(_0x3814bb){if(_0x3814bb){return _0x3814bb['removeTags'](_0x4620a8[_0x9ade('0x33')][_0x9ade('0x41')]);}})[_0x9ade('0x1e')](respondWithStatusCode(_0x2bb846,null))[_0x9ade('0x2e')](handleError(_0x2bb846,null));};exports[_0x9ade('0x5c')]=function(_0x44d3ef,_0x787f16){var _0x26deb5=moment()[_0x9ade('0x5d')]()[_0x9ade('0x5e')]();var _0x69c8e5=path[_0x9ade('0x5f')](config[_0x9ade('0x60')],_0x9ade('0x61'),_0x9ade('0x62'),_0x9ade('0x63'));var _0x104987=path[_0x9ade('0x5f')](config[_0x9ade('0x60')],_0x9ade('0x61'),_0x9ade('0x62'),'attachments');var _0x280317=path[_0x9ade('0x5f')](_0x69c8e5,_0x26deb5);var _0xa78357=util[_0x9ade('0x4d')](_0x9ade('0x64'),_0x44d3ef['params']['id'],_0x26deb5);var _0x2f13c1=path[_0x9ade('0x5f')](_0x69c8e5,_0xa78357);var _0x65aea3=[];if(_0x44d3ef[_0x9ade('0x33')][_0x9ade('0x65')]){_0x65aea3[_0x9ade('0x66')]({'model':db[_0x9ade('0x67')],'as':_0x9ade('0x68'),'raw':!![]});}var _0x5dd76a=[{'model':db[_0x9ade('0x40')],'as':_0x9ade('0x69'),'attributes':['id','body',_0x9ade('0x6a'),'to','cc','bcc',_0x9ade('0x6b'),_0x9ade('0x6c')],'where':{'secret':![]},'order':qs[_0x9ade('0x46')]('id'),'include':_0x65aea3}];return db[_0x9ade('0x26')]['find']({'where':{'id':_0x44d3ef[_0x9ade('0x30')]['id']},'include':_0x5dd76a})['then'](handleEntityNotFound(_0x787f16,null))[_0x9ade('0x1e')](function(_0x4e11d9){if(_0x4e11d9&&_0x4e11d9[_0x9ade('0x69')]){var _0x555262=_0x4e11d9[_0x9ade('0x6d')]({'plain':!![]});fs[_0x9ade('0x6e')](_0x280317);return BPromise[_0x9ade('0x6f')](_0x555262[_0x9ade('0x69')],function(_0x3b1ada,_0x511434){var _0x3ce712={'from':_0x3b1ada['from'],'to':_0x3b1ada['to']||'missing.recipient@your.company.com','subject':_0x3b1ada[_0x9ade('0x6b')],'html':htmlEntities[_0x9ade('0x70')](_0x3b1ada[_0x9ade('0x3d')]),'headers':{'Date':moment(_0x3b1ada[_0x9ade('0x6c')])['format'](_0x9ade('0x71'))},'attachments':[]};if(_0x3b1ada['cc']){_0x3ce712[_0x9ade('0x72')]['Cc']=_0x3b1ada['cc'];}if(_0x3b1ada[_0x9ade('0x73')]){_0x3ce712[_0x9ade('0x72')][_0x9ade('0x74')]=_0x3b1ada['bcc'];}return new BPromise(function(_0x13c99b,_0x40dd88){if(_0x3b1ada[_0x9ade('0x68')]){for(var _0x2a6704=0x0;_0x2a6704<_0x3b1ada[_0x9ade('0x68')][_0x9ade('0x38')];_0x2a6704++){var _0x4add70=_0x3b1ada[_0x9ade('0x68')][_0x2a6704];var _0x2d1fae=path[_0x9ade('0x5f')](_0x104987,_0x4add70[_0x9ade('0x75')]);if(fs[_0x9ade('0x76')](_0x2d1fae)){_0x3ce712[_0x9ade('0x65')]['push']({'name':_0x4add70[_0x9ade('0x22')],'contentType':_0x4add70[_0x9ade('0x29')],'data':fs[_0x9ade('0x77')](_0x2d1fae)});}}}emlformat[_0x9ade('0x78')](_0x3ce712,function(_0x4cd3e9,_0x388a82){if(_0x4cd3e9)return _0x40dd88(_0x4cd3e9);fs[_0x9ade('0x79')](path[_0x9ade('0x5f')](_0x280317,util[_0x9ade('0x4d')](_0x9ade('0x7a'),_0x511434)),_0x388a82);return _0x13c99b(_0x388a82);});});})[_0x9ade('0x1e')](function(){return new BPromise(function(_0x42620f,_0xe4d445){zipdir(_0x280317,{'saveTo':_0x2f13c1},function(_0x324724,_0x2300e7){if(_0x324724)return _0xe4d445(_0x324724);return _0x42620f(_0x2300e7);});})['then'](function(){return new BPromise(function(_0x36ec55,_0x3db45f){rimraf(_0x280317,function(_0x3165e0){if(_0x3165e0)_0x3db45f(_0x3165e0);return _0x36ec55();});});})[_0x9ade('0x1e')](function(){return _0x787f16[_0x9ade('0x5c')](_0x2f13c1,_0xa78357,function(_0x5ac97e){if(!_0x5ac97e)fs[_0x9ade('0x7b')](_0x2f13c1);});});});}else{return _0x787f16[_0x9ade('0x13')](0xc8);}})[_0x9ade('0x2e')](handleError(_0x787f16,null));};