40fc54144197fc9981cf32f5de0cc98141d5cd87
[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 _0xc57e=['SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getMailAccounts','i.MailAccountId\x20IS\x20NULL','toString','keyBy','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','Account.email','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.lastMsgAt','i.lastMsgDirection','i.subject','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.ContactId','i.MailAccountId','i.UserId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','c.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','enableEmailPreview','all','rows','show','keys','includeAll','include','merge','options','create','body','params','describe','addMessage','ids','omit','getMessages','MailMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','addTags','color','emit','mailInteractionTags:save','removeTags','download','unix','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','bcc','get','mkdirSync','each','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','Bcc','basename','existsSync','build','writeFileSync','unlinkSync','eml-format','rimraf','zip-dir','bluebird','lodash','squel','juice','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','html-entities','defaults','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','update','then','destroy','error','stack','name','Users','fullname','TagIds','split','forEach','Tags','findOne','-id','plainBody','trimStart','catch','talking','total','closed','UserId','waiting','answered','index','MailInteraction','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','field','select','u.fullname','ui.MailInteractionId','user_has_mail_interactions','left_join','users','from','mail_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','a.id\x20=\x20i.MailAccountId','mail_messages','mail_interaction_has_tags','it.MailInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','find','unreadMessages','value','having','`\x20=\x200','operator','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','end','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','compact','isEmpty','i.MailAccountId\x20IN\x20?','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','QueryTypes'];(function(_0x48dd05,_0x57f47f){var _0x15a83f=function(_0x48c439){while(--_0x48c439){_0x48dd05['push'](_0x48dd05['shift']());}};_0x15a83f(++_0x57f47f);}(_0xc57e,0x66));var _0xec57=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xc57e[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0xec57('0x0'));var rimraf=require(_0xec57('0x1'));var zipdir=require(_0xec57('0x2'));var moment=require('moment');var BPromise=require(_0xec57('0x3'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0xec57('0x4'));var squel=require(_0xec57('0x5'));var juice=require(_0xec57('0x6'));var Redis=require('ioredis');var qs=require(_0xec57('0x7'));var as=require(_0xec57('0x8'));var logger=require(_0xec57('0x9'))('api');var config=require(_0xec57('0xa'));var db=require('../../mysqldb')['db'];var htmlEntities=require(_0xec57('0xb'));config['redis']=_[_0xec57('0xc')](config[_0xec57('0xd')],{'host':_0xec57('0xe'),'port':0x18eb});var socket=require(_0xec57('0xf'))(new Redis(config[_0xec57('0xd')]));require(_0xec57('0x10'))[_0xec57('0x11')](socket);function respondWithStatusCode(_0x24e3bf,_0x60235d){_0x60235d=_0x60235d||0xcc;return function(_0x567a12){if(_0x567a12){return _0x24e3bf[_0xec57('0x12')](_0x60235d);}return _0x24e3bf[_0xec57('0x13')](_0x60235d)['end']();};}function respondWithResult(_0x475ef1,_0x8e1f90){_0x8e1f90=_0x8e1f90||0xc8;return function(_0x50fa36){if(_0x50fa36){return _0x475ef1['status'](_0x8e1f90)[_0xec57('0x14')](_0x50fa36);}};}function respondWithFilteredResult(_0x46abfa,_0x204c9f){return function(_0x2ca7b1){if(_0x2ca7b1){var _0x39cf50=typeof _0x204c9f[_0xec57('0x15')]===_0xec57('0x16')&&typeof _0x204c9f[_0xec57('0x17')]===_0xec57('0x16');var _0x1491f1=_0x2ca7b1[_0xec57('0x18')];var _0x562c6c=_0x39cf50?0x0:_0x204c9f[_0xec57('0x15')];var _0x4c6f48=_0x39cf50?_0x2ca7b1[_0xec57('0x18')]:_0x204c9f[_0xec57('0x15')]+_0x204c9f[_0xec57('0x17')];var _0xb4135e;if(_0x4c6f48>=_0x1491f1){_0x4c6f48=_0x1491f1;_0xb4135e=0xc8;}else{_0xb4135e=0xce;}_0x46abfa[_0xec57('0x13')](_0xb4135e);return _0x46abfa[_0xec57('0x19')]('Content-Range',_0x562c6c+'-'+_0x4c6f48+'/'+_0x1491f1)[_0xec57('0x14')](_0x2ca7b1);}return null;};}function saveUpdates(_0x5e52c0){return function(_0x5743eb){if(_0x5743eb){return _0x5743eb[_0xec57('0x1a')](_0x5e52c0)[_0xec57('0x1b')](function(_0x1627bc){return _0x1627bc;});}return null;};}function removeEntity(_0x3d3afa){return function(_0x3b823a){if(_0x3b823a){return _0x3b823a[_0xec57('0x1c')]()['then'](function(){_0x3d3afa[_0xec57('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c445d){return function(_0x112573){if(!_0x112573){_0x2c445d[_0xec57('0x12')](0x194);}return _0x112573;};}function handleError(_0x1e6696,_0x7bdcad){_0x7bdcad=_0x7bdcad||0x1f4;return function(_0x4dfca1){logger[_0xec57('0x1d')](_0x4dfca1[_0xec57('0x1e')]);if(_0x4dfca1['name']){delete _0x4dfca1[_0xec57('0x1f')];}_0x1e6696[_0xec57('0x13')](_0x7bdcad)['send'](_0x4dfca1);};}function getInteractionUsers(_0x34e2e1,_0x227992){return new BPromise(function(_0x35f279,_0x5d177b){try{if(_0x227992[_0x34e2e1['id']]){_0x34e2e1[_0xec57('0x20')]=_['map'](_0x227992[_0x34e2e1['id']],function(_0xb955f4){return{'id':_0xb955f4['id'],'fullname':_0xb955f4[_0xec57('0x21')]};});}}catch(_0x65543b){_0x5d177b(_0x65543b);}_0x35f279(_0x34e2e1);});}function getInteractionTags(_0x414445,_0x443a49){return new BPromise(function(_0x259d10,_0x12678e){try{if(_0x414445[_0xec57('0x22')]){_0x414445['Tags']=[];_0x414445['TagIds'][_0xec57('0x23')](',')[_0xec57('0x24')](function(_0x534696){_0x414445[_0xec57('0x25')]['push'](_0x443a49[_0x534696]);});}delete _0x414445[_0xec57('0x22')];}catch(_0x58cc89){_0x12678e(_0x58cc89);}_0x259d10(_0x414445);});}function getLastMessageText(_0x37f4bf){return new BPromise(function(_0x539b59,_0x57f2f3){return db['MailMessage'][_0xec57('0x26')]({'where':{'$and':[{'MailInteractionId':_0x37f4bf['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0xec57('0x27'),'raw':!![]})[_0xec57('0x1b')](function(_0x1c8a62){if(_0x1c8a62&&_0x1c8a62[_0xec57('0x28')]){_0x37f4bf['lastMsgText']=_[_0xec57('0x29')](_0x1c8a62['plainBody']);}_0x539b59(_0x37f4bf);})[_0xec57('0x2a')](function(_0x3802b8){_0x57f2f3(_0x3802b8);});});}function updateMailInteraction(_0x42924c,_0x26e05d,_0x4d09e5,_0x40fd28){return new BPromise(function(_0x471574,_0x4884f7){return getInteractionUsers(_0x42924c,_0x4d09e5)[_0xec57('0x1b')](function(_0x5f80b){return getInteractionTags(_0x5f80b,_0x26e05d);})['then'](function(_0x29df7f){return getStateInteraction(_0x29df7f);})[_0xec57('0x1b')](function(_0x39daf1){if(_0x40fd28){_0x471574(getLastMessageText(_0x39daf1));}else{_0x471574(_0x39daf1);}})[_0xec57('0x2a')](function(_0xb9ef8){_0x4884f7(_0xb9ef8);});});}function getStateInteraction(_0x297341){return new BPromise(function(_0x43d883){_0x297341['waiting']=0x0;_0x297341[_0xec57('0x2b')]=0x0;_0x297341['answered']=0x0;_0x297341['unmanaged']=0x0;_0x297341[_0xec57('0x2c')]=0x0;if(!_0x297341[_0xec57('0x2d')]&&!_0x297341[_0xec57('0x2e')]){_0x297341['waiting']+=0x1;}if(!_0x297341[_0xec57('0x2d')]&&_0x297341['UserId']){_0x297341['talking']+=0x1;if(_0x297341[_0xec57('0x2f')]){_0x297341[_0xec57('0x2f')]-=0x1;}}if(_0x297341['closed']&&_0x297341['UserId']){_0x297341[_0xec57('0x30')]+=0x1;if(_0x297341[_0xec57('0x2b')]){_0x297341['talking']-=0x1;}}if(_0x297341[_0xec57('0x2d')]&&!_0x297341['UserId']){_0x297341['unmanaged']+=0x1;if(_0x297341[_0xec57('0x2f')]){_0x297341[_0xec57('0x2f')]-=0x1;}}_0x297341[_0xec57('0x2c')]+=0x1;_0x43d883(_0x297341);});}exports[_0xec57('0x31')]=function(_0x39ee1d,_0x2ff5d8){var _0x575151={},_0x31da16={},_0x488c75={'count':0x0,'rows':[]};var _0x303ce9=_['map'](db[_0xec57('0x32')][_0xec57('0x33')],function(_0x3f175b){return{'name':_0x3f175b[_0xec57('0x34')],'type':_0x3f175b[_0xec57('0x35')]['key']};});_0x31da16[_0xec57('0x36')]=_[_0xec57('0x37')](_0x303ce9,'name');_0x31da16[_0xec57('0x38')]=_['keys'](_0x39ee1d[_0xec57('0x38')]);_0x31da16[_0xec57('0x39')]=_[_0xec57('0x3a')](_0x31da16['model'],_0x31da16[_0xec57('0x38')]);_0x575151[_0xec57('0x3b')]=_[_0xec57('0x3a')](_0x31da16[_0xec57('0x36')],qs[_0xec57('0x3c')](_0x39ee1d[_0xec57('0x38')][_0xec57('0x3c')]));_0x575151[_0xec57('0x3b')]=_0x575151[_0xec57('0x3b')][_0xec57('0x3d')]?_0x575151['attributes']:_0x31da16[_0xec57('0x36')];if(!_0x39ee1d[_0xec57('0x38')][_0xec57('0x3e')](_0xec57('0x3f'))){_0x575151['limit']=qs['limit'](_0x39ee1d[_0xec57('0x38')][_0xec57('0x17')]);_0x575151[_0xec57('0x15')]=qs['offset'](_0x39ee1d[_0xec57('0x38')][_0xec57('0x15')]);}_0x575151[_0xec57('0x40')]=qs[_0xec57('0x41')](_0x39ee1d[_0xec57('0x38')][_0xec57('0x41')]);_0x575151[_0xec57('0x42')]=qs[_0xec57('0x39')](_[_0xec57('0x43')](_0x39ee1d[_0xec57('0x38')],_0x31da16[_0xec57('0x39')]),_0x303ce9);var _0x9b5a17=[];var _0x5cd57b=squel['select']()[_0xec57('0x44')]('id')[_0xec57('0x44')](_0xec57('0x1f'))[_0xec57('0x44')]('color')['from']('tools_tags');var _0x48bcac=squel[_0xec57('0x45')]()[_0xec57('0x44')]('u.id')[_0xec57('0x44')](_0xec57('0x46'))['field'](_0xec57('0x47'))['from'](_0xec57('0x48'),'ui')[_0xec57('0x49')](_0xec57('0x4a'),'u','u.id\x20=\x20ui.UserId');var _0x236bc4=squel[_0xec57('0x45')]()[_0xec57('0x4b')](_0xec57('0x4c'),'i')[_0xec57('0x49')](_0xec57('0x4d'),'c',_0xec57('0x4e'))['left_join']('users','o','o.id\x20=\x20i.UserId')[_0xec57('0x49')]('mail_accounts','a',_0xec57('0x4f'))['left_join'](_0xec57('0x50'),'me','me.MailInteractionId\x20=\x20i.id')[_0xec57('0x49')](_0xec57('0x51'),'it',_0xec57('0x52'))[_0xec57('0x49')](_0xec57('0x53'),'t',_0xec57('0x54'));var _0x363bb1=squel['expr']();var _0x4348c5=[];var _0x5d0a30=squel[_0xec57('0x55')]();var _0xd98cb8;if(_0x39ee1d[_0xec57('0x38')][_0xec57('0x56')]){_0xd98cb8=as[_0xec57('0x57')](_0x39ee1d['query'][_0xec57('0x56')]);var _0x450409=_0xd98cb8['sqlOperator'];for(var _0x4d81e1=0x0;_0x4d81e1<_0xd98cb8[_0xec57('0x58')][_0xec57('0x3d')];_0x4d81e1++){var _0x32beae=_0xd98cb8['conditions'][_0x4d81e1];var _0x49a6ce='i';var _0x4b3fdb=_[_0xec57('0x59')](_0x303ce9,['name',_0x32beae[_0xec57('0x44')]]);if(!_0x4b3fdb){switch(_0x32beae[_0xec57('0x44')]){case _0xec57('0x5a'):if(_0x32beae[_0xec57('0x5b')]==0x1){_0x236bc4[_0xec57('0x5c')]('`'+_0x32beae['field']+_0xec57('0x5d'));}else{_0x236bc4[_0xec57('0x5c')]('`'+_0x32beae[_0xec57('0x44')]+'`\x20>\x200');}break;case'Contact':if(_0x32beae[_0xec57('0x5e')]==='$substring'){if(_0x32beae[_0xec57('0x5b')][_0xec57('0x23')]('\x20')[_0xec57('0x3d')]>0x1){_0x363bb1[_0x450409]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xec57('0x5f')](_0x32beae[_0xec57('0x5b')]),null);}else{var _0x42dbc6='%'+_0x32beae['value']+'%';_0x363bb1[_0x450409](_0xec57('0x60'),_0x42dbc6,_0x42dbc6,_0x42dbc6);}}else{_0x4b3fdb=_['find'](_0x303ce9,['name','ContactId']);_0x32beae[_0xec57('0x44')]=_0xec57('0x61');_0x3ef203=as[_0xec57('0x62')](_0x49a6ce,_0x4b3fdb[_0xec57('0x35')],_0x32beae);_0x363bb1[_0x450409](_0x3ef203[_0xec57('0x63')],_0x3ef203[_0xec57('0x5b')][_0xec57('0x64')],_0x3ef203['value'][_0xec57('0x65')]);}break;case _0xec57('0x66'):var _0x10b4af=_0x32beae['value']['split'](',')[_0xec57('0x37')](function(_0x4864ba){return Number(_0x4864ba);});_0x10b4af[_0xec57('0x24')](function(_0x50cf11){_0x5d0a30['or'](_0xec57('0x67'),'%,'+_0x50cf11+',%');});_0x4348c5=_[_0xec57('0x68')](_0x4348c5,_0x10b4af);break;case _0xec57('0x69'):if(_0x32beae['operator']===_0xec57('0x6a')){_0x363bb1[_0x450409]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x32beae[_0xec57('0x5b')]+'%',null);}else{_0x4b3fdb=_['find'](_0x303ce9,[_0xec57('0x1f'),'UserId']);_0x32beae[_0xec57('0x44')]='UserId';_0x3ef203=as[_0xec57('0x62')](_0x49a6ce,_0x4b3fdb[_0xec57('0x35')],_0x32beae);_0x363bb1[_0x450409](_0x3ef203['text'],_0x3ef203[_0xec57('0x5b')]['start'],_0x3ef203[_0xec57('0x5b')]['end']);}break;case'plainBody':_0x3ef203=as[_0xec57('0x62')]('me',null,_0x32beae);_0x363bb1[_0x450409](_0x3ef203[_0xec57('0x63')],_0x3ef203[_0xec57('0x5b')][_0xec57('0x64')],_0x3ef203[_0xec57('0x5b')][_0xec57('0x65')]);break;}}else{var _0x3ef203=as[_0xec57('0x62')](_0x49a6ce,_0x4b3fdb[_0xec57('0x35')],_0x32beae);_0x363bb1[_0x450409](_0x3ef203[_0xec57('0x63')],_0x3ef203['value'][_0xec57('0x64')],_0x3ef203[_0xec57('0x5b')][_0xec57('0x65')]);}}}else{var _0x2ac0f2=_(_0x39ee1d['query'])['keys']()['map'](function(_0x21944e){return _['some'](_0x303ce9,[_0xec57('0x1f'),_0x21944e])?_0x21944e:undefined;})[_0xec57('0x6b')]()[_0xec57('0x5b')]();if(!_[_0xec57('0x6c')](_0x2ac0f2)){_0x2ac0f2[_0xec57('0x24')](function(_0x123608){if(_0x123608==='MailAccountId'){_0x236bc4['where'](_0xec57('0x6d'),[]['concat'](_0x39ee1d[_0xec57('0x38')][_0x123608]));}else if(_0x123608===_0xec57('0x6e')){var _0x4e1656=JSON[_0xec57('0x6f')](_0x39ee1d[_0xec57('0x38')][_0x123608])['$gte'];var _0x13801c=JSON[_0xec57('0x6f')](_0x39ee1d[_0xec57('0x38')][_0x123608])[_0xec57('0x70')];_0x236bc4[_0xec57('0x42')](_0xec57('0x71'),_0x4e1656,_0x13801c);}else{if(_0x39ee1d[_0xec57('0x38')][_0x123608]===_0xec57('0x72')){_0x236bc4[_0xec57('0x42')]('i.'+_0x123608+_0xec57('0x73'));}else{_0x236bc4['where']('i.'+_0x123608+_0xec57('0x74'),_0x39ee1d['query'][_0x123608]);}}});}if(_0x39ee1d['query'][_0xec57('0x75')]){if(_0x39ee1d[_0xec57('0x38')][_0xec57('0x75')]==0x1){_0x236bc4[_0xec57('0x5c')](_0xec57('0x76'));}else{_0x236bc4[_0xec57('0x5c')](_0xec57('0x77'));}}if(_0x39ee1d['query'][_0xec57('0x78')]){_0x4348c5=_[_0xec57('0x79')](_0x39ee1d[_0xec57('0x38')][_0xec57('0x78')])?_0x39ee1d[_0xec57('0x38')][_0xec57('0x78')]:new Array(_0x39ee1d[_0xec57('0x38')][_0xec57('0x78')]);_0x4348c5[_0xec57('0x24')](function(_0xa6ee07){_0x5d0a30['or'](_0xec57('0x67'),'%,'+_0xa6ee07+',%');});}if(_0x39ee1d[_0xec57('0x38')][_0xec57('0x7a')]){var _0xcc292b=_0x39ee1d[_0xec57('0x38')][_0xec57('0x7a')][_0xec57('0x7b')]('\x5c','\x5c\x5c')[_0xec57('0x7b')](/'/g,'\x27\x27');if(qs[_0xec57('0x7c')](_0xcc292b)){_0x363bb1['or'](_0xec57('0x7d'),_0xcc292b+'%');}else if(qs[_0xec57('0x7e')](_0xcc292b)){_0x363bb1['or'](_0xec57('0x7f'),_0xcc292b+'%');}else{_0x363bb1['or'](_0xec57('0x80'),qs[_0xec57('0x5f')](_0xcc292b))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xec57('0x5f')](_0xcc292b));}}}_0x236bc4['where'](_0x363bb1);_0x236bc4[_0xec57('0x81')](_0xec57('0x82'));var _0x49c1f1={'type':db['Sequelize'][_0xec57('0x83')][_0xec57('0x84')],'raw':!![]};var _0x5d2159=_0x236bc4[_0xec57('0x85')]();_0x5d2159['field']('i.id');_0x5d2159['field'](_0xec57('0x86'),_0xec57('0x5a'));if(_0x575151[_0xec57('0x40')]){_0x575151[_0xec57('0x40')][_0xec57('0x24')](function(_0x305321){var _0x4428c9=_0x305321[0x0]===_0xec57('0x87')?_0x305321[0x0]:'i.'+_0x305321[0x0];_0x236bc4[_0xec57('0x40')](_0x4428c9,_0x305321[0x1]==='DESC'?![]:!![]);});}if(!_[_0xec57('0x6c')](_0x4348c5)){_0x236bc4[_0xec57('0x5c')](_0x5d0a30);_0x5d2159[_0xec57('0x42')](_0xec57('0x88'),_0x4348c5);}BPromise[_0xec57('0x89')]()[_0xec57('0x1b')](function(){if(!_0xd98cb8){if(_0x39ee1d[_0xec57('0x38')][_0xec57('0x8a')])return;_0x5d2159['where'](_0xec57('0x8b'));_0x236bc4['where'](_0xec57('0x8b'));return;}if(_0x39ee1d['user'][_0xec57('0x8c')]!==_0xec57('0x8d'))return;return _0x39ee1d[_0xec57('0x8e')][_0xec57('0x8f')]({'attributes':['id'],'raw':!![]})[_0xec57('0x1b')](function(_0x57586f){if(_[_0xec57('0x6c')](_0x57586f)){_0x5d2159[_0xec57('0x42')](_0xec57('0x90'));_0x236bc4[_0xec57('0x42')](_0xec57('0x90'));}else{_0x5d2159['where'](_0xec57('0x6d'),_['map'](_0x57586f,'id'));_0x236bc4[_0xec57('0x42')]('i.MailAccountId\x20IN\x20?',_[_0xec57('0x37')](_0x57586f,'id'));}});})['then'](function(){if(_0x39ee1d[_0xec57('0x8e')][_0xec57('0x8c')]===_0xec57('0x8d')&&!_0xd98cb8&&!_0x39ee1d['query'][_0xec57('0x8a')])return[];return db['sequelize']['query'](_0x5d2159[_0xec57('0x91')](),_0x49c1f1);})[_0xec57('0x1b')](function(_0x28205d){_0x488c75[_0xec57('0x18')]=_0x28205d['length'];if(_0x488c75[_0xec57('0x18')]===0x0)return[];return db['sequelize'][_0xec57('0x38')](_0x5cd57b[_0xec57('0x91')](),_0x49c1f1)[_0xec57('0x1b')](function(_0x10aa49){_0x9b5a17=_[_0xec57('0x92')](_0x10aa49,'id');_0x49c1f1=_['merge'](_0x49c1f1,{'model':db[_0xec57('0x32')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x39ee1d['query']['fields']){_0x575151[_0xec57('0x3b')][_0xec57('0x24')](function(_0x46e4c8){_0x236bc4['field']('i.'+_0x46e4c8);});}else{_0x236bc4[_0xec57('0x44')](_0xec57('0x86'),_0xec57('0x5a'));_0x236bc4['field'](_0xec57('0x93'),_0xec57('0x94'));_0x236bc4[_0xec57('0x44')](_0xec57('0x95'),_0xec57('0x96'));_0x236bc4[_0xec57('0x44')]('a.email',_0xec57('0x97'));_0x236bc4[_0xec57('0x44')]('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201))\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xec57('0x87'));_0x236bc4[_0xec57('0x44')](_0xec57('0x82'));_0x236bc4[_0xec57('0x44')](_0xec57('0x98'));_0x236bc4['field'](_0xec57('0x99'));_0x236bc4['field'](_0xec57('0x9a'));_0x236bc4[_0xec57('0x44')](_0xec57('0x9b'));_0x236bc4[_0xec57('0x44')]('i.attach');_0x236bc4[_0xec57('0x44')](_0xec57('0x9c'));_0x236bc4[_0xec57('0x44')](_0xec57('0x9d'));_0x236bc4[_0xec57('0x44')](_0xec57('0x9e'));_0x236bc4[_0xec57('0x44')]('i.disposition');_0x236bc4[_0xec57('0x44')](_0xec57('0x9f'));_0x236bc4[_0xec57('0x44')](_0xec57('0xa0'));_0x236bc4['field'](_0xec57('0xa1'));_0x236bc4[_0xec57('0x44')](_0xec57('0xa2'));_0x236bc4[_0xec57('0x44')](_0xec57('0xa3'));_0x236bc4['field'](_0xec57('0xa4'));_0x236bc4[_0xec57('0x44')](_0xec57('0xa5'));_0x236bc4[_0xec57('0x44')](_0xec57('0xa6'),_0xec57('0xa7'));_0x236bc4[_0xec57('0x44')](_0xec57('0xa8'),_0xec57('0xa9'));_0x236bc4[_0xec57('0x44')](_0xec57('0xaa'),'Contact.email');_0x236bc4['field'](_0xec57('0xab'),'Contact.phone');_0x236bc4[_0xec57('0x44')]('c.mobile','Contact.mobile');_0x236bc4[_0xec57('0x44')](_0xec57('0xac'),'Contact.fax');_0x236bc4[_0xec57('0x44')](_0xec57('0xad'),_0xec57('0xae'));_0x236bc4[_0xec57('0x44')](_0xec57('0xaf'),'Owner.internal');_0x236bc4[_0xec57('0x44')](_0xec57('0xb0'),_0xec57('0x22'));}if(_0x575151['limit'])_0x236bc4[_0xec57('0x17')](_0x575151[_0xec57('0x17')]);if(_0x575151['offset'])_0x236bc4[_0xec57('0x15')](_0x575151['offset']);return db['sequelize']['query'](_0x236bc4[_0xec57('0x91')](),_0x49c1f1);})[_0xec57('0x1b')](function(_0x28125c){if(_0x28125c[_0xec57('0x3d')]>0x0)_0x48bcac[_0xec57('0x42')](_0xec57('0xb1'),_[_0xec57('0x37')](_0x28125c,'id'));return db['sequelize'][_0xec57('0x38')](_0x48bcac[_0xec57('0x91')](),_0x49c1f1)[_0xec57('0x1b')](function(_0x33f5aa){var _0x2fe7ec=_[_0xec57('0xb2')](_0x33f5aa,_0xec57('0xb3'));var _0x4b674d=[];return db['Setting'][_0xec57('0x26')]({'attributes':[_0xec57('0xb4')],'raw':!![]})[_0xec57('0x1b')](function(_0xa0137d){var _0x5d0f6d=_0xa0137d[_0xec57('0xb4')];_0x28125c[_0xec57('0x24')](function(_0x449628){_0x4b674d['push'](updateMailInteraction(_0x449628,_0x9b5a17,_0x2fe7ec,_0x5d0f6d));});return BPromise[_0xec57('0xb5')](_0x4b674d);});});});})[_0xec57('0x1b')](function(_0x1ae6af){_0x488c75[_0xec57('0xb6')]=_0x1ae6af;return _0x488c75;})[_0xec57('0x1b')](respondWithFilteredResult(_0x2ff5d8,_0x575151))[_0xec57('0x2a')](handleError(_0x2ff5d8,null));};exports[_0xec57('0xb7')]=function(_0x4a2e79,_0x5f2888){var _0x509464={'raw':![],'where':{'id':_0x4a2e79['params']['id']}},_0x2d8c08={};_0x2d8c08[_0xec57('0x36')]=_['keys'](db[_0xec57('0x32')][_0xec57('0x33')]);_0x2d8c08[_0xec57('0x38')]=_[_0xec57('0xb8')](_0x4a2e79[_0xec57('0x38')]);_0x2d8c08[_0xec57('0x39')]=_['intersection'](_0x2d8c08['model'],_0x2d8c08[_0xec57('0x38')]);_0x509464[_0xec57('0x3b')]=_[_0xec57('0x3a')](_0x2d8c08['model'],qs['fields'](_0x4a2e79[_0xec57('0x38')][_0xec57('0x3c')]));_0x509464[_0xec57('0x3b')]=_0x509464['attributes'][_0xec57('0x3d')]?_0x509464[_0xec57('0x3b')]:_0x2d8c08[_0xec57('0x36')];if(_0x4a2e79[_0xec57('0x38')][_0xec57('0xb9')]){_0x509464[_0xec57('0xba')]=[{'all':!![]}];}_0x509464=_[_0xec57('0xbb')]({},_0x509464,_0x4a2e79[_0xec57('0xbc')]);return db[_0xec57('0x32')][_0xec57('0x59')](_0x509464)['then'](handleEntityNotFound(_0x5f2888,null))[_0xec57('0x1b')](respondWithResult(_0x5f2888,null))[_0xec57('0x2a')](handleError(_0x5f2888,null));};exports[_0xec57('0xbd')]=function(_0xeff077,_0x312170){return db[_0xec57('0x32')][_0xec57('0xbd')](_0xeff077[_0xec57('0xbe')],{})['then'](respondWithResult(_0x312170,0xc9))['catch'](handleError(_0x312170,null));};exports[_0xec57('0x1a')]=function(_0x1a8bfe,_0x2fdbe5){if(_0x1a8bfe[_0xec57('0xbe')]['id']){delete _0x1a8bfe[_0xec57('0xbe')]['id'];}return db[_0xec57('0x32')]['find']({'where':{'id':_0x1a8bfe[_0xec57('0xbf')]['id']}})[_0xec57('0x1b')](handleEntityNotFound(_0x2fdbe5,null))['then'](saveUpdates(_0x1a8bfe[_0xec57('0xbe')],null))[_0xec57('0x1b')](respondWithResult(_0x2fdbe5,null))[_0xec57('0x2a')](handleError(_0x2fdbe5,null));};exports[_0xec57('0x1c')]=function(_0x334887,_0xb71f24){return db['MailInteraction']['find']({'where':{'id':_0x334887['params']['id']}})[_0xec57('0x1b')](handleEntityNotFound(_0xb71f24,null))[_0xec57('0x1b')](removeEntity(_0xb71f24,null))[_0xec57('0x2a')](handleError(_0xb71f24,null));};exports['describe']=function(_0x2f665e,_0x4fe237){return db[_0xec57('0x32')][_0xec57('0xc0')]()['then'](respondWithResult(_0x4fe237,null))[_0xec57('0x2a')](handleError(_0x4fe237,null));};exports[_0xec57('0xc1')]=function(_0x963eef,_0x2ef53a){return db['MailMessage']['find']({'where':{'id':_0x963eef[_0xec57('0xbf')]['id']}})[_0xec57('0x1b')](handleEntityNotFound(_0x2ef53a,null))[_0xec57('0x1b')](function(_0x90b7dc){if(_0x90b7dc){return _0x90b7dc['addMessage'](_0x963eef[_0xec57('0xbe')][_0xec57('0xc2')],_[_0xec57('0xc3')](_0x963eef[_0xec57('0xbe')],['ids','id'])||{});}})[_0xec57('0x1b')](respondWithResult(_0x2ef53a,null))[_0xec57('0x2a')](handleError(_0x2ef53a,null));};exports[_0xec57('0xc4')]=function(_0x5420f5,_0x1d560e){var _0x490689={'raw':![],'where':{}};var _0x2ab448={};var _0x2a0345={'count':0x0,'rows':[]};return db[_0xec57('0x32')][_0xec57('0x26')]({'where':{'id':_0x5420f5['params']['id']}})[_0xec57('0x1b')](handleEntityNotFound(_0x1d560e,null))['then'](function(_0x4f2caa){if(_0x4f2caa){_0x2ab448[_0xec57('0x36')]=_['keys'](db[_0xec57('0xc5')][_0xec57('0x33')]);_0x2ab448[_0xec57('0x38')]=_[_0xec57('0xb8')](_0x5420f5[_0xec57('0x38')]);_0x2ab448['filters']=_[_0xec57('0x3a')](_0x2ab448['model'],_0x2ab448[_0xec57('0x38')]);_0x490689[_0xec57('0x3b')]=_[_0xec57('0x3a')](_0x2ab448['model'],qs[_0xec57('0x3c')](_0x5420f5[_0xec57('0x38')]['fields']));_0x490689[_0xec57('0x3b')]=_0x490689[_0xec57('0x3b')][_0xec57('0x3d')]?_0x490689[_0xec57('0x3b')]:_0x2ab448[_0xec57('0x36')];if(!_0x5420f5['query'][_0xec57('0x3e')](_0xec57('0x3f'))){_0x490689['limit']=qs[_0xec57('0x17')](_0x5420f5[_0xec57('0x38')]['limit']);_0x490689[_0xec57('0x15')]=qs[_0xec57('0x15')](_0x5420f5[_0xec57('0x38')][_0xec57('0x15')]);}_0x490689['order']=qs['sort'](_0x5420f5[_0xec57('0x38')]['sort']);_0x490689[_0xec57('0x42')]=qs[_0xec57('0x39')](_[_0xec57('0x43')](_0x5420f5['query'],_0x2ab448[_0xec57('0x39')]));_0x490689[_0xec57('0x42')][_0xec57('0xb3')]=_0x4f2caa['id'];if(_0x5420f5[_0xec57('0x38')]['filter']){_0x490689['where']=_['merge'](_0x490689['where'],{'$or':_[_0xec57('0x37')](_0x490689[_0xec57('0x3b')],function(_0x2b71f5){var _0x5e4ce0={};_0x5e4ce0[_0x2b71f5]={'$like':'%'+_0x5420f5[_0xec57('0x38')][_0xec57('0x7a')]+'%'};return _0x5e4ce0;})});}if(_0x5420f5['query'][_0xec57('0xc6')]){var _0x57e8bd=_0x5420f5['query'][_0xec57('0xc6')][_0xec57('0x23')](',');var _0x135e18={};_0x135e18[_0x57e8bd[0x0]]={'$gte':moment(_0x57e8bd[0x1])[_0xec57('0xc7')](_0xec57('0xc8'))};_0x490689[_0xec57('0x42')]=_[_0xec57('0xbb')](_0x490689['where'],_0x135e18);}_0x490689=_[_0xec57('0xbb')]({},_0x490689,_0x5420f5['options']);return db[_0xec57('0xc5')][_0xec57('0x18')]({'where':_0x490689['where']})[_0xec57('0x1b')](function(_0x4e7024){_0x2a0345[_0xec57('0x18')]=_0x4e7024;if(_0x5420f5['query'][_0xec57('0xb9')]){_0x490689['include']=[{'all':!![]}];}return db['MailMessage'][_0xec57('0xc9')](_0x490689);})[_0xec57('0x1b')](function(_0x4af4db){if(_0x5420f5['query'][_0xec57('0xca')]==='true'){for(var _0x2dc2bd=0x0;_0x2dc2bd<_0x4af4db['length'];_0x2dc2bd++){_0x4af4db[_0x2dc2bd][_0xec57('0xbe')]=juice(_0x4af4db[_0x2dc2bd][_0xec57('0xbe')]);}}_0x2a0345[_0xec57('0xb6')]=_0x4af4db;return _0x2a0345;});}})[_0xec57('0x1b')](respondWithFilteredResult(_0x1d560e,_0x490689))[_0xec57('0x2a')](handleError(_0x1d560e,null));};exports[_0xec57('0xcb')]=function(_0x23801e,_0x44f6a6){return db[_0xec57('0x32')][_0xec57('0x59')]({'where':{'id':_0x23801e[_0xec57('0xbf')]['id']}})[_0xec57('0x1b')](handleEntityNotFound(_0x44f6a6,null))['then'](function(_0x5d22ca){if(_0x5d22ca){return _0x5d22ca['setTags'](_0x23801e[_0xec57('0xbe')][_0xec57('0xc2')],_[_0xec57('0xc3')](_0x23801e[_0xec57('0xbe')],[_0xec57('0xc2'),'id'])||{})['spread'](function(){return db['Tag'][_0xec57('0xc9')]({'attributes':['id',_0xec57('0x1f'),_0xec57('0xcc')],'where':{'id':_0x23801e[_0xec57('0xbe')][_0xec57('0xc2')]}});})[_0xec57('0x1b')](function(_0x22263e){socket[_0xec57('0xcd')](_0xec57('0xce'),{'id':Number(_0x23801e[_0xec57('0xbf')]['id']),'tags':_0x22263e||[]});return{'id':Number(_0x23801e[_0xec57('0xbf')]['id']),'tags':_0x22263e||[]};});}})[_0xec57('0x1b')](respondWithResult(_0x44f6a6,null))['catch'](handleError(_0x44f6a6,null));};exports[_0xec57('0xcf')]=function(_0x95525a,_0x344d11){return db[_0xec57('0x32')][_0xec57('0x59')]({'where':{'id':_0x95525a[_0xec57('0xbf')]['id']}})[_0xec57('0x1b')](handleEntityNotFound(_0x344d11,null))[_0xec57('0x1b')](function(_0x21ff99){if(_0x21ff99){return _0x21ff99[_0xec57('0xcf')](_0x95525a[_0xec57('0x38')][_0xec57('0xc2')]);}})[_0xec57('0x1b')](respondWithStatusCode(_0x344d11,null))[_0xec57('0x2a')](handleError(_0x344d11,null));};exports[_0xec57('0xd0')]=function(_0x4b03ae,_0x2a6616){var _0x70deb7=moment()[_0xec57('0xd1')]()[_0xec57('0x91')]();var _0x413a02=path[_0xec57('0xd2')](config['root'],_0xec57('0xd3'),_0xec57('0xd4'),_0xec57('0xd5'));var _0x3ffaf2=path['join'](config[_0xec57('0xd6')],_0xec57('0xd3'),_0xec57('0xd4'),_0xec57('0xd7'));var _0x24975d=path[_0xec57('0xd2')](_0x413a02,_0x70deb7);var _0x129b2b=util[_0xec57('0xc7')](_0xec57('0xd8'),_0x4b03ae[_0xec57('0xbf')]['id'],_0x70deb7);var _0x19cf01=path[_0xec57('0xd2')](_0x413a02,_0x129b2b);var _0x531b9a=[];if(_0x4b03ae['query']['attachments']){_0x531b9a[_0xec57('0xd9')]({'model':db[_0xec57('0xda')],'as':_0xec57('0xdb'),'raw':!![]});}var _0x225c21=[{'model':db[_0xec57('0xc5')],'as':_0xec57('0xdc'),'attributes':['id',_0xec57('0xbe'),_0xec57('0x4b'),'to','cc',_0xec57('0xdd'),'subject','createdAt'],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x531b9a}];return db[_0xec57('0x32')][_0xec57('0x59')]({'where':{'id':_0x4b03ae[_0xec57('0xbf')]['id']},'include':_0x225c21})[_0xec57('0x1b')](handleEntityNotFound(_0x2a6616,null))['then'](function(_0x4abae1){if(_0x4abae1&&_0x4abae1[_0xec57('0xdc')]){var _0x4995b3=_0x4abae1[_0xec57('0xde')]({'plain':!![]});fs[_0xec57('0xdf')](_0x24975d);return BPromise[_0xec57('0xe0')](_0x4995b3[_0xec57('0xdc')],function(_0x381bed,_0x1fbb83){var _0x2fed35={'from':_0x381bed['from'],'to':_0x381bed['to'],'subject':_0x381bed[_0xec57('0xe1')],'html':htmlEntities[_0xec57('0xe2')](_0x381bed[_0xec57('0xbe')]),'headers':{'Date':moment(_0x381bed[_0xec57('0x6e')])['format'](_0xec57('0xe3'))},'attachments':[]};if(_0x381bed['cc']){_0x2fed35['headers']['Cc']=_0x381bed['cc'];}if(_0x381bed['bcc']){_0x2fed35['headers'][_0xec57('0xe4')]=_0x381bed[_0xec57('0xdd')];}return new BPromise(function(_0x34b249,_0x5b07bc){if(_0x381bed[_0xec57('0xdb')]){for(var _0x55091a=0x0;_0x55091a<_0x381bed['Attachments'][_0xec57('0x3d')];_0x55091a++){var _0x57e298=_0x381bed[_0xec57('0xdb')][_0x55091a];var _0x14170e=path['join'](_0x3ffaf2,_0x57e298[_0xec57('0xe5')]);if(fs[_0xec57('0xe6')](_0x14170e)){_0x2fed35['attachments'][_0xec57('0xd9')]({'name':_0x57e298[_0xec57('0x1f')],'contentType':_0x57e298[_0xec57('0x35')],'data':fs['readFileSync'](_0x14170e)});}}}emlformat[_0xec57('0xe7')](_0x2fed35,function(_0x5a1565,_0x30f52a){if(_0x5a1565)return _0x5b07bc(_0x5a1565);fs[_0xec57('0xe8')](path[_0xec57('0xd2')](_0x24975d,util[_0xec57('0xc7')]('message%d.eml',_0x1fbb83)),_0x30f52a);return _0x34b249(_0x30f52a);});});})[_0xec57('0x1b')](function(){return new BPromise(function(_0x2ed05b,_0xfbe763){zipdir(_0x24975d,{'saveTo':_0x19cf01},function(_0x3268bd,_0x1d772e){if(_0x3268bd)return _0xfbe763(_0x3268bd);return _0x2ed05b(_0x1d772e);});})[_0xec57('0x1b')](function(){return new BPromise(function(_0x88f6fb,_0x2d7c59){rimraf(_0x24975d,function(_0x768fa1){if(_0x768fa1)_0x2d7c59(_0x768fa1);return _0x88f6fb();});});})['then'](function(){return _0x2a6616[_0xec57('0xd0')](_0x19cf01,_0x129b2b,function(_0x3167cc){if(!_0x3167cc)fs[_0xec57('0xe9')](_0x19cf01);});});});}else{return _0x2a6616['sendStatus'](0xc8);}})[_0xec57('0x2a')](handleError(_0x2a6616,null));};