237469164b1b582ab400b028be05ee6e0bfd418c
[motion2.git] / server / components / contacts / sql-utils.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 _0x17f3=['../parsers/advancedSearch','../interaction/utils','../../mysqldb','agent','search','ListId','true','from','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','cm_contact_has_tags','ct.CmContactId\x20=\x20','.id','tools_tags','t.id\x20=\x20ct.TagId','firstName','lastName','phone','mobile','fax','CompanyId','createdAt','updatedAt','deletedAt','includes','push','forEach','TagIds','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','split','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','fieldType','castTo','DATE','buildExpression','type','value','start','Tag','map','tags','clause','and','ids','user','uc.UserId\x20=\x20?','skip','keys','name','compact','User','concat','Contact','\x20=\x20?','resolve','then','fields','tag','filter','role','getLists','c.ListId\x20IN\x20?','attributes','select','c.id','limit','offset','group','subqry.id','having','order','DESC','findAll','color','keyBy','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','toString','Tags','clone','COUNT(*)','getSelectedTags','isEmpty','where','t.id\x20IN\x20?','exports','lodash','squel'];(function(_0x23c802,_0xa6d62){var _0x5a39cd=function(_0x2bc0c6){while(--_0x2bc0c6){_0x23c802['push'](_0x23c802['shift']());}};_0x5a39cd(++_0xa6d62);}(_0x17f3,0x1b6));var _0x317f=function(_0xb51511,_0x45ea5e){_0xb51511=_0xb51511-0x0;var _0xe3b183=_0x17f3[_0xb51511];return _0xe3b183;};'use strict';var _=require(_0x317f('0x0'));var squel=require(_0x317f('0x1'));var as=require(_0x317f('0x2'));var qs=require('../parsers/qs');var utils=require(_0x317f('0x3'));var db=require(_0x317f('0x4'))['db'];function skipContactsQuery(_0x120428,_0x1a1f2e){var _0x1f638b=![];if(_0x120428['role']===_0x317f('0x5')&&!_0x1a1f2e[_0x317f('0x6')]&&!_0x1a1f2e[_0x317f('0x7')]&&_0x1a1f2e['autocomplete']!==_0x317f('0x8')){_0x1f638b=!![];}return _0x1f638b;}function getContactsSubquery(){return squel['select']()[_0x317f('0x9')]('cm_contacts','c')['where'](_0x317f('0xa'));}function applyJoinClauses(_0x4c51a9,_0x50af6c){var _0x37bc6a=_0x50af6c?'c':_0x317f('0xb');_0x4c51a9[_0x317f('0xc')](_0x317f('0xd'),'uc',_0x317f('0xe')+_0x37bc6a+'.id')[_0x317f('0xc')](_0x317f('0xf'),'ct',_0x317f('0x10')+_0x37bc6a+_0x317f('0x11'))[_0x317f('0xc')](_0x317f('0x12'),'t',_0x317f('0x13'));return _0x4c51a9;}function addFieldsToQuery(_0x5ad2d7,_0x362a65,_0x5151b9,_0x30faac,_0x41e61a){var _0x51a4ec=_0x41e61a?'c':_0x317f('0xb');if(!_0x362a65){_0x362a65=['id',_0x317f('0x14'),_0x317f('0x15'),_0x317f('0x16'),_0x317f('0x17'),_0x317f('0x18'),'email',_0x317f('0x7'),_0x317f('0x19'),_0x317f('0x1a'),_0x317f('0x1b'),_0x317f('0x1c'),'TagIds'];}else if(!_0x362a65[_0x317f('0x1d')]('id')){_0x362a65[_0x317f('0x1e')]('id');}var _0x34b6b7=_0x5151b9&&_0x41e61a||!_0x5151b9&&!_0x41e61a;if(_0x30faac){_0x34b6b7=_0x30faac&&_0x41e61a||!_0x30faac&&!_0x41e61a;}_0x362a65[_0x317f('0x1f')](function(_0x51fc82){if(_0x51fc82===_0x317f('0x20')){if(_0x34b6b7){_0x5ad2d7[_0x317f('0x21')](_0x317f('0x22'),_0x51fc82);}else if(_0x5151b9||_0x30faac){_0x5ad2d7[_0x317f('0x21')](_0x51a4ec+'.'+_0x51fc82);}}else{_0x5ad2d7[_0x317f('0x21')](_0x51a4ec+'.'+_0x51fc82);}});return _0x5ad2d7;}function getSqlClauses(){var _0x43aaa9={'default':squel[_0x317f('0x23')](),'fields':squel[_0x317f('0x23')](),'filter':squel[_0x317f('0x23')](),'tags':{'clause':squel[_0x317f('0x23')](),'ids':null},'user':{'clause':squel[_0x317f('0x23')](),'skip':![]}};return _0x43aaa9;}function parseTagParameter(_0x452665){var _0x1f4a40=squel['expr']();if(_0x452665){var _0x54c0bd=utils['getSelectedTags'](_0x452665);_0x54c0bd[_0x317f('0x1f')](function(_0xad6b01){_0x1f4a40['or'](_0x317f('0x24'),'%,'+_0xad6b01+',%');});}return _0x1f4a40;}function parseSearchFilter(_0x2a2e55){var _0x26ffb7=squel[_0x317f('0x23')]();if(_0x2a2e55){var _0x1a2b30=_0x2a2e55['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x1a2b30[_0x317f('0x25')]('\x20')[_0x317f('0x26')]>0x1){_0x26ffb7['or'](_0x317f('0x27'),qs['getFullTextValue'](_0x1a2b30,!![]),null);}else{if(qs['isNumeric'](_0x1a2b30)){_0x26ffb7['or'](_0x317f('0x28'),_0x1a2b30+'%');_0x26ffb7['or'](_0x317f('0x29'),_0x1a2b30+'%');_0x26ffb7['or'](_0x317f('0x2a'),_0x1a2b30+'%');_0x26ffb7['or'](_0x317f('0x2b'),_0x1a2b30+'%');}else if(qs[_0x317f('0x2c')](_0x1a2b30)){_0x26ffb7['or'](_0x317f('0x2d'),_0x1a2b30+'%');}else{_0x26ffb7['or'](_0x317f('0x2e'),'%'+_0x1a2b30+'%');_0x26ffb7['or'](_0x317f('0x2f'),'%'+_0x1a2b30+'%');_0x26ffb7['or'](_0x317f('0x2d'),'%'+_0x1a2b30+'%');}}}return _0x26ffb7;}function parseAdvancedSearchFilter(_0x37abde,_0x3c4177){var _0x417851=getSqlClauses();var _0x421141=as[_0x317f('0x30')](_0x37abde);var _0x1892bc=_0x421141[_0x317f('0x31')];for(var _0x3e5b5a=0x0;_0x3e5b5a<_0x421141[_0x317f('0x32')]['length'];_0x3e5b5a++){var _0x2ae4d2=_0x421141[_0x317f('0x32')][_0x3e5b5a];var _0x29d19c='c';var _0x2e3e5f=_['find'](_0x3c4177,['name',_0x2ae4d2[_0x317f('0x21')]]);if(_0x2e3e5f){if(_0x2ae4d2['field']==='dateOfBirth'||_0x2e3e5f[_0x317f('0x33')]==='datetime'){_0x2ae4d2[_0x317f('0x34')]=_0x317f('0x35');}var _0x5effa7=as[_0x317f('0x36')](_0x29d19c,_0x2e3e5f[_0x317f('0x37')],_0x2ae4d2);_0x417851['default'][_0x1892bc](_0x5effa7['text'],_0x5effa7[_0x317f('0x38')][_0x317f('0x39')],_0x5effa7[_0x317f('0x38')]['end']);}else{if(_0x2ae4d2[_0x317f('0x21')]===_0x317f('0x3a')){var _0x9f8eb4=_0x2ae4d2[_0x317f('0x38')][_0x317f('0x25')](',')[_0x317f('0x3b')](function(_0x24d3ae){return Number(_0x24d3ae);});var _0x3fdbbd=parseTagParameter(_0x9f8eb4);_0x417851[_0x317f('0x3c')][_0x317f('0x3d')][_0x317f('0x3e')](_0x3fdbbd);_0x417851[_0x317f('0x3c')][_0x317f('0x3f')]=_0x9f8eb4;}else if(_0x2ae4d2[_0x317f('0x21')]==='User'){_0x417851[_0x317f('0x40')][_0x317f('0x3d')][_0x317f('0x3e')](_0x317f('0x41'),_0x2ae4d2[_0x317f('0x38')]);_0x417851[_0x317f('0x40')][_0x317f('0x42')]=!![];}}}return _0x417851;}function parseModelFields(_0x47035c,_0x40552e){var _0x46eab8=squel[_0x317f('0x23')]();var _0x475b8d=_(_0x47035c)[_0x317f('0x43')]()[_0x317f('0x3b')](function(_0x745953){return _['some'](_0x40552e,[_0x317f('0x44'),_0x745953])?_0x745953:undefined;})[_0x317f('0x45')]()['value']();if(_0x47035c['Contact']){_0x475b8d['push']('Contact');}if(_0x47035c[_0x317f('0x46')]){_0x475b8d[_0x317f('0x1e')]('User');}if(_0x475b8d[_0x317f('0x26')]>0x0){_0x475b8d[_0x317f('0x1f')](function(_0x2280f9){if(_0x2280f9===_0x317f('0x7')){_0x46eab8[_0x317f('0x3e')]('c.ListId\x20IN\x20?',[][_0x317f('0x47')](_0x47035c[_0x2280f9]));}else if(_0x2280f9===_0x317f('0x48')){var _0x2ee9bc='%'+_0x47035c[_0x2280f9]+'%';_0x46eab8['and']('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x2ee9bc);}else if(_0x2280f9===_0x317f('0x46')){_0x46eab8['and']('uc.UserId\x20=\x20?',_0x47035c[_0x2280f9]);}else{_0x46eab8['and']('c.'+_0x2280f9+_0x317f('0x49'),_0x47035c[_0x2280f9]);}});}return _0x46eab8;}function parseQueryParameters(_0x4b9c57,_0x566d39){var _0x555984=getSqlClauses();return Promise[_0x317f('0x4a')]()[_0x317f('0x4b')](function(){return parseModelFields(_0x4b9c57,_0x566d39);})[_0x317f('0x4b')](function(_0x3b6c16){_0x555984[_0x317f('0x4c')][_0x317f('0x3e')](_0x3b6c16);return parseTagParameter(_0x4b9c57[_0x317f('0x4d')]);})['then'](function(_0x57def){_0x555984[_0x317f('0x3c')][_0x317f('0x3d')][_0x317f('0x3e')](_0x57def);return parseSearchFilter(_0x4b9c57[_0x317f('0x4e')]);})[_0x317f('0x4b')](function(_0x28a259){_0x555984[_0x317f('0x4e')]=_0x28a259;return _0x555984;});}function checkListsRestrictions(_0x1ed2cb,_0x432550,_0xf710e6){var _0x3b8f07=squel[_0x317f('0x23')]();return Promise[_0x317f('0x4a')]()['then'](function(){if(_0x432550[_0x317f('0x6')]&&_0x1ed2cb[_0x317f('0x4f')]==='agent'&&!_0xf710e6){return _0x1ed2cb[_0x317f('0x50')]({'attributes':['id'],'raw':!![]});}})[_0x317f('0x4b')](function(_0x194fae){if(_0x194fae){if(_0x194fae[_0x317f('0x26')]===0x0){_0x3b8f07[_0x317f('0x3e')]('c.ListId\x20IS\x20NULL');}else{_0x3b8f07['and'](_0x317f('0x51'),_['map'](_0x194fae,'id'));}}})['then'](function(){return _0x3b8f07;});}function buildContactsQuery(_0x5c68fb,_0x152ef1,_0x593905,_0x20cad3,_0x2854e2,_0x489e57){if(_0x152ef1){_0x152ef1=_0x593905[_0x317f('0x52')];}_0x5c68fb=addFieldsToQuery(_0x5c68fb,_0x152ef1,_0x20cad3,_0x489e57,!![]);var _0x59761e=squel[_0x317f('0x53')]();_0x59761e=addFieldsToQuery(_0x59761e,_0x152ef1,_0x20cad3,_0x489e57,![]);if(_0x20cad3||_0x489e57){_0x5c68fb=applyJoinClauses(_0x5c68fb,!![]);_0x5c68fb['group'](_0x317f('0x54'));if(_0x593905[_0x317f('0x55')]){_0x59761e[_0x317f('0x55')](_0x593905[_0x317f('0x55')]);}if(_0x593905[_0x317f('0x56')]){_0x59761e[_0x317f('0x56')](_0x593905[_0x317f('0x56')]);}}else{_0x59761e=applyJoinClauses(_0x59761e,![]);_0x59761e[_0x317f('0x57')](_0x317f('0x58'));if(_0x593905[_0x317f('0x55')]){_0x5c68fb[_0x317f('0x55')](_0x593905[_0x317f('0x55')]);}if(_0x593905[_0x317f('0x56')]){_0x5c68fb['offset'](_0x593905[_0x317f('0x56')]);}}_0x59761e[_0x317f('0x59')](_0x2854e2);if(_0x593905[_0x317f('0x5a')]){_0x593905[_0x317f('0x5a')][_0x317f('0x1f')](function(_0x98c0e1){_0x5c68fb['order']('c.'+_0x98c0e1[0x0],_0x98c0e1[0x1]===_0x317f('0x5b')?![]:!![]);_0x59761e[_0x317f('0x5a')]('subqry.'+_0x98c0e1[0x0],_0x98c0e1[0x1]===_0x317f('0x5b')?![]:!![]);});}_0x59761e['from'](_0x5c68fb,_0x317f('0xb'));return _0x59761e;}function getFilteredContacts(_0x44ca18){var _0x4b56a1=[];return db['Tag'][_0x317f('0x5c')]({'attributes':['id',_0x317f('0x44'),_0x317f('0x5d')],'raw':!![]})[_0x317f('0x4b')](function(_0x2cec3f){_0x4b56a1=_[_0x317f('0x5e')](_0x2cec3f,'id');var _0x3c36e1={'type':db[_0x317f('0x5f')][_0x317f('0x60')][_0x317f('0x61')],'model':db[_0x317f('0x62')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x317f('0x63')][_0x317f('0x64')](_0x44ca18[_0x317f('0x65')](),_0x3c36e1);})[_0x317f('0x4b')](function(_0x1931fe){_0x1931fe[_0x317f('0x1f')](function(_0x275caf){if(_0x275caf[_0x317f('0x20')]){_0x275caf['Tags']=[];_0x275caf[_0x317f('0x20')][_0x317f('0x25')](',')['forEach'](function(_0x3b0357){_0x275caf[_0x317f('0x66')][_0x317f('0x1e')](_0x4b56a1[_0x3b0357]);});}delete _0x275caf[_0x317f('0x20')];});return _0x1931fe;});}function countFilteredContacts(_0x21d839,_0x4c11c2){var _0x273d50=_0x21d839[_0x317f('0x67')]();_0x273d50[_0x317f('0x21')](_0x317f('0x68'));_0x273d50=applyJoinClauses(_0x273d50,!![]);_0x21d839['group'](_0x317f('0x54'));var _0x3bf8aa=utils[_0x317f('0x69')](_0x4c11c2);if(!_[_0x317f('0x6a')](_0x3bf8aa)){_0x273d50[_0x317f('0x6b')](_0x317f('0x6c'),_0x3bf8aa);}var _0x3cd24b={'type':db['Sequelize']['QueryTypes'][_0x317f('0x61')],'raw':!![]};return db['sequelize'][_0x317f('0x64')](_0x273d50[_0x317f('0x65')](),_0x3cd24b)[_0x317f('0x4b')](function(_0x56725f){return _0x56725f[0x0][_0x317f('0x68')];});}module[_0x317f('0x6d')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};