Built motion from commit 449495f6.|2.6.27
[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 _0xd9bd=['../interaction/utils','../../mysqldb','role','agent','search','ListId','autocomplete','true','from','cm_contacts','c.deletedAt\x20IS\x20NULL','subqry','cm_user_has_contacts','.id','left_join','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','firstName','lastName','mobile','email','CompanyId','createdAt','updatedAt','TagIds','includes','push','forEach','field','expr','getSelectedTags','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','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','conditions','find','name','dateOfBirth','datetime','castTo','DATE','buildExpression','type','default','text','start','value','map','tags','clause','and','ids','user','uc.UserId\x20=\x20?','skip','keys','some','compact','Contact','User','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','attributes','select','group','c.id','limit','offset','subqry.id','order','DESC','subqry.','Tag','findAll','color','keyBy','SELECT','CmContact','sequelize','toString','Tags','clone','COUNT(*)','isEmpty','where','t.id\x20IN\x20?','Sequelize','QueryTypes','query','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0xd9bd,0xd8));var _0xdd9b=function(_0x3a40d6,_0x119aeb){_0x3a40d6=_0x3a40d6-0x0;var _0x5cbed3=_0xd9bd[_0x3a40d6];return _0x5cbed3;};'use strict';var _=require(_0xdd9b('0x0'));var squel=require(_0xdd9b('0x1'));var as=require(_0xdd9b('0x2'));var qs=require(_0xdd9b('0x3'));var utils=require(_0xdd9b('0x4'));var db=require(_0xdd9b('0x5'))['db'];function skipContactsQuery(_0x5d45b8,_0x5efbee){var _0x95124d=![];if(_0x5d45b8[_0xdd9b('0x6')]===_0xdd9b('0x7')&&!_0x5efbee[_0xdd9b('0x8')]&&!_0x5efbee[_0xdd9b('0x9')]&&_0x5efbee[_0xdd9b('0xa')]!==_0xdd9b('0xb')){_0x95124d=!![];}return _0x95124d;}function getContactsSubquery(){return squel['select']()[_0xdd9b('0xc')](_0xdd9b('0xd'),'c')['where'](_0xdd9b('0xe'));}function applyJoinClauses(_0xa0b47f,_0x4e759f){var _0xdc0faf=_0x4e759f?'c':_0xdd9b('0xf');_0xa0b47f['left_join'](_0xdd9b('0x10'),'uc','uc.CmContactId\x20=\x20'+_0xdc0faf+_0xdd9b('0x11'))[_0xdd9b('0x12')](_0xdd9b('0x13'),'ct',_0xdd9b('0x14')+_0xdc0faf+_0xdd9b('0x11'))[_0xdd9b('0x12')](_0xdd9b('0x15'),'t','t.id\x20=\x20ct.TagId');return _0xa0b47f;}function addFieldsToQuery(_0x87a6fa,_0x373121,_0x3c01c0,_0x727828,_0x4ec8a4){var _0x1170d6=_0x4ec8a4?'c':_0xdd9b('0xf');if(!_0x373121){_0x373121=['id',_0xdd9b('0x16'),_0xdd9b('0x17'),'phone',_0xdd9b('0x18'),'fax',_0xdd9b('0x19'),'ListId',_0xdd9b('0x1a'),_0xdd9b('0x1b'),_0xdd9b('0x1c'),'deletedAt',_0xdd9b('0x1d')];}else if(!_0x373121[_0xdd9b('0x1e')]('id')){_0x373121[_0xdd9b('0x1f')]('id');}var _0x1687c5=_0x3c01c0&&_0x4ec8a4||!_0x3c01c0&&!_0x4ec8a4;if(_0x727828){_0x1687c5=_0x727828&&_0x4ec8a4||!_0x727828&&!_0x4ec8a4;}_0x373121[_0xdd9b('0x20')](function(_0x4f9086){if(_0x4f9086==='TagIds'){if(_0x1687c5){_0x87a6fa[_0xdd9b('0x21')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x4f9086);}else if(_0x3c01c0||_0x727828){_0x87a6fa['field'](_0x1170d6+'.'+_0x4f9086);}}else{_0x87a6fa[_0xdd9b('0x21')](_0x1170d6+'.'+_0x4f9086);}});return _0x87a6fa;}function getSqlClauses(){var _0x1a9341={'default':squel[_0xdd9b('0x22')](),'fields':squel[_0xdd9b('0x22')](),'filter':squel[_0xdd9b('0x22')](),'tags':{'clause':squel['expr'](),'ids':null},'user':{'clause':squel[_0xdd9b('0x22')](),'skip':![]}};return _0x1a9341;}function parseTagParameter(_0x450dd3){var _0x13f275=squel[_0xdd9b('0x22')]();if(_0x450dd3){var _0x3b2808=utils[_0xdd9b('0x23')](_0x450dd3);_0x3b2808[_0xdd9b('0x20')](function(_0x59d15d){_0x13f275['or'](_0xdd9b('0x24'),'%,'+_0x59d15d+',%');});}return _0x13f275;}function parseSearchFilter(_0x1a06db){var _0x2c0574=squel['expr']();if(_0x1a06db){var _0x15f236=_0x1a06db[_0xdd9b('0x25')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x15f236[_0xdd9b('0x26')]('\x20')[_0xdd9b('0x27')]>0x1){_0x2c0574['or'](_0xdd9b('0x28'),qs[_0xdd9b('0x29')](_0x15f236,!![]),null);}else{if(qs[_0xdd9b('0x2a')](_0x15f236)){_0x2c0574['or'](_0xdd9b('0x2b'),_0x15f236+'%');_0x2c0574['or'](_0xdd9b('0x2c'),_0x15f236+'%');_0x2c0574['or']('c.mobile\x20LIKE\x20?',_0x15f236+'%');_0x2c0574['or'](_0xdd9b('0x2d'),_0x15f236+'%');}else if(qs[_0xdd9b('0x2e')](_0x15f236)){_0x2c0574['or'](_0xdd9b('0x2f'),_0x15f236+'%');}else{_0x2c0574['or']('c.firstName\x20LIKE\x20?','%'+_0x15f236+'%');_0x2c0574['or'](_0xdd9b('0x30'),'%'+_0x15f236+'%');_0x2c0574['or']('c.email\x20LIKE\x20?','%'+_0x15f236+'%');}}}return _0x2c0574;}function parseAdvancedSearchFilter(_0x377ddb,_0x6761a1){var _0x4a593d=getSqlClauses();var _0x5454f8=as[_0xdd9b('0x31')](_0x377ddb);var _0xdaf3ed=_0x5454f8['sqlOperator'];for(var _0x2963e4=0x0;_0x2963e4<_0x5454f8[_0xdd9b('0x32')][_0xdd9b('0x27')];_0x2963e4++){var _0x35f103=_0x5454f8[_0xdd9b('0x32')][_0x2963e4];var _0x1eff3d='c';var _0x58eecf=_[_0xdd9b('0x33')](_0x6761a1,[_0xdd9b('0x34'),_0x35f103['field']]);if(_0x58eecf){if(_0x35f103[_0xdd9b('0x21')]===_0xdd9b('0x35')||_0x58eecf['fieldType']===_0xdd9b('0x36')){_0x35f103[_0xdd9b('0x37')]=_0xdd9b('0x38');}var _0x53257d=as[_0xdd9b('0x39')](_0x1eff3d,_0x58eecf[_0xdd9b('0x3a')],_0x35f103);_0x4a593d[_0xdd9b('0x3b')][_0xdaf3ed](_0x53257d[_0xdd9b('0x3c')],_0x53257d['value'][_0xdd9b('0x3d')],_0x53257d[_0xdd9b('0x3e')]['end']);}else{if(_0x35f103[_0xdd9b('0x21')]==='Tag'){var _0x339947=_0x35f103[_0xdd9b('0x3e')]['split'](',')[_0xdd9b('0x3f')](function(_0x3f24f7){return Number(_0x3f24f7);});var _0x5a5825=parseTagParameter(_0x339947);_0x4a593d[_0xdd9b('0x40')][_0xdd9b('0x41')][_0xdd9b('0x42')](_0x5a5825);_0x4a593d[_0xdd9b('0x40')][_0xdd9b('0x43')]=_0x339947;}else if(_0x35f103[_0xdd9b('0x21')]==='User'){_0x4a593d[_0xdd9b('0x44')][_0xdd9b('0x41')][_0xdd9b('0x42')](_0xdd9b('0x45'),_0x35f103['value']);_0x4a593d[_0xdd9b('0x44')][_0xdd9b('0x46')]=!![];}}}return _0x4a593d;}function parseModelFields(_0x3073d0,_0x5c704b){var _0x356986=squel['expr']();var _0x11dbdd=_(_0x3073d0)[_0xdd9b('0x47')]()['map'](function(_0x1231eb){return _[_0xdd9b('0x48')](_0x5c704b,[_0xdd9b('0x34'),_0x1231eb])?_0x1231eb:undefined;})[_0xdd9b('0x49')]()['value']();if(_0x3073d0['Contact']){_0x11dbdd[_0xdd9b('0x1f')](_0xdd9b('0x4a'));}if(_0x3073d0[_0xdd9b('0x4b')]){_0x11dbdd['push'](_0xdd9b('0x4b'));}if(_0x11dbdd[_0xdd9b('0x27')]>0x0){_0x11dbdd[_0xdd9b('0x20')](function(_0x26b33d){if(_0x26b33d===_0xdd9b('0x9')){_0x356986['and'](_0xdd9b('0x4c'),[][_0xdd9b('0x4d')](_0x3073d0[_0x26b33d]));}else if(_0x26b33d===_0xdd9b('0x4a')){var _0x2cb69c='%'+_0x3073d0[_0x26b33d]+'%';_0x356986['and'](_0xdd9b('0x4e'),_0x2cb69c);}else if(_0x26b33d==='User'){_0x356986[_0xdd9b('0x42')](_0xdd9b('0x45'),_0x3073d0[_0x26b33d]);}else{_0x356986['and']('c.'+_0x26b33d+_0xdd9b('0x4f'),_0x3073d0[_0x26b33d]);}});}return _0x356986;}function parseQueryParameters(_0x1ffcf6,_0x448a2c){var _0x369527=getSqlClauses();return Promise[_0xdd9b('0x50')]()[_0xdd9b('0x51')](function(){return parseModelFields(_0x1ffcf6,_0x448a2c);})['then'](function(_0x464792){_0x369527['fields']['and'](_0x464792);return parseTagParameter(_0x1ffcf6['tag']);})['then'](function(_0xaced71){_0x369527[_0xdd9b('0x40')]['clause'][_0xdd9b('0x42')](_0xaced71);return parseSearchFilter(_0x1ffcf6['filter']);})['then'](function(_0x4cb8d7){_0x369527['filter']=_0x4cb8d7;return _0x369527;});}function checkListsRestrictions(_0x5d54d7,_0x507411,_0x2a4e69){var _0x18af71=squel['expr']();return Promise[_0xdd9b('0x50')]()[_0xdd9b('0x51')](function(){if(_0x507411['search']&&_0x5d54d7['role']==='agent'&&!_0x2a4e69){return _0x5d54d7['getLists']({'attributes':['id'],'raw':!![]});}})[_0xdd9b('0x51')](function(_0x1dd1e6){if(_0x1dd1e6){if(_0x1dd1e6[_0xdd9b('0x27')]===0x0){_0x18af71[_0xdd9b('0x42')]('c.ListId\x20IS\x20NULL');}else{_0x18af71[_0xdd9b('0x42')]('c.ListId\x20IN\x20?',_[_0xdd9b('0x3f')](_0x1dd1e6,'id'));}}})['then'](function(){return _0x18af71;});}function buildContactsQuery(_0x1e8b8f,_0x187ccd,_0x178e0c,_0x43350b,_0x2b603c,_0x57a442){if(_0x187ccd){_0x187ccd=_0x178e0c[_0xdd9b('0x52')];}_0x1e8b8f=addFieldsToQuery(_0x1e8b8f,_0x187ccd,_0x43350b,_0x57a442,!![]);var _0x2b3f97=squel[_0xdd9b('0x53')]();_0x2b3f97=addFieldsToQuery(_0x2b3f97,_0x187ccd,_0x43350b,_0x57a442,![]);if(_0x43350b||_0x57a442){_0x1e8b8f=applyJoinClauses(_0x1e8b8f,!![]);_0x1e8b8f[_0xdd9b('0x54')](_0xdd9b('0x55'));if(_0x178e0c[_0xdd9b('0x56')]){_0x2b3f97[_0xdd9b('0x56')](_0x178e0c[_0xdd9b('0x56')]);}if(_0x178e0c[_0xdd9b('0x57')]){_0x2b3f97[_0xdd9b('0x57')](_0x178e0c[_0xdd9b('0x57')]);}}else{_0x2b3f97=applyJoinClauses(_0x2b3f97,![]);_0x2b3f97[_0xdd9b('0x54')](_0xdd9b('0x58'));if(_0x178e0c[_0xdd9b('0x56')]){_0x1e8b8f[_0xdd9b('0x56')](_0x178e0c[_0xdd9b('0x56')]);}if(_0x178e0c[_0xdd9b('0x57')]){_0x1e8b8f[_0xdd9b('0x57')](_0x178e0c[_0xdd9b('0x57')]);}}_0x2b3f97['having'](_0x2b603c);if(_0x178e0c['order']){_0x178e0c[_0xdd9b('0x59')]['forEach'](function(_0x5c75f8){_0x1e8b8f['order']('c.'+_0x5c75f8[0x0],_0x5c75f8[0x1]===_0xdd9b('0x5a')?![]:!![]);_0x2b3f97[_0xdd9b('0x59')](_0xdd9b('0x5b')+_0x5c75f8[0x0],_0x5c75f8[0x1]===_0xdd9b('0x5a')?![]:!![]);});}_0x2b3f97['from'](_0x1e8b8f,'subqry');return _0x2b3f97;}function getFilteredContacts(_0x5b0ae7){var _0x45fcdd=[];return db[_0xdd9b('0x5c')][_0xdd9b('0x5d')]({'attributes':['id',_0xdd9b('0x34'),_0xdd9b('0x5e')],'raw':!![]})['then'](function(_0x3c40cb){_0x45fcdd=_[_0xdd9b('0x5f')](_0x3c40cb,'id');var _0x2a7f85={'type':db['Sequelize']['QueryTypes'][_0xdd9b('0x60')],'model':db[_0xdd9b('0x61')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xdd9b('0x62')]['query'](_0x5b0ae7[_0xdd9b('0x63')](),_0x2a7f85);})[_0xdd9b('0x51')](function(_0xda7298){_0xda7298[_0xdd9b('0x20')](function(_0x3068d8){if(_0x3068d8[_0xdd9b('0x1d')]){_0x3068d8[_0xdd9b('0x64')]=[];_0x3068d8[_0xdd9b('0x1d')][_0xdd9b('0x26')](',')[_0xdd9b('0x20')](function(_0x2eb5e8){_0x3068d8[_0xdd9b('0x64')][_0xdd9b('0x1f')](_0x45fcdd[_0x2eb5e8]);});}delete _0x3068d8[_0xdd9b('0x1d')];});return _0xda7298;});}function countFilteredContacts(_0x188d22,_0x2efb42){var _0x4c8870=_0x188d22[_0xdd9b('0x65')]();_0x4c8870[_0xdd9b('0x21')](_0xdd9b('0x66'));_0x4c8870=applyJoinClauses(_0x4c8870,!![]);_0x188d22[_0xdd9b('0x54')](_0xdd9b('0x55'));var _0x3dbc16=utils['getSelectedTags'](_0x2efb42);if(!_[_0xdd9b('0x67')](_0x3dbc16)){_0x4c8870[_0xdd9b('0x68')](_0xdd9b('0x69'),_0x3dbc16);}var _0x5d819d={'type':db[_0xdd9b('0x6a')][_0xdd9b('0x6b')][_0xdd9b('0x60')],'raw':!![]};return db[_0xdd9b('0x62')][_0xdd9b('0x6c')](_0x4c8870[_0xdd9b('0x63')](),_0x5d819d)[_0xdd9b('0x51')](function(_0x59772a){return _0x59772a[0x0][_0xdd9b('0x66')];});}module[_0xdd9b('0x6d')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};