d805a6f0fb508b10588ada99d4037f69785c1b66
[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 _0xc488=['findOne','order','sort','where','MailInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','count','inlineCss','true','rows','addTags','setTags','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachments','Messages','from','bcc','get','mkdirSync','each','missing.recipient@your.company.com','decode','createdAt','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','existsSync','readFileSync','build','message%d.eml','eml-format','rimraf','moment','bluebird','util','path','lodash','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','./mailInteraction.socket','status','end','json','offset','undefined','limit','set','then','sendStatus','error','name','send','index','MailInteraction','rawAttributes','fieldName','key','getOptions','findAll','user','catch','show','model','keys','query','filters','intersection','attributes','fields','length','includeAll','include','merge','find','create','update','body','params','destroy','describe','addMessage','MailMessage','ids','omit','getMessages'];(function(_0x15c421,_0x6366f7){var _0x5e5ed5=function(_0x206e66){while(--_0x206e66){_0x15c421['push'](_0x15c421['shift']());}};_0x5e5ed5(++_0x6366f7);}(_0xc488,0x116));var _0x8c48=function(_0x36ffdd,_0x18cc6e){_0x36ffdd=_0x36ffdd-0x0;var _0x1b5184=_0xc488[_0x36ffdd];return _0x1b5184;};'use strict';var emlformat=require(_0x8c48('0x0'));var rimraf=require(_0x8c48('0x1'));var zipdir=require('zip-dir');var moment=require(_0x8c48('0x2'));var BPromise=require(_0x8c48('0x3'));var util=require(_0x8c48('0x4'));var path=require(_0x8c48('0x5'));var fs=require('fs');var _=require(_0x8c48('0x6'));var juice=require(_0x8c48('0x7'));var Redis=require(_0x8c48('0x8'));var interaction=require(_0x8c48('0x9'));var qs=require(_0x8c48('0xa'));var logger=require('../../config/logger')(_0x8c48('0xb'));var config=require(_0x8c48('0xc'));var db=require(_0x8c48('0xd'))['db'];var htmlEntities=require(_0x8c48('0xe'));config[_0x8c48('0xf')]=_[_0x8c48('0x10')](config[_0x8c48('0xf')],{'host':_0x8c48('0x11'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8c48('0x12'))['register'](socket);function respondWithStatusCode(_0x394299,_0xa6fb22){_0xa6fb22=_0xa6fb22||0xcc;return function(_0xd54841){if(_0xd54841){return _0x394299['sendStatus'](_0xa6fb22);}return _0x394299[_0x8c48('0x13')](_0xa6fb22)[_0x8c48('0x14')]();};}function respondWithResult(_0x3a9905,_0x3311cc){_0x3311cc=_0x3311cc||0xc8;return function(_0x3a7d5a){if(_0x3a7d5a){return _0x3a9905[_0x8c48('0x13')](_0x3311cc)[_0x8c48('0x15')](_0x3a7d5a);}};}function respondWithFilteredResult(_0x39f916,_0x9a72da){return function(_0x4fe4ea){if(_0x4fe4ea){var _0x84e136=typeof _0x9a72da[_0x8c48('0x16')]===_0x8c48('0x17')&&typeof _0x9a72da[_0x8c48('0x18')]===_0x8c48('0x17');var _0x168c55=_0x4fe4ea['count'];var _0x329aa3=_0x84e136?0x0:_0x9a72da[_0x8c48('0x16')];var _0x3dbeeb=_0x84e136?_0x4fe4ea['count']:_0x9a72da[_0x8c48('0x16')]+_0x9a72da['limit'];var _0x354d4e;if(_0x3dbeeb>=_0x168c55){_0x3dbeeb=_0x168c55;_0x354d4e=0xc8;}else{_0x354d4e=0xce;}_0x39f916['status'](_0x354d4e);return _0x39f916[_0x8c48('0x19')]('Content-Range',_0x329aa3+'-'+_0x3dbeeb+'/'+_0x168c55)[_0x8c48('0x15')](_0x4fe4ea);}return null;};}function saveUpdates(_0x93c46){return function(_0x39a4f3){if(_0x39a4f3){return _0x39a4f3['update'](_0x93c46)[_0x8c48('0x1a')](function(_0x1adff3){return _0x1adff3;});}return null;};}function removeEntity(_0x47ebdf){return function(_0x1b9daa){if(_0x1b9daa){return _0x1b9daa['destroy']()[_0x8c48('0x1a')](function(){_0x47ebdf['status'](0xcc)[_0x8c48('0x14')]();});}};}function handleEntityNotFound(_0x28a6db){return function(_0x1b7dac){if(!_0x1b7dac){_0x28a6db[_0x8c48('0x1b')](0x194);}return _0x1b7dac;};}function handleError(_0x549e05,_0x3bc15d){_0x3bc15d=_0x3bc15d||0x1f4;return function(_0x202bf8){logger[_0x8c48('0x1c')](_0x202bf8['stack']);if(_0x202bf8[_0x8c48('0x1d')]){delete _0x202bf8['name'];}_0x549e05[_0x8c48('0x13')](_0x3bc15d)[_0x8c48('0x1e')](_0x202bf8);};}exports[_0x8c48('0x1f')]=function(_0x47e204,_0x4f26ac){var _0x1c982a={};var _0x4f6b37=_['map'](db[_0x8c48('0x20')][_0x8c48('0x21')],function(_0xbb2356){return{'name':_0xbb2356[_0x8c48('0x22')],'type':_0xbb2356['type'][_0x8c48('0x23')]};});_0x1c982a=qs[_0x8c48('0x24')](_0x4f6b37,_0x47e204);return interaction[_0x8c48('0x25')]('mail',_0x47e204['query'],_0x47e204[_0x8c48('0x26')],_0x1c982a,_0x4f6b37)[_0x8c48('0x1a')](respondWithFilteredResult(_0x4f26ac,_0x1c982a))[_0x8c48('0x27')](handleError(_0x4f26ac,null));};exports[_0x8c48('0x28')]=function(_0x23abf5,_0x3cc1ee){var _0x28c126={'raw':![],'where':{'id':_0x23abf5['params']['id']}},_0x549bdf={};_0x549bdf[_0x8c48('0x29')]=_['keys'](db[_0x8c48('0x20')][_0x8c48('0x21')]);_0x549bdf['query']=_[_0x8c48('0x2a')](_0x23abf5[_0x8c48('0x2b')]);_0x549bdf[_0x8c48('0x2c')]=_[_0x8c48('0x2d')](_0x549bdf['model'],_0x549bdf[_0x8c48('0x2b')]);_0x28c126[_0x8c48('0x2e')]=_[_0x8c48('0x2d')](_0x549bdf[_0x8c48('0x29')],qs[_0x8c48('0x2f')](_0x23abf5['query'][_0x8c48('0x2f')]));_0x28c126['attributes']=_0x28c126['attributes'][_0x8c48('0x30')]?_0x28c126['attributes']:_0x549bdf['model'];if(_0x23abf5[_0x8c48('0x2b')][_0x8c48('0x31')]){_0x28c126[_0x8c48('0x32')]=[{'all':!![]}];}_0x28c126=_[_0x8c48('0x33')]({},_0x28c126,_0x23abf5['options']);return db[_0x8c48('0x20')][_0x8c48('0x34')](_0x28c126)[_0x8c48('0x1a')](handleEntityNotFound(_0x3cc1ee,null))['then'](respondWithResult(_0x3cc1ee,null))[_0x8c48('0x27')](handleError(_0x3cc1ee,null));};exports[_0x8c48('0x35')]=function(_0x5b6250,_0xb9f02e){return db['MailInteraction'][_0x8c48('0x35')](_0x5b6250['body'],{})[_0x8c48('0x1a')](respondWithResult(_0xb9f02e,0xc9))[_0x8c48('0x27')](handleError(_0xb9f02e,null));};exports[_0x8c48('0x36')]=function(_0x518cb4,_0x27d1df){if(_0x518cb4[_0x8c48('0x37')]['id']){delete _0x518cb4[_0x8c48('0x37')]['id'];}return db[_0x8c48('0x20')][_0x8c48('0x34')]({'where':{'id':_0x518cb4[_0x8c48('0x38')]['id']}})['then'](handleEntityNotFound(_0x27d1df,null))['then'](saveUpdates(_0x518cb4[_0x8c48('0x37')],null))[_0x8c48('0x1a')](respondWithResult(_0x27d1df,null))[_0x8c48('0x27')](handleError(_0x27d1df,null));};exports[_0x8c48('0x39')]=function(_0x3cecd5,_0x21849c){return db[_0x8c48('0x20')][_0x8c48('0x34')]({'where':{'id':_0x3cecd5['params']['id']}})['then'](handleEntityNotFound(_0x21849c,null))[_0x8c48('0x1a')](removeEntity(_0x21849c,null))[_0x8c48('0x27')](handleError(_0x21849c,null));};exports[_0x8c48('0x3a')]=function(_0x2edce4,_0x3df137){return db[_0x8c48('0x20')][_0x8c48('0x3a')]()[_0x8c48('0x1a')](respondWithResult(_0x3df137,null))[_0x8c48('0x27')](handleError(_0x3df137,null));};exports[_0x8c48('0x3b')]=function(_0xa540f8,_0x8884bf){return db[_0x8c48('0x3c')]['find']({'where':{'id':_0xa540f8['params']['id']}})[_0x8c48('0x1a')](handleEntityNotFound(_0x8884bf,null))['then'](function(_0x152020){if(_0x152020){return _0x152020['addMessage'](_0xa540f8[_0x8c48('0x37')][_0x8c48('0x3d')],_[_0x8c48('0x3e')](_0xa540f8[_0x8c48('0x37')],[_0x8c48('0x3d'),'id'])||{});}})[_0x8c48('0x1a')](respondWithResult(_0x8884bf,null))['catch'](handleError(_0x8884bf,null));};exports[_0x8c48('0x3f')]=function(_0x24efa3,_0x15afa7){var _0x2eefef={'raw':![],'where':{}};var _0x2f4e56={};var _0x1fb72d={'count':0x0,'rows':[]};return db['MailInteraction'][_0x8c48('0x40')]({'where':{'id':_0x24efa3['params']['id']}})[_0x8c48('0x1a')](handleEntityNotFound(_0x15afa7,null))['then'](function(_0x28e099){if(_0x28e099){_0x2f4e56['model']=_[_0x8c48('0x2a')](db[_0x8c48('0x3c')][_0x8c48('0x21')]);_0x2f4e56[_0x8c48('0x2b')]=_[_0x8c48('0x2a')](_0x24efa3['query']);_0x2f4e56[_0x8c48('0x2c')]=_[_0x8c48('0x2d')](_0x2f4e56[_0x8c48('0x29')],_0x2f4e56[_0x8c48('0x2b')]);_0x2eefef[_0x8c48('0x2e')]=_[_0x8c48('0x2d')](_0x2f4e56[_0x8c48('0x29')],qs['fields'](_0x24efa3[_0x8c48('0x2b')][_0x8c48('0x2f')]));_0x2eefef[_0x8c48('0x2e')]=_0x2eefef[_0x8c48('0x2e')]['length']?_0x2eefef[_0x8c48('0x2e')]:_0x2f4e56[_0x8c48('0x29')];if(!_0x24efa3[_0x8c48('0x2b')]['hasOwnProperty']('nolimit')){_0x2eefef[_0x8c48('0x18')]=qs['limit'](_0x24efa3[_0x8c48('0x2b')][_0x8c48('0x18')]);_0x2eefef[_0x8c48('0x16')]=qs['offset'](_0x24efa3[_0x8c48('0x2b')][_0x8c48('0x16')]);}_0x2eefef[_0x8c48('0x41')]=qs['sort'](_0x24efa3[_0x8c48('0x2b')][_0x8c48('0x42')]);_0x2eefef[_0x8c48('0x43')]=qs[_0x8c48('0x2c')](_['pick'](_0x24efa3[_0x8c48('0x2b')],_0x2f4e56[_0x8c48('0x2c')]));_0x2eefef['where'][_0x8c48('0x44')]=_0x28e099['id'];if(_0x24efa3[_0x8c48('0x2b')][_0x8c48('0x45')]){_0x2eefef[_0x8c48('0x43')]=_[_0x8c48('0x33')](_0x2eefef[_0x8c48('0x43')],{'$or':_['map'](_0x2eefef['attributes'],function(_0x42c13f){var _0x557a26={};_0x557a26[_0x42c13f]={'$like':'%'+_0x24efa3[_0x8c48('0x2b')]['filter']+'%'};return _0x557a26;})});}if(_0x24efa3[_0x8c48('0x2b')][_0x8c48('0x46')]){var _0x5e13a7=_0x24efa3['query'][_0x8c48('0x46')][_0x8c48('0x47')](',');var _0x2d0701={};_0x2d0701[_0x5e13a7[0x0]]={'$gte':moment(_0x5e13a7[0x1])[_0x8c48('0x48')](_0x8c48('0x49'))};_0x2eefef[_0x8c48('0x43')]=_['merge'](_0x2eefef[_0x8c48('0x43')],_0x2d0701);}_0x2eefef=_[_0x8c48('0x33')]({},_0x2eefef,_0x24efa3['options']);return db[_0x8c48('0x3c')][_0x8c48('0x4a')]({'where':_0x2eefef[_0x8c48('0x43')]})[_0x8c48('0x1a')](function(_0x3f8405){_0x1fb72d['count']=_0x3f8405;if(_0x24efa3['query']['includeAll']){_0x2eefef[_0x8c48('0x32')]=[{'all':!![]}];}return db[_0x8c48('0x3c')][_0x8c48('0x25')](_0x2eefef);})[_0x8c48('0x1a')](function(_0x1bd59c){if(_0x24efa3[_0x8c48('0x2b')][_0x8c48('0x4b')]===_0x8c48('0x4c')){for(var _0x588062=0x0;_0x588062<_0x1bd59c['length'];_0x588062++){_0x1bd59c[_0x588062][_0x8c48('0x37')]=juice(_0x1bd59c[_0x588062][_0x8c48('0x37')]);}}_0x1fb72d[_0x8c48('0x4d')]=_0x1bd59c;return _0x1fb72d;});}})['then'](respondWithFilteredResult(_0x15afa7,_0x2eefef))[_0x8c48('0x27')](handleError(_0x15afa7,null));};exports[_0x8c48('0x4e')]=function(_0x413f1a,_0x1d78a0){return db['MailInteraction'][_0x8c48('0x34')]({'where':{'id':_0x413f1a[_0x8c48('0x38')]['id']}})[_0x8c48('0x1a')](handleEntityNotFound(_0x1d78a0,null))[_0x8c48('0x1a')](function(_0x3ad980){if(_0x3ad980){return _0x3ad980[_0x8c48('0x4f')](_0x413f1a[_0x8c48('0x37')][_0x8c48('0x3d')],_[_0x8c48('0x3e')](_0x413f1a[_0x8c48('0x37')],[_0x8c48('0x3d'),'id'])||{})['spread'](function(){return db[_0x8c48('0x50')][_0x8c48('0x25')]({'attributes':['id',_0x8c48('0x1d'),_0x8c48('0x51')],'where':{'id':_0x413f1a[_0x8c48('0x37')]['ids']}});})['then'](function(_0x29bd41){socket[_0x8c48('0x52')](_0x8c48('0x53'),{'id':Number(_0x413f1a[_0x8c48('0x38')]['id']),'tags':_0x29bd41||[]});return{'id':Number(_0x413f1a[_0x8c48('0x38')]['id']),'tags':_0x29bd41||[]};});}})['then'](respondWithResult(_0x1d78a0,null))[_0x8c48('0x27')](handleError(_0x1d78a0,null));};exports[_0x8c48('0x54')]=function(_0x4312ec,_0x39e0c4){return db[_0x8c48('0x20')][_0x8c48('0x34')]({'where':{'id':_0x4312ec['params']['id']}})[_0x8c48('0x1a')](handleEntityNotFound(_0x39e0c4,null))[_0x8c48('0x1a')](function(_0x10297b){if(_0x10297b){return _0x10297b[_0x8c48('0x54')](_0x4312ec[_0x8c48('0x2b')]['ids']);}})['then'](respondWithStatusCode(_0x39e0c4,null))[_0x8c48('0x27')](handleError(_0x39e0c4,null));};exports[_0x8c48('0x55')]=function(_0xc080c9,_0x4aa249){var _0x204dd7=moment()[_0x8c48('0x56')]()[_0x8c48('0x57')]();var _0x268d85=path[_0x8c48('0x58')](config[_0x8c48('0x59')],_0x8c48('0x5a'),_0x8c48('0x5b'),_0x8c48('0x5c'));var _0x2af796=path[_0x8c48('0x58')](config[_0x8c48('0x59')],'server','files',_0x8c48('0x5d'));var _0x2f93df=path[_0x8c48('0x58')](_0x268d85,_0x204dd7);var _0xb1079e=util[_0x8c48('0x48')](_0x8c48('0x5e'),_0xc080c9['params']['id'],_0x204dd7);var _0x90afeb=path['join'](_0x268d85,_0xb1079e);var _0x496b30=[];if(_0xc080c9[_0x8c48('0x2b')][_0x8c48('0x5d')]){_0x496b30[_0x8c48('0x5f')]({'model':db['Attachment'],'as':_0x8c48('0x60'),'raw':!![]});}var _0x3f2845=[{'model':db[_0x8c48('0x3c')],'as':_0x8c48('0x61'),'attributes':['id',_0x8c48('0x37'),_0x8c48('0x62'),'to','cc',_0x8c48('0x63'),'subject','createdAt'],'where':{'secret':![]},'order':qs[_0x8c48('0x42')]('id'),'include':_0x496b30}];return db[_0x8c48('0x20')][_0x8c48('0x34')]({'where':{'id':_0xc080c9[_0x8c48('0x38')]['id']},'include':_0x3f2845})[_0x8c48('0x1a')](handleEntityNotFound(_0x4aa249,null))[_0x8c48('0x1a')](function(_0x4c59cc){if(_0x4c59cc&&_0x4c59cc[_0x8c48('0x61')]){var _0x23e2a3=_0x4c59cc[_0x8c48('0x64')]({'plain':!![]});fs[_0x8c48('0x65')](_0x2f93df);return BPromise[_0x8c48('0x66')](_0x23e2a3[_0x8c48('0x61')],function(_0x56016,_0x480aea){var _0x5a47aa={'from':_0x56016[_0x8c48('0x62')],'to':_0x56016['to']||_0x8c48('0x67'),'subject':_0x56016['subject'],'html':htmlEntities[_0x8c48('0x68')](_0x56016['body']),'headers':{'Date':moment(_0x56016[_0x8c48('0x69')])[_0x8c48('0x48')](_0x8c48('0x6a'))},'attachments':[]};if(_0x56016['cc']){_0x5a47aa[_0x8c48('0x6b')]['Cc']=_0x56016['cc'];}if(_0x56016[_0x8c48('0x63')]){_0x5a47aa[_0x8c48('0x6b')][_0x8c48('0x6c')]=_0x56016[_0x8c48('0x63')];}return new BPromise(function(_0x1ee33c,_0xca57ef){if(_0x56016['Attachments']){for(var _0x3d5293=0x0;_0x3d5293<_0x56016[_0x8c48('0x60')][_0x8c48('0x30')];_0x3d5293++){var _0x11b881=_0x56016[_0x8c48('0x60')][_0x3d5293];var _0x353bba=path[_0x8c48('0x58')](_0x2af796,_0x11b881[_0x8c48('0x6d')]);if(fs[_0x8c48('0x6e')](_0x353bba)){_0x5a47aa['attachments'][_0x8c48('0x5f')]({'name':_0x11b881[_0x8c48('0x1d')],'contentType':_0x11b881['type'],'data':fs[_0x8c48('0x6f')](_0x353bba)});}}}emlformat[_0x8c48('0x70')](_0x5a47aa,function(_0x515eb8,_0x36886b){if(_0x515eb8)return _0xca57ef(_0x515eb8);fs['writeFileSync'](path['join'](_0x2f93df,util[_0x8c48('0x48')](_0x8c48('0x71'),_0x480aea)),_0x36886b);return _0x1ee33c(_0x36886b);});});})[_0x8c48('0x1a')](function(){return new BPromise(function(_0x213e00,_0x115586){zipdir(_0x2f93df,{'saveTo':_0x90afeb},function(_0x447ce3,_0x48ac66){if(_0x447ce3)return _0x115586(_0x447ce3);return _0x213e00(_0x48ac66);});})[_0x8c48('0x1a')](function(){return new BPromise(function(_0x4fe98a,_0x2d7200){rimraf(_0x2f93df,function(_0x1746b0){if(_0x1746b0)_0x2d7200(_0x1746b0);return _0x4fe98a();});});})[_0x8c48('0x1a')](function(){return _0x4aa249[_0x8c48('0x55')](_0x90afeb,_0xb1079e,function(_0x3b925a){if(!_0x3b925a)fs['unlinkSync'](_0x90afeb);});});});}else{return _0x4aa249[_0x8c48('0x1b')](0xc8);}})[_0x8c48('0x27')](handleError(_0x4aa249,null));};