Built motion from commit 9d0783e6.|2.6.13
[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 _0xec5a=['datetime','castTo','DATE','type','default','text','start','end','Tag','map','tags','clause','and','User','user','uc.UserId\x20=\x20?','value','skip','keys','name','compact','Contact','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','fields','tag','role','getLists','c.ListId\x20IN\x20?','group','c.id','limit','offset','order','DESC','subqry.','findAll','keyBy','QueryTypes','SELECT','sequelize','query','toString','Tags','COUNT(*)','isEmpty','t.id\x20IN\x20?','Sequelize','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','agent','search','autocomplete','true','select','from','where','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','firstName','lastName','phone','mobile','email','ListId','CompanyId','createdAt','updatedAt','deletedAt','includes','push','forEach','TagIds','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','conditions','fieldType'];(function(_0x40b493,_0x4050de){var _0x548365=function(_0x8ceba7){while(--_0x8ceba7){_0x40b493['push'](_0x40b493['shift']());}};_0x548365(++_0x4050de);}(_0xec5a,0x1e0));var _0xaec5=function(_0x6af377,_0x306ce8){_0x6af377=_0x6af377-0x0;var _0x54d442=_0xec5a[_0x6af377];return _0x54d442;};'use strict';var _=require(_0xaec5('0x0'));var squel=require(_0xaec5('0x1'));var as=require(_0xaec5('0x2'));var qs=require(_0xaec5('0x3'));var utils=require(_0xaec5('0x4'));var db=require(_0xaec5('0x5'))['db'];function skipContactsQuery(_0x24d752,_0x3ec119){var _0x43e373=![];if(_0x24d752['role']===_0xaec5('0x6')&&!_0x3ec119[_0xaec5('0x7')]&&!_0x3ec119['ListId']&&_0x3ec119[_0xaec5('0x8')]!==_0xaec5('0x9')){_0x43e373=!![];}return _0x43e373;}function getContactsSubquery(){return squel[_0xaec5('0xa')]()[_0xaec5('0xb')]('cm_contacts','c')[_0xaec5('0xc')]('c.deletedAt\x20IS\x20NULL');}function applyJoinClauses(_0x1b3ff9,_0x335570){var _0x5dd663=_0x335570?'c':_0xaec5('0xd');_0x1b3ff9[_0xaec5('0xe')](_0xaec5('0xf'),'uc',_0xaec5('0x10')+_0x5dd663+_0xaec5('0x11'))['left_join'](_0xaec5('0x12'),'ct',_0xaec5('0x13')+_0x5dd663+'.id')['left_join'](_0xaec5('0x14'),'t',_0xaec5('0x15'));return _0x1b3ff9;}function addFieldsToQuery(_0x2b0ca7,_0x345b19,_0x2f3ce8,_0x345380,_0x2ed0be){var _0x2fadd2=_0x2ed0be?'c':_0xaec5('0xd');if(!_0x345b19){_0x345b19=['id',_0xaec5('0x16'),_0xaec5('0x17'),_0xaec5('0x18'),_0xaec5('0x19'),'fax',_0xaec5('0x1a'),_0xaec5('0x1b'),_0xaec5('0x1c'),_0xaec5('0x1d'),_0xaec5('0x1e'),_0xaec5('0x1f'),'TagIds'];}else if(!_0x345b19[_0xaec5('0x20')]('id')){_0x345b19[_0xaec5('0x21')]('id');}var _0x5cf3e7=_0x2f3ce8&&_0x2ed0be||!_0x2f3ce8&&!_0x2ed0be;if(_0x345380){_0x5cf3e7=_0x345380&&_0x2ed0be||!_0x345380&&!_0x2ed0be;}_0x345b19[_0xaec5('0x22')](function(_0x1e71d4){if(_0x1e71d4===_0xaec5('0x23')){if(_0x5cf3e7){_0x2b0ca7[_0xaec5('0x24')](_0xaec5('0x25'),_0x1e71d4);}else if(_0x2f3ce8||_0x345380){_0x2b0ca7['field'](_0x2fadd2+'.'+_0x1e71d4);}}else{_0x2b0ca7[_0xaec5('0x24')](_0x2fadd2+'.'+_0x1e71d4);}});return _0x2b0ca7;}function getSqlClauses(){var _0x5df6c2={'default':squel[_0xaec5('0x26')](),'fields':squel[_0xaec5('0x26')](),'filter':squel[_0xaec5('0x26')](),'tags':{'clause':squel[_0xaec5('0x26')](),'ids':null},'user':{'clause':squel[_0xaec5('0x26')](),'skip':![]}};return _0x5df6c2;}function parseTagParameter(_0x36493e){var _0x410952=squel[_0xaec5('0x26')]();if(_0x36493e){var _0x32eb9b=utils[_0xaec5('0x27')](_0x36493e);_0x32eb9b[_0xaec5('0x22')](function(_0x1e79e8){_0x410952['or'](_0xaec5('0x28'),'%,'+_0x1e79e8+',%');});}return _0x410952;}function parseSearchFilter(_0x4aa37e){var _0x5f5b49=squel[_0xaec5('0x26')]();if(_0x4aa37e){var _0x37b1a2=_0x4aa37e[_0xaec5('0x29')]('\x5c','\x5c\x5c')[_0xaec5('0x29')](/'/g,'\x27\x27');if(_0x37b1a2[_0xaec5('0x2a')]('\x20')[_0xaec5('0x2b')]>0x1){_0x5f5b49['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xaec5('0x2c')](_0x37b1a2,!![]),null);}else{if(qs[_0xaec5('0x2d')](_0x37b1a2)){_0x5f5b49['or'](_0xaec5('0x2e'),_0x37b1a2+'%');_0x5f5b49['or'](_0xaec5('0x2f'),_0x37b1a2+'%');_0x5f5b49['or'](_0xaec5('0x30'),_0x37b1a2+'%');_0x5f5b49['or'](_0xaec5('0x31'),_0x37b1a2+'%');}else if(qs['isEmail'](_0x37b1a2)){_0x5f5b49['or'](_0xaec5('0x32'),_0x37b1a2+'%');}else{_0x5f5b49['or'](_0xaec5('0x33'),'%'+_0x37b1a2+'%');_0x5f5b49['or'](_0xaec5('0x34'),'%'+_0x37b1a2+'%');_0x5f5b49['or'](_0xaec5('0x32'),'%'+_0x37b1a2+'%');}}}return _0x5f5b49;}function parseAdvancedSearchFilter(_0x2181e0,_0x5c88f7){var _0x30b524=getSqlClauses();var _0x1cdd82=as['parseSearch'](_0x2181e0);var _0x11be5a=_0x1cdd82['sqlOperator'];for(var _0x69170e=0x0;_0x69170e<_0x1cdd82[_0xaec5('0x35')][_0xaec5('0x2b')];_0x69170e++){var _0x5217f0=_0x1cdd82['conditions'][_0x69170e];var _0x5054a9='c';var _0x2c1a81=_['find'](_0x5c88f7,['name',_0x5217f0[_0xaec5('0x24')]]);if(_0x2c1a81){if(_0x5217f0[_0xaec5('0x24')]==='dateOfBirth'||_0x2c1a81[_0xaec5('0x36')]===_0xaec5('0x37')){_0x5217f0[_0xaec5('0x38')]=_0xaec5('0x39');}var _0x31512f=as['buildExpression'](_0x5054a9,_0x2c1a81[_0xaec5('0x3a')],_0x5217f0);_0x30b524[_0xaec5('0x3b')][_0x11be5a](_0x31512f[_0xaec5('0x3c')],_0x31512f['value'][_0xaec5('0x3d')],_0x31512f['value'][_0xaec5('0x3e')]);}else{if(_0x5217f0['field']===_0xaec5('0x3f')){var _0x5cf3f0=_0x5217f0['value']['split'](',')[_0xaec5('0x40')](function(_0x179233){return Number(_0x179233);});var _0x1b5176=parseTagParameter(_0x5cf3f0);_0x30b524[_0xaec5('0x41')][_0xaec5('0x42')][_0xaec5('0x43')](_0x1b5176);_0x30b524[_0xaec5('0x41')]['ids']=_0x5cf3f0;}else if(_0x5217f0[_0xaec5('0x24')]===_0xaec5('0x44')){_0x30b524[_0xaec5('0x45')][_0xaec5('0x42')][_0xaec5('0x43')](_0xaec5('0x46'),_0x5217f0[_0xaec5('0x47')]);_0x30b524[_0xaec5('0x45')][_0xaec5('0x48')]=!![];}}}return _0x30b524;}function parseModelFields(_0x3d218e,_0x4d24e4){var _0x5a43a3=squel['expr']();var _0x4d7d92=_(_0x3d218e)[_0xaec5('0x49')]()[_0xaec5('0x40')](function(_0x5dc7a5){return _['some'](_0x4d24e4,[_0xaec5('0x4a'),_0x5dc7a5])?_0x5dc7a5:undefined;})[_0xaec5('0x4b')]()[_0xaec5('0x47')]();if(_0x3d218e[_0xaec5('0x4c')]){_0x4d7d92[_0xaec5('0x21')](_0xaec5('0x4c'));}if(_0x3d218e[_0xaec5('0x44')]){_0x4d7d92[_0xaec5('0x21')](_0xaec5('0x44'));}if(_0x4d7d92[_0xaec5('0x2b')]>0x0){_0x4d7d92['forEach'](function(_0x57d405){if(_0x57d405===_0xaec5('0x1b')){_0x5a43a3[_0xaec5('0x43')]('c.ListId\x20IN\x20?',[][_0xaec5('0x4d')](_0x3d218e[_0x57d405]));}else if(_0x57d405===_0xaec5('0x4c')){var _0x42f47a='%'+_0x3d218e[_0x57d405]+'%';_0x5a43a3[_0xaec5('0x43')](_0xaec5('0x4e'),_0x42f47a);}else if(_0x57d405==='User'){_0x5a43a3[_0xaec5('0x43')](_0xaec5('0x46'),_0x3d218e[_0x57d405]);}else{_0x5a43a3[_0xaec5('0x43')]('c.'+_0x57d405+_0xaec5('0x4f'),_0x3d218e[_0x57d405]);}});}return _0x5a43a3;}function parseQueryParameters(_0x3f7ebe,_0x1b9dca){var _0xa8c52c=getSqlClauses();return Promise[_0xaec5('0x50')]()[_0xaec5('0x51')](function(){return parseModelFields(_0x3f7ebe,_0x1b9dca);})[_0xaec5('0x51')](function(_0x33b846){_0xa8c52c[_0xaec5('0x52')][_0xaec5('0x43')](_0x33b846);return parseTagParameter(_0x3f7ebe[_0xaec5('0x53')]);})['then'](function(_0x5d6656){_0xa8c52c[_0xaec5('0x41')][_0xaec5('0x42')]['and'](_0x5d6656);return parseSearchFilter(_0x3f7ebe['filter']);})[_0xaec5('0x51')](function(_0x3debc5){_0xa8c52c['filter']=_0x3debc5;return _0xa8c52c;});}function checkListsRestrictions(_0x3381b7,_0x1340c1,_0x5cd403){var _0x2af7c3=squel[_0xaec5('0x26')]();return Promise[_0xaec5('0x50')]()['then'](function(){if(_0x1340c1[_0xaec5('0x7')]&&_0x3381b7[_0xaec5('0x54')]===_0xaec5('0x6')&&!_0x5cd403){return _0x3381b7[_0xaec5('0x55')]({'attributes':['id'],'raw':!![]});}})[_0xaec5('0x51')](function(_0x5da18e){if(_0x5da18e){if(_0x5da18e[_0xaec5('0x2b')]===0x0){_0x2af7c3[_0xaec5('0x43')]('c.ListId\x20IS\x20NULL');}else{_0x2af7c3['and'](_0xaec5('0x56'),_[_0xaec5('0x40')](_0x5da18e,'id'));}}})[_0xaec5('0x51')](function(){return _0x2af7c3;});}function buildContactsQuery(_0x14d520,_0x1a8d73,_0x3cf85b,_0x592117,_0x57eb85,_0x50139b){if(_0x1a8d73){_0x1a8d73=_0x3cf85b['attributes'];}_0x14d520=addFieldsToQuery(_0x14d520,_0x1a8d73,_0x592117,_0x50139b,!![]);var _0x4a6a65=squel[_0xaec5('0xa')]();_0x4a6a65=addFieldsToQuery(_0x4a6a65,_0x1a8d73,_0x592117,_0x50139b,![]);if(_0x592117||_0x50139b){_0x14d520=applyJoinClauses(_0x14d520,!![]);_0x14d520[_0xaec5('0x57')](_0xaec5('0x58'));if(_0x3cf85b['limit']){_0x4a6a65['limit'](_0x3cf85b[_0xaec5('0x59')]);}if(_0x3cf85b[_0xaec5('0x5a')]){_0x4a6a65[_0xaec5('0x5a')](_0x3cf85b[_0xaec5('0x5a')]);}}else{_0x4a6a65=applyJoinClauses(_0x4a6a65,![]);_0x4a6a65['group']('subqry.id');if(_0x3cf85b[_0xaec5('0x59')]){_0x14d520[_0xaec5('0x59')](_0x3cf85b[_0xaec5('0x59')]);}if(_0x3cf85b['offset']){_0x14d520[_0xaec5('0x5a')](_0x3cf85b[_0xaec5('0x5a')]);}}_0x4a6a65['having'](_0x57eb85);if(_0x3cf85b[_0xaec5('0x5b')]){_0x3cf85b[_0xaec5('0x5b')][_0xaec5('0x22')](function(_0x37e5f5){_0x14d520[_0xaec5('0x5b')]('c.'+_0x37e5f5[0x0],_0x37e5f5[0x1]===_0xaec5('0x5c')?![]:!![]);_0x4a6a65['order'](_0xaec5('0x5d')+_0x37e5f5[0x0],_0x37e5f5[0x1]===_0xaec5('0x5c')?![]:!![]);});}_0x4a6a65[_0xaec5('0xb')](_0x14d520,_0xaec5('0xd'));return _0x4a6a65;}function getFilteredContacts(_0x35346b){var _0x119460=[];return db['Tag'][_0xaec5('0x5e')]({'attributes':['id',_0xaec5('0x4a'),'color'],'raw':!![]})[_0xaec5('0x51')](function(_0x53c1dd){_0x119460=_[_0xaec5('0x5f')](_0x53c1dd,'id');var _0x30a5e5={'type':db['Sequelize'][_0xaec5('0x60')][_0xaec5('0x61')],'model':db['CmContact'],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xaec5('0x62')][_0xaec5('0x63')](_0x35346b[_0xaec5('0x64')](),_0x30a5e5);})[_0xaec5('0x51')](function(_0x5efc64){_0x5efc64[_0xaec5('0x22')](function(_0x174cc7){if(_0x174cc7[_0xaec5('0x23')]){_0x174cc7['Tags']=[];_0x174cc7[_0xaec5('0x23')][_0xaec5('0x2a')](',')[_0xaec5('0x22')](function(_0x16a91c){_0x174cc7[_0xaec5('0x65')][_0xaec5('0x21')](_0x119460[_0x16a91c]);});}delete _0x174cc7['TagIds'];});return _0x5efc64;});}function countFilteredContacts(_0x2eddc7,_0x346569){var _0x182de9=_0x2eddc7['clone']();_0x182de9['field'](_0xaec5('0x66'));_0x182de9=applyJoinClauses(_0x182de9,!![]);_0x2eddc7[_0xaec5('0x57')](_0xaec5('0x58'));var _0x1a2dec=utils[_0xaec5('0x27')](_0x346569);if(!_[_0xaec5('0x67')](_0x1a2dec)){_0x182de9[_0xaec5('0xc')](_0xaec5('0x68'),_0x1a2dec);}var _0x570b81={'type':db[_0xaec5('0x69')]['QueryTypes'][_0xaec5('0x61')],'raw':!![]};return db[_0xaec5('0x62')][_0xaec5('0x63')](_0x182de9[_0xaec5('0x64')](),_0x570b81)[_0xaec5('0x51')](function(_0x4086ee){return _0x4086ee[0x0][_0xaec5('0x66')];});}module[_0xaec5('0x6a')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};