22e360f6d6aeba8be0d35bfe108bc6cf5a8ba86a
[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 _0xd016=['juice','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','defaults','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','status','end','offset','undefined','limit','set','Content-Range','json','update','then','destroy','sendStatus','error','stack','name','send','index','map','fieldName','type','key','getOptions','findAll','mail','query','user','catch','show','params','model','MailInteraction','rawAttributes','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','create','body','describe','addMessage','MailMessage','ids','findOne','hasOwnProperty','order','sort','pick','filter','$gte','split','format','where','count','true','rows','addTags','setTags','spread','Tag','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','root','server','tmp','attachments','transcript-%d-%s.zip','Attachments','Messages','bcc','subject','createdAt','get','mkdirSync','each','from','missing.recipient@your.company.com','decode','headers','Bcc','basename','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','path','lodash'];(function(_0x15cbce,_0xda8402){var _0x257f29=function(_0x388132){while(--_0x388132){_0x15cbce['push'](_0x15cbce['shift']());}};_0x257f29(++_0xda8402);}(_0xd016,0xe3));var _0x6d01=function(_0x459d99,_0x33f980){_0x459d99=_0x459d99-0x0;var _0x449fd2=_0xd016[_0x459d99];return _0x449fd2;};'use strict';var emlformat=require(_0x6d01('0x0'));var rimraf=require(_0x6d01('0x1'));var zipdir=require(_0x6d01('0x2'));var moment=require(_0x6d01('0x3'));var BPromise=require(_0x6d01('0x4'));var util=require('util');var path=require(_0x6d01('0x5'));var fs=require('fs');var _=require(_0x6d01('0x6'));var juice=require(_0x6d01('0x7'));var Redis=require('ioredis');var interaction=require('../../components/interaction/service');var qs=require(_0x6d01('0x8'));var logger=require(_0x6d01('0x9'))(_0x6d01('0xa'));var config=require(_0x6d01('0xb'));var db=require(_0x6d01('0xc'))['db'];var htmlEntities=require(_0x6d01('0xd'));config['redis']=_[_0x6d01('0xe')](config[_0x6d01('0xf')],{'host':_0x6d01('0x10'),'port':0x18eb});var socket=require(_0x6d01('0x11'))(new Redis(config[_0x6d01('0xf')]));require(_0x6d01('0x12'))[_0x6d01('0x13')](socket);function respondWithStatusCode(_0x36ab01,_0x3ad42b){_0x3ad42b=_0x3ad42b||0xcc;return function(_0x45ad1e){if(_0x45ad1e){return _0x36ab01['sendStatus'](_0x3ad42b);}return _0x36ab01[_0x6d01('0x14')](_0x3ad42b)[_0x6d01('0x15')]();};}function respondWithResult(_0x17b947,_0xd36ca9){_0xd36ca9=_0xd36ca9||0xc8;return function(_0x19d78a){if(_0x19d78a){return _0x17b947['status'](_0xd36ca9)['json'](_0x19d78a);}};}function respondWithFilteredResult(_0x20797c,_0x2b90e7){return function(_0x110ca6){if(_0x110ca6){var _0x57ea85=typeof _0x2b90e7[_0x6d01('0x16')]===_0x6d01('0x17')&&typeof _0x2b90e7[_0x6d01('0x18')]==='undefined';var _0x273c82=_0x110ca6['count'];var _0x47ac5c=_0x57ea85?0x0:_0x2b90e7[_0x6d01('0x16')];var _0x1f230d=_0x57ea85?_0x110ca6['count']:_0x2b90e7['offset']+_0x2b90e7[_0x6d01('0x18')];var _0x5aa801;if(_0x1f230d>=_0x273c82){_0x1f230d=_0x273c82;_0x5aa801=0xc8;}else{_0x5aa801=0xce;}_0x20797c[_0x6d01('0x14')](_0x5aa801);return _0x20797c[_0x6d01('0x19')](_0x6d01('0x1a'),_0x47ac5c+'-'+_0x1f230d+'/'+_0x273c82)[_0x6d01('0x1b')](_0x110ca6);}return null;};}function saveUpdates(_0x2a52a8){return function(_0x493f14){if(_0x493f14){return _0x493f14[_0x6d01('0x1c')](_0x2a52a8)[_0x6d01('0x1d')](function(_0x8fb375){return _0x8fb375;});}return null;};}function removeEntity(_0xae9c61){return function(_0x5e0a0a){if(_0x5e0a0a){return _0x5e0a0a[_0x6d01('0x1e')]()[_0x6d01('0x1d')](function(){_0xae9c61[_0x6d01('0x14')](0xcc)[_0x6d01('0x15')]();});}};}function handleEntityNotFound(_0x44fa52){return function(_0x55aeb3){if(!_0x55aeb3){_0x44fa52[_0x6d01('0x1f')](0x194);}return _0x55aeb3;};}function handleError(_0x25b10f,_0x4ffb50){_0x4ffb50=_0x4ffb50||0x1f4;return function(_0x13ee19){logger[_0x6d01('0x20')](_0x13ee19[_0x6d01('0x21')]);if(_0x13ee19[_0x6d01('0x22')]){delete _0x13ee19[_0x6d01('0x22')];}_0x25b10f[_0x6d01('0x14')](_0x4ffb50)[_0x6d01('0x23')](_0x13ee19);};}exports[_0x6d01('0x24')]=function(_0x19f529,_0x379249){var _0x3c6c7b={};var _0x48a41f=_[_0x6d01('0x25')](db['MailInteraction']['rawAttributes'],function(_0xa9394a){return{'name':_0xa9394a[_0x6d01('0x26')],'type':_0xa9394a[_0x6d01('0x27')][_0x6d01('0x28')]};});_0x3c6c7b=qs[_0x6d01('0x29')](_0x48a41f,_0x19f529);return interaction[_0x6d01('0x2a')](_0x6d01('0x2b'),_0x19f529[_0x6d01('0x2c')],_0x19f529[_0x6d01('0x2d')],_0x3c6c7b,_0x48a41f)['then'](respondWithFilteredResult(_0x379249,_0x3c6c7b))[_0x6d01('0x2e')](handleError(_0x379249,null));};exports[_0x6d01('0x2f')]=function(_0x4ef794,_0x2d13a4){var _0x4c859f={'raw':![],'where':{'id':_0x4ef794[_0x6d01('0x30')]['id']}},_0x3c663e={};_0x3c663e[_0x6d01('0x31')]=_['keys'](db[_0x6d01('0x32')][_0x6d01('0x33')]);_0x3c663e[_0x6d01('0x2c')]=_[_0x6d01('0x34')](_0x4ef794['query']);_0x3c663e[_0x6d01('0x35')]=_[_0x6d01('0x36')](_0x3c663e[_0x6d01('0x31')],_0x3c663e[_0x6d01('0x2c')]);_0x4c859f[_0x6d01('0x37')]=_[_0x6d01('0x36')](_0x3c663e[_0x6d01('0x31')],qs['fields'](_0x4ef794[_0x6d01('0x2c')][_0x6d01('0x38')]));_0x4c859f[_0x6d01('0x37')]=_0x4c859f[_0x6d01('0x37')][_0x6d01('0x39')]?_0x4c859f[_0x6d01('0x37')]:_0x3c663e[_0x6d01('0x31')];if(_0x4ef794[_0x6d01('0x2c')][_0x6d01('0x3a')]){_0x4c859f[_0x6d01('0x3b')]=[{'all':!![]}];}_0x4c859f=_[_0x6d01('0x3c')]({},_0x4c859f,_0x4ef794[_0x6d01('0x3d')]);return db[_0x6d01('0x32')][_0x6d01('0x3e')](_0x4c859f)[_0x6d01('0x1d')](handleEntityNotFound(_0x2d13a4,null))['then'](respondWithResult(_0x2d13a4,null))[_0x6d01('0x2e')](handleError(_0x2d13a4,null));};exports['create']=function(_0x3a786e,_0x2cb692){return db[_0x6d01('0x32')][_0x6d01('0x3f')](_0x3a786e[_0x6d01('0x40')],{})[_0x6d01('0x1d')](respondWithResult(_0x2cb692,0xc9))[_0x6d01('0x2e')](handleError(_0x2cb692,null));};exports[_0x6d01('0x1c')]=function(_0xdb0b06,_0x38f58a){if(_0xdb0b06[_0x6d01('0x40')]['id']){delete _0xdb0b06[_0x6d01('0x40')]['id'];}return db[_0x6d01('0x32')][_0x6d01('0x3e')]({'where':{'id':_0xdb0b06['params']['id']}})['then'](handleEntityNotFound(_0x38f58a,null))['then'](saveUpdates(_0xdb0b06[_0x6d01('0x40')],null))[_0x6d01('0x1d')](respondWithResult(_0x38f58a,null))[_0x6d01('0x2e')](handleError(_0x38f58a,null));};exports[_0x6d01('0x1e')]=function(_0x3f3235,_0x2a5536){return db[_0x6d01('0x32')][_0x6d01('0x3e')]({'where':{'id':_0x3f3235[_0x6d01('0x30')]['id']}})[_0x6d01('0x1d')](handleEntityNotFound(_0x2a5536,null))[_0x6d01('0x1d')](removeEntity(_0x2a5536,null))['catch'](handleError(_0x2a5536,null));};exports['describe']=function(_0x436fcd,_0x56d2a0){return db[_0x6d01('0x32')][_0x6d01('0x41')]()[_0x6d01('0x1d')](respondWithResult(_0x56d2a0,null))['catch'](handleError(_0x56d2a0,null));};exports[_0x6d01('0x42')]=function(_0x49bb3b,_0x18e03d){return db[_0x6d01('0x43')][_0x6d01('0x3e')]({'where':{'id':_0x49bb3b['params']['id']}})[_0x6d01('0x1d')](handleEntityNotFound(_0x18e03d,null))[_0x6d01('0x1d')](function(_0x560108){if(_0x560108){return _0x560108[_0x6d01('0x42')](_0x49bb3b[_0x6d01('0x40')][_0x6d01('0x44')],_['omit'](_0x49bb3b[_0x6d01('0x40')],['ids','id'])||{});}})['then'](respondWithResult(_0x18e03d,null))[_0x6d01('0x2e')](handleError(_0x18e03d,null));};exports['getMessages']=function(_0x460d10,_0x2919f0){var _0x2cd165={'raw':![],'where':{}};var _0x555fcf={};var _0x3dc48d={'count':0x0,'rows':[]};return db[_0x6d01('0x32')][_0x6d01('0x45')]({'where':{'id':_0x460d10['params']['id']}})[_0x6d01('0x1d')](handleEntityNotFound(_0x2919f0,null))['then'](function(_0x223027){if(_0x223027){_0x555fcf[_0x6d01('0x31')]=_['keys'](db[_0x6d01('0x43')]['rawAttributes']);_0x555fcf['query']=_[_0x6d01('0x34')](_0x460d10[_0x6d01('0x2c')]);_0x555fcf['filters']=_[_0x6d01('0x36')](_0x555fcf['model'],_0x555fcf[_0x6d01('0x2c')]);_0x2cd165[_0x6d01('0x37')]=_[_0x6d01('0x36')](_0x555fcf['model'],qs[_0x6d01('0x38')](_0x460d10[_0x6d01('0x2c')][_0x6d01('0x38')]));_0x2cd165['attributes']=_0x2cd165[_0x6d01('0x37')]['length']?_0x2cd165['attributes']:_0x555fcf[_0x6d01('0x31')];if(!_0x460d10[_0x6d01('0x2c')][_0x6d01('0x46')]('nolimit')){_0x2cd165[_0x6d01('0x18')]=qs[_0x6d01('0x18')](_0x460d10['query'][_0x6d01('0x18')]);_0x2cd165[_0x6d01('0x16')]=qs[_0x6d01('0x16')](_0x460d10['query']['offset']);}_0x2cd165[_0x6d01('0x47')]=qs[_0x6d01('0x48')](_0x460d10[_0x6d01('0x2c')][_0x6d01('0x48')]);_0x2cd165['where']=qs[_0x6d01('0x35')](_[_0x6d01('0x49')](_0x460d10[_0x6d01('0x2c')],_0x555fcf[_0x6d01('0x35')]));_0x2cd165['where']['MailInteractionId']=_0x223027['id'];if(_0x460d10[_0x6d01('0x2c')][_0x6d01('0x4a')]){_0x2cd165['where']=_[_0x6d01('0x3c')](_0x2cd165['where'],{'$or':_[_0x6d01('0x25')](_0x2cd165[_0x6d01('0x37')],function(_0x5ab678){var _0x49643e={};_0x49643e[_0x5ab678]={'$like':'%'+_0x460d10[_0x6d01('0x2c')][_0x6d01('0x4a')]+'%'};return _0x49643e;})});}if(_0x460d10[_0x6d01('0x2c')][_0x6d01('0x4b')]){var _0x776250=_0x460d10[_0x6d01('0x2c')][_0x6d01('0x4b')][_0x6d01('0x4c')](',');var _0x515c8e={};_0x515c8e[_0x776250[0x0]]={'$gte':moment(_0x776250[0x1])[_0x6d01('0x4d')]('YYYY-MM-DD\x20HH:mm:ss')};_0x2cd165['where']=_['merge'](_0x2cd165[_0x6d01('0x4e')],_0x515c8e);}_0x2cd165=_[_0x6d01('0x3c')]({},_0x2cd165,_0x460d10[_0x6d01('0x3d')]);return db[_0x6d01('0x43')]['count']({'where':_0x2cd165[_0x6d01('0x4e')]})[_0x6d01('0x1d')](function(_0x397222){_0x3dc48d[_0x6d01('0x4f')]=_0x397222;if(_0x460d10[_0x6d01('0x2c')]['includeAll']){_0x2cd165[_0x6d01('0x3b')]=[{'all':!![]}];}return db[_0x6d01('0x43')][_0x6d01('0x2a')](_0x2cd165);})['then'](function(_0x99c9){if(_0x460d10['query']['inlineCss']===_0x6d01('0x50')){for(var _0x27a732=0x0;_0x27a732<_0x99c9[_0x6d01('0x39')];_0x27a732++){_0x99c9[_0x27a732]['body']=juice(_0x99c9[_0x27a732][_0x6d01('0x40')]);}}_0x3dc48d[_0x6d01('0x51')]=_0x99c9;return _0x3dc48d;});}})[_0x6d01('0x1d')](respondWithFilteredResult(_0x2919f0,_0x2cd165))[_0x6d01('0x2e')](handleError(_0x2919f0,null));};exports[_0x6d01('0x52')]=function(_0x265c74,_0x5ad039){return db[_0x6d01('0x32')][_0x6d01('0x3e')]({'where':{'id':_0x265c74[_0x6d01('0x30')]['id']}})['then'](handleEntityNotFound(_0x5ad039,null))['then'](function(_0xd51f55){if(_0xd51f55){return _0xd51f55[_0x6d01('0x53')](_0x265c74[_0x6d01('0x40')][_0x6d01('0x44')],_['omit'](_0x265c74['body'],[_0x6d01('0x44'),'id'])||{})[_0x6d01('0x54')](function(){return db[_0x6d01('0x55')][_0x6d01('0x2a')]({'attributes':['id',_0x6d01('0x22'),'color'],'where':{'id':_0x265c74[_0x6d01('0x40')][_0x6d01('0x44')]}});})[_0x6d01('0x1d')](function(_0x4794b6){socket[_0x6d01('0x56')](_0x6d01('0x57'),{'id':Number(_0x265c74['params']['id']),'tags':_0x4794b6||[]});return{'id':Number(_0x265c74[_0x6d01('0x30')]['id']),'tags':_0x4794b6||[]};});}})['then'](respondWithResult(_0x5ad039,null))[_0x6d01('0x2e')](handleError(_0x5ad039,null));};exports[_0x6d01('0x58')]=function(_0x4c6ef1,_0x38fdae){return db[_0x6d01('0x32')][_0x6d01('0x3e')]({'where':{'id':_0x4c6ef1[_0x6d01('0x30')]['id']}})[_0x6d01('0x1d')](handleEntityNotFound(_0x38fdae,null))[_0x6d01('0x1d')](function(_0x31b21e){if(_0x31b21e){return _0x31b21e[_0x6d01('0x58')](_0x4c6ef1[_0x6d01('0x2c')][_0x6d01('0x44')]);}})[_0x6d01('0x1d')](respondWithStatusCode(_0x38fdae,null))[_0x6d01('0x2e')](handleError(_0x38fdae,null));};exports[_0x6d01('0x59')]=function(_0x27236e,_0x1dc9e3){var _0x4b6103=moment()[_0x6d01('0x5a')]()[_0x6d01('0x5b')]();var _0x13f4ba=path[_0x6d01('0x5c')](config[_0x6d01('0x5d')],_0x6d01('0x5e'),'files',_0x6d01('0x5f'));var _0x4d3adb=path['join'](config[_0x6d01('0x5d')],_0x6d01('0x5e'),'files',_0x6d01('0x60'));var _0xbdcb0d=path[_0x6d01('0x5c')](_0x13f4ba,_0x4b6103);var _0x5430ff=util[_0x6d01('0x4d')](_0x6d01('0x61'),_0x27236e['params']['id'],_0x4b6103);var _0x596096=path['join'](_0x13f4ba,_0x5430ff);var _0x44c09c=[];if(_0x27236e[_0x6d01('0x2c')][_0x6d01('0x60')]){_0x44c09c['push']({'model':db['Attachment'],'as':_0x6d01('0x62'),'raw':!![]});}var _0x2cc50e=[{'model':db[_0x6d01('0x43')],'as':_0x6d01('0x63'),'attributes':['id',_0x6d01('0x40'),'from','to','cc',_0x6d01('0x64'),_0x6d01('0x65'),_0x6d01('0x66')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x44c09c}];return db[_0x6d01('0x32')][_0x6d01('0x3e')]({'where':{'id':_0x27236e[_0x6d01('0x30')]['id']},'include':_0x2cc50e})[_0x6d01('0x1d')](handleEntityNotFound(_0x1dc9e3,null))[_0x6d01('0x1d')](function(_0x42ef70){if(_0x42ef70&&_0x42ef70[_0x6d01('0x63')]){var _0x291c54=_0x42ef70[_0x6d01('0x67')]({'plain':!![]});fs[_0x6d01('0x68')](_0xbdcb0d);return BPromise[_0x6d01('0x69')](_0x291c54[_0x6d01('0x63')],function(_0x44a849,_0x480fbd){var _0x278e3e={'from':_0x44a849[_0x6d01('0x6a')],'to':_0x44a849['to']||_0x6d01('0x6b'),'subject':_0x44a849[_0x6d01('0x65')],'html':htmlEntities[_0x6d01('0x6c')](_0x44a849['body']),'headers':{'Date':moment(_0x44a849[_0x6d01('0x66')])[_0x6d01('0x4d')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x44a849['cc']){_0x278e3e[_0x6d01('0x6d')]['Cc']=_0x44a849['cc'];}if(_0x44a849['bcc']){_0x278e3e['headers'][_0x6d01('0x6e')]=_0x44a849[_0x6d01('0x64')];}return new BPromise(function(_0x16116b,_0x4da838){if(_0x44a849[_0x6d01('0x62')]){for(var _0x45eb5d=0x0;_0x45eb5d<_0x44a849[_0x6d01('0x62')][_0x6d01('0x39')];_0x45eb5d++){var _0x28d6df=_0x44a849[_0x6d01('0x62')][_0x45eb5d];var _0x1680e2=path['join'](_0x4d3adb,_0x28d6df[_0x6d01('0x6f')]);if(fs['existsSync'](_0x1680e2)){_0x278e3e[_0x6d01('0x60')]['push']({'name':_0x28d6df['name'],'contentType':_0x28d6df[_0x6d01('0x27')],'data':fs[_0x6d01('0x70')](_0x1680e2)});}}}emlformat[_0x6d01('0x71')](_0x278e3e,function(_0x479c36,_0x26a430){if(_0x479c36)return _0x4da838(_0x479c36);fs[_0x6d01('0x72')](path[_0x6d01('0x5c')](_0xbdcb0d,util['format'](_0x6d01('0x73'),_0x480fbd)),_0x26a430);return _0x16116b(_0x26a430);});});})[_0x6d01('0x1d')](function(){return new BPromise(function(_0x36fbfc,_0x515816){zipdir(_0xbdcb0d,{'saveTo':_0x596096},function(_0x533e30,_0x51a1d8){if(_0x533e30)return _0x515816(_0x533e30);return _0x36fbfc(_0x51a1d8);});})[_0x6d01('0x1d')](function(){return new BPromise(function(_0x5f1085,_0x54bcce){rimraf(_0xbdcb0d,function(_0x5d8907){if(_0x5d8907)_0x54bcce(_0x5d8907);return _0x5f1085();});});})[_0x6d01('0x1d')](function(){return _0x1dc9e3[_0x6d01('0x59')](_0x596096,_0x5430ff,function(_0x24bb7d){if(!_0x24bb7d)fs[_0x6d01('0x74')](_0x596096);});});});}else{return _0x1dc9e3['sendStatus'](0xc8);}})[_0x6d01('0x2e')](handleError(_0x1dc9e3,null));};