661ffdc58044c2cabf2bba96d2821696b27c7738
[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 _0xe68d=['send','map','MailInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','mail','query','catch','model','keys','intersection','attributes','fields','include','merge','options','find','create','body','params','addMessage','MailMessage','ids','getMessages','findOne','filters','length','order','sort','where','pick','filter','$gte','format','includeAll','inlineCss','true','rows','addTags','setTags','omit','spread','emit','mailInteractionTags:save','unix','toString','join','root','files','tmp','server','attachments','Attachment','Attachments','from','subject','createdAt','Messages','get','mkdirSync','missing.recipient@your.company.com','headers','Bcc','bcc','existsSync','push','readFileSync','writeFileSync','message%d.eml','download','unlinkSync','eml-format','rimraf','zip-dir','moment','util','path','lodash','juice','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./mailInteraction.socket','register','status','end','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','sendStatus','error','stack','name'];(function(_0x17865c,_0x2c681d){var _0x40158f=function(_0x38e9c7){while(--_0x38e9c7){_0x17865c['push'](_0x17865c['shift']());}};_0x40158f(++_0x2c681d);}(_0xe68d,0x127));var _0xde68=function(_0xb725be,_0x45bd01){_0xb725be=_0xb725be-0x0;var _0x2f2424=_0xe68d[_0xb725be];return _0x2f2424;};'use strict';var emlformat=require(_0xde68('0x0'));var rimraf=require(_0xde68('0x1'));var zipdir=require(_0xde68('0x2'));var moment=require(_0xde68('0x3'));var BPromise=require('bluebird');var util=require(_0xde68('0x4'));var path=require(_0xde68('0x5'));var fs=require('fs');var _=require(_0xde68('0x6'));var juice=require(_0xde68('0x7'));var Redis=require('ioredis');var interaction=require(_0xde68('0x8'));var qs=require(_0xde68('0x9'));var logger=require(_0xde68('0xa'))(_0xde68('0xb'));var config=require(_0xde68('0xc'));var db=require(_0xde68('0xd'))['db'];var htmlEntities=require('html-entities');config[_0xde68('0xe')]=_[_0xde68('0xf')](config[_0xde68('0xe')],{'host':_0xde68('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xde68('0x11'))[_0xde68('0x12')](socket);function respondWithStatusCode(_0x2545ad,_0x5ca3d4){_0x5ca3d4=_0x5ca3d4||0xcc;return function(_0xd87646){if(_0xd87646){return _0x2545ad['sendStatus'](_0x5ca3d4);}return _0x2545ad[_0xde68('0x13')](_0x5ca3d4)[_0xde68('0x14')]();};}function respondWithResult(_0x1cdae8,_0x12854b){_0x12854b=_0x12854b||0xc8;return function(_0x2186cb){if(_0x2186cb){return _0x1cdae8[_0xde68('0x13')](_0x12854b)[_0xde68('0x15')](_0x2186cb);}};}function respondWithFilteredResult(_0xca2f4c,_0x5e4802){return function(_0x31b52e){if(_0x31b52e){var _0x1aa090=typeof _0x5e4802[_0xde68('0x16')]==='undefined'&&typeof _0x5e4802[_0xde68('0x17')]===_0xde68('0x18');var _0x423d2c=_0x31b52e[_0xde68('0x19')];var _0x307759=_0x1aa090?0x0:_0x5e4802[_0xde68('0x16')];var _0x247390=_0x1aa090?_0x31b52e['count']:_0x5e4802[_0xde68('0x16')]+_0x5e4802[_0xde68('0x17')];var _0xfc37da;if(_0x247390>=_0x423d2c){_0x247390=_0x423d2c;_0xfc37da=0xc8;}else{_0xfc37da=0xce;}_0xca2f4c[_0xde68('0x13')](_0xfc37da);return _0xca2f4c[_0xde68('0x1a')](_0xde68('0x1b'),_0x307759+'-'+_0x247390+'/'+_0x423d2c)[_0xde68('0x15')](_0x31b52e);}return null;};}function saveUpdates(_0x5833c8){return function(_0x490639){if(_0x490639){return _0x490639[_0xde68('0x1c')](_0x5833c8)[_0xde68('0x1d')](function(_0x23f69a){return _0x23f69a;});}return null;};}function removeEntity(_0x5e4082){return function(_0x1494af){if(_0x1494af){return _0x1494af[_0xde68('0x1e')]()['then'](function(){_0x5e4082[_0xde68('0x13')](0xcc)[_0xde68('0x14')]();});}};}function handleEntityNotFound(_0x47bafc){return function(_0x2f6629){if(!_0x2f6629){_0x47bafc[_0xde68('0x1f')](0x194);}return _0x2f6629;};}function handleError(_0x45a47b,_0x69add7){_0x69add7=_0x69add7||0x1f4;return function(_0x4dee34){logger[_0xde68('0x20')](_0x4dee34[_0xde68('0x21')]);if(_0x4dee34[_0xde68('0x22')]){delete _0x4dee34['name'];}_0x45a47b[_0xde68('0x13')](_0x69add7)[_0xde68('0x23')](_0x4dee34);};}exports['index']=function(_0xb0ad3d,_0x492fb2){var _0x279b75={};var _0x469cea=_[_0xde68('0x24')](db[_0xde68('0x25')][_0xde68('0x26')],function(_0x506779){return{'name':_0x506779[_0xde68('0x27')],'type':_0x506779[_0xde68('0x28')][_0xde68('0x29')]};});_0x279b75=qs[_0xde68('0x2a')](_0x469cea,_0xb0ad3d);return interaction[_0xde68('0x2b')](_0xde68('0x2c'),_0xb0ad3d[_0xde68('0x2d')],_0xb0ad3d['user'],_0x279b75,_0x469cea)[_0xde68('0x1d')](respondWithFilteredResult(_0x492fb2,_0x279b75))[_0xde68('0x2e')](handleError(_0x492fb2,null));};exports['show']=function(_0x5a5f19,_0x20277e){var _0x5cd3ae={'raw':![],'where':{'id':_0x5a5f19['params']['id']}},_0x454581={};_0x454581[_0xde68('0x2f')]=_[_0xde68('0x30')](db[_0xde68('0x25')][_0xde68('0x26')]);_0x454581[_0xde68('0x2d')]=_[_0xde68('0x30')](_0x5a5f19[_0xde68('0x2d')]);_0x454581['filters']=_[_0xde68('0x31')](_0x454581[_0xde68('0x2f')],_0x454581['query']);_0x5cd3ae[_0xde68('0x32')]=_[_0xde68('0x31')](_0x454581[_0xde68('0x2f')],qs['fields'](_0x5a5f19[_0xde68('0x2d')][_0xde68('0x33')]));_0x5cd3ae['attributes']=_0x5cd3ae['attributes']['length']?_0x5cd3ae[_0xde68('0x32')]:_0x454581[_0xde68('0x2f')];if(_0x5a5f19[_0xde68('0x2d')]['includeAll']){_0x5cd3ae[_0xde68('0x34')]=[{'all':!![]}];}_0x5cd3ae=_[_0xde68('0x35')]({},_0x5cd3ae,_0x5a5f19[_0xde68('0x36')]);return db['MailInteraction'][_0xde68('0x37')](_0x5cd3ae)[_0xde68('0x1d')](handleEntityNotFound(_0x20277e,null))['then'](respondWithResult(_0x20277e,null))[_0xde68('0x2e')](handleError(_0x20277e,null));};exports['create']=function(_0x4952e4,_0x17644a){return db['MailInteraction'][_0xde68('0x38')](_0x4952e4[_0xde68('0x39')],{})['then'](respondWithResult(_0x17644a,0xc9))[_0xde68('0x2e')](handleError(_0x17644a,null));};exports[_0xde68('0x1c')]=function(_0x15117f,_0x3eb4dd){if(_0x15117f['body']['id']){delete _0x15117f[_0xde68('0x39')]['id'];}return db[_0xde68('0x25')][_0xde68('0x37')]({'where':{'id':_0x15117f[_0xde68('0x3a')]['id']}})[_0xde68('0x1d')](handleEntityNotFound(_0x3eb4dd,null))[_0xde68('0x1d')](saveUpdates(_0x15117f[_0xde68('0x39')],null))[_0xde68('0x1d')](respondWithResult(_0x3eb4dd,null))[_0xde68('0x2e')](handleError(_0x3eb4dd,null));};exports[_0xde68('0x1e')]=function(_0x181838,_0x4c5db0){return db['MailInteraction']['find']({'where':{'id':_0x181838[_0xde68('0x3a')]['id']}})[_0xde68('0x1d')](handleEntityNotFound(_0x4c5db0,null))[_0xde68('0x1d')](removeEntity(_0x4c5db0,null))['catch'](handleError(_0x4c5db0,null));};exports['describe']=function(_0x129c41,_0x23349a){return db[_0xde68('0x25')]['describe']()[_0xde68('0x1d')](respondWithResult(_0x23349a,null))[_0xde68('0x2e')](handleError(_0x23349a,null));};exports[_0xde68('0x3b')]=function(_0x30b3ec,_0x32f4f9){return db[_0xde68('0x3c')][_0xde68('0x37')]({'where':{'id':_0x30b3ec[_0xde68('0x3a')]['id']}})[_0xde68('0x1d')](handleEntityNotFound(_0x32f4f9,null))[_0xde68('0x1d')](function(_0x47a899){if(_0x47a899){return _0x47a899[_0xde68('0x3b')](_0x30b3ec[_0xde68('0x39')][_0xde68('0x3d')],_['omit'](_0x30b3ec[_0xde68('0x39')],[_0xde68('0x3d'),'id'])||{});}})[_0xde68('0x1d')](respondWithResult(_0x32f4f9,null))[_0xde68('0x2e')](handleError(_0x32f4f9,null));};exports[_0xde68('0x3e')]=function(_0xb6c7cc,_0x584973){var _0x199df9={'raw':![],'where':{}};var _0xf2cf75={};var _0x8a5a8d={'count':0x0,'rows':[]};return db[_0xde68('0x25')][_0xde68('0x3f')]({'where':{'id':_0xb6c7cc[_0xde68('0x3a')]['id']}})[_0xde68('0x1d')](handleEntityNotFound(_0x584973,null))[_0xde68('0x1d')](function(_0x307515){if(_0x307515){_0xf2cf75['model']=_['keys'](db[_0xde68('0x3c')][_0xde68('0x26')]);_0xf2cf75[_0xde68('0x2d')]=_[_0xde68('0x30')](_0xb6c7cc['query']);_0xf2cf75[_0xde68('0x40')]=_[_0xde68('0x31')](_0xf2cf75[_0xde68('0x2f')],_0xf2cf75[_0xde68('0x2d')]);_0x199df9[_0xde68('0x32')]=_['intersection'](_0xf2cf75['model'],qs[_0xde68('0x33')](_0xb6c7cc[_0xde68('0x2d')]['fields']));_0x199df9[_0xde68('0x32')]=_0x199df9[_0xde68('0x32')][_0xde68('0x41')]?_0x199df9['attributes']:_0xf2cf75[_0xde68('0x2f')];if(!_0xb6c7cc['query']['hasOwnProperty']('nolimit')){_0x199df9[_0xde68('0x17')]=qs['limit'](_0xb6c7cc[_0xde68('0x2d')][_0xde68('0x17')]);_0x199df9[_0xde68('0x16')]=qs[_0xde68('0x16')](_0xb6c7cc[_0xde68('0x2d')]['offset']);}_0x199df9[_0xde68('0x42')]=qs[_0xde68('0x43')](_0xb6c7cc['query']['sort']);_0x199df9[_0xde68('0x44')]=qs[_0xde68('0x40')](_[_0xde68('0x45')](_0xb6c7cc[_0xde68('0x2d')],_0xf2cf75[_0xde68('0x40')]));_0x199df9[_0xde68('0x44')]['MailInteractionId']=_0x307515['id'];if(_0xb6c7cc[_0xde68('0x2d')]['filter']){_0x199df9[_0xde68('0x44')]=_['merge'](_0x199df9['where'],{'$or':_['map'](_0x199df9[_0xde68('0x32')],function(_0x44d103){var _0x4c1b6b={};_0x4c1b6b[_0x44d103]={'$like':'%'+_0xb6c7cc[_0xde68('0x2d')][_0xde68('0x46')]+'%'};return _0x4c1b6b;})});}if(_0xb6c7cc['query'][_0xde68('0x47')]){var _0x33c46c=_0xb6c7cc[_0xde68('0x2d')][_0xde68('0x47')]['split'](',');var _0x398290={};_0x398290[_0x33c46c[0x0]]={'$gte':moment(_0x33c46c[0x1])[_0xde68('0x48')]('YYYY-MM-DD\x20HH:mm:ss')};_0x199df9[_0xde68('0x44')]=_[_0xde68('0x35')](_0x199df9[_0xde68('0x44')],_0x398290);}_0x199df9=_[_0xde68('0x35')]({},_0x199df9,_0xb6c7cc['options']);return db[_0xde68('0x3c')][_0xde68('0x19')]({'where':_0x199df9[_0xde68('0x44')]})[_0xde68('0x1d')](function(_0x1c4041){_0x8a5a8d[_0xde68('0x19')]=_0x1c4041;if(_0xb6c7cc['query'][_0xde68('0x49')]){_0x199df9[_0xde68('0x34')]=[{'all':!![]}];}return db['MailMessage'][_0xde68('0x2b')](_0x199df9);})[_0xde68('0x1d')](function(_0x48865c){if(_0xb6c7cc[_0xde68('0x2d')][_0xde68('0x4a')]===_0xde68('0x4b')){for(var _0x1656b7=0x0;_0x1656b7<_0x48865c[_0xde68('0x41')];_0x1656b7++){_0x48865c[_0x1656b7]['body']=juice(_0x48865c[_0x1656b7][_0xde68('0x39')]);}}_0x8a5a8d[_0xde68('0x4c')]=_0x48865c;return _0x8a5a8d;});}})['then'](respondWithFilteredResult(_0x584973,_0x199df9))['catch'](handleError(_0x584973,null));};exports[_0xde68('0x4d')]=function(_0x480f51,_0x14588e){return db[_0xde68('0x25')][_0xde68('0x37')]({'where':{'id':_0x480f51[_0xde68('0x3a')]['id']}})[_0xde68('0x1d')](handleEntityNotFound(_0x14588e,null))['then'](function(_0x346ac6){if(_0x346ac6){return _0x346ac6[_0xde68('0x4e')](_0x480f51[_0xde68('0x39')][_0xde68('0x3d')],_[_0xde68('0x4f')](_0x480f51[_0xde68('0x39')],['ids','id'])||{})[_0xde68('0x50')](function(){return db['Tag'][_0xde68('0x2b')]({'attributes':['id',_0xde68('0x22'),'color'],'where':{'id':_0x480f51['body']['ids']}});})['then'](function(_0x417eff){socket[_0xde68('0x51')](_0xde68('0x52'),{'id':Number(_0x480f51[_0xde68('0x3a')]['id']),'tags':_0x417eff||[]});return{'id':Number(_0x480f51[_0xde68('0x3a')]['id']),'tags':_0x417eff||[]};});}})['then'](respondWithResult(_0x14588e,null))[_0xde68('0x2e')](handleError(_0x14588e,null));};exports['removeTags']=function(_0x2815c0,_0x4bb126){return db[_0xde68('0x25')]['find']({'where':{'id':_0x2815c0[_0xde68('0x3a')]['id']}})[_0xde68('0x1d')](handleEntityNotFound(_0x4bb126,null))[_0xde68('0x1d')](function(_0xf9fa18){if(_0xf9fa18){return _0xf9fa18['removeTags'](_0x2815c0[_0xde68('0x2d')][_0xde68('0x3d')]);}})[_0xde68('0x1d')](respondWithStatusCode(_0x4bb126,null))[_0xde68('0x2e')](handleError(_0x4bb126,null));};exports['download']=function(_0x3c8bf6,_0x219673){var _0x1b7724=moment()[_0xde68('0x53')]()[_0xde68('0x54')]();var _0x305e00=path[_0xde68('0x55')](config[_0xde68('0x56')],'server',_0xde68('0x57'),_0xde68('0x58'));var _0x18464b=path[_0xde68('0x55')](config[_0xde68('0x56')],_0xde68('0x59'),'files',_0xde68('0x5a'));var _0x227287=path[_0xde68('0x55')](_0x305e00,_0x1b7724);var _0x96cefb=util[_0xde68('0x48')]('transcript-%d-%s.zip',_0x3c8bf6[_0xde68('0x3a')]['id'],_0x1b7724);var _0x181842=path[_0xde68('0x55')](_0x305e00,_0x96cefb);var _0xd3ce59=[];if(_0x3c8bf6['query']['attachments']){_0xd3ce59['push']({'model':db[_0xde68('0x5b')],'as':_0xde68('0x5c'),'raw':!![]});}var _0x43387b=[{'model':db['MailMessage'],'as':'Messages','attributes':['id',_0xde68('0x39'),_0xde68('0x5d'),'to','cc','bcc',_0xde68('0x5e'),_0xde68('0x5f')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0xd3ce59}];return db[_0xde68('0x25')]['find']({'where':{'id':_0x3c8bf6[_0xde68('0x3a')]['id']},'include':_0x43387b})['then'](handleEntityNotFound(_0x219673,null))['then'](function(_0x4451d6){if(_0x4451d6&&_0x4451d6[_0xde68('0x60')]){var _0x5de384=_0x4451d6[_0xde68('0x61')]({'plain':!![]});fs[_0xde68('0x62')](_0x227287);return BPromise['each'](_0x5de384[_0xde68('0x60')],function(_0x24dbf8,_0x272546){var _0x23be07={'from':_0x24dbf8['from'],'to':_0x24dbf8['to']||_0xde68('0x63'),'subject':_0x24dbf8['subject'],'html':htmlEntities['decode'](_0x24dbf8['body']),'headers':{'Date':moment(_0x24dbf8[_0xde68('0x5f')])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x24dbf8['cc']){_0x23be07[_0xde68('0x64')]['Cc']=_0x24dbf8['cc'];}if(_0x24dbf8['bcc']){_0x23be07[_0xde68('0x64')][_0xde68('0x65')]=_0x24dbf8[_0xde68('0x66')];}return new BPromise(function(_0x39b9ec,_0x41d7dd){if(_0x24dbf8[_0xde68('0x5c')]){for(var _0x17d068=0x0;_0x17d068<_0x24dbf8[_0xde68('0x5c')][_0xde68('0x41')];_0x17d068++){var _0x2df8cd=_0x24dbf8['Attachments'][_0x17d068];var _0x76d5b3=path[_0xde68('0x55')](_0x18464b,_0x2df8cd['basename']);if(fs[_0xde68('0x67')](_0x76d5b3)){_0x23be07['attachments'][_0xde68('0x68')]({'name':_0x2df8cd[_0xde68('0x22')],'contentType':_0x2df8cd[_0xde68('0x28')],'data':fs[_0xde68('0x69')](_0x76d5b3)});}}}emlformat['build'](_0x23be07,function(_0x2448ed,_0xeef325){if(_0x2448ed)return _0x41d7dd(_0x2448ed);fs[_0xde68('0x6a')](path[_0xde68('0x55')](_0x227287,util[_0xde68('0x48')](_0xde68('0x6b'),_0x272546)),_0xeef325);return _0x39b9ec(_0xeef325);});});})[_0xde68('0x1d')](function(){return new BPromise(function(_0x533d0b,_0x3ce08b){zipdir(_0x227287,{'saveTo':_0x181842},function(_0x27c7dd,_0x1b6712){if(_0x27c7dd)return _0x3ce08b(_0x27c7dd);return _0x533d0b(_0x1b6712);});})[_0xde68('0x1d')](function(){return new BPromise(function(_0x4e6270,_0x4a9425){rimraf(_0x227287,function(_0x5a5bdf){if(_0x5a5bdf)_0x4a9425(_0x5a5bdf);return _0x4e6270();});});})[_0xde68('0x1d')](function(){return _0x219673[_0xde68('0x6c')](_0x181842,_0x96cefb,function(_0x46873b){if(!_0x46873b)fs[_0xde68('0x6d')](_0x181842);});});});}else{return _0x219673['sendStatus'](0xc8);}})[_0xde68('0x2e')](handleError(_0x219673,null));};