3cb1714208f4b1906ce1d1ee0644389a7a7ae58e
[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 _0x8456=['unix','join','root','server','files','format','transcript-%d-%s.zip','attachments','push','Attachment','Messages','from','get','mkdirSync','each','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Attachments','basename','existsSync','readFileSync','build','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','bluebird','path','lodash','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','./mailInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','update','then','destroy','error','stack','name','send','map','MailInteraction','rawAttributes','fieldName','type','getOptions','findAll','mail','user','catch','show','model','keys','query','filters','intersection','fields','attributes','length','include','find','create','body','params','describe','addMessage','MailMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','sort','where','pick','MailInteractionId','filter','merge','$gte','split','YYYY-MM-DD\x20HH:mm:ss','includeAll','true','rows','addTags','setTags','spread','mailInteractionTags:save','removeTags','download'];(function(_0x206711,_0x4125b4){var _0x4fe02b=function(_0x27dc45){while(--_0x27dc45){_0x206711['push'](_0x206711['shift']());}};_0x4fe02b(++_0x4125b4);}(_0x8456,0xfd));var _0x6845=function(_0x11bd8f,_0x14ec62){_0x11bd8f=_0x11bd8f-0x0;var _0x3e83dd=_0x8456[_0x11bd8f];return _0x3e83dd;};'use strict';var emlformat=require(_0x6845('0x0'));var rimraf=require(_0x6845('0x1'));var zipdir=require(_0x6845('0x2'));var moment=require('moment');var BPromise=require(_0x6845('0x3'));var util=require('util');var path=require(_0x6845('0x4'));var fs=require('fs');var _=require(_0x6845('0x5'));var juice=require(_0x6845('0x6'));var Redis=require(_0x6845('0x7'));var interaction=require(_0x6845('0x8'));var qs=require(_0x6845('0x9'));var logger=require(_0x6845('0xa'))(_0x6845('0xb'));var config=require(_0x6845('0xc'));var db=require(_0x6845('0xd'))['db'];var htmlEntities=require('html-entities');config[_0x6845('0xe')]=_['defaults'](config[_0x6845('0xe')],{'host':_0x6845('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6845('0xe')]));require(_0x6845('0x10'))[_0x6845('0x11')](socket);function respondWithStatusCode(_0x578d62,_0x1bcdbd){_0x1bcdbd=_0x1bcdbd||0xcc;return function(_0x24bf8e){if(_0x24bf8e){return _0x578d62[_0x6845('0x12')](_0x1bcdbd);}return _0x578d62[_0x6845('0x13')](_0x1bcdbd)[_0x6845('0x14')]();};}function respondWithResult(_0x254d21,_0x5c440b){_0x5c440b=_0x5c440b||0xc8;return function(_0x3ffb94){if(_0x3ffb94){return _0x254d21[_0x6845('0x13')](_0x5c440b)[_0x6845('0x15')](_0x3ffb94);}};}function respondWithFilteredResult(_0x1370e1,_0x28e976){return function(_0x570ee6){if(_0x570ee6){var _0x5bb7fd=typeof _0x28e976[_0x6845('0x16')]===_0x6845('0x17')&&typeof _0x28e976[_0x6845('0x18')]==='undefined';var _0x162425=_0x570ee6[_0x6845('0x19')];var _0x34f107=_0x5bb7fd?0x0:_0x28e976[_0x6845('0x16')];var _0x275005=_0x5bb7fd?_0x570ee6[_0x6845('0x19')]:_0x28e976[_0x6845('0x16')]+_0x28e976['limit'];var _0x14043b;if(_0x275005>=_0x162425){_0x275005=_0x162425;_0x14043b=0xc8;}else{_0x14043b=0xce;}_0x1370e1['status'](_0x14043b);return _0x1370e1['set'](_0x6845('0x1a'),_0x34f107+'-'+_0x275005+'/'+_0x162425)[_0x6845('0x15')](_0x570ee6);}return null;};}function saveUpdates(_0x5e5959){return function(_0x3056a4){if(_0x3056a4){return _0x3056a4[_0x6845('0x1b')](_0x5e5959)[_0x6845('0x1c')](function(_0x204276){return _0x204276;});}return null;};}function removeEntity(_0x1b0889){return function(_0x298286){if(_0x298286){return _0x298286[_0x6845('0x1d')]()[_0x6845('0x1c')](function(){_0x1b0889['status'](0xcc)[_0x6845('0x14')]();});}};}function handleEntityNotFound(_0x33132d){return function(_0x2a16f8){if(!_0x2a16f8){_0x33132d[_0x6845('0x12')](0x194);}return _0x2a16f8;};}function handleError(_0x47b92d,_0x5f2356){_0x5f2356=_0x5f2356||0x1f4;return function(_0x4e5e97){logger[_0x6845('0x1e')](_0x4e5e97[_0x6845('0x1f')]);if(_0x4e5e97[_0x6845('0x20')]){delete _0x4e5e97[_0x6845('0x20')];}_0x47b92d['status'](_0x5f2356)[_0x6845('0x21')](_0x4e5e97);};}exports['index']=function(_0x348eed,_0x334ed6){var _0x550a9f={};var _0x2e91d3=_[_0x6845('0x22')](db[_0x6845('0x23')][_0x6845('0x24')],function(_0x42f22b){return{'name':_0x42f22b[_0x6845('0x25')],'type':_0x42f22b[_0x6845('0x26')]['key']};});_0x550a9f=qs[_0x6845('0x27')](_0x2e91d3,_0x348eed);return interaction[_0x6845('0x28')](_0x6845('0x29'),_0x348eed['query'],_0x348eed[_0x6845('0x2a')],_0x550a9f,_0x2e91d3)[_0x6845('0x1c')](respondWithFilteredResult(_0x334ed6,_0x550a9f))[_0x6845('0x2b')](handleError(_0x334ed6,null));};exports[_0x6845('0x2c')]=function(_0x42beb6,_0x5af058){var _0x14cd05={'raw':![],'where':{'id':_0x42beb6['params']['id']}},_0x265666={};_0x265666[_0x6845('0x2d')]=_[_0x6845('0x2e')](db[_0x6845('0x23')]['rawAttributes']);_0x265666['query']=_[_0x6845('0x2e')](_0x42beb6[_0x6845('0x2f')]);_0x265666[_0x6845('0x30')]=_[_0x6845('0x31')](_0x265666['model'],_0x265666['query']);_0x14cd05['attributes']=_[_0x6845('0x31')](_0x265666['model'],qs[_0x6845('0x32')](_0x42beb6['query'][_0x6845('0x32')]));_0x14cd05[_0x6845('0x33')]=_0x14cd05[_0x6845('0x33')][_0x6845('0x34')]?_0x14cd05[_0x6845('0x33')]:_0x265666[_0x6845('0x2d')];if(_0x42beb6[_0x6845('0x2f')]['includeAll']){_0x14cd05[_0x6845('0x35')]=[{'all':!![]}];}_0x14cd05=_['merge']({},_0x14cd05,_0x42beb6['options']);return db[_0x6845('0x23')][_0x6845('0x36')](_0x14cd05)[_0x6845('0x1c')](handleEntityNotFound(_0x5af058,null))[_0x6845('0x1c')](respondWithResult(_0x5af058,null))['catch'](handleError(_0x5af058,null));};exports[_0x6845('0x37')]=function(_0x22528f,_0x1efba4){return db[_0x6845('0x23')][_0x6845('0x37')](_0x22528f[_0x6845('0x38')],{})[_0x6845('0x1c')](respondWithResult(_0x1efba4,0xc9))[_0x6845('0x2b')](handleError(_0x1efba4,null));};exports['update']=function(_0x4739fe,_0x1164bd){if(_0x4739fe[_0x6845('0x38')]['id']){delete _0x4739fe[_0x6845('0x38')]['id'];}return db[_0x6845('0x23')][_0x6845('0x36')]({'where':{'id':_0x4739fe[_0x6845('0x39')]['id']}})[_0x6845('0x1c')](handleEntityNotFound(_0x1164bd,null))[_0x6845('0x1c')](saveUpdates(_0x4739fe[_0x6845('0x38')],null))['then'](respondWithResult(_0x1164bd,null))[_0x6845('0x2b')](handleError(_0x1164bd,null));};exports[_0x6845('0x1d')]=function(_0x58bf58,_0x39aedf){return db[_0x6845('0x23')][_0x6845('0x36')]({'where':{'id':_0x58bf58[_0x6845('0x39')]['id']}})[_0x6845('0x1c')](handleEntityNotFound(_0x39aedf,null))[_0x6845('0x1c')](removeEntity(_0x39aedf,null))[_0x6845('0x2b')](handleError(_0x39aedf,null));};exports['describe']=function(_0x53c691,_0x4bcdf6){return db[_0x6845('0x23')][_0x6845('0x3a')]()[_0x6845('0x1c')](respondWithResult(_0x4bcdf6,null))[_0x6845('0x2b')](handleError(_0x4bcdf6,null));};exports[_0x6845('0x3b')]=function(_0x3434d7,_0x491c46){return db[_0x6845('0x3c')][_0x6845('0x36')]({'where':{'id':_0x3434d7[_0x6845('0x39')]['id']}})[_0x6845('0x1c')](handleEntityNotFound(_0x491c46,null))[_0x6845('0x1c')](function(_0xe5f3b7){if(_0xe5f3b7){return _0xe5f3b7[_0x6845('0x3b')](_0x3434d7[_0x6845('0x38')][_0x6845('0x3d')],_[_0x6845('0x3e')](_0x3434d7[_0x6845('0x38')],[_0x6845('0x3d'),'id'])||{});}})[_0x6845('0x1c')](respondWithResult(_0x491c46,null))[_0x6845('0x2b')](handleError(_0x491c46,null));};exports[_0x6845('0x3f')]=function(_0x4a9cb1,_0x5cf943){var _0x440067={'raw':![],'where':{}};var _0x11e959={};var _0x4a9201={'count':0x0,'rows':[]};return db[_0x6845('0x23')][_0x6845('0x40')]({'where':{'id':_0x4a9cb1[_0x6845('0x39')]['id']}})[_0x6845('0x1c')](handleEntityNotFound(_0x5cf943,null))[_0x6845('0x1c')](function(_0x4b1a41){if(_0x4b1a41){_0x11e959[_0x6845('0x2d')]=_[_0x6845('0x2e')](db[_0x6845('0x3c')][_0x6845('0x24')]);_0x11e959[_0x6845('0x2f')]=_['keys'](_0x4a9cb1[_0x6845('0x2f')]);_0x11e959[_0x6845('0x30')]=_[_0x6845('0x31')](_0x11e959['model'],_0x11e959['query']);_0x440067['attributes']=_[_0x6845('0x31')](_0x11e959[_0x6845('0x2d')],qs[_0x6845('0x32')](_0x4a9cb1['query']['fields']));_0x440067['attributes']=_0x440067[_0x6845('0x33')][_0x6845('0x34')]?_0x440067[_0x6845('0x33')]:_0x11e959[_0x6845('0x2d')];if(!_0x4a9cb1['query'][_0x6845('0x41')](_0x6845('0x42'))){_0x440067['limit']=qs[_0x6845('0x18')](_0x4a9cb1[_0x6845('0x2f')][_0x6845('0x18')]);_0x440067[_0x6845('0x16')]=qs[_0x6845('0x16')](_0x4a9cb1[_0x6845('0x2f')][_0x6845('0x16')]);}_0x440067[_0x6845('0x43')]=qs['sort'](_0x4a9cb1[_0x6845('0x2f')][_0x6845('0x44')]);_0x440067[_0x6845('0x45')]=qs[_0x6845('0x30')](_[_0x6845('0x46')](_0x4a9cb1[_0x6845('0x2f')],_0x11e959[_0x6845('0x30')]));_0x440067[_0x6845('0x45')][_0x6845('0x47')]=_0x4b1a41['id'];if(_0x4a9cb1[_0x6845('0x2f')][_0x6845('0x48')]){_0x440067['where']=_[_0x6845('0x49')](_0x440067[_0x6845('0x45')],{'$or':_['map'](_0x440067['attributes'],function(_0x2f86da){var _0x3ec599={};_0x3ec599[_0x2f86da]={'$like':'%'+_0x4a9cb1[_0x6845('0x2f')][_0x6845('0x48')]+'%'};return _0x3ec599;})});}if(_0x4a9cb1[_0x6845('0x2f')][_0x6845('0x4a')]){var _0x5b2964=_0x4a9cb1[_0x6845('0x2f')][_0x6845('0x4a')][_0x6845('0x4b')](',');var _0xf03572={};_0xf03572[_0x5b2964[0x0]]={'$gte':moment(_0x5b2964[0x1])['format'](_0x6845('0x4c'))};_0x440067[_0x6845('0x45')]=_[_0x6845('0x49')](_0x440067[_0x6845('0x45')],_0xf03572);}_0x440067=_[_0x6845('0x49')]({},_0x440067,_0x4a9cb1['options']);return db['MailMessage']['count']({'where':_0x440067[_0x6845('0x45')]})['then'](function(_0x6c1661){_0x4a9201[_0x6845('0x19')]=_0x6c1661;if(_0x4a9cb1[_0x6845('0x2f')][_0x6845('0x4d')]){_0x440067[_0x6845('0x35')]=[{'all':!![]}];}return db[_0x6845('0x3c')]['findAll'](_0x440067);})[_0x6845('0x1c')](function(_0x176fdf){if(_0x4a9cb1[_0x6845('0x2f')]['inlineCss']===_0x6845('0x4e')){for(var _0x1bb0f1=0x0;_0x1bb0f1<_0x176fdf['length'];_0x1bb0f1++){_0x176fdf[_0x1bb0f1][_0x6845('0x38')]=juice(_0x176fdf[_0x1bb0f1]['body']);}}_0x4a9201[_0x6845('0x4f')]=_0x176fdf;return _0x4a9201;});}})[_0x6845('0x1c')](respondWithFilteredResult(_0x5cf943,_0x440067))[_0x6845('0x2b')](handleError(_0x5cf943,null));};exports[_0x6845('0x50')]=function(_0x2cd776,_0x5136fb){return db[_0x6845('0x23')][_0x6845('0x36')]({'where':{'id':_0x2cd776['params']['id']}})['then'](handleEntityNotFound(_0x5136fb,null))[_0x6845('0x1c')](function(_0x49e008){if(_0x49e008){return _0x49e008[_0x6845('0x51')](_0x2cd776['body'][_0x6845('0x3d')],_['omit'](_0x2cd776[_0x6845('0x38')],['ids','id'])||{})[_0x6845('0x52')](function(){return db['Tag']['findAll']({'attributes':['id',_0x6845('0x20'),'color'],'where':{'id':_0x2cd776[_0x6845('0x38')][_0x6845('0x3d')]}});})[_0x6845('0x1c')](function(_0x16fa29){socket['emit'](_0x6845('0x53'),{'id':Number(_0x2cd776['params']['id']),'tags':_0x16fa29||[]});return{'id':Number(_0x2cd776[_0x6845('0x39')]['id']),'tags':_0x16fa29||[]};});}})[_0x6845('0x1c')](respondWithResult(_0x5136fb,null))['catch'](handleError(_0x5136fb,null));};exports[_0x6845('0x54')]=function(_0x2741b4,_0x773c6e){return db[_0x6845('0x23')][_0x6845('0x36')]({'where':{'id':_0x2741b4['params']['id']}})['then'](handleEntityNotFound(_0x773c6e,null))['then'](function(_0x54bc34){if(_0x54bc34){return _0x54bc34[_0x6845('0x54')](_0x2741b4[_0x6845('0x2f')]['ids']);}})[_0x6845('0x1c')](respondWithStatusCode(_0x773c6e,null))[_0x6845('0x2b')](handleError(_0x773c6e,null));};exports[_0x6845('0x55')]=function(_0x243827,_0x4e58c9){var _0x1ba944=moment()[_0x6845('0x56')]()['toString']();var _0x4e4dd4=path[_0x6845('0x57')](config[_0x6845('0x58')],_0x6845('0x59'),_0x6845('0x5a'),'tmp');var _0x572ef1=path[_0x6845('0x57')](config[_0x6845('0x58')],'server',_0x6845('0x5a'),'attachments');var _0x3749b9=path['join'](_0x4e4dd4,_0x1ba944);var _0x598275=util[_0x6845('0x5b')](_0x6845('0x5c'),_0x243827[_0x6845('0x39')]['id'],_0x1ba944);var _0x3ce741=path['join'](_0x4e4dd4,_0x598275);var _0x5cfe67=[];if(_0x243827[_0x6845('0x2f')][_0x6845('0x5d')]){_0x5cfe67[_0x6845('0x5e')]({'model':db[_0x6845('0x5f')],'as':'Attachments','raw':!![]});}var _0x263860=[{'model':db[_0x6845('0x3c')],'as':_0x6845('0x60'),'attributes':['id',_0x6845('0x38'),_0x6845('0x61'),'to','cc','bcc','subject','createdAt'],'where':{'secret':![]},'order':qs[_0x6845('0x44')]('id'),'include':_0x5cfe67}];return db[_0x6845('0x23')][_0x6845('0x36')]({'where':{'id':_0x243827[_0x6845('0x39')]['id']},'include':_0x263860})[_0x6845('0x1c')](handleEntityNotFound(_0x4e58c9,null))[_0x6845('0x1c')](function(_0x2e7689){if(_0x2e7689&&_0x2e7689[_0x6845('0x60')]){var _0x3fe595=_0x2e7689[_0x6845('0x62')]({'plain':!![]});fs[_0x6845('0x63')](_0x3749b9);return BPromise[_0x6845('0x64')](_0x3fe595['Messages'],function(_0x62de32,_0x690075){var _0x1a469c={'from':_0x62de32[_0x6845('0x61')],'to':_0x62de32['to'],'subject':_0x62de32[_0x6845('0x65')],'html':htmlEntities[_0x6845('0x66')](_0x62de32[_0x6845('0x38')]),'headers':{'Date':moment(_0x62de32['createdAt'])['format'](_0x6845('0x67'))},'attachments':[]};if(_0x62de32['cc']){_0x1a469c[_0x6845('0x68')]['Cc']=_0x62de32['cc'];}if(_0x62de32[_0x6845('0x69')]){_0x1a469c[_0x6845('0x68')]['Bcc']=_0x62de32[_0x6845('0x69')];}return new BPromise(function(_0x544239,_0x34fab6){if(_0x62de32['Attachments']){for(var _0x58429c=0x0;_0x58429c<_0x62de32[_0x6845('0x6a')]['length'];_0x58429c++){var _0x1ba6c4=_0x62de32['Attachments'][_0x58429c];var _0x22a6a6=path[_0x6845('0x57')](_0x572ef1,_0x1ba6c4[_0x6845('0x6b')]);if(fs[_0x6845('0x6c')](_0x22a6a6)){_0x1a469c[_0x6845('0x5d')][_0x6845('0x5e')]({'name':_0x1ba6c4['name'],'contentType':_0x1ba6c4[_0x6845('0x26')],'data':fs[_0x6845('0x6d')](_0x22a6a6)});}}}emlformat[_0x6845('0x6e')](_0x1a469c,function(_0x17bca9,_0x1eadc4){if(_0x17bca9)return _0x34fab6(_0x17bca9);fs['writeFileSync'](path[_0x6845('0x57')](_0x3749b9,util['format'](_0x6845('0x6f'),_0x690075)),_0x1eadc4);return _0x544239(_0x1eadc4);});});})[_0x6845('0x1c')](function(){return new BPromise(function(_0x43dddd,_0x33f7bb){zipdir(_0x3749b9,{'saveTo':_0x3ce741},function(_0x4080d7,_0xe77b78){if(_0x4080d7)return _0x33f7bb(_0x4080d7);return _0x43dddd(_0xe77b78);});})[_0x6845('0x1c')](function(){return new BPromise(function(_0x1a09f2,_0x5d4d01){rimraf(_0x3749b9,function(_0x3fc3f7){if(_0x3fc3f7)_0x5d4d01(_0x3fc3f7);return _0x1a09f2();});});})[_0x6845('0x1c')](function(){return _0x4e58c9[_0x6845('0x55')](_0x3ce741,_0x598275,function(_0x5e3768){if(!_0x5e3768)fs[_0x6845('0x70')](_0x3ce741);});});});}else{return _0x4e58c9[_0x6845('0x12')](0xc8);}})[_0x6845('0x2b')](handleError(_0x4e58c9,null));};