d3ed260626d5141a37f592ba64853571b0fa3b1f
[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 _0x62e2=['mkdirSync','each','missing.recipient@your.company.com','headers','existsSync','readFileSync','writeFileSync','unlinkSync','eml-format','rimraf','zip-dir','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','name','send','index','map','rawAttributes','fieldName','type','getOptions','mail','query','params','keys','intersection','model','fields','attributes','length','includeAll','merge','options','MailInteraction','catch','create','body','find','describe','addMessage','MailMessage','ids','omit','getMessages','findOne','filters','hasOwnProperty','nolimit','sort','where','pick','MailInteractionId','filter','$gte','format','include','inlineCss','true','rows','addTags','spread','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','get'];(function(_0x3cb30b,_0x504b3e){var _0x2ca717=function(_0x32a3d9){while(--_0x32a3d9){_0x3cb30b['push'](_0x3cb30b['shift']());}};_0x2ca717(++_0x504b3e);}(_0x62e2,0x158));var _0x262e=function(_0x271a4c,_0x2fbf19){_0x271a4c=_0x271a4c-0x0;var _0xd700b5=_0x62e2[_0x271a4c];return _0xd700b5;};'use strict';var emlformat=require(_0x262e('0x0'));var rimraf=require(_0x262e('0x1'));var zipdir=require(_0x262e('0x2'));var moment=require('moment');var BPromise=require(_0x262e('0x3'));var util=require(_0x262e('0x4'));var path=require(_0x262e('0x5'));var fs=require('fs');var _=require(_0x262e('0x6'));var juice=require('juice');var Redis=require(_0x262e('0x7'));var interaction=require(_0x262e('0x8'));var qs=require(_0x262e('0x9'));var logger=require(_0x262e('0xa'))(_0x262e('0xb'));var config=require('../../config/environment');var db=require(_0x262e('0xc'))['db'];var htmlEntities=require('html-entities');config[_0x262e('0xd')]=_[_0x262e('0xe')](config[_0x262e('0xd')],{'host':_0x262e('0xf'),'port':0x18eb});var socket=require(_0x262e('0x10'))(new Redis(config[_0x262e('0xd')]));require(_0x262e('0x11'))[_0x262e('0x12')](socket);function respondWithStatusCode(_0xe4ecf,_0x5e9a49){_0x5e9a49=_0x5e9a49||0xcc;return function(_0x128b1b){if(_0x128b1b){return _0xe4ecf[_0x262e('0x13')](_0x5e9a49);}return _0xe4ecf[_0x262e('0x14')](_0x5e9a49)[_0x262e('0x15')]();};}function respondWithResult(_0x5302b7,_0x5dfb0c){_0x5dfb0c=_0x5dfb0c||0xc8;return function(_0x52f294){if(_0x52f294){return _0x5302b7[_0x262e('0x14')](_0x5dfb0c)[_0x262e('0x16')](_0x52f294);}};}function respondWithFilteredResult(_0x1627d6,_0x1b6764){return function(_0x47935f){if(_0x47935f){var _0x3a9fcd=typeof _0x1b6764[_0x262e('0x17')]==='undefined'&&typeof _0x1b6764[_0x262e('0x18')]===_0x262e('0x19');var _0x3230f9=_0x47935f[_0x262e('0x1a')];var _0x482774=_0x3a9fcd?0x0:_0x1b6764[_0x262e('0x17')];var _0x1ae91a=_0x3a9fcd?_0x47935f[_0x262e('0x1a')]:_0x1b6764[_0x262e('0x17')]+_0x1b6764[_0x262e('0x18')];var _0x1f2b8a;if(_0x1ae91a>=_0x3230f9){_0x1ae91a=_0x3230f9;_0x1f2b8a=0xc8;}else{_0x1f2b8a=0xce;}_0x1627d6[_0x262e('0x14')](_0x1f2b8a);return _0x1627d6[_0x262e('0x1b')](_0x262e('0x1c'),_0x482774+'-'+_0x1ae91a+'/'+_0x3230f9)[_0x262e('0x16')](_0x47935f);}return null;};}function saveUpdates(_0x1a0c37){return function(_0x4b00b0){if(_0x4b00b0){return _0x4b00b0[_0x262e('0x1d')](_0x1a0c37)[_0x262e('0x1e')](function(_0x24312e){return _0x24312e;});}return null;};}function removeEntity(_0x82e6e8){return function(_0x235a47){if(_0x235a47){return _0x235a47[_0x262e('0x1f')]()[_0x262e('0x1e')](function(){_0x82e6e8[_0x262e('0x14')](0xcc)[_0x262e('0x15')]();});}};}function handleEntityNotFound(_0x5891bf){return function(_0x443992){if(!_0x443992){_0x5891bf[_0x262e('0x13')](0x194);}return _0x443992;};}function handleError(_0x418654,_0x39f39f){_0x39f39f=_0x39f39f||0x1f4;return function(_0x1c1b00){logger['error'](_0x1c1b00['stack']);if(_0x1c1b00[_0x262e('0x20')]){delete _0x1c1b00['name'];}_0x418654['status'](_0x39f39f)[_0x262e('0x21')](_0x1c1b00);};}exports[_0x262e('0x22')]=function(_0x590e2e,_0x129efc){var _0x1b57fb={};var _0x19e1fd=_[_0x262e('0x23')](db['MailInteraction'][_0x262e('0x24')],function(_0x1c3ca8){return{'name':_0x1c3ca8[_0x262e('0x25')],'type':_0x1c3ca8[_0x262e('0x26')]['key']};});_0x1b57fb=qs[_0x262e('0x27')](_0x19e1fd,_0x590e2e);return interaction['findAll'](_0x262e('0x28'),_0x590e2e[_0x262e('0x29')],_0x590e2e['user'],_0x1b57fb,_0x19e1fd)[_0x262e('0x1e')](respondWithFilteredResult(_0x129efc,_0x1b57fb))['catch'](handleError(_0x129efc,null));};exports['show']=function(_0x537276,_0x912e99){var _0x1ce94a={'raw':![],'where':{'id':_0x537276[_0x262e('0x2a')]['id']}},_0x4b9be8={};_0x4b9be8['model']=_['keys'](db['MailInteraction'][_0x262e('0x24')]);_0x4b9be8['query']=_[_0x262e('0x2b')](_0x537276[_0x262e('0x29')]);_0x4b9be8['filters']=_[_0x262e('0x2c')](_0x4b9be8[_0x262e('0x2d')],_0x4b9be8[_0x262e('0x29')]);_0x1ce94a['attributes']=_[_0x262e('0x2c')](_0x4b9be8[_0x262e('0x2d')],qs[_0x262e('0x2e')](_0x537276[_0x262e('0x29')][_0x262e('0x2e')]));_0x1ce94a[_0x262e('0x2f')]=_0x1ce94a[_0x262e('0x2f')][_0x262e('0x30')]?_0x1ce94a[_0x262e('0x2f')]:_0x4b9be8[_0x262e('0x2d')];if(_0x537276[_0x262e('0x29')][_0x262e('0x31')]){_0x1ce94a['include']=[{'all':!![]}];}_0x1ce94a=_[_0x262e('0x32')]({},_0x1ce94a,_0x537276[_0x262e('0x33')]);return db[_0x262e('0x34')]['find'](_0x1ce94a)['then'](handleEntityNotFound(_0x912e99,null))[_0x262e('0x1e')](respondWithResult(_0x912e99,null))[_0x262e('0x35')](handleError(_0x912e99,null));};exports['create']=function(_0x41139c,_0x2c0f7c){return db[_0x262e('0x34')][_0x262e('0x36')](_0x41139c[_0x262e('0x37')],{})['then'](respondWithResult(_0x2c0f7c,0xc9))[_0x262e('0x35')](handleError(_0x2c0f7c,null));};exports['update']=function(_0x13bb26,_0x2db6ca){if(_0x13bb26[_0x262e('0x37')]['id']){delete _0x13bb26[_0x262e('0x37')]['id'];}return db['MailInteraction'][_0x262e('0x38')]({'where':{'id':_0x13bb26[_0x262e('0x2a')]['id']}})[_0x262e('0x1e')](handleEntityNotFound(_0x2db6ca,null))['then'](saveUpdates(_0x13bb26[_0x262e('0x37')],null))[_0x262e('0x1e')](respondWithResult(_0x2db6ca,null))['catch'](handleError(_0x2db6ca,null));};exports[_0x262e('0x1f')]=function(_0x58e67c,_0x3d8bd5){return db[_0x262e('0x34')][_0x262e('0x38')]({'where':{'id':_0x58e67c[_0x262e('0x2a')]['id']}})[_0x262e('0x1e')](handleEntityNotFound(_0x3d8bd5,null))[_0x262e('0x1e')](removeEntity(_0x3d8bd5,null))[_0x262e('0x35')](handleError(_0x3d8bd5,null));};exports[_0x262e('0x39')]=function(_0x408687,_0x5efaf4){return db[_0x262e('0x34')][_0x262e('0x39')]()['then'](respondWithResult(_0x5efaf4,null))[_0x262e('0x35')](handleError(_0x5efaf4,null));};exports[_0x262e('0x3a')]=function(_0x32bd69,_0x260688){return db[_0x262e('0x3b')][_0x262e('0x38')]({'where':{'id':_0x32bd69[_0x262e('0x2a')]['id']}})['then'](handleEntityNotFound(_0x260688,null))[_0x262e('0x1e')](function(_0x3fa88c){if(_0x3fa88c){return _0x3fa88c[_0x262e('0x3a')](_0x32bd69[_0x262e('0x37')][_0x262e('0x3c')],_[_0x262e('0x3d')](_0x32bd69[_0x262e('0x37')],['ids','id'])||{});}})[_0x262e('0x1e')](respondWithResult(_0x260688,null))[_0x262e('0x35')](handleError(_0x260688,null));};exports[_0x262e('0x3e')]=function(_0x1ba6ee,_0x5f1773){var _0xe80273={'raw':![],'where':{}};var _0x2e50e8={};var _0xd9c726={'count':0x0,'rows':[]};return db[_0x262e('0x34')][_0x262e('0x3f')]({'where':{'id':_0x1ba6ee[_0x262e('0x2a')]['id']}})[_0x262e('0x1e')](handleEntityNotFound(_0x5f1773,null))[_0x262e('0x1e')](function(_0x3e32cf){if(_0x3e32cf){_0x2e50e8[_0x262e('0x2d')]=_['keys'](db['MailMessage']['rawAttributes']);_0x2e50e8[_0x262e('0x29')]=_[_0x262e('0x2b')](_0x1ba6ee[_0x262e('0x29')]);_0x2e50e8[_0x262e('0x40')]=_[_0x262e('0x2c')](_0x2e50e8[_0x262e('0x2d')],_0x2e50e8[_0x262e('0x29')]);_0xe80273[_0x262e('0x2f')]=_['intersection'](_0x2e50e8[_0x262e('0x2d')],qs[_0x262e('0x2e')](_0x1ba6ee[_0x262e('0x29')][_0x262e('0x2e')]));_0xe80273['attributes']=_0xe80273[_0x262e('0x2f')][_0x262e('0x30')]?_0xe80273[_0x262e('0x2f')]:_0x2e50e8['model'];if(!_0x1ba6ee[_0x262e('0x29')][_0x262e('0x41')](_0x262e('0x42'))){_0xe80273['limit']=qs[_0x262e('0x18')](_0x1ba6ee['query'][_0x262e('0x18')]);_0xe80273[_0x262e('0x17')]=qs[_0x262e('0x17')](_0x1ba6ee[_0x262e('0x29')][_0x262e('0x17')]);}_0xe80273['order']=qs['sort'](_0x1ba6ee[_0x262e('0x29')][_0x262e('0x43')]);_0xe80273[_0x262e('0x44')]=qs['filters'](_[_0x262e('0x45')](_0x1ba6ee['query'],_0x2e50e8['filters']));_0xe80273[_0x262e('0x44')][_0x262e('0x46')]=_0x3e32cf['id'];if(_0x1ba6ee['query'][_0x262e('0x47')]){_0xe80273[_0x262e('0x44')]=_[_0x262e('0x32')](_0xe80273[_0x262e('0x44')],{'$or':_[_0x262e('0x23')](_0xe80273['attributes'],function(_0x4fbff6){var _0x169e43={};_0x169e43[_0x4fbff6]={'$like':'%'+_0x1ba6ee[_0x262e('0x29')]['filter']+'%'};return _0x169e43;})});}if(_0x1ba6ee[_0x262e('0x29')][_0x262e('0x48')]){var _0x981016=_0x1ba6ee[_0x262e('0x29')][_0x262e('0x48')]['split'](',');var _0x23727e={};_0x23727e[_0x981016[0x0]]={'$gte':moment(_0x981016[0x1])[_0x262e('0x49')]('YYYY-MM-DD\x20HH:mm:ss')};_0xe80273['where']=_[_0x262e('0x32')](_0xe80273[_0x262e('0x44')],_0x23727e);}_0xe80273=_[_0x262e('0x32')]({},_0xe80273,_0x1ba6ee[_0x262e('0x33')]);return db[_0x262e('0x3b')][_0x262e('0x1a')]({'where':_0xe80273['where']})[_0x262e('0x1e')](function(_0x259e19){_0xd9c726[_0x262e('0x1a')]=_0x259e19;if(_0x1ba6ee['query']['includeAll']){_0xe80273[_0x262e('0x4a')]=[{'all':!![]}];}return db[_0x262e('0x3b')]['findAll'](_0xe80273);})[_0x262e('0x1e')](function(_0x58ce71){if(_0x1ba6ee[_0x262e('0x29')][_0x262e('0x4b')]===_0x262e('0x4c')){for(var _0xf74a73=0x0;_0xf74a73<_0x58ce71[_0x262e('0x30')];_0xf74a73++){_0x58ce71[_0xf74a73][_0x262e('0x37')]=juice(_0x58ce71[_0xf74a73][_0x262e('0x37')]);}}_0xd9c726[_0x262e('0x4d')]=_0x58ce71;return _0xd9c726;});}})[_0x262e('0x1e')](respondWithFilteredResult(_0x5f1773,_0xe80273))[_0x262e('0x35')](handleError(_0x5f1773,null));};exports[_0x262e('0x4e')]=function(_0x325bf7,_0xf72a43){return db[_0x262e('0x34')]['find']({'where':{'id':_0x325bf7[_0x262e('0x2a')]['id']}})['then'](handleEntityNotFound(_0xf72a43,null))[_0x262e('0x1e')](function(_0x45a19b){if(_0x45a19b){return _0x45a19b['setTags'](_0x325bf7['body'][_0x262e('0x3c')],_[_0x262e('0x3d')](_0x325bf7['body'],[_0x262e('0x3c'),'id'])||{})[_0x262e('0x4f')](function(){return db[_0x262e('0x50')]['findAll']({'attributes':['id','name',_0x262e('0x51')],'where':{'id':_0x325bf7[_0x262e('0x37')][_0x262e('0x3c')]}});})['then'](function(_0x5cc96d){socket[_0x262e('0x52')](_0x262e('0x53'),{'id':Number(_0x325bf7['params']['id']),'tags':_0x5cc96d||[]});return{'id':Number(_0x325bf7['params']['id']),'tags':_0x5cc96d||[]};});}})[_0x262e('0x1e')](respondWithResult(_0xf72a43,null))['catch'](handleError(_0xf72a43,null));};exports[_0x262e('0x54')]=function(_0x467160,_0x3210af){return db[_0x262e('0x34')]['find']({'where':{'id':_0x467160['params']['id']}})[_0x262e('0x1e')](handleEntityNotFound(_0x3210af,null))[_0x262e('0x1e')](function(_0x5af4c0){if(_0x5af4c0){return _0x5af4c0[_0x262e('0x54')](_0x467160['query'][_0x262e('0x3c')]);}})[_0x262e('0x1e')](respondWithStatusCode(_0x3210af,null))['catch'](handleError(_0x3210af,null));};exports[_0x262e('0x55')]=function(_0x215b64,_0x5d5462){var _0x3a8df4=moment()[_0x262e('0x56')]()[_0x262e('0x57')]();var _0x116816=path[_0x262e('0x58')](config[_0x262e('0x59')],_0x262e('0x5a'),_0x262e('0x5b'),_0x262e('0x5c'));var _0x4c3c09=path[_0x262e('0x58')](config['root'],_0x262e('0x5a'),'files',_0x262e('0x5d'));var _0x4f7f2d=path[_0x262e('0x58')](_0x116816,_0x3a8df4);var _0x422280=util[_0x262e('0x49')](_0x262e('0x5e'),_0x215b64[_0x262e('0x2a')]['id'],_0x3a8df4);var _0x49d47e=path[_0x262e('0x58')](_0x116816,_0x422280);var _0x120e43=[];if(_0x215b64[_0x262e('0x29')][_0x262e('0x5d')]){_0x120e43[_0x262e('0x5f')]({'model':db[_0x262e('0x60')],'as':_0x262e('0x61'),'raw':!![]});}var _0x53c25d=[{'model':db[_0x262e('0x3b')],'as':_0x262e('0x62'),'attributes':['id',_0x262e('0x37'),_0x262e('0x63'),'to','cc',_0x262e('0x64'),_0x262e('0x65'),_0x262e('0x66')],'where':{'secret':![]},'order':qs[_0x262e('0x43')]('id'),'include':_0x120e43}];return db[_0x262e('0x34')][_0x262e('0x38')]({'where':{'id':_0x215b64[_0x262e('0x2a')]['id']},'include':_0x53c25d})[_0x262e('0x1e')](handleEntityNotFound(_0x5d5462,null))['then'](function(_0x4bc8d8){if(_0x4bc8d8&&_0x4bc8d8['Messages']){var _0x5ad121=_0x4bc8d8[_0x262e('0x67')]({'plain':!![]});fs[_0x262e('0x68')](_0x4f7f2d);return BPromise[_0x262e('0x69')](_0x5ad121[_0x262e('0x62')],function(_0x3337c7,_0x1c6c84){var _0x44e443={'from':_0x3337c7['from'],'to':_0x3337c7['to']||_0x262e('0x6a'),'subject':_0x3337c7[_0x262e('0x65')],'html':htmlEntities['decode'](_0x3337c7['body']),'headers':{'Date':moment(_0x3337c7[_0x262e('0x66')])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x3337c7['cc']){_0x44e443[_0x262e('0x6b')]['Cc']=_0x3337c7['cc'];}if(_0x3337c7['bcc']){_0x44e443['headers']['Bcc']=_0x3337c7['bcc'];}return new BPromise(function(_0x2c39f7,_0x52e26f){if(_0x3337c7[_0x262e('0x61')]){for(var _0x1dc059=0x0;_0x1dc059<_0x3337c7[_0x262e('0x61')][_0x262e('0x30')];_0x1dc059++){var _0x5bb499=_0x3337c7[_0x262e('0x61')][_0x1dc059];var _0x23b6e5=path[_0x262e('0x58')](_0x4c3c09,_0x5bb499['basename']);if(fs[_0x262e('0x6c')](_0x23b6e5)){_0x44e443['attachments']['push']({'name':_0x5bb499[_0x262e('0x20')],'contentType':_0x5bb499['type'],'data':fs[_0x262e('0x6d')](_0x23b6e5)});}}}emlformat['build'](_0x44e443,function(_0x2901f6,_0xf9c277){if(_0x2901f6)return _0x52e26f(_0x2901f6);fs[_0x262e('0x6e')](path[_0x262e('0x58')](_0x4f7f2d,util[_0x262e('0x49')]('message%d.eml',_0x1c6c84)),_0xf9c277);return _0x2c39f7(_0xf9c277);});});})[_0x262e('0x1e')](function(){return new BPromise(function(_0x3be43d,_0x30fa62){zipdir(_0x4f7f2d,{'saveTo':_0x49d47e},function(_0x53b9f5,_0x20948d){if(_0x53b9f5)return _0x30fa62(_0x53b9f5);return _0x3be43d(_0x20948d);});})[_0x262e('0x1e')](function(){return new BPromise(function(_0x222632,_0x5d24cf){rimraf(_0x4f7f2d,function(_0x59e38b){if(_0x59e38b)_0x5d24cf(_0x59e38b);return _0x222632();});});})[_0x262e('0x1e')](function(){return _0x5d5462[_0x262e('0x55')](_0x49d47e,_0x422280,function(_0x5645ff){if(!_0x5645ff)fs[_0x262e('0x6f')](_0x49d47e);});});});}else{return _0x5d5462[_0x262e('0x13')](0xc8);}})[_0x262e('0x35')](handleError(_0x5d5462,null));};