f6c1a56cc85adb4d2270c55fd3e05330c41ab4b5
[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 _0x50bf=['merge','options','body','find','MailInteraction','describe','addMessage','MailMessage','getMessages','fields','hasOwnProperty','sort','where','pick','MailInteractionId','filter','$gte','split','format','count','include','true','addTags','ids','omit','spread','Tag','color','emit','removeTags','download','unix','toString','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','mkdirSync','missing.recipient@your.company.com','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','readFileSync','writeFileSync','message%d.eml','eml-format','bluebird','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','html-entities','redis','localhost','socket.io-emitter','./mailInteraction.socket','status','json','undefined','limit','offset','set','update','then','destroy','end','sendStatus','stack','name','send','map','rawAttributes','type','key','getOptions','findAll','mail','query','catch','show','params','model','keys','filters','attributes','intersection','length','includeAll'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0x50bf,0x1d6));var _0xf50b=function(_0xc6447a,_0x24ec83){_0xc6447a=_0xc6447a-0x0;var _0x2efc32=_0x50bf[_0xc6447a];return _0x2efc32;};'use strict';var emlformat=require(_0xf50b('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require(_0xf50b('0x1'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0xf50b('0x2'));var juice=require('juice');var Redis=require(_0xf50b('0x3'));var interaction=require('../../components/interaction/service');var qs=require(_0xf50b('0x4'));var logger=require(_0xf50b('0x5'))(_0xf50b('0x6'));var config=require('../../config/environment');var db=require(_0xf50b('0x7'))['db'];var htmlEntities=require(_0xf50b('0x8'));config[_0xf50b('0x9')]=_['defaults'](config[_0xf50b('0x9')],{'host':_0xf50b('0xa'),'port':0x18eb});var socket=require(_0xf50b('0xb'))(new Redis(config[_0xf50b('0x9')]));require(_0xf50b('0xc'))['register'](socket);function respondWithStatusCode(_0x502927,_0x498b0d){_0x498b0d=_0x498b0d||0xcc;return function(_0x4ee81d){if(_0x4ee81d){return _0x502927['sendStatus'](_0x498b0d);}return _0x502927['status'](_0x498b0d)['end']();};}function respondWithResult(_0x3306b7,_0x4f8e72){_0x4f8e72=_0x4f8e72||0xc8;return function(_0xa141e){if(_0xa141e){return _0x3306b7[_0xf50b('0xd')](_0x4f8e72)[_0xf50b('0xe')](_0xa141e);}};}function respondWithFilteredResult(_0x4795d8,_0x289cea){return function(_0x1cb04c){if(_0x1cb04c){var _0x52e374=typeof _0x289cea['offset']===_0xf50b('0xf')&&typeof _0x289cea[_0xf50b('0x10')]==='undefined';var _0x38f68e=_0x1cb04c['count'];var _0x3d1394=_0x52e374?0x0:_0x289cea[_0xf50b('0x11')];var _0x1a3f16=_0x52e374?_0x1cb04c['count']:_0x289cea['offset']+_0x289cea[_0xf50b('0x10')];var _0x450ee9;if(_0x1a3f16>=_0x38f68e){_0x1a3f16=_0x38f68e;_0x450ee9=0xc8;}else{_0x450ee9=0xce;}_0x4795d8['status'](_0x450ee9);return _0x4795d8[_0xf50b('0x12')]('Content-Range',_0x3d1394+'-'+_0x1a3f16+'/'+_0x38f68e)[_0xf50b('0xe')](_0x1cb04c);}return null;};}function saveUpdates(_0x2baa1b){return function(_0x2b4334){if(_0x2b4334){return _0x2b4334[_0xf50b('0x13')](_0x2baa1b)[_0xf50b('0x14')](function(_0xb57fa4){return _0xb57fa4;});}return null;};}function removeEntity(_0x2b7abb){return function(_0x5162a1){if(_0x5162a1){return _0x5162a1[_0xf50b('0x15')]()['then'](function(){_0x2b7abb[_0xf50b('0xd')](0xcc)[_0xf50b('0x16')]();});}};}function handleEntityNotFound(_0xf32611){return function(_0x28d630){if(!_0x28d630){_0xf32611[_0xf50b('0x17')](0x194);}return _0x28d630;};}function handleError(_0x444658,_0x47c68a){_0x47c68a=_0x47c68a||0x1f4;return function(_0x2a85e5){logger['error'](_0x2a85e5[_0xf50b('0x18')]);if(_0x2a85e5[_0xf50b('0x19')]){delete _0x2a85e5[_0xf50b('0x19')];}_0x444658[_0xf50b('0xd')](_0x47c68a)[_0xf50b('0x1a')](_0x2a85e5);};}exports['index']=function(_0x409a78,_0x6bd572){var _0x37297d={};var _0x444872=_[_0xf50b('0x1b')](db['MailInteraction'][_0xf50b('0x1c')],function(_0x195bf9){return{'name':_0x195bf9['fieldName'],'type':_0x195bf9[_0xf50b('0x1d')][_0xf50b('0x1e')]};});_0x37297d=qs[_0xf50b('0x1f')](_0x444872,_0x409a78);return interaction[_0xf50b('0x20')](_0xf50b('0x21'),_0x409a78[_0xf50b('0x22')],_0x409a78['user'],_0x37297d,_0x444872)[_0xf50b('0x14')](respondWithFilteredResult(_0x6bd572,_0x37297d))[_0xf50b('0x23')](handleError(_0x6bd572,null));};exports[_0xf50b('0x24')]=function(_0x112f64,_0x564f32){var _0x1b3867={'raw':![],'where':{'id':_0x112f64[_0xf50b('0x25')]['id']}},_0x56edd7={};_0x56edd7[_0xf50b('0x26')]=_[_0xf50b('0x27')](db['MailInteraction']['rawAttributes']);_0x56edd7[_0xf50b('0x22')]=_[_0xf50b('0x27')](_0x112f64[_0xf50b('0x22')]);_0x56edd7[_0xf50b('0x28')]=_['intersection'](_0x56edd7[_0xf50b('0x26')],_0x56edd7['query']);_0x1b3867[_0xf50b('0x29')]=_[_0xf50b('0x2a')](_0x56edd7['model'],qs['fields'](_0x112f64['query']['fields']));_0x1b3867[_0xf50b('0x29')]=_0x1b3867[_0xf50b('0x29')][_0xf50b('0x2b')]?_0x1b3867['attributes']:_0x56edd7[_0xf50b('0x26')];if(_0x112f64[_0xf50b('0x22')][_0xf50b('0x2c')]){_0x1b3867['include']=[{'all':!![]}];}_0x1b3867=_[_0xf50b('0x2d')]({},_0x1b3867,_0x112f64[_0xf50b('0x2e')]);return db['MailInteraction']['find'](_0x1b3867)[_0xf50b('0x14')](handleEntityNotFound(_0x564f32,null))[_0xf50b('0x14')](respondWithResult(_0x564f32,null))[_0xf50b('0x23')](handleError(_0x564f32,null));};exports['create']=function(_0x35fdf8,_0x5c00db){return db['MailInteraction']['create'](_0x35fdf8[_0xf50b('0x2f')],{})[_0xf50b('0x14')](respondWithResult(_0x5c00db,0xc9))[_0xf50b('0x23')](handleError(_0x5c00db,null));};exports[_0xf50b('0x13')]=function(_0x4d4786,_0x193b82){if(_0x4d4786[_0xf50b('0x2f')]['id']){delete _0x4d4786[_0xf50b('0x2f')]['id'];}return db['MailInteraction'][_0xf50b('0x30')]({'where':{'id':_0x4d4786[_0xf50b('0x25')]['id']}})[_0xf50b('0x14')](handleEntityNotFound(_0x193b82,null))[_0xf50b('0x14')](saveUpdates(_0x4d4786[_0xf50b('0x2f')],null))[_0xf50b('0x14')](respondWithResult(_0x193b82,null))['catch'](handleError(_0x193b82,null));};exports[_0xf50b('0x15')]=function(_0x14265c,_0x2bcf38){return db['MailInteraction'][_0xf50b('0x30')]({'where':{'id':_0x14265c[_0xf50b('0x25')]['id']}})['then'](handleEntityNotFound(_0x2bcf38,null))[_0xf50b('0x14')](removeEntity(_0x2bcf38,null))['catch'](handleError(_0x2bcf38,null));};exports['describe']=function(_0x3ac2d3,_0x1fb7e0){return db[_0xf50b('0x31')][_0xf50b('0x32')]()[_0xf50b('0x14')](respondWithResult(_0x1fb7e0,null))[_0xf50b('0x23')](handleError(_0x1fb7e0,null));};exports[_0xf50b('0x33')]=function(_0x118e14,_0x1a769f){return db[_0xf50b('0x34')][_0xf50b('0x30')]({'where':{'id':_0x118e14['params']['id']}})[_0xf50b('0x14')](handleEntityNotFound(_0x1a769f,null))[_0xf50b('0x14')](function(_0x1492d8){if(_0x1492d8){return _0x1492d8[_0xf50b('0x33')](_0x118e14[_0xf50b('0x2f')]['ids'],_['omit'](_0x118e14[_0xf50b('0x2f')],['ids','id'])||{});}})[_0xf50b('0x14')](respondWithResult(_0x1a769f,null))['catch'](handleError(_0x1a769f,null));};exports[_0xf50b('0x35')]=function(_0x243af7,_0x342071){var _0x35cd32={'raw':![],'where':{}};var _0x544b16={};var _0x11b8af={'count':0x0,'rows':[]};return db[_0xf50b('0x31')]['findOne']({'where':{'id':_0x243af7[_0xf50b('0x25')]['id']}})[_0xf50b('0x14')](handleEntityNotFound(_0x342071,null))['then'](function(_0x188ea0){if(_0x188ea0){_0x544b16[_0xf50b('0x26')]=_['keys'](db[_0xf50b('0x34')]['rawAttributes']);_0x544b16['query']=_['keys'](_0x243af7[_0xf50b('0x22')]);_0x544b16[_0xf50b('0x28')]=_['intersection'](_0x544b16[_0xf50b('0x26')],_0x544b16[_0xf50b('0x22')]);_0x35cd32[_0xf50b('0x29')]=_[_0xf50b('0x2a')](_0x544b16[_0xf50b('0x26')],qs[_0xf50b('0x36')](_0x243af7['query']['fields']));_0x35cd32[_0xf50b('0x29')]=_0x35cd32[_0xf50b('0x29')]['length']?_0x35cd32[_0xf50b('0x29')]:_0x544b16[_0xf50b('0x26')];if(!_0x243af7['query'][_0xf50b('0x37')]('nolimit')){_0x35cd32['limit']=qs[_0xf50b('0x10')](_0x243af7[_0xf50b('0x22')][_0xf50b('0x10')]);_0x35cd32[_0xf50b('0x11')]=qs[_0xf50b('0x11')](_0x243af7[_0xf50b('0x22')][_0xf50b('0x11')]);}_0x35cd32['order']=qs['sort'](_0x243af7[_0xf50b('0x22')][_0xf50b('0x38')]);_0x35cd32[_0xf50b('0x39')]=qs[_0xf50b('0x28')](_[_0xf50b('0x3a')](_0x243af7['query'],_0x544b16[_0xf50b('0x28')]));_0x35cd32[_0xf50b('0x39')][_0xf50b('0x3b')]=_0x188ea0['id'];if(_0x243af7['query'][_0xf50b('0x3c')]){_0x35cd32[_0xf50b('0x39')]=_[_0xf50b('0x2d')](_0x35cd32[_0xf50b('0x39')],{'$or':_[_0xf50b('0x1b')](_0x35cd32[_0xf50b('0x29')],function(_0x3aea30){var _0xcab88b={};_0xcab88b[_0x3aea30]={'$like':'%'+_0x243af7['query'][_0xf50b('0x3c')]+'%'};return _0xcab88b;})});}if(_0x243af7[_0xf50b('0x22')]['$gte']){var _0x5a5f0b=_0x243af7[_0xf50b('0x22')][_0xf50b('0x3d')][_0xf50b('0x3e')](',');var _0x9868ea={};_0x9868ea[_0x5a5f0b[0x0]]={'$gte':moment(_0x5a5f0b[0x1])[_0xf50b('0x3f')]('YYYY-MM-DD\x20HH:mm:ss')};_0x35cd32[_0xf50b('0x39')]=_[_0xf50b('0x2d')](_0x35cd32[_0xf50b('0x39')],_0x9868ea);}_0x35cd32=_[_0xf50b('0x2d')]({},_0x35cd32,_0x243af7['options']);return db[_0xf50b('0x34')][_0xf50b('0x40')]({'where':_0x35cd32[_0xf50b('0x39')]})[_0xf50b('0x14')](function(_0x104fc3){_0x11b8af[_0xf50b('0x40')]=_0x104fc3;if(_0x243af7[_0xf50b('0x22')][_0xf50b('0x2c')]){_0x35cd32[_0xf50b('0x41')]=[{'all':!![]}];}return db['MailMessage'][_0xf50b('0x20')](_0x35cd32);})[_0xf50b('0x14')](function(_0x2a4cc2){if(_0x243af7[_0xf50b('0x22')]['inlineCss']===_0xf50b('0x42')){for(var _0x5a0f17=0x0;_0x5a0f17<_0x2a4cc2['length'];_0x5a0f17++){_0x2a4cc2[_0x5a0f17]['body']=juice(_0x2a4cc2[_0x5a0f17][_0xf50b('0x2f')]);}}_0x11b8af['rows']=_0x2a4cc2;return _0x11b8af;});}})[_0xf50b('0x14')](respondWithFilteredResult(_0x342071,_0x35cd32))[_0xf50b('0x23')](handleError(_0x342071,null));};exports[_0xf50b('0x43')]=function(_0x269447,_0x3cf0a0){return db[_0xf50b('0x31')][_0xf50b('0x30')]({'where':{'id':_0x269447[_0xf50b('0x25')]['id']}})['then'](handleEntityNotFound(_0x3cf0a0,null))['then'](function(_0x114924){if(_0x114924){return _0x114924['setTags'](_0x269447['body'][_0xf50b('0x44')],_[_0xf50b('0x45')](_0x269447[_0xf50b('0x2f')],['ids','id'])||{})[_0xf50b('0x46')](function(){return db[_0xf50b('0x47')][_0xf50b('0x20')]({'attributes':['id',_0xf50b('0x19'),_0xf50b('0x48')],'where':{'id':_0x269447[_0xf50b('0x2f')][_0xf50b('0x44')]}});})[_0xf50b('0x14')](function(_0x4fc2f3){socket[_0xf50b('0x49')]('mailInteractionTags:save',{'id':Number(_0x269447[_0xf50b('0x25')]['id']),'tags':_0x4fc2f3||[]});return{'id':Number(_0x269447[_0xf50b('0x25')]['id']),'tags':_0x4fc2f3||[]};});}})[_0xf50b('0x14')](respondWithResult(_0x3cf0a0,null))[_0xf50b('0x23')](handleError(_0x3cf0a0,null));};exports['removeTags']=function(_0x109e2b,_0x1b1881){return db[_0xf50b('0x31')]['find']({'where':{'id':_0x109e2b[_0xf50b('0x25')]['id']}})['then'](handleEntityNotFound(_0x1b1881,null))[_0xf50b('0x14')](function(_0x5c2bd4){if(_0x5c2bd4){return _0x5c2bd4[_0xf50b('0x4a')](_0x109e2b[_0xf50b('0x22')][_0xf50b('0x44')]);}})[_0xf50b('0x14')](respondWithStatusCode(_0x1b1881,null))[_0xf50b('0x23')](handleError(_0x1b1881,null));};exports[_0xf50b('0x4b')]=function(_0x22fb54,_0x561d7f){var _0xf8c92d=moment()[_0xf50b('0x4c')]()[_0xf50b('0x4d')]();var _0x2ab0d=path[_0xf50b('0x4e')](config[_0xf50b('0x4f')],_0xf50b('0x50'),'files',_0xf50b('0x51'));var _0x4172ca=path['join'](config['root'],_0xf50b('0x50'),_0xf50b('0x52'),_0xf50b('0x53'));var _0x573de1=path['join'](_0x2ab0d,_0xf8c92d);var _0x2d8a09=util['format'](_0xf50b('0x54'),_0x22fb54[_0xf50b('0x25')]['id'],_0xf8c92d);var _0x358ebd=path[_0xf50b('0x4e')](_0x2ab0d,_0x2d8a09);var _0x3686ad=[];if(_0x22fb54[_0xf50b('0x22')][_0xf50b('0x53')]){_0x3686ad[_0xf50b('0x55')]({'model':db[_0xf50b('0x56')],'as':_0xf50b('0x57'),'raw':!![]});}var _0x5bd2df=[{'model':db['MailMessage'],'as':_0xf50b('0x58'),'attributes':['id','body',_0xf50b('0x59'),'to','cc',_0xf50b('0x5a'),_0xf50b('0x5b'),_0xf50b('0x5c')],'where':{'secret':![]},'order':qs[_0xf50b('0x38')]('id'),'include':_0x3686ad}];return db[_0xf50b('0x31')][_0xf50b('0x30')]({'where':{'id':_0x22fb54[_0xf50b('0x25')]['id']},'include':_0x5bd2df})[_0xf50b('0x14')](handleEntityNotFound(_0x561d7f,null))[_0xf50b('0x14')](function(_0x412ebc){if(_0x412ebc&&_0x412ebc[_0xf50b('0x58')]){var _0x296115=_0x412ebc['get']({'plain':!![]});fs[_0xf50b('0x5d')](_0x573de1);return BPromise['each'](_0x296115[_0xf50b('0x58')],function(_0x26b799,_0x2d55ff){var _0x466844={'from':_0x26b799[_0xf50b('0x59')],'to':_0x26b799['to']||_0xf50b('0x5e'),'subject':_0x26b799[_0xf50b('0x5b')],'html':htmlEntities[_0xf50b('0x5f')](_0x26b799[_0xf50b('0x2f')]),'headers':{'Date':moment(_0x26b799[_0xf50b('0x5c')])['format'](_0xf50b('0x60'))},'attachments':[]};if(_0x26b799['cc']){_0x466844[_0xf50b('0x61')]['Cc']=_0x26b799['cc'];}if(_0x26b799[_0xf50b('0x5a')]){_0x466844['headers'][_0xf50b('0x62')]=_0x26b799[_0xf50b('0x5a')];}return new BPromise(function(_0x1f2c69,_0x326df5){if(_0x26b799[_0xf50b('0x57')]){for(var _0x3ae567=0x0;_0x3ae567<_0x26b799['Attachments'][_0xf50b('0x2b')];_0x3ae567++){var _0x72b49f=_0x26b799[_0xf50b('0x57')][_0x3ae567];var _0x3dec03=path['join'](_0x4172ca,_0x72b49f[_0xf50b('0x63')]);if(fs['existsSync'](_0x3dec03)){_0x466844['attachments'][_0xf50b('0x55')]({'name':_0x72b49f[_0xf50b('0x19')],'contentType':_0x72b49f[_0xf50b('0x1d')],'data':fs[_0xf50b('0x64')](_0x3dec03)});}}}emlformat['build'](_0x466844,function(_0x11aba4,_0x5671e5){if(_0x11aba4)return _0x326df5(_0x11aba4);fs[_0xf50b('0x65')](path[_0xf50b('0x4e')](_0x573de1,util['format'](_0xf50b('0x66'),_0x2d55ff)),_0x5671e5);return _0x1f2c69(_0x5671e5);});});})['then'](function(){return new BPromise(function(_0x41a7dd,_0x51496f){zipdir(_0x573de1,{'saveTo':_0x358ebd},function(_0xe81aac,_0xa288f){if(_0xe81aac)return _0x51496f(_0xe81aac);return _0x41a7dd(_0xa288f);});})[_0xf50b('0x14')](function(){return new BPromise(function(_0x52e3b4,_0x3775ac){rimraf(_0x573de1,function(_0x5941c6){if(_0x5941c6)_0x3775ac(_0x5941c6);return _0x52e3b4();});});})[_0xf50b('0x14')](function(){return _0x561d7f[_0xf50b('0x4b')](_0x358ebd,_0x2d8a09,function(_0x4b9575){if(!_0x4b9575)fs['unlinkSync'](_0x358ebd);});});});}else{return _0x561d7f[_0xf50b('0x17')](0xc8);}})[_0xf50b('0x23')](handleError(_0x561d7f,null));};