732832211fa3f2d0015ed19d88a1b328902a1b99
[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 _0xe6d2=['order','findAll','color','keyBy','QueryTypes','SELECT','CmContact','toString','Tags','clone','COUNT(*)','Sequelize','sequelize','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','agent','autocomplete','true','from','where','subqry','left_join','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','firstName','lastName','phone','mobile','fax','email','CompanyId','createdAt','deletedAt','TagIds','includes','push','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','name','dateOfBirth','fieldType','datetime','castTo','DATE','buildExpression','default','text','value','start','end','Tag','map','tags','and','clause','uc.UserId\x20=\x20?','skip','keys','compact','Contact','User','ListId','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','then','tag','filter','resolve','search','role','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','attributes','group','c.id','limit','offset','subqry.id','having'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0xe6d2,0xe8));var _0x2e6d=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0xe6d2[_0xdea41a];return _0x15d0d8;};'use strict';var _=require(_0x2e6d('0x0'));var squel=require(_0x2e6d('0x1'));var as=require(_0x2e6d('0x2'));var qs=require(_0x2e6d('0x3'));var utils=require(_0x2e6d('0x4'));var db=require(_0x2e6d('0x5'))['db'];function skipContactsQuery(_0x302edd,_0xec6a48){var _0x4c6969=![];if(_0x302edd['role']===_0x2e6d('0x6')&&!_0xec6a48['search']&&!_0xec6a48['ListId']&&_0xec6a48[_0x2e6d('0x7')]!==_0x2e6d('0x8')){_0x4c6969=!![];}return _0x4c6969;}function getContactsSubquery(){return squel['select']()[_0x2e6d('0x9')]('cm_contacts','c')[_0x2e6d('0xa')]('c.deletedAt\x20IS\x20NULL');}function applyJoinClauses(_0x23185b,_0x384bc8){var _0x2c74be=_0x384bc8?'c':_0x2e6d('0xb');_0x23185b[_0x2e6d('0xc')]('cm_user_has_contacts','uc',_0x2e6d('0xd')+_0x2c74be+_0x2e6d('0xe'))[_0x2e6d('0xc')](_0x2e6d('0xf'),'ct',_0x2e6d('0x10')+_0x2c74be+'.id')[_0x2e6d('0xc')](_0x2e6d('0x11'),'t',_0x2e6d('0x12'));return _0x23185b;}function addFieldsToQuery(_0xed7b4d,_0x4e97a6,_0x177579,_0x25230d,_0xbb911a){var _0x20255a=_0xbb911a?'c':_0x2e6d('0xb');if(!_0x4e97a6){_0x4e97a6=['id',_0x2e6d('0x13'),_0x2e6d('0x14'),_0x2e6d('0x15'),_0x2e6d('0x16'),_0x2e6d('0x17'),_0x2e6d('0x18'),'ListId',_0x2e6d('0x19'),_0x2e6d('0x1a'),'updatedAt',_0x2e6d('0x1b'),_0x2e6d('0x1c')];}else if(!_0x4e97a6[_0x2e6d('0x1d')]('id')){_0x4e97a6[_0x2e6d('0x1e')]('id');}var _0x42b8b6=_0x177579&&_0xbb911a||!_0x177579&&!_0xbb911a;if(_0x25230d){_0x42b8b6=_0x25230d&&_0xbb911a||!_0x25230d&&!_0xbb911a;}_0x4e97a6['forEach'](function(_0x38a820){if(_0x38a820===_0x2e6d('0x1c')){if(_0x42b8b6){_0xed7b4d[_0x2e6d('0x1f')](_0x2e6d('0x20'),_0x38a820);}else if(_0x177579||_0x25230d){_0xed7b4d[_0x2e6d('0x1f')](_0x20255a+'.'+_0x38a820);}}else{_0xed7b4d[_0x2e6d('0x1f')](_0x20255a+'.'+_0x38a820);}});return _0xed7b4d;}function getSqlClauses(){var _0x1018fb={'default':squel[_0x2e6d('0x21')](),'fields':squel[_0x2e6d('0x21')](),'filter':squel[_0x2e6d('0x21')](),'tags':{'clause':squel[_0x2e6d('0x21')](),'ids':null},'user':{'clause':squel[_0x2e6d('0x21')](),'skip':![]}};return _0x1018fb;}function parseTagParameter(_0x343d57){var _0x26a12d=squel[_0x2e6d('0x21')]();if(_0x343d57){var _0x23d5fa=utils[_0x2e6d('0x22')](_0x343d57);_0x23d5fa[_0x2e6d('0x23')](function(_0x2d5b3d){_0x26a12d['or'](_0x2e6d('0x24'),'%,'+_0x2d5b3d+',%');});}return _0x26a12d;}function parseSearchFilter(_0x174f15){var _0x422900=squel[_0x2e6d('0x21')]();if(_0x174f15){var _0xc0743e=_0x174f15[_0x2e6d('0x25')]('\x5c','\x5c\x5c')[_0x2e6d('0x25')](/'/g,'\x27\x27');if(_0xc0743e[_0x2e6d('0x26')]('\x20')[_0x2e6d('0x27')]>0x1){_0x422900['or'](_0x2e6d('0x28'),qs[_0x2e6d('0x29')](_0xc0743e,!![]),null);}else{if(qs['isNumeric'](_0xc0743e)){_0x422900['or'](_0x2e6d('0x2a'),_0xc0743e+'%');_0x422900['or'](_0x2e6d('0x2b'),_0xc0743e+'%');_0x422900['or']('c.mobile\x20LIKE\x20?',_0xc0743e+'%');_0x422900['or'](_0x2e6d('0x2c'),_0xc0743e+'%');}else if(qs[_0x2e6d('0x2d')](_0xc0743e)){_0x422900['or'](_0x2e6d('0x2e'),_0xc0743e+'%');}else{_0x422900['or']('c.firstName\x20LIKE\x20?','%'+_0xc0743e+'%');_0x422900['or'](_0x2e6d('0x2f'),'%'+_0xc0743e+'%');_0x422900['or'](_0x2e6d('0x2e'),'%'+_0xc0743e+'%');}}}return _0x422900;}function parseAdvancedSearchFilter(_0x536f2a,_0x215e51){var _0x37b63a=getSqlClauses();var _0x4c14d3=as[_0x2e6d('0x30')](_0x536f2a);var _0x4d055d=_0x4c14d3[_0x2e6d('0x31')];for(var _0x460932=0x0;_0x460932<_0x4c14d3[_0x2e6d('0x32')]['length'];_0x460932++){var _0x47d269=_0x4c14d3['conditions'][_0x460932];var _0x3426cb='c';var _0x5f2196=_[_0x2e6d('0x33')](_0x215e51,[_0x2e6d('0x34'),_0x47d269[_0x2e6d('0x1f')]]);if(_0x5f2196){if(_0x47d269['field']===_0x2e6d('0x35')||_0x5f2196[_0x2e6d('0x36')]===_0x2e6d('0x37')){_0x47d269[_0x2e6d('0x38')]=_0x2e6d('0x39');}var _0x4e7221=as[_0x2e6d('0x3a')](_0x3426cb,_0x5f2196['type'],_0x47d269);_0x37b63a[_0x2e6d('0x3b')][_0x4d055d](_0x4e7221[_0x2e6d('0x3c')],_0x4e7221[_0x2e6d('0x3d')][_0x2e6d('0x3e')],_0x4e7221[_0x2e6d('0x3d')][_0x2e6d('0x3f')]);}else{if(_0x47d269[_0x2e6d('0x1f')]===_0x2e6d('0x40')){var _0x3b7884=_0x47d269[_0x2e6d('0x3d')][_0x2e6d('0x26')](',')[_0x2e6d('0x41')](function(_0x5f2744){return Number(_0x5f2744);});var _0x21d53c=parseTagParameter(_0x3b7884);_0x37b63a[_0x2e6d('0x42')]['clause'][_0x2e6d('0x43')](_0x21d53c);_0x37b63a['tags']['ids']=_0x3b7884;}else if(_0x47d269[_0x2e6d('0x1f')]==='User'){_0x37b63a['user'][_0x2e6d('0x44')][_0x2e6d('0x43')](_0x2e6d('0x45'),_0x47d269[_0x2e6d('0x3d')]);_0x37b63a['user'][_0x2e6d('0x46')]=!![];}}}return _0x37b63a;}function parseModelFields(_0x3fe76c,_0x2c3334){var _0x5e6f2d=squel[_0x2e6d('0x21')]();var _0x1bb20a=_(_0x3fe76c)[_0x2e6d('0x47')]()[_0x2e6d('0x41')](function(_0xdbe72){return _['some'](_0x2c3334,[_0x2e6d('0x34'),_0xdbe72])?_0xdbe72:undefined;})[_0x2e6d('0x48')]()[_0x2e6d('0x3d')]();if(_0x3fe76c['Contact']){_0x1bb20a['push'](_0x2e6d('0x49'));}if(_0x3fe76c[_0x2e6d('0x4a')]){_0x1bb20a['push']('User');}if(_0x1bb20a[_0x2e6d('0x27')]>0x0){_0x1bb20a['forEach'](function(_0x203f08){if(_0x203f08===_0x2e6d('0x4b')){_0x5e6f2d[_0x2e6d('0x43')]('c.ListId\x20IN\x20?',[][_0x2e6d('0x4c')](_0x3fe76c[_0x203f08]));}else if(_0x203f08===_0x2e6d('0x49')){var _0x23b0b7='%'+_0x3fe76c[_0x203f08]+'%';_0x5e6f2d[_0x2e6d('0x43')](_0x2e6d('0x4d'),_0x23b0b7);}else if(_0x203f08==='User'){_0x5e6f2d[_0x2e6d('0x43')](_0x2e6d('0x45'),_0x3fe76c[_0x203f08]);}else{_0x5e6f2d[_0x2e6d('0x43')]('c.'+_0x203f08+_0x2e6d('0x4e'),_0x3fe76c[_0x203f08]);}});}return _0x5e6f2d;}function parseQueryParameters(_0x4ad7e1,_0x520b26){var _0x19b2b5=getSqlClauses();return Promise['resolve']()[_0x2e6d('0x4f')](function(){return parseModelFields(_0x4ad7e1,_0x520b26);})[_0x2e6d('0x4f')](function(_0x3c3cad){_0x19b2b5['fields'][_0x2e6d('0x43')](_0x3c3cad);return parseTagParameter(_0x4ad7e1[_0x2e6d('0x50')]);})[_0x2e6d('0x4f')](function(_0x8c6c4d){_0x19b2b5[_0x2e6d('0x42')][_0x2e6d('0x44')][_0x2e6d('0x43')](_0x8c6c4d);return parseSearchFilter(_0x4ad7e1[_0x2e6d('0x51')]);})[_0x2e6d('0x4f')](function(_0x52f36a){_0x19b2b5['filter']=_0x52f36a;return _0x19b2b5;});}function checkListsRestrictions(_0x2aa2b9,_0x5b022d,_0x4989f9){var _0x2ccb2f=squel[_0x2e6d('0x21')]();return Promise[_0x2e6d('0x52')]()[_0x2e6d('0x4f')](function(){if(_0x5b022d[_0x2e6d('0x53')]&&_0x2aa2b9[_0x2e6d('0x54')]===_0x2e6d('0x6')&&!_0x4989f9){return _0x2aa2b9[_0x2e6d('0x55')]({'attributes':['id'],'raw':!![]});}})[_0x2e6d('0x4f')](function(_0x23de88){if(_0x23de88){if(_0x23de88['length']===0x0){_0x2ccb2f['and'](_0x2e6d('0x56'));}else{_0x2ccb2f['and'](_0x2e6d('0x57'),_[_0x2e6d('0x41')](_0x23de88,'id'));}}})[_0x2e6d('0x4f')](function(){return _0x2ccb2f;});}function buildContactsQuery(_0x25a9c6,_0x2b2fd0,_0xae0037,_0xea2f90,_0x2cf4a6,_0x39b862){if(_0x2b2fd0){_0x2b2fd0=_0xae0037[_0x2e6d('0x58')];}_0x25a9c6=addFieldsToQuery(_0x25a9c6,_0x2b2fd0,_0xea2f90,_0x39b862,!![]);var _0x14b898=squel['select']();_0x14b898=addFieldsToQuery(_0x14b898,_0x2b2fd0,_0xea2f90,_0x39b862,![]);if(_0xea2f90||_0x39b862){_0x25a9c6=applyJoinClauses(_0x25a9c6,!![]);_0x25a9c6[_0x2e6d('0x59')](_0x2e6d('0x5a'));if(_0xae0037['limit']){_0x14b898[_0x2e6d('0x5b')](_0xae0037['limit']);}if(_0xae0037[_0x2e6d('0x5c')]){_0x14b898[_0x2e6d('0x5c')](_0xae0037[_0x2e6d('0x5c')]);}}else{_0x14b898=applyJoinClauses(_0x14b898,![]);_0x14b898['group'](_0x2e6d('0x5d'));if(_0xae0037[_0x2e6d('0x5b')]){_0x25a9c6[_0x2e6d('0x5b')](_0xae0037[_0x2e6d('0x5b')]);}if(_0xae0037[_0x2e6d('0x5c')]){_0x25a9c6[_0x2e6d('0x5c')](_0xae0037[_0x2e6d('0x5c')]);}}_0x14b898[_0x2e6d('0x5e')](_0x2cf4a6);if(_0xae0037[_0x2e6d('0x5f')]){_0xae0037['order']['forEach'](function(_0x1790a6){_0x25a9c6['order']('c.'+_0x1790a6[0x0],_0x1790a6[0x1]==='DESC'?![]:!![]);_0x14b898['order']('subqry.'+_0x1790a6[0x0],_0x1790a6[0x1]==='DESC'?![]:!![]);});}_0x14b898[_0x2e6d('0x9')](_0x25a9c6,_0x2e6d('0xb'));return _0x14b898;}function getFilteredContacts(_0x12d4be){var _0x241d48=[];return db[_0x2e6d('0x40')][_0x2e6d('0x60')]({'attributes':['id','name',_0x2e6d('0x61')],'raw':!![]})['then'](function(_0x4dd8d3){_0x241d48=_[_0x2e6d('0x62')](_0x4dd8d3,'id');var _0x170b6f={'type':db['Sequelize'][_0x2e6d('0x63')][_0x2e6d('0x64')],'model':db[_0x2e6d('0x65')],'mapToModel':!![],'nest':!![],'raw':!![]};return db['sequelize']['query'](_0x12d4be[_0x2e6d('0x66')](),_0x170b6f);})[_0x2e6d('0x4f')](function(_0x53adf1){_0x53adf1[_0x2e6d('0x23')](function(_0x4336f2){if(_0x4336f2['TagIds']){_0x4336f2[_0x2e6d('0x67')]=[];_0x4336f2['TagIds']['split'](',')['forEach'](function(_0x22d9f9){_0x4336f2[_0x2e6d('0x67')]['push'](_0x241d48[_0x22d9f9]);});}delete _0x4336f2['TagIds'];});return _0x53adf1;});}function countFilteredContacts(_0x4d80ce,_0x4b6271){var _0x6c30d4=_0x4d80ce[_0x2e6d('0x68')]();_0x6c30d4[_0x2e6d('0x1f')](_0x2e6d('0x69'));_0x6c30d4=applyJoinClauses(_0x6c30d4,!![]);_0x4d80ce['group'](_0x2e6d('0x5a'));var _0x22b43a=utils[_0x2e6d('0x22')](_0x4b6271);if(!_['isEmpty'](_0x22b43a)){_0x6c30d4[_0x2e6d('0xa')]('t.id\x20IN\x20?',_0x22b43a);}var _0x371588={'type':db[_0x2e6d('0x6a')][_0x2e6d('0x63')][_0x2e6d('0x64')],'raw':!![]};return db[_0x2e6d('0x6b')]['query'](_0x6c30d4[_0x2e6d('0x66')](),_0x371588)[_0x2e6d('0x4f')](function(_0x382817){return _0x382817[0x0][_0x2e6d('0x69')];});}module[_0x2e6d('0x6c')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};