40673c66b728f9bf811f4dcdeef85f3765d86e02
[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 _0xe526=['../interaction/utils','role','ListId','autocomplete','true','select','from','cm_contacts','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','.id','ct.CmContactId\x20=\x20','t.id\x20=\x20ct.TagId','phone','mobile','fax','createdAt','updatedAt','deletedAt','includes','push','TagIds','field','expr','forEach','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','sqlOperator','conditions','name','dateOfBirth','fieldType','datetime','DATE','buildExpression','default','text','value','start','end','Tag','map','tags','clause','and','ids','user','uc.UserId\x20=\x20?','skip','keys','some','Contact','User','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','then','fields','tag','filter','resolve','search','agent','attributes','group','c.id','limit','offset','subqry.id','having','order','DESC','subqry.','findAll','color','keyBy','Sequelize','SELECT','CmContact','sequelize','query','toString','Tags','COUNT(*)','getSelectedTags','isEmpty','where','t.id\x20IN\x20?','QueryTypes','lodash','squel','../parsers/qs'];(function(_0x4c7561,_0x3878df){var _0x446062=function(_0x168809){while(--_0x168809){_0x4c7561['push'](_0x4c7561['shift']());}};_0x446062(++_0x3878df);}(_0xe526,0xcf));var _0x6e52=function(_0x1c9d54,_0x38d696){_0x1c9d54=_0x1c9d54-0x0;var _0x4cf722=_0xe526[_0x1c9d54];return _0x4cf722;};'use strict';var _=require(_0x6e52('0x0'));var squel=require(_0x6e52('0x1'));var as=require('../parsers/advancedSearch');var qs=require(_0x6e52('0x2'));var utils=require(_0x6e52('0x3'));var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x4664c3,_0x4ee9f9){var _0x4742ad=![];if(_0x4664c3[_0x6e52('0x4')]==='agent'&&!_0x4ee9f9['search']&&!_0x4ee9f9[_0x6e52('0x5')]&&_0x4ee9f9[_0x6e52('0x6')]!==_0x6e52('0x7')){_0x4742ad=!![];}return _0x4742ad;}function getContactsSubquery(){return squel[_0x6e52('0x8')]()[_0x6e52('0x9')](_0x6e52('0xa'),'c')['where'](_0x6e52('0xb'));}function applyJoinClauses(_0x3e7ad0,_0x460e1b){var _0x288a79=_0x460e1b?'c':_0x6e52('0xc');_0x3e7ad0[_0x6e52('0xd')](_0x6e52('0xe'),'uc','uc.CmContactId\x20=\x20'+_0x288a79+_0x6e52('0xf'))['left_join']('cm_contact_has_tags','ct',_0x6e52('0x10')+_0x288a79+_0x6e52('0xf'))[_0x6e52('0xd')]('tools_tags','t',_0x6e52('0x11'));return _0x3e7ad0;}function addFieldsToQuery(_0x4674ef,_0x4b420c,_0x424943,_0x555178,_0x41f5a9){var _0x22fc21=_0x41f5a9?'c':'subqry';if(!_0x4b420c){_0x4b420c=['id','firstName','lastName',_0x6e52('0x12'),_0x6e52('0x13'),_0x6e52('0x14'),'email','ListId','CompanyId',_0x6e52('0x15'),_0x6e52('0x16'),_0x6e52('0x17'),'TagIds'];}else if(!_0x4b420c[_0x6e52('0x18')]('id')){_0x4b420c[_0x6e52('0x19')]('id');}var _0x46ea27=_0x424943&&_0x41f5a9||!_0x424943&&!_0x41f5a9;if(_0x555178){_0x46ea27=_0x555178&&_0x41f5a9||!_0x555178&&!_0x41f5a9;}_0x4b420c['forEach'](function(_0x55efd8){if(_0x55efd8===_0x6e52('0x1a')){if(_0x46ea27){_0x4674ef[_0x6e52('0x1b')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x55efd8);}else if(_0x424943||_0x555178){_0x4674ef[_0x6e52('0x1b')](_0x22fc21+'.'+_0x55efd8);}}else{_0x4674ef[_0x6e52('0x1b')](_0x22fc21+'.'+_0x55efd8);}});return _0x4674ef;}function getSqlClauses(){var _0x332fd2={'default':squel[_0x6e52('0x1c')](),'fields':squel[_0x6e52('0x1c')](),'filter':squel[_0x6e52('0x1c')](),'tags':{'clause':squel[_0x6e52('0x1c')](),'ids':null},'user':{'clause':squel[_0x6e52('0x1c')](),'skip':![]}};return _0x332fd2;}function parseTagParameter(_0x178da2){var _0x534ee1=squel[_0x6e52('0x1c')]();if(_0x178da2){var _0x3a5fc1=utils['getSelectedTags'](_0x178da2);_0x3a5fc1[_0x6e52('0x1d')](function(_0x578066){_0x534ee1['or'](_0x6e52('0x1e'),'%,'+_0x578066+',%');});}return _0x534ee1;}function parseSearchFilter(_0x57f65e){var _0x5b50b7=squel['expr']();if(_0x57f65e){var _0x25a483=_0x57f65e[_0x6e52('0x1f')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');var _0x36a4ae=qs['escapeLIKESpecialChars'](_0x25a483);if(_0x25a483[_0x6e52('0x20')]('\x20')[_0x6e52('0x21')]>0x1){_0x5b50b7['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x6e52('0x22')](_0x25a483,!![]),null);}else{if(qs[_0x6e52('0x23')](_0x25a483)){_0x5b50b7['or'](_0x6e52('0x24'),_0x36a4ae+'%');_0x5b50b7['or'](_0x6e52('0x25'),_0x36a4ae+'%');_0x5b50b7['or']('c.mobile\x20LIKE\x20?',_0x36a4ae+'%');_0x5b50b7['or']('c.fax\x20LIKE\x20?',_0x36a4ae+'%');}else if(qs[_0x6e52('0x26')](_0x25a483)){_0x5b50b7['or'](_0x6e52('0x27'),_0x36a4ae+'%');}else{_0x5b50b7['or'](_0x6e52('0x28'),'%'+_0x36a4ae+'%');_0x5b50b7['or'](_0x6e52('0x29'),'%'+_0x36a4ae+'%');_0x5b50b7['or']('c.email\x20LIKE\x20?','%'+_0x36a4ae+'%');}}}return _0x5b50b7;}function parseAdvancedSearchFilter(_0x25fee9,_0x2d2151){var _0x18b500=getSqlClauses();var _0x35ae29=as['parseSearch'](_0x25fee9);var _0x2d51a9=_0x35ae29[_0x6e52('0x2a')];for(var _0x14d127=0x0;_0x14d127<_0x35ae29[_0x6e52('0x2b')][_0x6e52('0x21')];_0x14d127++){var _0x12db7e=_0x35ae29['conditions'][_0x14d127];var _0xd4c31c='c';var _0x2808df=_['find'](_0x2d2151,[_0x6e52('0x2c'),_0x12db7e[_0x6e52('0x1b')]]);if(_0x2808df){if(_0x12db7e[_0x6e52('0x1b')]===_0x6e52('0x2d')||_0x2808df[_0x6e52('0x2e')]===_0x6e52('0x2f')){_0x12db7e['castTo']=_0x6e52('0x30');}var _0x229bad=as[_0x6e52('0x31')](_0xd4c31c,_0x2808df['type'],_0x12db7e);_0x18b500[_0x6e52('0x32')][_0x2d51a9](_0x229bad[_0x6e52('0x33')],_0x229bad[_0x6e52('0x34')][_0x6e52('0x35')],_0x229bad[_0x6e52('0x34')][_0x6e52('0x36')]);}else{if(_0x12db7e[_0x6e52('0x1b')]===_0x6e52('0x37')){var _0xc6bb6b=_0x12db7e[_0x6e52('0x34')][_0x6e52('0x20')](',')[_0x6e52('0x38')](function(_0x2b9a2a){return Number(_0x2b9a2a);});var _0x39d270=parseTagParameter(_0xc6bb6b);_0x18b500[_0x6e52('0x39')][_0x6e52('0x3a')][_0x6e52('0x3b')](_0x39d270);_0x18b500[_0x6e52('0x39')][_0x6e52('0x3c')]=_0xc6bb6b;}else if(_0x12db7e[_0x6e52('0x1b')]==='User'){_0x18b500[_0x6e52('0x3d')][_0x6e52('0x3a')][_0x6e52('0x3b')](_0x6e52('0x3e'),_0x12db7e[_0x6e52('0x34')]);_0x18b500[_0x6e52('0x3d')][_0x6e52('0x3f')]=!![];}}}return _0x18b500;}function parseModelFields(_0x2e810b,_0x5210e6){var _0x4cac95=squel[_0x6e52('0x1c')]();var _0x566c41=_(_0x2e810b)[_0x6e52('0x40')]()[_0x6e52('0x38')](function(_0x10fc69){return _[_0x6e52('0x41')](_0x5210e6,[_0x6e52('0x2c'),_0x10fc69])?_0x10fc69:undefined;})['compact']()[_0x6e52('0x34')]();if(_0x2e810b[_0x6e52('0x42')]){_0x566c41[_0x6e52('0x19')](_0x6e52('0x42'));}if(_0x2e810b[_0x6e52('0x43')]){_0x566c41[_0x6e52('0x19')]('User');}if(_0x566c41[_0x6e52('0x21')]>0x0){_0x566c41['forEach'](function(_0xa7ad7a){if(_0xa7ad7a===_0x6e52('0x5')){_0x4cac95['and'](_0x6e52('0x44'),[][_0x6e52('0x45')](_0x2e810b[_0xa7ad7a]));}else if(_0xa7ad7a==='Contact'){var _0x4839d4='%'+_0x2e810b[_0xa7ad7a]+'%';_0x4cac95[_0x6e52('0x3b')](_0x6e52('0x46'),_0x4839d4);}else if(_0xa7ad7a===_0x6e52('0x43')){_0x4cac95[_0x6e52('0x3b')](_0x6e52('0x3e'),_0x2e810b[_0xa7ad7a]);}else{_0x4cac95[_0x6e52('0x3b')]('c.'+_0xa7ad7a+_0x6e52('0x47'),_0x2e810b[_0xa7ad7a]);}});}return _0x4cac95;}function parseQueryParameters(_0x39bc15,_0x1f631c){var _0x42c85f=getSqlClauses();return Promise['resolve']()[_0x6e52('0x48')](function(){return parseModelFields(_0x39bc15,_0x1f631c);})[_0x6e52('0x48')](function(_0x364d68){_0x42c85f[_0x6e52('0x49')][_0x6e52('0x3b')](_0x364d68);return parseTagParameter(_0x39bc15[_0x6e52('0x4a')]);})['then'](function(_0x36f952){_0x42c85f[_0x6e52('0x39')]['clause'][_0x6e52('0x3b')](_0x36f952);return parseSearchFilter(_0x39bc15[_0x6e52('0x4b')]);})[_0x6e52('0x48')](function(_0x11beca){_0x42c85f[_0x6e52('0x4b')]=_0x11beca;return _0x42c85f;});}function checkListsRestrictions(_0x101dea,_0xa9222d,_0x1702d5){var _0x19f530=squel[_0x6e52('0x1c')]();return Promise[_0x6e52('0x4c')]()['then'](function(){if(_0xa9222d[_0x6e52('0x4d')]&&_0x101dea[_0x6e52('0x4')]===_0x6e52('0x4e')&&!_0x1702d5){return _0x101dea['getLists']({'attributes':['id'],'raw':!![]});}})['then'](function(_0x32f788){if(_0x32f788){if(_0x32f788['length']===0x0){_0x19f530[_0x6e52('0x3b')]('c.ListId\x20IS\x20NULL');}else{_0x19f530['and'](_0x6e52('0x44'),_[_0x6e52('0x38')](_0x32f788,'id'));}}})[_0x6e52('0x48')](function(){return _0x19f530;});}function buildContactsQuery(_0x12957c,_0x1f41c7,_0x487dd9,_0x3db48d,_0x2f17d3,_0xa29761){if(_0x1f41c7){_0x1f41c7=_0x487dd9[_0x6e52('0x4f')];}_0x12957c=addFieldsToQuery(_0x12957c,_0x1f41c7,_0x3db48d,_0xa29761,!![]);var _0x5c4700=squel[_0x6e52('0x8')]();_0x5c4700=addFieldsToQuery(_0x5c4700,_0x1f41c7,_0x3db48d,_0xa29761,![]);if(_0x3db48d||_0xa29761){_0x12957c=applyJoinClauses(_0x12957c,!![]);_0x12957c[_0x6e52('0x50')](_0x6e52('0x51'));if(_0x487dd9[_0x6e52('0x52')]){_0x5c4700[_0x6e52('0x52')](_0x487dd9[_0x6e52('0x52')]);}if(_0x487dd9[_0x6e52('0x53')]){_0x5c4700[_0x6e52('0x53')](_0x487dd9[_0x6e52('0x53')]);}}else{_0x5c4700=applyJoinClauses(_0x5c4700,![]);_0x5c4700[_0x6e52('0x50')](_0x6e52('0x54'));if(_0x487dd9['limit']){_0x12957c[_0x6e52('0x52')](_0x487dd9['limit']);}if(_0x487dd9[_0x6e52('0x53')]){_0x12957c['offset'](_0x487dd9[_0x6e52('0x53')]);}}_0x5c4700[_0x6e52('0x55')](_0x2f17d3);if(_0x487dd9[_0x6e52('0x56')]){_0x487dd9[_0x6e52('0x56')][_0x6e52('0x1d')](function(_0xf89e30){_0x12957c[_0x6e52('0x56')]('c.'+_0xf89e30[0x0],_0xf89e30[0x1]===_0x6e52('0x57')?![]:!![]);_0x5c4700['order'](_0x6e52('0x58')+_0xf89e30[0x0],_0xf89e30[0x1]===_0x6e52('0x57')?![]:!![]);});}_0x5c4700[_0x6e52('0x9')](_0x12957c,_0x6e52('0xc'));return _0x5c4700;}function getFilteredContacts(_0x1b03f2){var _0x38d750=[];return db[_0x6e52('0x37')][_0x6e52('0x59')]({'attributes':['id','name',_0x6e52('0x5a')],'raw':!![]})['then'](function(_0x412adc){_0x38d750=_[_0x6e52('0x5b')](_0x412adc,'id');var _0xb8cf8d={'type':db[_0x6e52('0x5c')]['QueryTypes'][_0x6e52('0x5d')],'model':db[_0x6e52('0x5e')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x6e52('0x5f')][_0x6e52('0x60')](_0x1b03f2[_0x6e52('0x61')](),_0xb8cf8d);})[_0x6e52('0x48')](function(_0x34f122){_0x34f122[_0x6e52('0x1d')](function(_0x549039){if(_0x549039['TagIds']){_0x549039[_0x6e52('0x62')]=[];_0x549039[_0x6e52('0x1a')][_0x6e52('0x20')](',')[_0x6e52('0x1d')](function(_0x2e1beb){_0x549039[_0x6e52('0x62')][_0x6e52('0x19')](_0x38d750[_0x2e1beb]);});}delete _0x549039[_0x6e52('0x1a')];});return _0x34f122;});}function countFilteredContacts(_0x3b4ca6,_0x22977e){var _0x31e17f=_0x3b4ca6['clone']();_0x31e17f[_0x6e52('0x1b')](_0x6e52('0x63'));_0x31e17f=applyJoinClauses(_0x31e17f,!![]);_0x3b4ca6[_0x6e52('0x50')](_0x6e52('0x51'));var _0x9451cc=utils[_0x6e52('0x64')](_0x22977e);if(!_[_0x6e52('0x65')](_0x9451cc)){_0x31e17f[_0x6e52('0x66')](_0x6e52('0x67'),_0x9451cc);}var _0x965434={'type':db[_0x6e52('0x5c')][_0x6e52('0x68')]['SELECT'],'raw':!![]};return db[_0x6e52('0x5f')][_0x6e52('0x60')](_0x31e17f['toString'](),_0x965434)[_0x6e52('0x48')](function(_0x2ff217){return _0x2ff217[0x0][_0x6e52('0x63')];});}module['exports']={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};