Built motion from commit ffdca78c.|2.6.24
[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 _0x1b95=['Sequelize','CmContact','sequelize','query','toString','Tags','clone','isEmpty','t.id\x20IN\x20?','QueryTypes','SELECT','COUNT(*)','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','agent','search','ListId','autocomplete','true','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','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','subqry','firstName','lastName','phone','mobile','CompanyId','createdAt','deletedAt','TagIds','push','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\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','find','fieldType','datetime','castTo','DATE','type','default','text','value','end','tags','ids','User','user','clause','and','uc.UserId\x20=\x20?','skip','keys','map','some','compact','Contact','c.ListId\x20IN\x20?','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','resolve','then','fields','tag','filter','role','getLists','length','c.ListId\x20IS\x20NULL','attributes','select','group','c.id','limit','offset','subqry.id','having','order','DESC','subqry.','name','color','keyBy'];(function(_0x429b8c,_0xa0de50){var _0x5033dc=function(_0x1c612f){while(--_0x1c612f){_0x429b8c['push'](_0x429b8c['shift']());}};_0x5033dc(++_0xa0de50);}(_0x1b95,0x7f));var _0x51b9=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x1b95[_0x1d1779];return _0x2377e9;};'use strict';var _=require(_0x51b9('0x0'));var squel=require(_0x51b9('0x1'));var as=require(_0x51b9('0x2'));var qs=require(_0x51b9('0x3'));var utils=require(_0x51b9('0x4'));var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x38e23b,_0x525436){var _0x4c7bbc=![];if(_0x38e23b['role']===_0x51b9('0x5')&&!_0x525436[_0x51b9('0x6')]&&!_0x525436[_0x51b9('0x7')]&&_0x525436[_0x51b9('0x8')]!==_0x51b9('0x9')){_0x4c7bbc=!![];}return _0x4c7bbc;}function getContactsSubquery(){return squel['select']()[_0x51b9('0xa')](_0x51b9('0xb'),'c')[_0x51b9('0xc')](_0x51b9('0xd'));}function applyJoinClauses(_0x7dc2e2,_0x53c17d){var _0x37f271=_0x53c17d?'c':'subqry';_0x7dc2e2[_0x51b9('0xe')](_0x51b9('0xf'),'uc',_0x51b9('0x10')+_0x37f271+_0x51b9('0x11'))[_0x51b9('0xe')](_0x51b9('0x12'),'ct',_0x51b9('0x13')+_0x37f271+_0x51b9('0x11'))[_0x51b9('0xe')](_0x51b9('0x14'),'t',_0x51b9('0x15'));return _0x7dc2e2;}function addFieldsToQuery(_0x137504,_0x86b650,_0x389e18,_0x5363d1,_0x373cca){var _0x51dd52=_0x373cca?'c':_0x51b9('0x16');if(!_0x86b650){_0x86b650=['id',_0x51b9('0x17'),_0x51b9('0x18'),_0x51b9('0x19'),_0x51b9('0x1a'),'fax','email',_0x51b9('0x7'),_0x51b9('0x1b'),_0x51b9('0x1c'),'updatedAt',_0x51b9('0x1d'),_0x51b9('0x1e')];}else if(!_0x86b650['includes']('id')){_0x86b650[_0x51b9('0x1f')]('id');}var _0x405df9=_0x389e18&&_0x373cca||!_0x389e18&&!_0x373cca;if(_0x5363d1){_0x405df9=_0x5363d1&&_0x373cca||!_0x5363d1&&!_0x373cca;}_0x86b650[_0x51b9('0x20')](function(_0x2c7a28){if(_0x2c7a28==='TagIds'){if(_0x405df9){_0x137504[_0x51b9('0x21')](_0x51b9('0x22'),_0x2c7a28);}else if(_0x389e18||_0x5363d1){_0x137504['field'](_0x51dd52+'.'+_0x2c7a28);}}else{_0x137504[_0x51b9('0x21')](_0x51dd52+'.'+_0x2c7a28);}});return _0x137504;}function getSqlClauses(){var _0x463cb9={'default':squel[_0x51b9('0x23')](),'fields':squel['expr'](),'filter':squel[_0x51b9('0x23')](),'tags':{'clause':squel[_0x51b9('0x23')](),'ids':null},'user':{'clause':squel[_0x51b9('0x23')](),'skip':![]}};return _0x463cb9;}function parseTagParameter(_0x168996){var _0x41ff66=squel[_0x51b9('0x23')]();if(_0x168996){var _0x6cd3dd=utils[_0x51b9('0x24')](_0x168996);_0x6cd3dd[_0x51b9('0x20')](function(_0x5e525b){_0x41ff66['or'](_0x51b9('0x25'),'%,'+_0x5e525b+',%');});}return _0x41ff66;}function parseSearchFilter(_0x191037){var _0x205c76=squel[_0x51b9('0x23')]();if(_0x191037){var _0x26e5a4=_0x191037[_0x51b9('0x26')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x26e5a4[_0x51b9('0x27')]('\x20')['length']>0x1){_0x205c76['or'](_0x51b9('0x28'),qs[_0x51b9('0x29')](_0x26e5a4,!![]),null);}else{if(qs[_0x51b9('0x2a')](_0x26e5a4)){_0x205c76['or'](_0x51b9('0x2b'),_0x26e5a4+'%');_0x205c76['or']('c.phone\x20LIKE\x20?',_0x26e5a4+'%');_0x205c76['or'](_0x51b9('0x2c'),_0x26e5a4+'%');_0x205c76['or'](_0x51b9('0x2d'),_0x26e5a4+'%');}else if(qs[_0x51b9('0x2e')](_0x26e5a4)){_0x205c76['or'](_0x51b9('0x2f'),_0x26e5a4+'%');}else{_0x205c76['or'](_0x51b9('0x30'),'%'+_0x26e5a4+'%');_0x205c76['or'](_0x51b9('0x31'),'%'+_0x26e5a4+'%');_0x205c76['or']('c.email\x20LIKE\x20?','%'+_0x26e5a4+'%');}}}return _0x205c76;}function parseAdvancedSearchFilter(_0x25aba6,_0x40c9d5){var _0x42c812=getSqlClauses();var _0x2f3146=as[_0x51b9('0x32')](_0x25aba6);var _0x27d368=_0x2f3146[_0x51b9('0x33')];for(var _0x2ae564=0x0;_0x2ae564<_0x2f3146['conditions']['length'];_0x2ae564++){var _0xef923b=_0x2f3146[_0x51b9('0x34')][_0x2ae564];var _0x5bf15b='c';var _0x5f38ee=_[_0x51b9('0x35')](_0x40c9d5,['name',_0xef923b['field']]);if(_0x5f38ee){if(_0xef923b[_0x51b9('0x21')]==='dateOfBirth'||_0x5f38ee[_0x51b9('0x36')]===_0x51b9('0x37')){_0xef923b[_0x51b9('0x38')]=_0x51b9('0x39');}var _0x15bb25=as['buildExpression'](_0x5bf15b,_0x5f38ee[_0x51b9('0x3a')],_0xef923b);_0x42c812[_0x51b9('0x3b')][_0x27d368](_0x15bb25[_0x51b9('0x3c')],_0x15bb25[_0x51b9('0x3d')]['start'],_0x15bb25[_0x51b9('0x3d')][_0x51b9('0x3e')]);}else{if(_0xef923b[_0x51b9('0x21')]==='Tag'){var _0x3e5800=_0xef923b[_0x51b9('0x3d')]['split'](',')['map'](function(_0x98d22d){return Number(_0x98d22d);});var _0x5f0ac7=parseTagParameter(_0x3e5800);_0x42c812['tags']['clause']['and'](_0x5f0ac7);_0x42c812[_0x51b9('0x3f')][_0x51b9('0x40')]=_0x3e5800;}else if(_0xef923b['field']===_0x51b9('0x41')){_0x42c812[_0x51b9('0x42')][_0x51b9('0x43')][_0x51b9('0x44')](_0x51b9('0x45'),_0xef923b[_0x51b9('0x3d')]);_0x42c812[_0x51b9('0x42')][_0x51b9('0x46')]=!![];}}}return _0x42c812;}function parseModelFields(_0xee3e0e,_0x5e6943){var _0x4ff881=squel[_0x51b9('0x23')]();var _0xa8909e=_(_0xee3e0e)[_0x51b9('0x47')]()[_0x51b9('0x48')](function(_0x158664){return _[_0x51b9('0x49')](_0x5e6943,['name',_0x158664])?_0x158664:undefined;})[_0x51b9('0x4a')]()[_0x51b9('0x3d')]();if(_0xee3e0e[_0x51b9('0x4b')]){_0xa8909e['push'](_0x51b9('0x4b'));}if(_0xee3e0e[_0x51b9('0x41')]){_0xa8909e[_0x51b9('0x1f')](_0x51b9('0x41'));}if(_0xa8909e['length']>0x0){_0xa8909e['forEach'](function(_0x4da29d){if(_0x4da29d===_0x51b9('0x7')){_0x4ff881[_0x51b9('0x44')](_0x51b9('0x4c'),[]['concat'](_0xee3e0e[_0x4da29d]));}else if(_0x4da29d===_0x51b9('0x4b')){var _0x23f86d='%'+_0xee3e0e[_0x4da29d]+'%';_0x4ff881[_0x51b9('0x44')](_0x51b9('0x4d'),_0x23f86d);}else if(_0x4da29d==='User'){_0x4ff881[_0x51b9('0x44')]('uc.UserId\x20=\x20?',_0xee3e0e[_0x4da29d]);}else{_0x4ff881['and']('c.'+_0x4da29d+'\x20=\x20?',_0xee3e0e[_0x4da29d]);}});}return _0x4ff881;}function parseQueryParameters(_0x29d714,_0xc09305){var _0x3cff89=getSqlClauses();return Promise[_0x51b9('0x4e')]()[_0x51b9('0x4f')](function(){return parseModelFields(_0x29d714,_0xc09305);})['then'](function(_0x10d5d3){_0x3cff89[_0x51b9('0x50')][_0x51b9('0x44')](_0x10d5d3);return parseTagParameter(_0x29d714[_0x51b9('0x51')]);})[_0x51b9('0x4f')](function(_0x68581){_0x3cff89[_0x51b9('0x3f')][_0x51b9('0x43')][_0x51b9('0x44')](_0x68581);return parseSearchFilter(_0x29d714[_0x51b9('0x52')]);})[_0x51b9('0x4f')](function(_0x5d7c4e){_0x3cff89[_0x51b9('0x52')]=_0x5d7c4e;return _0x3cff89;});}function checkListsRestrictions(_0x23c9b8,_0xbe7925,_0x145b41){var _0x1b066f=squel[_0x51b9('0x23')]();return Promise['resolve']()[_0x51b9('0x4f')](function(){if(_0xbe7925['search']&&_0x23c9b8[_0x51b9('0x53')]===_0x51b9('0x5')&&!_0x145b41){return _0x23c9b8[_0x51b9('0x54')]({'attributes':['id'],'raw':!![]});}})[_0x51b9('0x4f')](function(_0x3d8a37){if(_0x3d8a37){if(_0x3d8a37[_0x51b9('0x55')]===0x0){_0x1b066f[_0x51b9('0x44')](_0x51b9('0x56'));}else{_0x1b066f['and'](_0x51b9('0x4c'),_['map'](_0x3d8a37,'id'));}}})[_0x51b9('0x4f')](function(){return _0x1b066f;});}function buildContactsQuery(_0x581f08,_0x52a579,_0x2fd703,_0x3089a4,_0x13fe05,_0x4fe7c2){if(_0x52a579){_0x52a579=_0x2fd703[_0x51b9('0x57')];}_0x581f08=addFieldsToQuery(_0x581f08,_0x52a579,_0x3089a4,_0x4fe7c2,!![]);var _0x379db5=squel[_0x51b9('0x58')]();_0x379db5=addFieldsToQuery(_0x379db5,_0x52a579,_0x3089a4,_0x4fe7c2,![]);if(_0x3089a4||_0x4fe7c2){_0x581f08=applyJoinClauses(_0x581f08,!![]);_0x581f08[_0x51b9('0x59')](_0x51b9('0x5a'));if(_0x2fd703[_0x51b9('0x5b')]){_0x379db5['limit'](_0x2fd703[_0x51b9('0x5b')]);}if(_0x2fd703[_0x51b9('0x5c')]){_0x379db5[_0x51b9('0x5c')](_0x2fd703[_0x51b9('0x5c')]);}}else{_0x379db5=applyJoinClauses(_0x379db5,![]);_0x379db5['group'](_0x51b9('0x5d'));if(_0x2fd703['limit']){_0x581f08[_0x51b9('0x5b')](_0x2fd703[_0x51b9('0x5b')]);}if(_0x2fd703[_0x51b9('0x5c')]){_0x581f08[_0x51b9('0x5c')](_0x2fd703[_0x51b9('0x5c')]);}}_0x379db5[_0x51b9('0x5e')](_0x13fe05);if(_0x2fd703['order']){_0x2fd703[_0x51b9('0x5f')]['forEach'](function(_0x118cdf){_0x581f08[_0x51b9('0x5f')]('c.'+_0x118cdf[0x0],_0x118cdf[0x1]===_0x51b9('0x60')?![]:!![]);_0x379db5[_0x51b9('0x5f')](_0x51b9('0x61')+_0x118cdf[0x0],_0x118cdf[0x1]===_0x51b9('0x60')?![]:!![]);});}_0x379db5[_0x51b9('0xa')](_0x581f08,_0x51b9('0x16'));return _0x379db5;}function getFilteredContacts(_0x5a5680){var _0x42182e=[];return db['Tag']['findAll']({'attributes':['id',_0x51b9('0x62'),_0x51b9('0x63')],'raw':!![]})[_0x51b9('0x4f')](function(_0x899850){_0x42182e=_[_0x51b9('0x64')](_0x899850,'id');var _0x87ae49={'type':db[_0x51b9('0x65')]['QueryTypes']['SELECT'],'model':db[_0x51b9('0x66')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x51b9('0x67')][_0x51b9('0x68')](_0x5a5680[_0x51b9('0x69')](),_0x87ae49);})[_0x51b9('0x4f')](function(_0x5e64f2){_0x5e64f2[_0x51b9('0x20')](function(_0xda034e){if(_0xda034e['TagIds']){_0xda034e[_0x51b9('0x6a')]=[];_0xda034e['TagIds'][_0x51b9('0x27')](',')['forEach'](function(_0x1ddea6){_0xda034e[_0x51b9('0x6a')][_0x51b9('0x1f')](_0x42182e[_0x1ddea6]);});}delete _0xda034e[_0x51b9('0x1e')];});return _0x5e64f2;});}function countFilteredContacts(_0x4ebb7d,_0x12e988){var _0x52565a=_0x4ebb7d[_0x51b9('0x6b')]();_0x52565a[_0x51b9('0x21')]('COUNT(*)');_0x52565a=applyJoinClauses(_0x52565a,!![]);_0x4ebb7d[_0x51b9('0x59')]('c.id');var _0x18873a=utils[_0x51b9('0x24')](_0x12e988);if(!_[_0x51b9('0x6c')](_0x18873a)){_0x52565a['where'](_0x51b9('0x6d'),_0x18873a);}var _0x3443f2={'type':db['Sequelize'][_0x51b9('0x6e')][_0x51b9('0x6f')],'raw':!![]};return db[_0x51b9('0x67')][_0x51b9('0x68')](_0x52565a[_0x51b9('0x69')](),_0x3443f2)[_0x51b9('0x4f')](function(_0x5ad60a){return _0x5ad60a[0x0][_0x51b9('0x70')];});}module[_0x51b9('0x71')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};