Built motion from commit 1fa89557.|2.6.10
[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 _0xdee7=['describe','addMessage','ids','omit','getMessages','hasOwnProperty','nolimit','sort','where','pick','filters','MailInteractionId','filter','merge','$gte','split','format','MailMessage','findAll','true','addTags','setTags','spread','color','emit','mailInteractionTags:save','removeTags','download','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachment','Messages','from','bcc','subject','createdAt','get','mkdirSync','each','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','Attachments','basename','existsSync','readFileSync','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util','path','juice','ioredis','../../config/logger','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','set','Content-Range','then','destroy','sendStatus','error','stack','name','send','index','map','MailInteraction','type','key','getOptions','mail','query','user','catch','show','model','keys','intersection','attributes','fields','length','includeAll','options','find','create','body','update','params'];(function(_0x23a629,_0xdbe85){var _0x471143=function(_0x51696e){while(--_0x51696e){_0x23a629['push'](_0x23a629['shift']());}};_0x471143(++_0xdbe85);}(_0xdee7,0x192));var _0x7dee=function(_0x4b70d2,_0x2c6992){_0x4b70d2=_0x4b70d2-0x0;var _0x28a556=_0xdee7[_0x4b70d2];return _0x28a556;};'use strict';var emlformat=require(_0x7dee('0x0'));var rimraf=require(_0x7dee('0x1'));var zipdir=require(_0x7dee('0x2'));var moment=require(_0x7dee('0x3'));var BPromise=require(_0x7dee('0x4'));var util=require(_0x7dee('0x5'));var path=require(_0x7dee('0x6'));var fs=require('fs');var _=require('lodash');var juice=require(_0x7dee('0x7'));var Redis=require(_0x7dee('0x8'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var logger=require(_0x7dee('0x9'))('api');var config=require(_0x7dee('0xa'));var db=require(_0x7dee('0xb'))['db'];var htmlEntities=require(_0x7dee('0xc'));config[_0x7dee('0xd')]=_[_0x7dee('0xe')](config['redis'],{'host':_0x7dee('0xf'),'port':0x18eb});var socket=require(_0x7dee('0x10'))(new Redis(config['redis']));require('./mailInteraction.socket')[_0x7dee('0x11')](socket);function respondWithStatusCode(_0x5175db,_0x31c831){_0x31c831=_0x31c831||0xcc;return function(_0x48c59e){if(_0x48c59e){return _0x5175db['sendStatus'](_0x31c831);}return _0x5175db[_0x7dee('0x12')](_0x31c831)[_0x7dee('0x13')]();};}function respondWithResult(_0x12f0b3,_0x42b4e4){_0x42b4e4=_0x42b4e4||0xc8;return function(_0x55ed24){if(_0x55ed24){return _0x12f0b3[_0x7dee('0x12')](_0x42b4e4)[_0x7dee('0x14')](_0x55ed24);}};}function respondWithFilteredResult(_0x2a73f5,_0x2da173){return function(_0x2a3dec){if(_0x2a3dec){var _0x251392=typeof _0x2da173[_0x7dee('0x15')]===_0x7dee('0x16')&&typeof _0x2da173[_0x7dee('0x17')]===_0x7dee('0x16');var _0x2910bf=_0x2a3dec[_0x7dee('0x18')];var _0x1c8e27=_0x251392?0x0:_0x2da173[_0x7dee('0x15')];var _0x2c1b7f=_0x251392?_0x2a3dec[_0x7dee('0x18')]:_0x2da173[_0x7dee('0x15')]+_0x2da173[_0x7dee('0x17')];var _0x3450d1;if(_0x2c1b7f>=_0x2910bf){_0x2c1b7f=_0x2910bf;_0x3450d1=0xc8;}else{_0x3450d1=0xce;}_0x2a73f5[_0x7dee('0x12')](_0x3450d1);return _0x2a73f5[_0x7dee('0x19')](_0x7dee('0x1a'),_0x1c8e27+'-'+_0x2c1b7f+'/'+_0x2910bf)[_0x7dee('0x14')](_0x2a3dec);}return null;};}function saveUpdates(_0x31732d){return function(_0x1b1351){if(_0x1b1351){return _0x1b1351['update'](_0x31732d)[_0x7dee('0x1b')](function(_0x49314d){return _0x49314d;});}return null;};}function removeEntity(_0x4a5cea){return function(_0x3d1b0d){if(_0x3d1b0d){return _0x3d1b0d[_0x7dee('0x1c')]()[_0x7dee('0x1b')](function(){_0x4a5cea[_0x7dee('0x12')](0xcc)[_0x7dee('0x13')]();});}};}function handleEntityNotFound(_0x438ece){return function(_0x67ccb4){if(!_0x67ccb4){_0x438ece[_0x7dee('0x1d')](0x194);}return _0x67ccb4;};}function handleError(_0x2516d2,_0x12e514){_0x12e514=_0x12e514||0x1f4;return function(_0x5b1dca){logger[_0x7dee('0x1e')](_0x5b1dca[_0x7dee('0x1f')]);if(_0x5b1dca[_0x7dee('0x20')]){delete _0x5b1dca[_0x7dee('0x20')];}_0x2516d2[_0x7dee('0x12')](_0x12e514)[_0x7dee('0x21')](_0x5b1dca);};}exports[_0x7dee('0x22')]=function(_0xb37736,_0x34d039){var _0x29a850={};var _0x2369c8=_[_0x7dee('0x23')](db[_0x7dee('0x24')]['rawAttributes'],function(_0x3fd732){return{'name':_0x3fd732['fieldName'],'type':_0x3fd732[_0x7dee('0x25')][_0x7dee('0x26')]};});_0x29a850=qs[_0x7dee('0x27')](_0x2369c8,_0xb37736);return interaction['findAll'](_0x7dee('0x28'),_0xb37736[_0x7dee('0x29')],_0xb37736[_0x7dee('0x2a')],_0x29a850,_0x2369c8)[_0x7dee('0x1b')](respondWithFilteredResult(_0x34d039,_0x29a850))[_0x7dee('0x2b')](handleError(_0x34d039,null));};exports[_0x7dee('0x2c')]=function(_0x531350,_0x54e711){var _0x48dd2f={'raw':![],'where':{'id':_0x531350['params']['id']}},_0x33d332={};_0x33d332[_0x7dee('0x2d')]=_[_0x7dee('0x2e')](db[_0x7dee('0x24')]['rawAttributes']);_0x33d332['query']=_[_0x7dee('0x2e')](_0x531350['query']);_0x33d332['filters']=_[_0x7dee('0x2f')](_0x33d332[_0x7dee('0x2d')],_0x33d332[_0x7dee('0x29')]);_0x48dd2f[_0x7dee('0x30')]=_['intersection'](_0x33d332[_0x7dee('0x2d')],qs[_0x7dee('0x31')](_0x531350[_0x7dee('0x29')][_0x7dee('0x31')]));_0x48dd2f[_0x7dee('0x30')]=_0x48dd2f[_0x7dee('0x30')][_0x7dee('0x32')]?_0x48dd2f[_0x7dee('0x30')]:_0x33d332['model'];if(_0x531350['query'][_0x7dee('0x33')]){_0x48dd2f['include']=[{'all':!![]}];}_0x48dd2f=_['merge']({},_0x48dd2f,_0x531350[_0x7dee('0x34')]);return db[_0x7dee('0x24')][_0x7dee('0x35')](_0x48dd2f)[_0x7dee('0x1b')](handleEntityNotFound(_0x54e711,null))[_0x7dee('0x1b')](respondWithResult(_0x54e711,null))['catch'](handleError(_0x54e711,null));};exports[_0x7dee('0x36')]=function(_0x3a4d46,_0x3494b0){return db['MailInteraction']['create'](_0x3a4d46[_0x7dee('0x37')],{})[_0x7dee('0x1b')](respondWithResult(_0x3494b0,0xc9))[_0x7dee('0x2b')](handleError(_0x3494b0,null));};exports[_0x7dee('0x38')]=function(_0x202952,_0x26a39e){if(_0x202952[_0x7dee('0x37')]['id']){delete _0x202952['body']['id'];}return db[_0x7dee('0x24')][_0x7dee('0x35')]({'where':{'id':_0x202952[_0x7dee('0x39')]['id']}})['then'](handleEntityNotFound(_0x26a39e,null))[_0x7dee('0x1b')](saveUpdates(_0x202952[_0x7dee('0x37')],null))['then'](respondWithResult(_0x26a39e,null))[_0x7dee('0x2b')](handleError(_0x26a39e,null));};exports[_0x7dee('0x1c')]=function(_0x43b1e9,_0x4b45ce){return db[_0x7dee('0x24')][_0x7dee('0x35')]({'where':{'id':_0x43b1e9[_0x7dee('0x39')]['id']}})['then'](handleEntityNotFound(_0x4b45ce,null))['then'](removeEntity(_0x4b45ce,null))[_0x7dee('0x2b')](handleError(_0x4b45ce,null));};exports[_0x7dee('0x3a')]=function(_0x267a69,_0x3d1b03){return db[_0x7dee('0x24')][_0x7dee('0x3a')]()[_0x7dee('0x1b')](respondWithResult(_0x3d1b03,null))['catch'](handleError(_0x3d1b03,null));};exports[_0x7dee('0x3b')]=function(_0x23959e,_0x25c682){return db['MailMessage']['find']({'where':{'id':_0x23959e['params']['id']}})[_0x7dee('0x1b')](handleEntityNotFound(_0x25c682,null))[_0x7dee('0x1b')](function(_0x229aaa){if(_0x229aaa){return _0x229aaa[_0x7dee('0x3b')](_0x23959e[_0x7dee('0x37')][_0x7dee('0x3c')],_[_0x7dee('0x3d')](_0x23959e[_0x7dee('0x37')],['ids','id'])||{});}})[_0x7dee('0x1b')](respondWithResult(_0x25c682,null))[_0x7dee('0x2b')](handleError(_0x25c682,null));};exports[_0x7dee('0x3e')]=function(_0x500cda,_0x58c16f){var _0x402131={'raw':![],'where':{}};var _0xa1d764={};var _0x4ba74a={'count':0x0,'rows':[]};return db['MailInteraction']['findOne']({'where':{'id':_0x500cda[_0x7dee('0x39')]['id']}})[_0x7dee('0x1b')](handleEntityNotFound(_0x58c16f,null))[_0x7dee('0x1b')](function(_0x17ed04){if(_0x17ed04){_0xa1d764[_0x7dee('0x2d')]=_[_0x7dee('0x2e')](db['MailMessage']['rawAttributes']);_0xa1d764[_0x7dee('0x29')]=_[_0x7dee('0x2e')](_0x500cda[_0x7dee('0x29')]);_0xa1d764['filters']=_[_0x7dee('0x2f')](_0xa1d764[_0x7dee('0x2d')],_0xa1d764['query']);_0x402131['attributes']=_[_0x7dee('0x2f')](_0xa1d764[_0x7dee('0x2d')],qs[_0x7dee('0x31')](_0x500cda[_0x7dee('0x29')][_0x7dee('0x31')]));_0x402131['attributes']=_0x402131['attributes'][_0x7dee('0x32')]?_0x402131[_0x7dee('0x30')]:_0xa1d764[_0x7dee('0x2d')];if(!_0x500cda['query'][_0x7dee('0x3f')](_0x7dee('0x40'))){_0x402131[_0x7dee('0x17')]=qs[_0x7dee('0x17')](_0x500cda[_0x7dee('0x29')][_0x7dee('0x17')]);_0x402131[_0x7dee('0x15')]=qs[_0x7dee('0x15')](_0x500cda[_0x7dee('0x29')][_0x7dee('0x15')]);}_0x402131['order']=qs[_0x7dee('0x41')](_0x500cda[_0x7dee('0x29')][_0x7dee('0x41')]);_0x402131[_0x7dee('0x42')]=qs['filters'](_[_0x7dee('0x43')](_0x500cda['query'],_0xa1d764[_0x7dee('0x44')]));_0x402131['where'][_0x7dee('0x45')]=_0x17ed04['id'];if(_0x500cda['query'][_0x7dee('0x46')]){_0x402131[_0x7dee('0x42')]=_[_0x7dee('0x47')](_0x402131[_0x7dee('0x42')],{'$or':_[_0x7dee('0x23')](_0x402131[_0x7dee('0x30')],function(_0x11a2c9){var _0x4b85be={};_0x4b85be[_0x11a2c9]={'$like':'%'+_0x500cda[_0x7dee('0x29')]['filter']+'%'};return _0x4b85be;})});}if(_0x500cda[_0x7dee('0x29')][_0x7dee('0x48')]){var _0x2b05b9=_0x500cda['query'][_0x7dee('0x48')][_0x7dee('0x49')](',');var _0x48c059={};_0x48c059[_0x2b05b9[0x0]]={'$gte':moment(_0x2b05b9[0x1])[_0x7dee('0x4a')]('YYYY-MM-DD\x20HH:mm:ss')};_0x402131['where']=_[_0x7dee('0x47')](_0x402131[_0x7dee('0x42')],_0x48c059);}_0x402131=_[_0x7dee('0x47')]({},_0x402131,_0x500cda['options']);return db[_0x7dee('0x4b')]['count']({'where':_0x402131[_0x7dee('0x42')]})[_0x7dee('0x1b')](function(_0xc43e2d){_0x4ba74a[_0x7dee('0x18')]=_0xc43e2d;if(_0x500cda['query'][_0x7dee('0x33')]){_0x402131['include']=[{'all':!![]}];}return db[_0x7dee('0x4b')][_0x7dee('0x4c')](_0x402131);})[_0x7dee('0x1b')](function(_0x17f8c4){if(_0x500cda[_0x7dee('0x29')]['inlineCss']===_0x7dee('0x4d')){for(var _0x2d21e1=0x0;_0x2d21e1<_0x17f8c4[_0x7dee('0x32')];_0x2d21e1++){_0x17f8c4[_0x2d21e1]['body']=juice(_0x17f8c4[_0x2d21e1][_0x7dee('0x37')]);}}_0x4ba74a['rows']=_0x17f8c4;return _0x4ba74a;});}})[_0x7dee('0x1b')](respondWithFilteredResult(_0x58c16f,_0x402131))[_0x7dee('0x2b')](handleError(_0x58c16f,null));};exports[_0x7dee('0x4e')]=function(_0x3acbe2,_0x6a8be3){return db['MailInteraction'][_0x7dee('0x35')]({'where':{'id':_0x3acbe2['params']['id']}})['then'](handleEntityNotFound(_0x6a8be3,null))[_0x7dee('0x1b')](function(_0x466557){if(_0x466557){return _0x466557[_0x7dee('0x4f')](_0x3acbe2[_0x7dee('0x37')][_0x7dee('0x3c')],_['omit'](_0x3acbe2['body'],[_0x7dee('0x3c'),'id'])||{})[_0x7dee('0x50')](function(){return db['Tag']['findAll']({'attributes':['id','name',_0x7dee('0x51')],'where':{'id':_0x3acbe2[_0x7dee('0x37')]['ids']}});})[_0x7dee('0x1b')](function(_0x31e89c){socket[_0x7dee('0x52')](_0x7dee('0x53'),{'id':Number(_0x3acbe2[_0x7dee('0x39')]['id']),'tags':_0x31e89c||[]});return{'id':Number(_0x3acbe2['params']['id']),'tags':_0x31e89c||[]};});}})[_0x7dee('0x1b')](respondWithResult(_0x6a8be3,null))[_0x7dee('0x2b')](handleError(_0x6a8be3,null));};exports[_0x7dee('0x54')]=function(_0x2a28ba,_0x320371){return db[_0x7dee('0x24')][_0x7dee('0x35')]({'where':{'id':_0x2a28ba[_0x7dee('0x39')]['id']}})[_0x7dee('0x1b')](handleEntityNotFound(_0x320371,null))[_0x7dee('0x1b')](function(_0x2aba57){if(_0x2aba57){return _0x2aba57[_0x7dee('0x54')](_0x2a28ba['query'][_0x7dee('0x3c')]);}})[_0x7dee('0x1b')](respondWithStatusCode(_0x320371,null))[_0x7dee('0x2b')](handleError(_0x320371,null));};exports[_0x7dee('0x55')]=function(_0x21ac8f,_0xaa2c26){var _0x5f4913=moment()['unix']()[_0x7dee('0x56')]();var _0x554a1e=path[_0x7dee('0x57')](config[_0x7dee('0x58')],_0x7dee('0x59'),_0x7dee('0x5a'),_0x7dee('0x5b'));var _0x58e265=path[_0x7dee('0x57')](config['root'],_0x7dee('0x59'),_0x7dee('0x5a'),_0x7dee('0x5c'));var _0x592450=path[_0x7dee('0x57')](_0x554a1e,_0x5f4913);var _0x10280f=util['format'](_0x7dee('0x5d'),_0x21ac8f[_0x7dee('0x39')]['id'],_0x5f4913);var _0x4118f1=path[_0x7dee('0x57')](_0x554a1e,_0x10280f);var _0x1f8f93=[];if(_0x21ac8f[_0x7dee('0x29')][_0x7dee('0x5c')]){_0x1f8f93[_0x7dee('0x5e')]({'model':db[_0x7dee('0x5f')],'as':'Attachments','raw':!![]});}var _0x5579e0=[{'model':db[_0x7dee('0x4b')],'as':_0x7dee('0x60'),'attributes':['id',_0x7dee('0x37'),_0x7dee('0x61'),'to','cc',_0x7dee('0x62'),_0x7dee('0x63'),_0x7dee('0x64')],'where':{'secret':![]},'order':qs[_0x7dee('0x41')]('id'),'include':_0x1f8f93}];return db['MailInteraction'][_0x7dee('0x35')]({'where':{'id':_0x21ac8f[_0x7dee('0x39')]['id']},'include':_0x5579e0})['then'](handleEntityNotFound(_0xaa2c26,null))['then'](function(_0x5e6608){if(_0x5e6608&&_0x5e6608['Messages']){var _0x5c2f25=_0x5e6608[_0x7dee('0x65')]({'plain':!![]});fs[_0x7dee('0x66')](_0x592450);return BPromise[_0x7dee('0x67')](_0x5c2f25[_0x7dee('0x60')],function(_0x128c2c,_0x2be0af){var _0x4aa087={'from':_0x128c2c['from'],'to':_0x128c2c['to']||'missing.recipient@your.company.com','subject':_0x128c2c['subject'],'html':htmlEntities[_0x7dee('0x68')](_0x128c2c[_0x7dee('0x37')]),'headers':{'Date':moment(_0x128c2c[_0x7dee('0x64')])[_0x7dee('0x4a')](_0x7dee('0x69'))},'attachments':[]};if(_0x128c2c['cc']){_0x4aa087['headers']['Cc']=_0x128c2c['cc'];}if(_0x128c2c[_0x7dee('0x62')]){_0x4aa087[_0x7dee('0x6a')][_0x7dee('0x6b')]=_0x128c2c[_0x7dee('0x62')];}return new BPromise(function(_0xede586,_0x32a6d8){if(_0x128c2c[_0x7dee('0x6c')]){for(var _0x29bf4f=0x0;_0x29bf4f<_0x128c2c[_0x7dee('0x6c')][_0x7dee('0x32')];_0x29bf4f++){var _0xb390a9=_0x128c2c['Attachments'][_0x29bf4f];var _0xedcc6b=path[_0x7dee('0x57')](_0x58e265,_0xb390a9[_0x7dee('0x6d')]);if(fs[_0x7dee('0x6e')](_0xedcc6b)){_0x4aa087[_0x7dee('0x5c')][_0x7dee('0x5e')]({'name':_0xb390a9[_0x7dee('0x20')],'contentType':_0xb390a9[_0x7dee('0x25')],'data':fs[_0x7dee('0x6f')](_0xedcc6b)});}}}emlformat['build'](_0x4aa087,function(_0xf2ab72,_0x14eb46){if(_0xf2ab72)return _0x32a6d8(_0xf2ab72);fs[_0x7dee('0x70')](path['join'](_0x592450,util[_0x7dee('0x4a')](_0x7dee('0x71'),_0x2be0af)),_0x14eb46);return _0xede586(_0x14eb46);});});})[_0x7dee('0x1b')](function(){return new BPromise(function(_0xf65f5a,_0x2493ba){zipdir(_0x592450,{'saveTo':_0x4118f1},function(_0x5d5413,_0x1a0ded){if(_0x5d5413)return _0x2493ba(_0x5d5413);return _0xf65f5a(_0x1a0ded);});})[_0x7dee('0x1b')](function(){return new BPromise(function(_0x1f8dab,_0x375573){rimraf(_0x592450,function(_0x5c981b){if(_0x5c981b)_0x375573(_0x5c981b);return _0x1f8dab();});});})[_0x7dee('0x1b')](function(){return _0xaa2c26['download'](_0x4118f1,_0x10280f,function(_0x328d7a){if(!_0x328d7a)fs[_0x7dee('0x72')](_0x4118f1);});});});}else{return _0xaa2c26[_0x7dee('0x1d')](0xc8);}})[_0x7dee('0x2b')](handleError(_0xaa2c26,null));};