Built motion from commit 10af8726.|2.6.34
[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 _0xe730=['api','../../mysqldb','html-entities','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','MailInteraction','rawAttributes','fieldName','type','key','findAll','mail','query','user','model','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','find','catch','create','body','params','describe','addMessage','ids','findOne','MailMessage','hasOwnProperty','limit','order','sort','pick','where','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','options','inlineCss','true','rows','addTags','omit','Tag','color','emit','mailInteractionTags:save','removeTags','download','toString','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','get','mkdirSync','each','missing.recipient@your.company.com','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','readFileSync','build','writeFileSync','format','message%d.eml','unlinkSync','eml-format','zip-dir','moment','bluebird','util','path','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger'];(function(_0x43fe47,_0x4d5e58){var _0x38c17a=function(_0x5ab34b){while(--_0x5ab34b){_0x43fe47['push'](_0x43fe47['shift']());}};_0x38c17a(++_0x4d5e58);}(_0xe730,0xe1));var _0x0e73=function(_0x17c922,_0x45fdd3){_0x17c922=_0x17c922-0x0;var _0x5871fc=_0xe730[_0x17c922];return _0x5871fc;};'use strict';var emlformat=require(_0x0e73('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0e73('0x1'));var moment=require(_0x0e73('0x2'));var BPromise=require(_0x0e73('0x3'));var util=require(_0x0e73('0x4'));var path=require(_0x0e73('0x5'));var fs=require('fs');var _=require('lodash');var juice=require(_0x0e73('0x6'));var Redis=require(_0x0e73('0x7'));var interaction=require(_0x0e73('0x8'));var qs=require(_0x0e73('0x9'));var logger=require(_0x0e73('0xa'))(_0x0e73('0xb'));var config=require('../../config/environment');var db=require(_0x0e73('0xc'))['db'];var htmlEntities=require(_0x0e73('0xd'));config[_0x0e73('0xe')]=_[_0x0e73('0xf')](config[_0x0e73('0xe')],{'host':_0x0e73('0x10'),'port':0x18eb});var socket=require(_0x0e73('0x11'))(new Redis(config[_0x0e73('0xe')]));require(_0x0e73('0x12'))[_0x0e73('0x13')](socket);function respondWithStatusCode(_0x3e6520,_0x32bfc5){_0x32bfc5=_0x32bfc5||0xcc;return function(_0x3f26d1){if(_0x3f26d1){return _0x3e6520[_0x0e73('0x14')](_0x32bfc5);}return _0x3e6520[_0x0e73('0x15')](_0x32bfc5)[_0x0e73('0x16')]();};}function respondWithResult(_0x562516,_0xb0ef2d){_0xb0ef2d=_0xb0ef2d||0xc8;return function(_0x59faa2){if(_0x59faa2){return _0x562516[_0x0e73('0x15')](_0xb0ef2d)[_0x0e73('0x17')](_0x59faa2);}};}function respondWithFilteredResult(_0x52b246,_0x17fec0){return function(_0x202903){if(_0x202903){var _0x29b7d8=typeof _0x17fec0[_0x0e73('0x18')]==='undefined'&&typeof _0x17fec0['limit']===_0x0e73('0x19');var _0x3a8677=_0x202903[_0x0e73('0x1a')];var _0x511388=_0x29b7d8?0x0:_0x17fec0[_0x0e73('0x18')];var _0x16f7b6=_0x29b7d8?_0x202903[_0x0e73('0x1a')]:_0x17fec0[_0x0e73('0x18')]+_0x17fec0['limit'];var _0x2bd4da;if(_0x16f7b6>=_0x3a8677){_0x16f7b6=_0x3a8677;_0x2bd4da=0xc8;}else{_0x2bd4da=0xce;}_0x52b246[_0x0e73('0x15')](_0x2bd4da);return _0x52b246[_0x0e73('0x1b')](_0x0e73('0x1c'),_0x511388+'-'+_0x16f7b6+'/'+_0x3a8677)[_0x0e73('0x17')](_0x202903);}return null;};}function saveUpdates(_0x2a3609){return function(_0x5d4b77){if(_0x5d4b77){return _0x5d4b77[_0x0e73('0x1d')](_0x2a3609)[_0x0e73('0x1e')](function(_0x27641d){return _0x27641d;});}return null;};}function removeEntity(_0x5e3f7b){return function(_0x5577b1){if(_0x5577b1){return _0x5577b1[_0x0e73('0x1f')]()[_0x0e73('0x1e')](function(){_0x5e3f7b[_0x0e73('0x15')](0xcc)[_0x0e73('0x16')]();});}};}function handleEntityNotFound(_0x4bd023){return function(_0xd99c0d){if(!_0xd99c0d){_0x4bd023[_0x0e73('0x14')](0x194);}return _0xd99c0d;};}function handleError(_0x601e95,_0x27fc1a){_0x27fc1a=_0x27fc1a||0x1f4;return function(_0x179225){logger[_0x0e73('0x20')](_0x179225[_0x0e73('0x21')]);if(_0x179225[_0x0e73('0x22')]){delete _0x179225[_0x0e73('0x22')];}_0x601e95[_0x0e73('0x15')](_0x27fc1a)[_0x0e73('0x23')](_0x179225);};}exports[_0x0e73('0x24')]=function(_0x2cf765,_0x4f9c48){var _0x1ca07e={};var _0x3bb10f=_[_0x0e73('0x25')](db[_0x0e73('0x26')][_0x0e73('0x27')],function(_0x23f3f9){return{'name':_0x23f3f9[_0x0e73('0x28')],'type':_0x23f3f9[_0x0e73('0x29')][_0x0e73('0x2a')]};});_0x1ca07e=qs['getOptions'](_0x3bb10f,_0x2cf765);return interaction[_0x0e73('0x2b')](_0x0e73('0x2c'),_0x2cf765[_0x0e73('0x2d')],_0x2cf765[_0x0e73('0x2e')],_0x1ca07e,_0x3bb10f)['then'](respondWithFilteredResult(_0x4f9c48,_0x1ca07e))['catch'](handleError(_0x4f9c48,null));};exports['show']=function(_0x54098c,_0xd5727e){var _0x1b941c={'raw':![],'where':{'id':_0x54098c['params']['id']}},_0x5ba282={};_0x5ba282[_0x0e73('0x2f')]=_[_0x0e73('0x30')](db[_0x0e73('0x26')][_0x0e73('0x27')]);_0x5ba282[_0x0e73('0x2d')]=_[_0x0e73('0x30')](_0x54098c[_0x0e73('0x2d')]);_0x5ba282[_0x0e73('0x31')]=_[_0x0e73('0x32')](_0x5ba282[_0x0e73('0x2f')],_0x5ba282[_0x0e73('0x2d')]);_0x1b941c[_0x0e73('0x33')]=_['intersection'](_0x5ba282['model'],qs[_0x0e73('0x34')](_0x54098c[_0x0e73('0x2d')][_0x0e73('0x34')]));_0x1b941c[_0x0e73('0x33')]=_0x1b941c[_0x0e73('0x33')][_0x0e73('0x35')]?_0x1b941c['attributes']:_0x5ba282[_0x0e73('0x2f')];if(_0x54098c['query'][_0x0e73('0x36')]){_0x1b941c[_0x0e73('0x37')]=[{'all':!![]}];}_0x1b941c=_[_0x0e73('0x38')]({},_0x1b941c,_0x54098c['options']);return db[_0x0e73('0x26')][_0x0e73('0x39')](_0x1b941c)[_0x0e73('0x1e')](handleEntityNotFound(_0xd5727e,null))['then'](respondWithResult(_0xd5727e,null))[_0x0e73('0x3a')](handleError(_0xd5727e,null));};exports[_0x0e73('0x3b')]=function(_0x205bd2,_0x1d35eb){return db[_0x0e73('0x26')][_0x0e73('0x3b')](_0x205bd2[_0x0e73('0x3c')],{})[_0x0e73('0x1e')](respondWithResult(_0x1d35eb,0xc9))['catch'](handleError(_0x1d35eb,null));};exports[_0x0e73('0x1d')]=function(_0x13ac44,_0x17f8d0){if(_0x13ac44['body']['id']){delete _0x13ac44[_0x0e73('0x3c')]['id'];}return db['MailInteraction'][_0x0e73('0x39')]({'where':{'id':_0x13ac44[_0x0e73('0x3d')]['id']}})[_0x0e73('0x1e')](handleEntityNotFound(_0x17f8d0,null))[_0x0e73('0x1e')](saveUpdates(_0x13ac44[_0x0e73('0x3c')],null))['then'](respondWithResult(_0x17f8d0,null))[_0x0e73('0x3a')](handleError(_0x17f8d0,null));};exports['destroy']=function(_0x4110de,_0x3cfe5b){return db[_0x0e73('0x26')][_0x0e73('0x39')]({'where':{'id':_0x4110de[_0x0e73('0x3d')]['id']}})['then'](handleEntityNotFound(_0x3cfe5b,null))[_0x0e73('0x1e')](removeEntity(_0x3cfe5b,null))[_0x0e73('0x3a')](handleError(_0x3cfe5b,null));};exports[_0x0e73('0x3e')]=function(_0x5a7cd8,_0x9f86b4){return db[_0x0e73('0x26')]['describe']()['then'](respondWithResult(_0x9f86b4,null))[_0x0e73('0x3a')](handleError(_0x9f86b4,null));};exports[_0x0e73('0x3f')]=function(_0x4564f7,_0x29e15c){return db['MailMessage'][_0x0e73('0x39')]({'where':{'id':_0x4564f7[_0x0e73('0x3d')]['id']}})[_0x0e73('0x1e')](handleEntityNotFound(_0x29e15c,null))[_0x0e73('0x1e')](function(_0x37551c){if(_0x37551c){return _0x37551c[_0x0e73('0x3f')](_0x4564f7[_0x0e73('0x3c')]['ids'],_['omit'](_0x4564f7[_0x0e73('0x3c')],[_0x0e73('0x40'),'id'])||{});}})['then'](respondWithResult(_0x29e15c,null))[_0x0e73('0x3a')](handleError(_0x29e15c,null));};exports['getMessages']=function(_0x43f225,_0x1b020d){var _0x7a3ffd={'raw':![],'where':{}};var _0x30d7de={};var _0x25cf7e={'count':0x0,'rows':[]};return db['MailInteraction'][_0x0e73('0x41')]({'where':{'id':_0x43f225[_0x0e73('0x3d')]['id']}})[_0x0e73('0x1e')](handleEntityNotFound(_0x1b020d,null))[_0x0e73('0x1e')](function(_0x526cf7){if(_0x526cf7){_0x30d7de[_0x0e73('0x2f')]=_['keys'](db[_0x0e73('0x42')]['rawAttributes']);_0x30d7de[_0x0e73('0x2d')]=_['keys'](_0x43f225['query']);_0x30d7de['filters']=_[_0x0e73('0x32')](_0x30d7de[_0x0e73('0x2f')],_0x30d7de[_0x0e73('0x2d')]);_0x7a3ffd[_0x0e73('0x33')]=_[_0x0e73('0x32')](_0x30d7de[_0x0e73('0x2f')],qs[_0x0e73('0x34')](_0x43f225[_0x0e73('0x2d')]['fields']));_0x7a3ffd['attributes']=_0x7a3ffd[_0x0e73('0x33')][_0x0e73('0x35')]?_0x7a3ffd[_0x0e73('0x33')]:_0x30d7de[_0x0e73('0x2f')];if(!_0x43f225['query'][_0x0e73('0x43')]('nolimit')){_0x7a3ffd[_0x0e73('0x44')]=qs['limit'](_0x43f225[_0x0e73('0x2d')][_0x0e73('0x44')]);_0x7a3ffd[_0x0e73('0x18')]=qs[_0x0e73('0x18')](_0x43f225[_0x0e73('0x2d')][_0x0e73('0x18')]);}_0x7a3ffd[_0x0e73('0x45')]=qs['sort'](_0x43f225[_0x0e73('0x2d')][_0x0e73('0x46')]);_0x7a3ffd['where']=qs[_0x0e73('0x31')](_[_0x0e73('0x47')](_0x43f225['query'],_0x30d7de['filters']));_0x7a3ffd[_0x0e73('0x48')]['MailInteractionId']=_0x526cf7['id'];if(_0x43f225[_0x0e73('0x2d')][_0x0e73('0x49')]){_0x7a3ffd[_0x0e73('0x48')]=_[_0x0e73('0x38')](_0x7a3ffd[_0x0e73('0x48')],{'$or':_['map'](_0x7a3ffd[_0x0e73('0x33')],function(_0x104081){var _0xec02c2={};_0xec02c2[_0x104081]={'$like':'%'+_0x43f225[_0x0e73('0x2d')]['filter']+'%'};return _0xec02c2;})});}if(_0x43f225[_0x0e73('0x2d')][_0x0e73('0x4a')]){var _0xeea3c=_0x43f225[_0x0e73('0x2d')][_0x0e73('0x4a')][_0x0e73('0x4b')](',');var _0x2926a7={};_0x2926a7[_0xeea3c[0x0]]={'$gte':moment(_0xeea3c[0x1])['format'](_0x0e73('0x4c'))};_0x7a3ffd['where']=_[_0x0e73('0x38')](_0x7a3ffd[_0x0e73('0x48')],_0x2926a7);}_0x7a3ffd=_['merge']({},_0x7a3ffd,_0x43f225[_0x0e73('0x4d')]);return db[_0x0e73('0x42')][_0x0e73('0x1a')]({'where':_0x7a3ffd['where']})[_0x0e73('0x1e')](function(_0x4fc9dd){_0x25cf7e[_0x0e73('0x1a')]=_0x4fc9dd;if(_0x43f225[_0x0e73('0x2d')][_0x0e73('0x36')]){_0x7a3ffd[_0x0e73('0x37')]=[{'all':!![]}];}return db[_0x0e73('0x42')][_0x0e73('0x2b')](_0x7a3ffd);})[_0x0e73('0x1e')](function(_0x293e69){if(_0x43f225[_0x0e73('0x2d')][_0x0e73('0x4e')]===_0x0e73('0x4f')){for(var _0x5c8354=0x0;_0x5c8354<_0x293e69[_0x0e73('0x35')];_0x5c8354++){_0x293e69[_0x5c8354]['body']=juice(_0x293e69[_0x5c8354][_0x0e73('0x3c')]);}}_0x25cf7e[_0x0e73('0x50')]=_0x293e69;return _0x25cf7e;});}})[_0x0e73('0x1e')](respondWithFilteredResult(_0x1b020d,_0x7a3ffd))[_0x0e73('0x3a')](handleError(_0x1b020d,null));};exports[_0x0e73('0x51')]=function(_0xa694b1,_0x14a42b){return db[_0x0e73('0x26')][_0x0e73('0x39')]({'where':{'id':_0xa694b1[_0x0e73('0x3d')]['id']}})[_0x0e73('0x1e')](handleEntityNotFound(_0x14a42b,null))[_0x0e73('0x1e')](function(_0x1d5382){if(_0x1d5382){return _0x1d5382['setTags'](_0xa694b1[_0x0e73('0x3c')][_0x0e73('0x40')],_[_0x0e73('0x52')](_0xa694b1[_0x0e73('0x3c')],[_0x0e73('0x40'),'id'])||{})['spread'](function(){return db[_0x0e73('0x53')]['findAll']({'attributes':['id',_0x0e73('0x22'),_0x0e73('0x54')],'where':{'id':_0xa694b1['body'][_0x0e73('0x40')]}});})[_0x0e73('0x1e')](function(_0x1a1c90){socket[_0x0e73('0x55')](_0x0e73('0x56'),{'id':Number(_0xa694b1['params']['id']),'tags':_0x1a1c90||[]});return{'id':Number(_0xa694b1[_0x0e73('0x3d')]['id']),'tags':_0x1a1c90||[]};});}})[_0x0e73('0x1e')](respondWithResult(_0x14a42b,null))[_0x0e73('0x3a')](handleError(_0x14a42b,null));};exports[_0x0e73('0x57')]=function(_0x1ae8d1,_0x323eec){return db[_0x0e73('0x26')][_0x0e73('0x39')]({'where':{'id':_0x1ae8d1[_0x0e73('0x3d')]['id']}})[_0x0e73('0x1e')](handleEntityNotFound(_0x323eec,null))[_0x0e73('0x1e')](function(_0x3bb1e8){if(_0x3bb1e8){return _0x3bb1e8[_0x0e73('0x57')](_0x1ae8d1[_0x0e73('0x2d')]['ids']);}})[_0x0e73('0x1e')](respondWithStatusCode(_0x323eec,null))[_0x0e73('0x3a')](handleError(_0x323eec,null));};exports[_0x0e73('0x58')]=function(_0x4213b1,_0x23f4e7){var _0x7c5c71=moment()['unix']()[_0x0e73('0x59')]();var _0x315b06=path[_0x0e73('0x5a')](config['root'],_0x0e73('0x5b'),_0x0e73('0x5c'),_0x0e73('0x5d'));var _0x1bd1c8=path[_0x0e73('0x5a')](config[_0x0e73('0x5e')],_0x0e73('0x5b'),'files',_0x0e73('0x5f'));var _0x3e592b=path[_0x0e73('0x5a')](_0x315b06,_0x7c5c71);var _0x2e5fc8=util['format'](_0x0e73('0x60'),_0x4213b1['params']['id'],_0x7c5c71);var _0x37fb9a=path['join'](_0x315b06,_0x2e5fc8);var _0x4e8e97=[];if(_0x4213b1['query'][_0x0e73('0x5f')]){_0x4e8e97[_0x0e73('0x61')]({'model':db[_0x0e73('0x62')],'as':_0x0e73('0x63'),'raw':!![]});}var _0x23c110=[{'model':db[_0x0e73('0x42')],'as':_0x0e73('0x64'),'attributes':['id',_0x0e73('0x3c'),_0x0e73('0x65'),'to','cc',_0x0e73('0x66'),_0x0e73('0x67'),_0x0e73('0x68')],'where':{'secret':![]},'order':qs[_0x0e73('0x46')]('id'),'include':_0x4e8e97}];return db[_0x0e73('0x26')][_0x0e73('0x39')]({'where':{'id':_0x4213b1[_0x0e73('0x3d')]['id']},'include':_0x23c110})[_0x0e73('0x1e')](handleEntityNotFound(_0x23f4e7,null))['then'](function(_0x35a5fd){if(_0x35a5fd&&_0x35a5fd['Messages']){var _0x5be985=_0x35a5fd[_0x0e73('0x69')]({'plain':!![]});fs[_0x0e73('0x6a')](_0x3e592b);return BPromise[_0x0e73('0x6b')](_0x5be985['Messages'],function(_0x532451,_0x5dc979){var _0x446fe6={'from':_0x532451[_0x0e73('0x65')],'to':_0x532451['to']||_0x0e73('0x6c'),'subject':_0x532451[_0x0e73('0x67')],'html':htmlEntities[_0x0e73('0x6d')](_0x532451['body']),'headers':{'Date':moment(_0x532451[_0x0e73('0x68')])['format'](_0x0e73('0x6e'))},'attachments':[]};if(_0x532451['cc']){_0x446fe6[_0x0e73('0x6f')]['Cc']=_0x532451['cc'];}if(_0x532451[_0x0e73('0x66')]){_0x446fe6['headers']['Bcc']=_0x532451[_0x0e73('0x66')];}return new BPromise(function(_0x47eaef,_0x5c13f2){if(_0x532451[_0x0e73('0x63')]){for(var _0x5a24fe=0x0;_0x5a24fe<_0x532451[_0x0e73('0x63')]['length'];_0x5a24fe++){var _0x264090=_0x532451[_0x0e73('0x63')][_0x5a24fe];var _0x382282=path['join'](_0x1bd1c8,_0x264090['basename']);if(fs['existsSync'](_0x382282)){_0x446fe6[_0x0e73('0x5f')][_0x0e73('0x61')]({'name':_0x264090[_0x0e73('0x22')],'contentType':_0x264090['type'],'data':fs[_0x0e73('0x70')](_0x382282)});}}}emlformat[_0x0e73('0x71')](_0x446fe6,function(_0x1f4982,_0x57a58b){if(_0x1f4982)return _0x5c13f2(_0x1f4982);fs[_0x0e73('0x72')](path[_0x0e73('0x5a')](_0x3e592b,util[_0x0e73('0x73')](_0x0e73('0x74'),_0x5dc979)),_0x57a58b);return _0x47eaef(_0x57a58b);});});})[_0x0e73('0x1e')](function(){return new BPromise(function(_0x465262,_0x24fe7f){zipdir(_0x3e592b,{'saveTo':_0x37fb9a},function(_0x271957,_0x44cd73){if(_0x271957)return _0x24fe7f(_0x271957);return _0x465262(_0x44cd73);});})[_0x0e73('0x1e')](function(){return new BPromise(function(_0x1aaa61,_0x52b940){rimraf(_0x3e592b,function(_0x297d29){if(_0x297d29)_0x52b940(_0x297d29);return _0x1aaa61();});});})['then'](function(){return _0x23f4e7['download'](_0x37fb9a,_0x2e5fc8,function(_0x337c58){if(!_0x337c58)fs[_0x0e73('0x75')](_0x37fb9a);});});});}else{return _0x23f4e7[_0x0e73('0x14')](0xc8);}})[_0x0e73('0x3a')](handleError(_0x23f4e7,null));};