b0a7cbd728f8a9deb719a3a46a0523ea0a8459c7
[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 _0x9934=['`\x20>\x200','operator','$substring','value','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','some','isEmpty','MailAccountId','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','i.id\x20LIKE\x20?','isEmail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','Sequelize','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','user','agent','i.MailAccountId\x20IS\x20NULL','i.MailAccountId\x20IN\x20?','toString','sequelize','merge','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_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','i.updatedAt','i.closed','i.closedAt','i.lastMsgDirection','i.disposition','i.thirdDisposition','i.substatus','i.to','i.ContactId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.phone','c.mobile','Contact.mobile','Contact.fax','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','MailInteractionId','Setting','enableEmailPreview','all','rows','show','includeAll','create','body','params','destroy','describe','addMessage','ids','nolimit','YYYY-MM-DD\x20HH:mm:ss','options','include','findAll','true','spread','color','mailInteractionTags:save','removeTags','unix','root','server','files','tmp','join','attachments','format','Messages','bcc','get','each','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','Attachments','basename','existsSync','readFileSync','build','writeFileSync','message%d.eml','download','unlinkSync','eml-format','rimraf','zip-dir','moment','util','path','squel','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../mysqldb','html-entities','defaults','redis','socket.io-emitter','./mailInteraction.socket','register','status','end','json','offset','undefined','count','limit','set','update','then','sendStatus','stack','name','send','Users','map','fullname','TagIds','Tags','forEach','push','MailMessage','findOne','out','plainBody','-id','trimStart','catch','index','MailInteraction','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','select','field','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','left_join','users','mail_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','length','conditions','find','unreadMessages','having','`\x20=\x200'];(function(_0x5ae28c,_0x59bcb2){var _0x4ae7dd=function(_0xf4f96a){while(--_0xf4f96a){_0x5ae28c['push'](_0x5ae28c['shift']());}};_0x4ae7dd(++_0x59bcb2);}(_0x9934,0x162));var _0x4993=function(_0x120123,_0x4eff59){_0x120123=_0x120123-0x0;var _0x3bec4c=_0x9934[_0x120123];return _0x3bec4c;};'use strict';var emlformat=require(_0x4993('0x0'));var rimraf=require(_0x4993('0x1'));var zipdir=require(_0x4993('0x2'));var moment=require(_0x4993('0x3'));var BPromise=require('bluebird');var util=require(_0x4993('0x4'));var path=require(_0x4993('0x5'));var fs=require('fs');var _=require('lodash');var squel=require(_0x4993('0x6'));var juice=require('juice');var Redis=require('ioredis');var qs=require(_0x4993('0x7'));var as=require(_0x4993('0x8'));var logger=require('../../config/logger')(_0x4993('0x9'));var config=require('../../config/environment');var db=require(_0x4993('0xa'))['db'];var htmlEntities=require(_0x4993('0xb'));config['redis']=_[_0x4993('0xc')](config[_0x4993('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x4993('0xe'))(new Redis(config[_0x4993('0xd')]));require(_0x4993('0xf'))[_0x4993('0x10')](socket);function respondWithStatusCode(_0x3bf4b4,_0x288ebf){_0x288ebf=_0x288ebf||0xcc;return function(_0x60936b){if(_0x60936b){return _0x3bf4b4['sendStatus'](_0x288ebf);}return _0x3bf4b4[_0x4993('0x11')](_0x288ebf)[_0x4993('0x12')]();};}function respondWithResult(_0x4702f1,_0x1960a9){_0x1960a9=_0x1960a9||0xc8;return function(_0x2450ec){if(_0x2450ec){return _0x4702f1['status'](_0x1960a9)[_0x4993('0x13')](_0x2450ec);}};}function respondWithFilteredResult(_0x37a107,_0x1794db){return function(_0xed2cc7){if(_0xed2cc7){var _0x10bb95=typeof _0x1794db[_0x4993('0x14')]===_0x4993('0x15')&&typeof _0x1794db['limit']===_0x4993('0x15');var _0x171450=_0xed2cc7[_0x4993('0x16')];var _0x33831b=_0x10bb95?0x0:_0x1794db[_0x4993('0x14')];var _0x1d351d=_0x10bb95?_0xed2cc7[_0x4993('0x16')]:_0x1794db['offset']+_0x1794db[_0x4993('0x17')];var _0x3acb78;if(_0x1d351d>=_0x171450){_0x1d351d=_0x171450;_0x3acb78=0xc8;}else{_0x3acb78=0xce;}_0x37a107['status'](_0x3acb78);return _0x37a107[_0x4993('0x18')]('Content-Range',_0x33831b+'-'+_0x1d351d+'/'+_0x171450)[_0x4993('0x13')](_0xed2cc7);}return null;};}function saveUpdates(_0x1f39c9){return function(_0x4e7a38){if(_0x4e7a38){return _0x4e7a38[_0x4993('0x19')](_0x1f39c9)[_0x4993('0x1a')](function(_0x64c32){return _0x64c32;});}return null;};}function removeEntity(_0x1bd923){return function(_0x264260){if(_0x264260){return _0x264260['destroy']()['then'](function(){_0x1bd923[_0x4993('0x11')](0xcc)[_0x4993('0x12')]();});}};}function handleEntityNotFound(_0x1942e4){return function(_0x1d02ad){if(!_0x1d02ad){_0x1942e4[_0x4993('0x1b')](0x194);}return _0x1d02ad;};}function handleError(_0x236f65,_0x15f5c2){_0x15f5c2=_0x15f5c2||0x1f4;return function(_0x3d8ccf){logger['error'](_0x3d8ccf[_0x4993('0x1c')]);if(_0x3d8ccf[_0x4993('0x1d')]){delete _0x3d8ccf['name'];}_0x236f65[_0x4993('0x11')](_0x15f5c2)[_0x4993('0x1e')](_0x3d8ccf);};}function getInteractionUsers(_0xb809bc,_0x586af5){return new BPromise(function(_0x469133,_0x92997d){try{if(_0x586af5[_0xb809bc['id']]){_0xb809bc[_0x4993('0x1f')]=_[_0x4993('0x20')](_0x586af5[_0xb809bc['id']],function(_0x49a5b1){return{'id':_0x49a5b1['id'],'fullname':_0x49a5b1[_0x4993('0x21')]};});}}catch(_0x2e3ca4){_0x92997d(_0x2e3ca4);}_0x469133(_0xb809bc);});}function getInteractionTags(_0x494097,_0xcf2250){return new BPromise(function(_0x2af4f9,_0x940ab4){try{if(_0x494097[_0x4993('0x22')]){_0x494097[_0x4993('0x23')]=[];_0x494097['TagIds']['split'](',')[_0x4993('0x24')](function(_0x3513fa){_0x494097['Tags'][_0x4993('0x25')](_0xcf2250[_0x3513fa]);});}delete _0x494097[_0x4993('0x22')];}catch(_0x23c8c9){_0x940ab4(_0x23c8c9);}_0x2af4f9(_0x494097);});}function getLastMessageText(_0x378bb1){return new BPromise(function(_0x31ef78,_0x39a79b){return db[_0x4993('0x26')][_0x4993('0x27')]({'where':{'$and':[{'MailInteractionId':_0x378bb1['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x4993('0x28')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x4993('0x29')],'order':_0x4993('0x2a'),'raw':!![]})[_0x4993('0x1a')](function(_0x417b44){if(_0x417b44&&_0x417b44[_0x4993('0x29')]){_0x378bb1['lastMsgText']=_[_0x4993('0x2b')](_0x417b44['plainBody']);}_0x31ef78(_0x378bb1);})[_0x4993('0x2c')](function(_0xcdbc26){_0x39a79b(_0xcdbc26);});});}function updateMailInteraction(_0x46434e,_0x54c492,_0x2f1ea0,_0x21ca1f){return new BPromise(function(_0x2e464a,_0x36ff6a){return getInteractionUsers(_0x46434e,_0x2f1ea0)['then'](function(_0x983142){return getInteractionTags(_0x983142,_0x54c492);})['then'](function(_0x4ad138){if(_0x21ca1f){_0x2e464a(getLastMessageText(_0x4ad138));}else{_0x2e464a(_0x4ad138);}})[_0x4993('0x2c')](function(_0x244a4d){_0x36ff6a(_0x244a4d);});});}exports[_0x4993('0x2d')]=function(_0x5ad0a9,_0x57dd0f){var _0x287c68={},_0x5d3c1b={},_0x203b29={'count':0x0,'rows':[]};var _0x8e5ae=_[_0x4993('0x20')](db[_0x4993('0x2e')][_0x4993('0x2f')],function(_0xc1d1e4){return{'name':_0xc1d1e4['fieldName'],'type':_0xc1d1e4[_0x4993('0x30')][_0x4993('0x31')]};});_0x5d3c1b[_0x4993('0x32')]=_[_0x4993('0x20')](_0x8e5ae,_0x4993('0x1d'));_0x5d3c1b[_0x4993('0x33')]=_[_0x4993('0x34')](_0x5ad0a9[_0x4993('0x33')]);_0x5d3c1b[_0x4993('0x35')]=_[_0x4993('0x36')](_0x5d3c1b[_0x4993('0x32')],_0x5d3c1b[_0x4993('0x33')]);_0x287c68[_0x4993('0x37')]=_[_0x4993('0x36')](_0x5d3c1b[_0x4993('0x32')],qs[_0x4993('0x38')](_0x5ad0a9['query'][_0x4993('0x38')]));_0x287c68[_0x4993('0x37')]=_0x287c68[_0x4993('0x37')]['length']?_0x287c68[_0x4993('0x37')]:_0x5d3c1b[_0x4993('0x32')];if(!_0x5ad0a9['query'][_0x4993('0x39')]('nolimit')){_0x287c68['limit']=qs[_0x4993('0x17')](_0x5ad0a9[_0x4993('0x33')][_0x4993('0x17')]);_0x287c68[_0x4993('0x14')]=qs[_0x4993('0x14')](_0x5ad0a9[_0x4993('0x33')][_0x4993('0x14')]);}_0x287c68[_0x4993('0x3a')]=qs[_0x4993('0x3b')](_0x5ad0a9['query'][_0x4993('0x3b')]);_0x287c68[_0x4993('0x3c')]=qs['filters'](_[_0x4993('0x3d')](_0x5ad0a9[_0x4993('0x33')],_0x5d3c1b['filters']),_0x8e5ae);var _0x372ed7=[];var _0x4dd61c=squel[_0x4993('0x3e')]()[_0x4993('0x3f')]('id')['field'](_0x4993('0x1d'))[_0x4993('0x3f')]('color')[_0x4993('0x40')](_0x4993('0x41'));var _0x19638f=squel['select']()['field'](_0x4993('0x42'))['field'](_0x4993('0x43'))[_0x4993('0x3f')](_0x4993('0x44'))[_0x4993('0x40')]('user_has_mail_interactions','ui')[_0x4993('0x45')](_0x4993('0x46'),'u','u.id\x20=\x20ui.UserId');var _0x4fae30=squel['select']()[_0x4993('0x40')](_0x4993('0x47'),'i')[_0x4993('0x45')](_0x4993('0x48'),'c',_0x4993('0x49'))['left_join']('users','o',_0x4993('0x4a'))[_0x4993('0x45')](_0x4993('0x4b'),'a',_0x4993('0x4c'))['left_join'](_0x4993('0x4d'),'me','me.MailInteractionId\x20=\x20i.id')['left_join']('mail_interaction_has_tags','it',_0x4993('0x4e'))[_0x4993('0x45')](_0x4993('0x41'),'t',_0x4993('0x4f'));var _0x412d9e=squel[_0x4993('0x50')]();var _0x328a75=[];var _0x3e5f69=squel[_0x4993('0x50')]();var _0x52fa23;if(_0x5ad0a9[_0x4993('0x33')]['search']){_0x52fa23=as[_0x4993('0x51')](_0x5ad0a9[_0x4993('0x33')][_0x4993('0x52')]);var _0x1bf82d=_0x52fa23[_0x4993('0x53')];for(var _0x2cabe8=0x0;_0x2cabe8<_0x52fa23['conditions'][_0x4993('0x54')];_0x2cabe8++){var _0x42f956=_0x52fa23[_0x4993('0x55')][_0x2cabe8];var _0x363708='i';var _0x3fe20e=_[_0x4993('0x56')](_0x8e5ae,[_0x4993('0x1d'),_0x42f956[_0x4993('0x3f')]]);if(!_0x3fe20e){switch(_0x42f956['field']){case _0x4993('0x57'):if(_0x42f956['value']==0x1){_0x4fae30[_0x4993('0x58')]('`'+_0x42f956[_0x4993('0x3f')]+_0x4993('0x59'));}else{_0x4fae30[_0x4993('0x58')]('`'+_0x42f956[_0x4993('0x3f')]+_0x4993('0x5a'));}break;case'Contact':if(_0x42f956[_0x4993('0x5b')]===_0x4993('0x5c')){if(_0x42f956[_0x4993('0x5d')][_0x4993('0x5e')]('\x20')[_0x4993('0x54')]>0x1){_0x412d9e[_0x1bf82d](_0x4993('0x5f'),qs[_0x4993('0x60')](_0x42f956[_0x4993('0x5d')]),null);}else{var _0x24295a='%'+_0x42f956[_0x4993('0x5d')]+'%';_0x412d9e[_0x1bf82d](_0x4993('0x61'),_0x24295a,_0x24295a,_0x24295a);}}else{_0x3fe20e=_[_0x4993('0x56')](_0x8e5ae,[_0x4993('0x1d'),_0x4993('0x62')]);_0x42f956[_0x4993('0x3f')]='ContactId';_0x256025=as[_0x4993('0x63')](_0x363708,_0x3fe20e['type'],_0x42f956);_0x412d9e[_0x1bf82d](_0x256025[_0x4993('0x64')],_0x256025['value'][_0x4993('0x65')],_0x256025[_0x4993('0x5d')][_0x4993('0x12')]);}break;case _0x4993('0x66'):var _0x3b9006=_0x42f956[_0x4993('0x5d')][_0x4993('0x5e')](',')['map'](function(_0x1f2508){return Number(_0x1f2508);});_0x3b9006[_0x4993('0x24')](function(_0x11efb8){_0x3e5f69['or'](_0x4993('0x67'),'%,'+_0x11efb8+',%');});_0x328a75=_[_0x4993('0x68')](_0x328a75,_0x3b9006);break;case _0x4993('0x69'):if(_0x42f956[_0x4993('0x5b')]===_0x4993('0x5c')){_0x412d9e[_0x1bf82d](_0x4993('0x6a'),'%'+_0x42f956[_0x4993('0x5d')]+'%',null);}else{_0x3fe20e=_['find'](_0x8e5ae,['name',_0x4993('0x6b')]);_0x42f956[_0x4993('0x3f')]='UserId';_0x256025=as[_0x4993('0x63')](_0x363708,_0x3fe20e['type'],_0x42f956);_0x412d9e[_0x1bf82d](_0x256025[_0x4993('0x64')],_0x256025['value'][_0x4993('0x65')],_0x256025['value'][_0x4993('0x12')]);}break;case'plainBody':_0x256025=as[_0x4993('0x63')]('me',null,_0x42f956);_0x412d9e[_0x1bf82d](_0x256025[_0x4993('0x64')],_0x256025[_0x4993('0x5d')]['start'],_0x256025[_0x4993('0x5d')]['end']);break;}}else{var _0x256025=as[_0x4993('0x63')](_0x363708,_0x3fe20e[_0x4993('0x30')],_0x42f956);_0x412d9e[_0x1bf82d](_0x256025[_0x4993('0x64')],_0x256025['value'][_0x4993('0x65')],_0x256025[_0x4993('0x5d')][_0x4993('0x12')]);}}}else{var _0x30a357=_(_0x5ad0a9[_0x4993('0x33')])[_0x4993('0x34')]()[_0x4993('0x20')](function(_0x5bf366){return _[_0x4993('0x6c')](_0x8e5ae,[_0x4993('0x1d'),_0x5bf366])?_0x5bf366:undefined;})['compact']()[_0x4993('0x5d')]();if(!_[_0x4993('0x6d')](_0x30a357)){_0x30a357[_0x4993('0x24')](function(_0x2ad521){if(_0x2ad521===_0x4993('0x6e')){_0x4fae30[_0x4993('0x3c')]('i.MailAccountId\x20IN\x20?',[][_0x4993('0x6f')](_0x5ad0a9[_0x4993('0x33')][_0x2ad521]));}else if(_0x2ad521===_0x4993('0x70')){var _0x2fbdcf=JSON[_0x4993('0x71')](_0x5ad0a9['query'][_0x2ad521])[_0x4993('0x72')];var _0x36395b=JSON[_0x4993('0x71')](_0x5ad0a9[_0x4993('0x33')][_0x2ad521])['$lte'];_0x4fae30['where'](_0x4993('0x73'),_0x2fbdcf,_0x36395b);}else{if(_0x5ad0a9[_0x4993('0x33')][_0x2ad521]==='null'){_0x4fae30[_0x4993('0x3c')]('i.'+_0x2ad521+_0x4993('0x74'));}else{_0x4fae30[_0x4993('0x3c')]('i.'+_0x2ad521+_0x4993('0x75'),_0x5ad0a9[_0x4993('0x33')][_0x2ad521]);}}});}if(_0x5ad0a9[_0x4993('0x33')]['read']){if(_0x5ad0a9[_0x4993('0x33')][_0x4993('0x76')]==0x1){_0x4fae30['having'](_0x4993('0x77'));}else{_0x4fae30[_0x4993('0x58')](_0x4993('0x78'));}}if(_0x5ad0a9['query'][_0x4993('0x79')]){_0x328a75=_[_0x4993('0x7a')](_0x5ad0a9['query'][_0x4993('0x79')])?_0x5ad0a9[_0x4993('0x33')][_0x4993('0x79')]:new Array(_0x5ad0a9[_0x4993('0x33')][_0x4993('0x79')]);_0x328a75[_0x4993('0x24')](function(_0x5164ea){_0x3e5f69['or'](_0x4993('0x67'),'%,'+_0x5164ea+',%');});}if(_0x5ad0a9[_0x4993('0x33')][_0x4993('0x7b')]){var _0x5de66b=_0x5ad0a9['query'][_0x4993('0x7b')][_0x4993('0x7c')]('\x5c','\x5c\x5c')[_0x4993('0x7c')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x5de66b)){_0x412d9e['or'](_0x4993('0x7d'),_0x5de66b+'%');}else if(qs[_0x4993('0x7e')](_0x5de66b)){_0x412d9e['or']('c.email\x20LIKE\x20?',_0x5de66b+'%');}else{_0x412d9e['or'](_0x4993('0x7f'),qs[_0x4993('0x60')](_0x5de66b))['or'](_0x4993('0x80'),qs[_0x4993('0x60')](_0x5de66b));}}}_0x4fae30[_0x4993('0x3c')](_0x412d9e);_0x4fae30[_0x4993('0x81')]('i.id');var _0x202402={'type':db[_0x4993('0x82')]['QueryTypes']['SELECT'],'raw':!![]};var _0x3702c6=_0x4fae30[_0x4993('0x83')]();_0x3702c6['field'](_0x4993('0x84'));_0x3702c6['field'](_0x4993('0x85'),'unreadMessages');if(_0x287c68[_0x4993('0x3a')]){_0x287c68[_0x4993('0x3a')][_0x4993('0x24')](function(_0x2e24ac){var _0x23ac05=_0x2e24ac[0x0]==='contactName'?_0x2e24ac[0x0]:'i.'+_0x2e24ac[0x0];_0x4fae30[_0x4993('0x3a')](_0x23ac05,_0x2e24ac[0x1]===_0x4993('0x86')?![]:!![]);});}if(!_[_0x4993('0x6d')](_0x328a75)){_0x4fae30['having'](_0x3e5f69);_0x3702c6[_0x4993('0x3c')](_0x4993('0x87'),_0x328a75);}BPromise[_0x4993('0x88')]()[_0x4993('0x1a')](function(){if(!_0x52fa23){if(_0x5ad0a9[_0x4993('0x33')][_0x4993('0x6e')])return;_0x3702c6[_0x4993('0x3c')](_0x4993('0x89'));_0x4fae30[_0x4993('0x3c')](_0x4993('0x89'));return;}if(_0x5ad0a9[_0x4993('0x8a')]['role']!==_0x4993('0x8b'))return;return _0x5ad0a9[_0x4993('0x8a')]['getMailAccounts']({'attributes':['id'],'raw':!![]})[_0x4993('0x1a')](function(_0x5085d4){if(_['isEmpty'](_0x5085d4)){_0x3702c6['where'](_0x4993('0x8c'));_0x4fae30[_0x4993('0x3c')]('i.MailAccountId\x20IS\x20NULL');}else{_0x3702c6[_0x4993('0x3c')](_0x4993('0x8d'),_[_0x4993('0x20')](_0x5085d4,'id'));_0x4fae30['where']('i.MailAccountId\x20IN\x20?',_['map'](_0x5085d4,'id'));}});})['then'](function(){if(_0x5ad0a9[_0x4993('0x8a')]['role']===_0x4993('0x8b')&&!_0x52fa23&&!_0x5ad0a9[_0x4993('0x33')][_0x4993('0x6e')])return[];return db['sequelize'][_0x4993('0x33')](_0x3702c6[_0x4993('0x8e')](),_0x202402);})[_0x4993('0x1a')](function(_0x5ecb2b){_0x203b29['count']=_0x5ecb2b[_0x4993('0x54')];if(_0x203b29[_0x4993('0x16')]===0x0)return[];return db[_0x4993('0x8f')][_0x4993('0x33')](_0x4dd61c[_0x4993('0x8e')](),_0x202402)['then'](function(_0x34087c){_0x372ed7=_['keyBy'](_0x34087c,'id');_0x202402=_[_0x4993('0x90')](_0x202402,{'model':db[_0x4993('0x2e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5ad0a9[_0x4993('0x33')][_0x4993('0x38')]){_0x287c68['attributes'][_0x4993('0x24')](function(_0x5f3cd6){_0x4fae30['field']('i.'+_0x5f3cd6);});}else{_0x4fae30['field'](_0x4993('0x85'),_0x4993('0x57'));_0x4fae30['field']('a.key',_0x4993('0x91'));_0x4fae30['field'](_0x4993('0x92'),_0x4993('0x93'));_0x4fae30[_0x4993('0x3f')](_0x4993('0x94'),'contactName');_0x4fae30['field'](_0x4993('0x84'));_0x4fae30[_0x4993('0x3f')]('i.createdAt');_0x4fae30['field'](_0x4993('0x95'));_0x4fae30['field'](_0x4993('0x96'));_0x4fae30[_0x4993('0x3f')](_0x4993('0x97'));_0x4fae30[_0x4993('0x3f')]('i.attach');_0x4fae30[_0x4993('0x3f')]('i.lastMsgAt');_0x4fae30[_0x4993('0x3f')](_0x4993('0x98'));_0x4fae30[_0x4993('0x3f')]('i.subject');_0x4fae30[_0x4993('0x3f')](_0x4993('0x99'));_0x4fae30[_0x4993('0x3f')]('i.secondDisposition');_0x4fae30[_0x4993('0x3f')](_0x4993('0x9a'));_0x4fae30['field'](_0x4993('0x9b'));_0x4fae30['field'](_0x4993('0x9c'));_0x4fae30[_0x4993('0x3f')](_0x4993('0x9d'));_0x4fae30[_0x4993('0x3f')]('i.MailAccountId');_0x4fae30['field']('i.UserId');_0x4fae30[_0x4993('0x3f')](_0x4993('0x9e'),_0x4993('0x9f'));_0x4fae30[_0x4993('0x3f')](_0x4993('0xa0'),_0x4993('0xa1'));_0x4fae30[_0x4993('0x3f')](_0x4993('0xa2'),'Contact.email');_0x4fae30[_0x4993('0x3f')]('c.phone',_0x4993('0xa3'));_0x4fae30['field'](_0x4993('0xa4'),_0x4993('0xa5'));_0x4fae30[_0x4993('0x3f')]('c.fax',_0x4993('0xa6'));_0x4fae30['field']('o.fullname',_0x4993('0xa7'));_0x4fae30['field'](_0x4993('0xa8'),_0x4993('0xa9'));_0x4fae30[_0x4993('0x3f')](_0x4993('0xaa'),_0x4993('0x22'));}if(_0x287c68[_0x4993('0x17')])_0x4fae30[_0x4993('0x17')](_0x287c68['limit']);if(_0x287c68[_0x4993('0x14')])_0x4fae30[_0x4993('0x14')](_0x287c68[_0x4993('0x14')]);return db['sequelize']['query'](_0x4fae30[_0x4993('0x8e')](),_0x202402);})[_0x4993('0x1a')](function(_0x35adda){if(_0x35adda[_0x4993('0x54')]>0x0)_0x19638f[_0x4993('0x3c')](_0x4993('0xab'),_[_0x4993('0x20')](_0x35adda,'id'));return db['sequelize'][_0x4993('0x33')](_0x19638f[_0x4993('0x8e')](),_0x202402)[_0x4993('0x1a')](function(_0x3bf7fd){var _0x527a0b=_['groupBy'](_0x3bf7fd,_0x4993('0xac'));var _0x1e04de=[];return db[_0x4993('0xad')][_0x4993('0x27')]({'attributes':[_0x4993('0xae')],'raw':!![]})[_0x4993('0x1a')](function(_0x471a12){var _0x22a720=_0x471a12[_0x4993('0xae')];_0x35adda[_0x4993('0x24')](function(_0x28a883){_0x1e04de[_0x4993('0x25')](updateMailInteraction(_0x28a883,_0x372ed7,_0x527a0b,_0x22a720));});return BPromise[_0x4993('0xaf')](_0x1e04de);});});});})[_0x4993('0x1a')](function(_0xbbaa42){_0x203b29[_0x4993('0xb0')]=_0xbbaa42;return _0x203b29;})['then'](respondWithFilteredResult(_0x57dd0f,_0x287c68))[_0x4993('0x2c')](handleError(_0x57dd0f,null));};exports[_0x4993('0xb1')]=function(_0x526b9e,_0xe59e3a){var _0x884349={'raw':![],'where':{'id':_0x526b9e['params']['id']}},_0x3fec40={};_0x3fec40[_0x4993('0x32')]=_[_0x4993('0x34')](db[_0x4993('0x2e')]['rawAttributes']);_0x3fec40['query']=_[_0x4993('0x34')](_0x526b9e['query']);_0x3fec40[_0x4993('0x35')]=_[_0x4993('0x36')](_0x3fec40[_0x4993('0x32')],_0x3fec40[_0x4993('0x33')]);_0x884349[_0x4993('0x37')]=_['intersection'](_0x3fec40[_0x4993('0x32')],qs[_0x4993('0x38')](_0x526b9e[_0x4993('0x33')][_0x4993('0x38')]));_0x884349['attributes']=_0x884349[_0x4993('0x37')][_0x4993('0x54')]?_0x884349['attributes']:_0x3fec40[_0x4993('0x32')];if(_0x526b9e[_0x4993('0x33')][_0x4993('0xb2')]){_0x884349['include']=[{'all':!![]}];}_0x884349=_[_0x4993('0x90')]({},_0x884349,_0x526b9e['options']);return db[_0x4993('0x2e')][_0x4993('0x56')](_0x884349)[_0x4993('0x1a')](handleEntityNotFound(_0xe59e3a,null))['then'](respondWithResult(_0xe59e3a,null))[_0x4993('0x2c')](handleError(_0xe59e3a,null));};exports['create']=function(_0x223192,_0x452a02){return db[_0x4993('0x2e')][_0x4993('0xb3')](_0x223192['body'],{})['then'](respondWithResult(_0x452a02,0xc9))[_0x4993('0x2c')](handleError(_0x452a02,null));};exports[_0x4993('0x19')]=function(_0x505b14,_0x23c94d){if(_0x505b14[_0x4993('0xb4')]['id']){delete _0x505b14[_0x4993('0xb4')]['id'];}return db['MailInteraction'][_0x4993('0x56')]({'where':{'id':_0x505b14[_0x4993('0xb5')]['id']}})[_0x4993('0x1a')](handleEntityNotFound(_0x23c94d,null))[_0x4993('0x1a')](saveUpdates(_0x505b14[_0x4993('0xb4')],null))[_0x4993('0x1a')](respondWithResult(_0x23c94d,null))[_0x4993('0x2c')](handleError(_0x23c94d,null));};exports[_0x4993('0xb6')]=function(_0x45e215,_0x1f1cbe){return db[_0x4993('0x2e')][_0x4993('0x56')]({'where':{'id':_0x45e215[_0x4993('0xb5')]['id']}})['then'](handleEntityNotFound(_0x1f1cbe,null))[_0x4993('0x1a')](removeEntity(_0x1f1cbe,null))['catch'](handleError(_0x1f1cbe,null));};exports[_0x4993('0xb7')]=function(_0x355d6b,_0x6eb606){return db[_0x4993('0x2e')]['describe']()[_0x4993('0x1a')](respondWithResult(_0x6eb606,null))[_0x4993('0x2c')](handleError(_0x6eb606,null));};exports[_0x4993('0xb8')]=function(_0x1e40ed,_0x216360){return db[_0x4993('0x26')][_0x4993('0x56')]({'where':{'id':_0x1e40ed[_0x4993('0xb5')]['id']}})[_0x4993('0x1a')](handleEntityNotFound(_0x216360,null))['then'](function(_0x11f6f9){if(_0x11f6f9){return _0x11f6f9[_0x4993('0xb8')](_0x1e40ed[_0x4993('0xb4')][_0x4993('0xb9')],_['omit'](_0x1e40ed['body'],[_0x4993('0xb9'),'id'])||{});}})[_0x4993('0x1a')](respondWithResult(_0x216360,null))[_0x4993('0x2c')](handleError(_0x216360,null));};exports['getMessages']=function(_0x415ea3,_0x5b33ea){var _0x440d4e={'raw':![],'where':{}};var _0x53da7e={};var _0x2bab0c={'count':0x0,'rows':[]};return db[_0x4993('0x2e')][_0x4993('0x27')]({'where':{'id':_0x415ea3[_0x4993('0xb5')]['id']}})[_0x4993('0x1a')](handleEntityNotFound(_0x5b33ea,null))[_0x4993('0x1a')](function(_0x368666){if(_0x368666){_0x53da7e['model']=_['keys'](db[_0x4993('0x26')]['rawAttributes']);_0x53da7e[_0x4993('0x33')]=_['keys'](_0x415ea3['query']);_0x53da7e['filters']=_['intersection'](_0x53da7e[_0x4993('0x32')],_0x53da7e[_0x4993('0x33')]);_0x440d4e[_0x4993('0x37')]=_[_0x4993('0x36')](_0x53da7e[_0x4993('0x32')],qs[_0x4993('0x38')](_0x415ea3[_0x4993('0x33')][_0x4993('0x38')]));_0x440d4e[_0x4993('0x37')]=_0x440d4e[_0x4993('0x37')][_0x4993('0x54')]?_0x440d4e['attributes']:_0x53da7e[_0x4993('0x32')];if(!_0x415ea3[_0x4993('0x33')]['hasOwnProperty'](_0x4993('0xba'))){_0x440d4e[_0x4993('0x17')]=qs['limit'](_0x415ea3[_0x4993('0x33')][_0x4993('0x17')]);_0x440d4e['offset']=qs[_0x4993('0x14')](_0x415ea3[_0x4993('0x33')][_0x4993('0x14')]);}_0x440d4e['order']=qs[_0x4993('0x3b')](_0x415ea3[_0x4993('0x33')]['sort']);_0x440d4e['where']=qs[_0x4993('0x35')](_[_0x4993('0x3d')](_0x415ea3[_0x4993('0x33')],_0x53da7e[_0x4993('0x35')]));_0x440d4e['where']['MailInteractionId']=_0x368666['id'];if(_0x415ea3[_0x4993('0x33')][_0x4993('0x7b')]){_0x440d4e[_0x4993('0x3c')]=_[_0x4993('0x90')](_0x440d4e['where'],{'$or':_['map'](_0x440d4e[_0x4993('0x37')],function(_0x2c5d53){var _0x5c5ec5={};_0x5c5ec5[_0x2c5d53]={'$like':'%'+_0x415ea3[_0x4993('0x33')][_0x4993('0x7b')]+'%'};return _0x5c5ec5;})});}if(_0x415ea3[_0x4993('0x33')][_0x4993('0x72')]){var _0x389716=_0x415ea3[_0x4993('0x33')][_0x4993('0x72')]['split'](',');var _0xf31088={};_0xf31088[_0x389716[0x0]]={'$gte':moment(_0x389716[0x1])['format'](_0x4993('0xbb'))};_0x440d4e[_0x4993('0x3c')]=_[_0x4993('0x90')](_0x440d4e['where'],_0xf31088);}_0x440d4e=_[_0x4993('0x90')]({},_0x440d4e,_0x415ea3[_0x4993('0xbc')]);return db[_0x4993('0x26')]['count']({'where':_0x440d4e[_0x4993('0x3c')]})[_0x4993('0x1a')](function(_0x95f204){_0x2bab0c[_0x4993('0x16')]=_0x95f204;if(_0x415ea3['query'][_0x4993('0xb2')]){_0x440d4e[_0x4993('0xbd')]=[{'all':!![]}];}return db[_0x4993('0x26')][_0x4993('0xbe')](_0x440d4e);})[_0x4993('0x1a')](function(_0x4f5e27){if(_0x415ea3[_0x4993('0x33')]['inlineCss']===_0x4993('0xbf')){for(var _0x1d3d13=0x0;_0x1d3d13<_0x4f5e27[_0x4993('0x54')];_0x1d3d13++){_0x4f5e27[_0x1d3d13][_0x4993('0xb4')]=juice(_0x4f5e27[_0x1d3d13]['body']);}}_0x2bab0c['rows']=_0x4f5e27;return _0x2bab0c;});}})['then'](respondWithFilteredResult(_0x5b33ea,_0x440d4e))[_0x4993('0x2c')](handleError(_0x5b33ea,null));};exports['addTags']=function(_0x90ea6,_0x26e9f7){return db[_0x4993('0x2e')][_0x4993('0x56')]({'where':{'id':_0x90ea6['params']['id']}})[_0x4993('0x1a')](handleEntityNotFound(_0x26e9f7,null))[_0x4993('0x1a')](function(_0x53be72){if(_0x53be72){return _0x53be72['setTags'](_0x90ea6['body'][_0x4993('0xb9')],_['omit'](_0x90ea6['body'],[_0x4993('0xb9'),'id'])||{})[_0x4993('0xc0')](function(){return db[_0x4993('0x66')][_0x4993('0xbe')]({'attributes':['id',_0x4993('0x1d'),_0x4993('0xc1')],'where':{'id':_0x90ea6['body']['ids']}});})[_0x4993('0x1a')](function(_0x341b5e){socket['emit'](_0x4993('0xc2'),{'id':Number(_0x90ea6['params']['id']),'tags':_0x341b5e||[]});return{'id':Number(_0x90ea6[_0x4993('0xb5')]['id']),'tags':_0x341b5e||[]};});}})[_0x4993('0x1a')](respondWithResult(_0x26e9f7,null))[_0x4993('0x2c')](handleError(_0x26e9f7,null));};exports[_0x4993('0xc3')]=function(_0xcb8bd,_0x1b525a){return db['MailInteraction']['find']({'where':{'id':_0xcb8bd[_0x4993('0xb5')]['id']}})[_0x4993('0x1a')](handleEntityNotFound(_0x1b525a,null))['then'](function(_0x3849fe){if(_0x3849fe){return _0x3849fe[_0x4993('0xc3')](_0xcb8bd[_0x4993('0x33')][_0x4993('0xb9')]);}})[_0x4993('0x1a')](respondWithStatusCode(_0x1b525a,null))[_0x4993('0x2c')](handleError(_0x1b525a,null));};exports['download']=function(_0x16fca0,_0x31203d){var _0x18e5fa=moment()[_0x4993('0xc4')]()['toString']();var _0x16eac1=path['join'](config[_0x4993('0xc5')],_0x4993('0xc6'),_0x4993('0xc7'),_0x4993('0xc8'));var _0x4f98fe=path[_0x4993('0xc9')](config[_0x4993('0xc5')],_0x4993('0xc6'),_0x4993('0xc7'),_0x4993('0xca'));var _0x1e6b3b=path[_0x4993('0xc9')](_0x16eac1,_0x18e5fa);var _0x2a0f93=util[_0x4993('0xcb')]('transcript-%d-%s.zip',_0x16fca0[_0x4993('0xb5')]['id'],_0x18e5fa);var _0x59a043=path['join'](_0x16eac1,_0x2a0f93);var _0x2c6bd4=[];if(_0x16fca0['query'][_0x4993('0xca')]){_0x2c6bd4[_0x4993('0x25')]({'model':db['Attachment'],'as':'Attachments','raw':!![]});}var _0x3cfeb6=[{'model':db[_0x4993('0x26')],'as':_0x4993('0xcc'),'attributes':['id',_0x4993('0xb4'),_0x4993('0x40'),'to','cc',_0x4993('0xcd'),'subject','createdAt'],'where':{'secret':![]},'order':qs[_0x4993('0x3b')]('id'),'include':_0x2c6bd4}];return db[_0x4993('0x2e')][_0x4993('0x56')]({'where':{'id':_0x16fca0[_0x4993('0xb5')]['id']},'include':_0x3cfeb6})[_0x4993('0x1a')](handleEntityNotFound(_0x31203d,null))['then'](function(_0x53af43){if(_0x53af43&&_0x53af43[_0x4993('0xcc')]){var _0x26e5ff=_0x53af43[_0x4993('0xce')]({'plain':!![]});fs['mkdirSync'](_0x1e6b3b);return BPromise[_0x4993('0xcf')](_0x26e5ff['Messages'],function(_0x363ea3,_0x1c68b7){var _0x8e6c6f={'from':_0x363ea3[_0x4993('0x40')],'to':_0x363ea3['to'],'subject':_0x363ea3[_0x4993('0xd0')],'html':htmlEntities[_0x4993('0xd1')](_0x363ea3['body']),'headers':{'Date':moment(_0x363ea3[_0x4993('0x70')])[_0x4993('0xcb')](_0x4993('0xd2'))},'attachments':[]};if(_0x363ea3['cc']){_0x8e6c6f[_0x4993('0xd3')]['Cc']=_0x363ea3['cc'];}if(_0x363ea3[_0x4993('0xcd')]){_0x8e6c6f['headers'][_0x4993('0xd4')]=_0x363ea3[_0x4993('0xcd')];}return new BPromise(function(_0x4ada4d,_0x51cdee){if(_0x363ea3[_0x4993('0xd5')]){for(var _0x3065fc=0x0;_0x3065fc<_0x363ea3[_0x4993('0xd5')][_0x4993('0x54')];_0x3065fc++){var _0x577815=_0x363ea3[_0x4993('0xd5')][_0x3065fc];var _0x1d63c8=path['join'](_0x4f98fe,_0x577815[_0x4993('0xd6')]);if(fs[_0x4993('0xd7')](_0x1d63c8)){_0x8e6c6f[_0x4993('0xca')][_0x4993('0x25')]({'name':_0x577815[_0x4993('0x1d')],'contentType':_0x577815[_0x4993('0x30')],'data':fs[_0x4993('0xd8')](_0x1d63c8)});}}}emlformat[_0x4993('0xd9')](_0x8e6c6f,function(_0x96e1f2,_0x4dcb20){if(_0x96e1f2)return _0x51cdee(_0x96e1f2);fs[_0x4993('0xda')](path[_0x4993('0xc9')](_0x1e6b3b,util[_0x4993('0xcb')](_0x4993('0xdb'),_0x1c68b7)),_0x4dcb20);return _0x4ada4d(_0x4dcb20);});});})[_0x4993('0x1a')](function(){return new BPromise(function(_0x436c57,_0x37ce71){zipdir(_0x1e6b3b,{'saveTo':_0x59a043},function(_0x3f859a,_0x402a71){if(_0x3f859a)return _0x37ce71(_0x3f859a);return _0x436c57(_0x402a71);});})[_0x4993('0x1a')](function(){return new BPromise(function(_0x34acdc,_0x2ad236){rimraf(_0x1e6b3b,function(_0x53fa43){if(_0x53fa43)_0x2ad236(_0x53fa43);return _0x34acdc();});});})['then'](function(){return _0x31203d[_0x4993('0xdc')](_0x59a043,_0x2a0f93,function(_0x534176){if(!_0x534176)fs[_0x4993('0xdd')](_0x59a043);});});});}else{return _0x31203d[_0x4993('0x1b')](0xc8);}})['catch'](handleError(_0x31203d,null));};