88f4e630034f40a6cf11b9640744831f81ee78a9
[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 _0x89d9=['fax','email','CompanyId','createdAt','updatedAt','TagIds','includes','push','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','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.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','sqlOperator','conditions','find','dateOfBirth','fieldType','datetime','DATE','buildExpression','type','default','text','start','value','end','split','map','tags','clause','and','User','user','uc.UserId\x20=\x20?','name','Contact','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','fields','tag','filter','role','getLists','c.ListId\x20IS\x20NULL','attributes','group','c.id','limit','offset','order','DESC','subqry.','from','Tag','findAll','color','keyBy','Sequelize','QueryTypes','CmContact','toString','Tags','clone','COUNT(*)','t.id\x20IN\x20?','SELECT','sequelize','query','exports','lodash','../parsers/advancedSearch','../parsers/qs','../interaction/utils','agent','search','ListId','autocomplete','true','select','cm_contacts','where','c.deletedAt\x20IS\x20NULL','left_join','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','subqry','lastName','phone','mobile'];(function(_0x6942e0,_0x131e6d){var _0xb86490=function(_0x2fd5d7){while(--_0x2fd5d7){_0x6942e0['push'](_0x6942e0['shift']());}};_0xb86490(++_0x131e6d);}(_0x89d9,0x131));var _0x989d=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x89d9[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x989d('0x0'));var squel=require('squel');var as=require(_0x989d('0x1'));var qs=require(_0x989d('0x2'));var utils=require(_0x989d('0x3'));var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x5c888a,_0x365f5b){var _0xf4e303=![];if(_0x5c888a['role']===_0x989d('0x4')&&!_0x365f5b[_0x989d('0x5')]&&!_0x365f5b[_0x989d('0x6')]&&_0x365f5b[_0x989d('0x7')]!==_0x989d('0x8')){_0xf4e303=!![];}return _0xf4e303;}function getContactsSubquery(){return squel[_0x989d('0x9')]()['from'](_0x989d('0xa'),'c')[_0x989d('0xb')](_0x989d('0xc'));}function applyJoinClauses(_0x309476,_0x2b7a88){var _0x5b7ded=_0x2b7a88?'c':'subqry';_0x309476[_0x989d('0xd')]('cm_user_has_contacts','uc','uc.CmContactId\x20=\x20'+_0x5b7ded+_0x989d('0xe'))[_0x989d('0xd')](_0x989d('0xf'),'ct',_0x989d('0x10')+_0x5b7ded+_0x989d('0xe'))[_0x989d('0xd')](_0x989d('0x11'),'t','t.id\x20=\x20ct.TagId');return _0x309476;}function addFieldsToQuery(_0x4b7edd,_0x5ca83a,_0x19e815,_0x4e38b5,_0x55f10d){var _0x301f4c=_0x55f10d?'c':_0x989d('0x12');if(!_0x5ca83a){_0x5ca83a=['id','firstName',_0x989d('0x13'),_0x989d('0x14'),_0x989d('0x15'),_0x989d('0x16'),_0x989d('0x17'),_0x989d('0x6'),_0x989d('0x18'),_0x989d('0x19'),_0x989d('0x1a'),'deletedAt',_0x989d('0x1b')];}else if(!_0x5ca83a[_0x989d('0x1c')]('id')){_0x5ca83a[_0x989d('0x1d')]('id');}var _0x4b422b=_0x19e815&&_0x55f10d||!_0x19e815&&!_0x55f10d;if(_0x4e38b5){_0x4b422b=_0x4e38b5&&_0x55f10d||!_0x4e38b5&&!_0x55f10d;}_0x5ca83a[_0x989d('0x1e')](function(_0x391421){if(_0x391421===_0x989d('0x1b')){if(_0x4b422b){_0x4b7edd[_0x989d('0x1f')](_0x989d('0x20'),_0x391421);}else if(_0x19e815||_0x4e38b5){_0x4b7edd[_0x989d('0x1f')](_0x301f4c+'.'+_0x391421);}}else{_0x4b7edd[_0x989d('0x1f')](_0x301f4c+'.'+_0x391421);}});return _0x4b7edd;}function getSqlClauses(){var _0x1d0b31={'default':squel[_0x989d('0x21')](),'fields':squel[_0x989d('0x21')](),'filter':squel[_0x989d('0x21')](),'tags':{'clause':squel['expr'](),'ids':null},'user':{'clause':squel[_0x989d('0x21')](),'skip':![]}};return _0x1d0b31;}function parseTagParameter(_0x35c9d1){var _0x5e502f=squel[_0x989d('0x21')]();if(_0x35c9d1){var _0x19d245=utils[_0x989d('0x22')](_0x35c9d1);_0x19d245[_0x989d('0x1e')](function(_0x3a7301){_0x5e502f['or'](_0x989d('0x23'),'%,'+_0x3a7301+',%');});}return _0x5e502f;}function parseSearchFilter(_0x56e5c5){var _0x75b343=squel[_0x989d('0x21')]();if(_0x56e5c5){var _0x1a00b3=_0x56e5c5[_0x989d('0x24')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x1a00b3['split']('\x20')[_0x989d('0x25')]>0x1){_0x75b343['or'](_0x989d('0x26'),qs[_0x989d('0x27')](_0x1a00b3,!![]),null);}else{if(qs[_0x989d('0x28')](_0x1a00b3)){_0x75b343['or'](_0x989d('0x29'),_0x1a00b3+'%');_0x75b343['or'](_0x989d('0x2a'),_0x1a00b3+'%');_0x75b343['or'](_0x989d('0x2b'),_0x1a00b3+'%');_0x75b343['or'](_0x989d('0x2c'),_0x1a00b3+'%');}else if(qs[_0x989d('0x2d')](_0x1a00b3)){_0x75b343['or'](_0x989d('0x2e'),_0x1a00b3+'%');}else{_0x75b343['or'](_0x989d('0x2f'),'%'+_0x1a00b3+'%');_0x75b343['or']('c.lastName\x20LIKE\x20?','%'+_0x1a00b3+'%');_0x75b343['or'](_0x989d('0x2e'),'%'+_0x1a00b3+'%');}}}return _0x75b343;}function parseAdvancedSearchFilter(_0xbafd0d,_0x41a202){var _0x3d0ae6=getSqlClauses();var _0x24e1c2=as['parseSearch'](_0xbafd0d);var _0x1bc75f=_0x24e1c2[_0x989d('0x30')];for(var _0x5f02b5=0x0;_0x5f02b5<_0x24e1c2[_0x989d('0x31')][_0x989d('0x25')];_0x5f02b5++){var _0x34c8b3=_0x24e1c2[_0x989d('0x31')][_0x5f02b5];var _0x8c34f8='c';var _0x403d5e=_[_0x989d('0x32')](_0x41a202,['name',_0x34c8b3[_0x989d('0x1f')]]);if(_0x403d5e){if(_0x34c8b3[_0x989d('0x1f')]===_0x989d('0x33')||_0x403d5e[_0x989d('0x34')]===_0x989d('0x35')){_0x34c8b3['castTo']=_0x989d('0x36');}var _0x2781bf=as[_0x989d('0x37')](_0x8c34f8,_0x403d5e[_0x989d('0x38')],_0x34c8b3);_0x3d0ae6[_0x989d('0x39')][_0x1bc75f](_0x2781bf[_0x989d('0x3a')],_0x2781bf['value'][_0x989d('0x3b')],_0x2781bf[_0x989d('0x3c')][_0x989d('0x3d')]);}else{if(_0x34c8b3[_0x989d('0x1f')]==='Tag'){var _0x2b954f=_0x34c8b3[_0x989d('0x3c')][_0x989d('0x3e')](',')[_0x989d('0x3f')](function(_0x5e9e66){return Number(_0x5e9e66);});var _0x21fc74=parseTagParameter(_0x2b954f);_0x3d0ae6[_0x989d('0x40')][_0x989d('0x41')][_0x989d('0x42')](_0x21fc74);_0x3d0ae6[_0x989d('0x40')]['ids']=_0x2b954f;}else if(_0x34c8b3['field']===_0x989d('0x43')){_0x3d0ae6[_0x989d('0x44')]['clause'][_0x989d('0x42')](_0x989d('0x45'),_0x34c8b3[_0x989d('0x3c')]);_0x3d0ae6[_0x989d('0x44')]['skip']=!![];}}}return _0x3d0ae6;}function parseModelFields(_0x400703,_0x3dc18b){var _0x4a8f47=squel[_0x989d('0x21')]();var _0x38d5d4=_(_0x400703)['keys']()[_0x989d('0x3f')](function(_0x40198b){return _['some'](_0x3dc18b,[_0x989d('0x46'),_0x40198b])?_0x40198b:undefined;})['compact']()[_0x989d('0x3c')]();if(_0x400703[_0x989d('0x47')]){_0x38d5d4[_0x989d('0x1d')](_0x989d('0x47'));}if(_0x400703[_0x989d('0x43')]){_0x38d5d4['push'](_0x989d('0x43'));}if(_0x38d5d4[_0x989d('0x25')]>0x0){_0x38d5d4[_0x989d('0x1e')](function(_0x10c859){if(_0x10c859===_0x989d('0x6')){_0x4a8f47[_0x989d('0x42')](_0x989d('0x48'),[][_0x989d('0x49')](_0x400703[_0x10c859]));}else if(_0x10c859===_0x989d('0x47')){var _0x23ac0e='%'+_0x400703[_0x10c859]+'%';_0x4a8f47['and'](_0x989d('0x4a'),_0x23ac0e);}else if(_0x10c859==='User'){_0x4a8f47[_0x989d('0x42')](_0x989d('0x45'),_0x400703[_0x10c859]);}else{_0x4a8f47[_0x989d('0x42')]('c.'+_0x10c859+_0x989d('0x4b'),_0x400703[_0x10c859]);}});}return _0x4a8f47;}function parseQueryParameters(_0x276d27,_0x3793f7){var _0x200199=getSqlClauses();return Promise[_0x989d('0x4c')]()[_0x989d('0x4d')](function(){return parseModelFields(_0x276d27,_0x3793f7);})[_0x989d('0x4d')](function(_0x5c82f3){_0x200199[_0x989d('0x4e')]['and'](_0x5c82f3);return parseTagParameter(_0x276d27[_0x989d('0x4f')]);})[_0x989d('0x4d')](function(_0x95a836){_0x200199[_0x989d('0x40')][_0x989d('0x41')][_0x989d('0x42')](_0x95a836);return parseSearchFilter(_0x276d27[_0x989d('0x50')]);})['then'](function(_0x54d722){_0x200199[_0x989d('0x50')]=_0x54d722;return _0x200199;});}function checkListsRestrictions(_0x57fd65,_0x2cda4c,_0x440810){var _0x246493=squel[_0x989d('0x21')]();return Promise[_0x989d('0x4c')]()[_0x989d('0x4d')](function(){if(_0x2cda4c[_0x989d('0x5')]&&_0x57fd65[_0x989d('0x51')]===_0x989d('0x4')&&!_0x440810){return _0x57fd65[_0x989d('0x52')]({'attributes':['id'],'raw':!![]});}})[_0x989d('0x4d')](function(_0x2db731){if(_0x2db731){if(_0x2db731['length']===0x0){_0x246493[_0x989d('0x42')](_0x989d('0x53'));}else{_0x246493[_0x989d('0x42')](_0x989d('0x48'),_[_0x989d('0x3f')](_0x2db731,'id'));}}})[_0x989d('0x4d')](function(){return _0x246493;});}function buildContactsQuery(_0x3f1fbe,_0x37a90d,_0x163ebc,_0x466bfb,_0x263331,_0x30f33c){if(_0x37a90d){_0x37a90d=_0x163ebc[_0x989d('0x54')];}_0x3f1fbe=addFieldsToQuery(_0x3f1fbe,_0x37a90d,_0x466bfb,_0x30f33c,!![]);var _0x28e81d=squel['select']();_0x28e81d=addFieldsToQuery(_0x28e81d,_0x37a90d,_0x466bfb,_0x30f33c,![]);if(_0x466bfb||_0x30f33c){_0x3f1fbe=applyJoinClauses(_0x3f1fbe,!![]);_0x3f1fbe[_0x989d('0x55')](_0x989d('0x56'));if(_0x163ebc[_0x989d('0x57')]){_0x28e81d[_0x989d('0x57')](_0x163ebc[_0x989d('0x57')]);}if(_0x163ebc[_0x989d('0x58')]){_0x28e81d[_0x989d('0x58')](_0x163ebc[_0x989d('0x58')]);}}else{_0x28e81d=applyJoinClauses(_0x28e81d,![]);_0x28e81d[_0x989d('0x55')]('subqry.id');if(_0x163ebc['limit']){_0x3f1fbe['limit'](_0x163ebc[_0x989d('0x57')]);}if(_0x163ebc[_0x989d('0x58')]){_0x3f1fbe[_0x989d('0x58')](_0x163ebc[_0x989d('0x58')]);}}_0x28e81d['having'](_0x263331);if(_0x163ebc[_0x989d('0x59')]){_0x163ebc[_0x989d('0x59')][_0x989d('0x1e')](function(_0x3fcab7){_0x3f1fbe[_0x989d('0x59')]('c.'+_0x3fcab7[0x0],_0x3fcab7[0x1]===_0x989d('0x5a')?![]:!![]);_0x28e81d[_0x989d('0x59')](_0x989d('0x5b')+_0x3fcab7[0x0],_0x3fcab7[0x1]===_0x989d('0x5a')?![]:!![]);});}_0x28e81d[_0x989d('0x5c')](_0x3f1fbe,_0x989d('0x12'));return _0x28e81d;}function getFilteredContacts(_0x5cd114){var _0x5abc4c=[];return db[_0x989d('0x5d')][_0x989d('0x5e')]({'attributes':['id',_0x989d('0x46'),_0x989d('0x5f')],'raw':!![]})[_0x989d('0x4d')](function(_0x3c4c4b){_0x5abc4c=_[_0x989d('0x60')](_0x3c4c4b,'id');var _0x2146b9={'type':db[_0x989d('0x61')][_0x989d('0x62')]['SELECT'],'model':db[_0x989d('0x63')],'mapToModel':!![],'nest':!![],'raw':!![]};return db['sequelize']['query'](_0x5cd114[_0x989d('0x64')](),_0x2146b9);})['then'](function(_0x12900c){_0x12900c[_0x989d('0x1e')](function(_0x123293){if(_0x123293['TagIds']){_0x123293[_0x989d('0x65')]=[];_0x123293['TagIds'][_0x989d('0x3e')](',')[_0x989d('0x1e')](function(_0x3ec0df){_0x123293[_0x989d('0x65')][_0x989d('0x1d')](_0x5abc4c[_0x3ec0df]);});}delete _0x123293[_0x989d('0x1b')];});return _0x12900c;});}function countFilteredContacts(_0x55a545,_0x18664e){var _0xa19636=_0x55a545[_0x989d('0x66')]();_0xa19636['field'](_0x989d('0x67'));_0xa19636=applyJoinClauses(_0xa19636,!![]);_0x55a545[_0x989d('0x55')](_0x989d('0x56'));var _0xd66fcb=utils[_0x989d('0x22')](_0x18664e);if(!_['isEmpty'](_0xd66fcb)){_0xa19636[_0x989d('0xb')](_0x989d('0x68'),_0xd66fcb);}var _0x3e0f8b={'type':db['Sequelize'][_0x989d('0x62')][_0x989d('0x69')],'raw':!![]};return db[_0x989d('0x6a')][_0x989d('0x6b')](_0xa19636[_0x989d('0x64')](),_0x3e0f8b)[_0x989d('0x4d')](function(_0x46b357){return _0x46b357[0x0][_0x989d('0x67')];});}module[_0x989d('0x6c')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};