Built motion from commit 0415ced0.|2.6.28
[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 _0xed89=['options','find','catch','body','update','describe','addMessage','MailMessage','omit','ids','getMessages','findOne','filters','intersection','hasOwnProperty','nolimit','order','pick','MailInteractionId','where','merge','map','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','length','rows','addTags','spread','Tag','color','emit','mailInteractionTags:save','removeTags','unix','toString','join','server','tmp','root','files','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','sort','get','mkdirSync','each','missing.recipient@your.company.com','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','Bcc','basename','readFileSync','build','message%d.eml','rimraf','zip-dir','bluebird','util','lodash','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','getOptions','findAll','mail','query','user','show','params','keys','MailInteraction','model','fields','attributes','includeAll','include'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0xed89,0x19f));var _0x9ed8=function(_0x355a5f,_0x4f3ac5){_0x355a5f=_0x355a5f-0x0;var _0x23e51d=_0xed89[_0x355a5f];return _0x23e51d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9ed8('0x0'));var zipdir=require(_0x9ed8('0x1'));var moment=require('moment');var BPromise=require(_0x9ed8('0x2'));var util=require(_0x9ed8('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x9ed8('0x4'));var juice=require(_0x9ed8('0x5'));var Redis=require(_0x9ed8('0x6'));var interaction=require(_0x9ed8('0x7'));var qs=require(_0x9ed8('0x8'));var logger=require(_0x9ed8('0x9'))(_0x9ed8('0xa'));var config=require(_0x9ed8('0xb'));var db=require(_0x9ed8('0xc'))['db'];var htmlEntities=require('html-entities');config['redis']=_[_0x9ed8('0xd')](config[_0x9ed8('0xe')],{'host':_0x9ed8('0xf'),'port':0x18eb});var socket=require(_0x9ed8('0x10'))(new Redis(config['redis']));require(_0x9ed8('0x11'))[_0x9ed8('0x12')](socket);function respondWithStatusCode(_0x1ef268,_0x5d0498){_0x5d0498=_0x5d0498||0xcc;return function(_0x1b0ca6){if(_0x1b0ca6){return _0x1ef268[_0x9ed8('0x13')](_0x5d0498);}return _0x1ef268[_0x9ed8('0x14')](_0x5d0498)[_0x9ed8('0x15')]();};}function respondWithResult(_0x4dd9a0,_0x552cf4){_0x552cf4=_0x552cf4||0xc8;return function(_0x45b811){if(_0x45b811){return _0x4dd9a0[_0x9ed8('0x14')](_0x552cf4)[_0x9ed8('0x16')](_0x45b811);}};}function respondWithFilteredResult(_0x418ff0,_0x36d8f1){return function(_0x3aa1c1){if(_0x3aa1c1){var _0x7ad2b8=typeof _0x36d8f1[_0x9ed8('0x17')]===_0x9ed8('0x18')&&typeof _0x36d8f1['limit']===_0x9ed8('0x18');var _0x324e7b=_0x3aa1c1['count'];var _0x48b70c=_0x7ad2b8?0x0:_0x36d8f1[_0x9ed8('0x17')];var _0x581bc5=_0x7ad2b8?_0x3aa1c1[_0x9ed8('0x19')]:_0x36d8f1[_0x9ed8('0x17')]+_0x36d8f1[_0x9ed8('0x1a')];var _0x5b6dcb;if(_0x581bc5>=_0x324e7b){_0x581bc5=_0x324e7b;_0x5b6dcb=0xc8;}else{_0x5b6dcb=0xce;}_0x418ff0[_0x9ed8('0x14')](_0x5b6dcb);return _0x418ff0[_0x9ed8('0x1b')](_0x9ed8('0x1c'),_0x48b70c+'-'+_0x581bc5+'/'+_0x324e7b)[_0x9ed8('0x16')](_0x3aa1c1);}return null;};}function saveUpdates(_0x1e168d){return function(_0xff3757){if(_0xff3757){return _0xff3757['update'](_0x1e168d)[_0x9ed8('0x1d')](function(_0x5a7e54){return _0x5a7e54;});}return null;};}function removeEntity(_0x5e4b2d){return function(_0x5d4702){if(_0x5d4702){return _0x5d4702[_0x9ed8('0x1e')]()[_0x9ed8('0x1d')](function(){_0x5e4b2d[_0x9ed8('0x14')](0xcc)[_0x9ed8('0x15')]();});}};}function handleEntityNotFound(_0x41e9dd){return function(_0x458a02){if(!_0x458a02){_0x41e9dd['sendStatus'](0x194);}return _0x458a02;};}function handleError(_0xa8900c,_0x113bad){_0x113bad=_0x113bad||0x1f4;return function(_0x2f30af){logger[_0x9ed8('0x1f')](_0x2f30af[_0x9ed8('0x20')]);if(_0x2f30af[_0x9ed8('0x21')]){delete _0x2f30af['name'];}_0xa8900c['status'](_0x113bad)[_0x9ed8('0x22')](_0x2f30af);};}exports[_0x9ed8('0x23')]=function(_0x351d75,_0x1b3dde){var _0x4f28f3={};var _0x1aa783=_['map'](db['MailInteraction'][_0x9ed8('0x24')],function(_0x4f9f18){return{'name':_0x4f9f18[_0x9ed8('0x25')],'type':_0x4f9f18[_0x9ed8('0x26')]['key']};});_0x4f28f3=qs[_0x9ed8('0x27')](_0x1aa783,_0x351d75);return interaction[_0x9ed8('0x28')](_0x9ed8('0x29'),_0x351d75[_0x9ed8('0x2a')],_0x351d75[_0x9ed8('0x2b')],_0x4f28f3,_0x1aa783)['then'](respondWithFilteredResult(_0x1b3dde,_0x4f28f3))['catch'](handleError(_0x1b3dde,null));};exports[_0x9ed8('0x2c')]=function(_0x43bb65,_0x326d57){var _0x267572={'raw':![],'where':{'id':_0x43bb65[_0x9ed8('0x2d')]['id']}},_0xff1ad0={};_0xff1ad0['model']=_[_0x9ed8('0x2e')](db[_0x9ed8('0x2f')]['rawAttributes']);_0xff1ad0['query']=_['keys'](_0x43bb65[_0x9ed8('0x2a')]);_0xff1ad0['filters']=_['intersection'](_0xff1ad0[_0x9ed8('0x30')],_0xff1ad0[_0x9ed8('0x2a')]);_0x267572['attributes']=_['intersection'](_0xff1ad0[_0x9ed8('0x30')],qs[_0x9ed8('0x31')](_0x43bb65[_0x9ed8('0x2a')][_0x9ed8('0x31')]));_0x267572['attributes']=_0x267572[_0x9ed8('0x32')]['length']?_0x267572[_0x9ed8('0x32')]:_0xff1ad0[_0x9ed8('0x30')];if(_0x43bb65[_0x9ed8('0x2a')][_0x9ed8('0x33')]){_0x267572[_0x9ed8('0x34')]=[{'all':!![]}];}_0x267572=_['merge']({},_0x267572,_0x43bb65[_0x9ed8('0x35')]);return db[_0x9ed8('0x2f')][_0x9ed8('0x36')](_0x267572)[_0x9ed8('0x1d')](handleEntityNotFound(_0x326d57,null))['then'](respondWithResult(_0x326d57,null))[_0x9ed8('0x37')](handleError(_0x326d57,null));};exports['create']=function(_0x976b2c,_0x5a97f2){return db['MailInteraction']['create'](_0x976b2c[_0x9ed8('0x38')],{})[_0x9ed8('0x1d')](respondWithResult(_0x5a97f2,0xc9))['catch'](handleError(_0x5a97f2,null));};exports[_0x9ed8('0x39')]=function(_0x4282f8,_0xb9b4ea){if(_0x4282f8[_0x9ed8('0x38')]['id']){delete _0x4282f8['body']['id'];}return db[_0x9ed8('0x2f')]['find']({'where':{'id':_0x4282f8['params']['id']}})[_0x9ed8('0x1d')](handleEntityNotFound(_0xb9b4ea,null))[_0x9ed8('0x1d')](saveUpdates(_0x4282f8[_0x9ed8('0x38')],null))[_0x9ed8('0x1d')](respondWithResult(_0xb9b4ea,null))[_0x9ed8('0x37')](handleError(_0xb9b4ea,null));};exports['destroy']=function(_0x18c2bc,_0x7ed5b3){return db[_0x9ed8('0x2f')][_0x9ed8('0x36')]({'where':{'id':_0x18c2bc['params']['id']}})[_0x9ed8('0x1d')](handleEntityNotFound(_0x7ed5b3,null))['then'](removeEntity(_0x7ed5b3,null))[_0x9ed8('0x37')](handleError(_0x7ed5b3,null));};exports[_0x9ed8('0x3a')]=function(_0x56e71b,_0x1d4137){return db[_0x9ed8('0x2f')][_0x9ed8('0x3a')]()[_0x9ed8('0x1d')](respondWithResult(_0x1d4137,null))[_0x9ed8('0x37')](handleError(_0x1d4137,null));};exports[_0x9ed8('0x3b')]=function(_0xedd6ca,_0x305ca3){return db[_0x9ed8('0x3c')][_0x9ed8('0x36')]({'where':{'id':_0xedd6ca[_0x9ed8('0x2d')]['id']}})['then'](handleEntityNotFound(_0x305ca3,null))[_0x9ed8('0x1d')](function(_0x27cd24){if(_0x27cd24){return _0x27cd24[_0x9ed8('0x3b')](_0xedd6ca[_0x9ed8('0x38')]['ids'],_[_0x9ed8('0x3d')](_0xedd6ca['body'],[_0x9ed8('0x3e'),'id'])||{});}})[_0x9ed8('0x1d')](respondWithResult(_0x305ca3,null))[_0x9ed8('0x37')](handleError(_0x305ca3,null));};exports[_0x9ed8('0x3f')]=function(_0x405789,_0x1ee9e6){var _0x165fe7={'raw':![],'where':{}};var _0x176074={};var _0x2fb1c3={'count':0x0,'rows':[]};return db[_0x9ed8('0x2f')][_0x9ed8('0x40')]({'where':{'id':_0x405789[_0x9ed8('0x2d')]['id']}})[_0x9ed8('0x1d')](handleEntityNotFound(_0x1ee9e6,null))[_0x9ed8('0x1d')](function(_0x1a80b8){if(_0x1a80b8){_0x176074[_0x9ed8('0x30')]=_[_0x9ed8('0x2e')](db['MailMessage'][_0x9ed8('0x24')]);_0x176074[_0x9ed8('0x2a')]=_['keys'](_0x405789[_0x9ed8('0x2a')]);_0x176074[_0x9ed8('0x41')]=_['intersection'](_0x176074[_0x9ed8('0x30')],_0x176074[_0x9ed8('0x2a')]);_0x165fe7[_0x9ed8('0x32')]=_[_0x9ed8('0x42')](_0x176074[_0x9ed8('0x30')],qs['fields'](_0x405789['query'][_0x9ed8('0x31')]));_0x165fe7[_0x9ed8('0x32')]=_0x165fe7[_0x9ed8('0x32')]['length']?_0x165fe7[_0x9ed8('0x32')]:_0x176074[_0x9ed8('0x30')];if(!_0x405789['query'][_0x9ed8('0x43')](_0x9ed8('0x44'))){_0x165fe7[_0x9ed8('0x1a')]=qs[_0x9ed8('0x1a')](_0x405789[_0x9ed8('0x2a')][_0x9ed8('0x1a')]);_0x165fe7[_0x9ed8('0x17')]=qs[_0x9ed8('0x17')](_0x405789[_0x9ed8('0x2a')][_0x9ed8('0x17')]);}_0x165fe7[_0x9ed8('0x45')]=qs['sort'](_0x405789[_0x9ed8('0x2a')]['sort']);_0x165fe7['where']=qs[_0x9ed8('0x41')](_[_0x9ed8('0x46')](_0x405789[_0x9ed8('0x2a')],_0x176074['filters']));_0x165fe7['where'][_0x9ed8('0x47')]=_0x1a80b8['id'];if(_0x405789[_0x9ed8('0x2a')]['filter']){_0x165fe7[_0x9ed8('0x48')]=_[_0x9ed8('0x49')](_0x165fe7[_0x9ed8('0x48')],{'$or':_[_0x9ed8('0x4a')](_0x165fe7[_0x9ed8('0x32')],function(_0x12bd4c){var _0x2fab59={};_0x2fab59[_0x12bd4c]={'$like':'%'+_0x405789[_0x9ed8('0x2a')][_0x9ed8('0x4b')]+'%'};return _0x2fab59;})});}if(_0x405789['query'][_0x9ed8('0x4c')]){var _0x37b5b9=_0x405789[_0x9ed8('0x2a')][_0x9ed8('0x4c')]['split'](',');var _0x2c5f4f={};_0x2c5f4f[_0x37b5b9[0x0]]={'$gte':moment(_0x37b5b9[0x1])[_0x9ed8('0x4d')](_0x9ed8('0x4e'))};_0x165fe7[_0x9ed8('0x48')]=_[_0x9ed8('0x49')](_0x165fe7[_0x9ed8('0x48')],_0x2c5f4f);}_0x165fe7=_['merge']({},_0x165fe7,_0x405789[_0x9ed8('0x35')]);return db[_0x9ed8('0x3c')][_0x9ed8('0x19')]({'where':_0x165fe7['where']})[_0x9ed8('0x1d')](function(_0x456504){_0x2fb1c3[_0x9ed8('0x19')]=_0x456504;if(_0x405789[_0x9ed8('0x2a')][_0x9ed8('0x33')]){_0x165fe7[_0x9ed8('0x34')]=[{'all':!![]}];}return db[_0x9ed8('0x3c')][_0x9ed8('0x28')](_0x165fe7);})[_0x9ed8('0x1d')](function(_0x18fb14){if(_0x405789[_0x9ed8('0x2a')][_0x9ed8('0x4f')]===_0x9ed8('0x50')){for(var _0x42caff=0x0;_0x42caff<_0x18fb14[_0x9ed8('0x51')];_0x42caff++){_0x18fb14[_0x42caff][_0x9ed8('0x38')]=juice(_0x18fb14[_0x42caff][_0x9ed8('0x38')]);}}_0x2fb1c3[_0x9ed8('0x52')]=_0x18fb14;return _0x2fb1c3;});}})[_0x9ed8('0x1d')](respondWithFilteredResult(_0x1ee9e6,_0x165fe7))[_0x9ed8('0x37')](handleError(_0x1ee9e6,null));};exports[_0x9ed8('0x53')]=function(_0x2c7a4,_0x26f961){return db[_0x9ed8('0x2f')]['find']({'where':{'id':_0x2c7a4[_0x9ed8('0x2d')]['id']}})[_0x9ed8('0x1d')](handleEntityNotFound(_0x26f961,null))[_0x9ed8('0x1d')](function(_0x25205d){if(_0x25205d){return _0x25205d['setTags'](_0x2c7a4['body'][_0x9ed8('0x3e')],_[_0x9ed8('0x3d')](_0x2c7a4[_0x9ed8('0x38')],[_0x9ed8('0x3e'),'id'])||{})[_0x9ed8('0x54')](function(){return db[_0x9ed8('0x55')][_0x9ed8('0x28')]({'attributes':['id','name',_0x9ed8('0x56')],'where':{'id':_0x2c7a4[_0x9ed8('0x38')][_0x9ed8('0x3e')]}});})[_0x9ed8('0x1d')](function(_0x4c7d41){socket[_0x9ed8('0x57')](_0x9ed8('0x58'),{'id':Number(_0x2c7a4[_0x9ed8('0x2d')]['id']),'tags':_0x4c7d41||[]});return{'id':Number(_0x2c7a4['params']['id']),'tags':_0x4c7d41||[]};});}})[_0x9ed8('0x1d')](respondWithResult(_0x26f961,null))['catch'](handleError(_0x26f961,null));};exports['removeTags']=function(_0x451cce,_0x485b15){return db[_0x9ed8('0x2f')]['find']({'where':{'id':_0x451cce[_0x9ed8('0x2d')]['id']}})[_0x9ed8('0x1d')](handleEntityNotFound(_0x485b15,null))[_0x9ed8('0x1d')](function(_0x588e8d){if(_0x588e8d){return _0x588e8d[_0x9ed8('0x59')](_0x451cce[_0x9ed8('0x2a')]['ids']);}})['then'](respondWithStatusCode(_0x485b15,null))[_0x9ed8('0x37')](handleError(_0x485b15,null));};exports['download']=function(_0x579039,_0x46abf2){var _0xcba2ee=moment()[_0x9ed8('0x5a')]()[_0x9ed8('0x5b')]();var _0x3e9950=path[_0x9ed8('0x5c')](config['root'],_0x9ed8('0x5d'),'files',_0x9ed8('0x5e'));var _0x412f8e=path[_0x9ed8('0x5c')](config[_0x9ed8('0x5f')],_0x9ed8('0x5d'),_0x9ed8('0x60'),'attachments');var _0x23c1dc=path[_0x9ed8('0x5c')](_0x3e9950,_0xcba2ee);var _0x5afa7a=util[_0x9ed8('0x4d')](_0x9ed8('0x61'),_0x579039[_0x9ed8('0x2d')]['id'],_0xcba2ee);var _0x51f07a=path[_0x9ed8('0x5c')](_0x3e9950,_0x5afa7a);var _0x296395=[];if(_0x579039[_0x9ed8('0x2a')]['attachments']){_0x296395[_0x9ed8('0x62')]({'model':db[_0x9ed8('0x63')],'as':_0x9ed8('0x64'),'raw':!![]});}var _0x8eb622=[{'model':db[_0x9ed8('0x3c')],'as':_0x9ed8('0x65'),'attributes':['id',_0x9ed8('0x38'),_0x9ed8('0x66'),'to','cc',_0x9ed8('0x67'),_0x9ed8('0x68'),_0x9ed8('0x69')],'where':{'secret':![]},'order':qs[_0x9ed8('0x6a')]('id'),'include':_0x296395}];return db[_0x9ed8('0x2f')][_0x9ed8('0x36')]({'where':{'id':_0x579039[_0x9ed8('0x2d')]['id']},'include':_0x8eb622})[_0x9ed8('0x1d')](handleEntityNotFound(_0x46abf2,null))[_0x9ed8('0x1d')](function(_0x12acb3){if(_0x12acb3&&_0x12acb3[_0x9ed8('0x65')]){var _0x30ae4d=_0x12acb3[_0x9ed8('0x6b')]({'plain':!![]});fs[_0x9ed8('0x6c')](_0x23c1dc);return BPromise[_0x9ed8('0x6d')](_0x30ae4d[_0x9ed8('0x65')],function(_0x497069,_0x26b1eb){var _0x16d37e={'from':_0x497069[_0x9ed8('0x66')],'to':_0x497069['to']||_0x9ed8('0x6e'),'subject':_0x497069[_0x9ed8('0x68')],'html':htmlEntities['decode'](_0x497069[_0x9ed8('0x38')]),'headers':{'Date':moment(_0x497069[_0x9ed8('0x69')])[_0x9ed8('0x4d')](_0x9ed8('0x6f'))},'attachments':[]};if(_0x497069['cc']){_0x16d37e['headers']['Cc']=_0x497069['cc'];}if(_0x497069[_0x9ed8('0x67')]){_0x16d37e['headers'][_0x9ed8('0x70')]=_0x497069[_0x9ed8('0x67')];}return new BPromise(function(_0x3f33d0,_0x16b507){if(_0x497069[_0x9ed8('0x64')]){for(var _0x2a0d0f=0x0;_0x2a0d0f<_0x497069['Attachments'][_0x9ed8('0x51')];_0x2a0d0f++){var _0x58cc6f=_0x497069[_0x9ed8('0x64')][_0x2a0d0f];var _0x453813=path['join'](_0x412f8e,_0x58cc6f[_0x9ed8('0x71')]);if(fs['existsSync'](_0x453813)){_0x16d37e['attachments'][_0x9ed8('0x62')]({'name':_0x58cc6f[_0x9ed8('0x21')],'contentType':_0x58cc6f[_0x9ed8('0x26')],'data':fs[_0x9ed8('0x72')](_0x453813)});}}}emlformat[_0x9ed8('0x73')](_0x16d37e,function(_0x5c51e7,_0x1e6dc7){if(_0x5c51e7)return _0x16b507(_0x5c51e7);fs['writeFileSync'](path['join'](_0x23c1dc,util[_0x9ed8('0x4d')](_0x9ed8('0x74'),_0x26b1eb)),_0x1e6dc7);return _0x3f33d0(_0x1e6dc7);});});})[_0x9ed8('0x1d')](function(){return new BPromise(function(_0x220425,_0x2b353b){zipdir(_0x23c1dc,{'saveTo':_0x51f07a},function(_0x2353aa,_0xdb4e6){if(_0x2353aa)return _0x2b353b(_0x2353aa);return _0x220425(_0xdb4e6);});})[_0x9ed8('0x1d')](function(){return new BPromise(function(_0x4d9340,_0x328267){rimraf(_0x23c1dc,function(_0x1e7762){if(_0x1e7762)_0x328267(_0x1e7762);return _0x4d9340();});});})[_0x9ed8('0x1d')](function(){return _0x46abf2['download'](_0x51f07a,_0x5afa7a,function(_0x2dba07){if(!_0x2dba07)fs['unlinkSync'](_0x51f07a);});});});}else{return _0x46abf2[_0x9ed8('0x13')](0xc8);}})[_0x9ed8('0x37')](handleError(_0x46abf2,null));};