Built motion from commit 97153652.|2.6.26
[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 _0xc607=['user','skip','keys','some','compact','Contact','User','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','uc.UserId\x20=\x20?','\x20=\x20?','then','tag','filter','resolve','search','agent','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','attributes','group','limit','offset','having','order','DESC','findAll','color','keyBy','Sequelize','SELECT','CmContact','sequelize','query','toString','Tags','clone','COUNT(*)','c.id','isEmpty','QueryTypes','exports','lodash','squel','../parsers/advancedSearch','../interaction/utils','../../mysqldb','role','ListId','autocomplete','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','left_join','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','tools_tags','t.id\x20=\x20ct.TagId','subqry','firstName','lastName','phone','mobile','fax','email','CompanyId','createdAt','updatedAt','deletedAt','TagIds','includes','push','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','replace','length','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','parseSearch','sqlOperator','conditions','find','name','dateOfBirth','castTo','DATE','buildExpression','type','default','value','start','end','Tag','split','map','tags','clause','and'];(function(_0xd024ea,_0x273358){var _0x1d27ad=function(_0x15e9d7){while(--_0x15e9d7){_0xd024ea['push'](_0xd024ea['shift']());}};_0x1d27ad(++_0x273358);}(_0xc607,0x170));var _0x7c60=function(_0x3193ed,_0x319aa5){_0x3193ed=_0x3193ed-0x0;var _0x42c0cb=_0xc607[_0x3193ed];return _0x42c0cb;};'use strict';var _=require(_0x7c60('0x0'));var squel=require(_0x7c60('0x1'));var as=require(_0x7c60('0x2'));var qs=require('../parsers/qs');var utils=require(_0x7c60('0x3'));var db=require(_0x7c60('0x4'))['db'];function skipContactsQuery(_0x5002ff,_0x3d472){var _0x48b83d=![];if(_0x5002ff[_0x7c60('0x5')]==='agent'&&!_0x3d472['search']&&!_0x3d472[_0x7c60('0x6')]&&_0x3d472[_0x7c60('0x7')]!==_0x7c60('0x8')){_0x48b83d=!![];}return _0x48b83d;}function getContactsSubquery(){return squel[_0x7c60('0x9')]()[_0x7c60('0xa')](_0x7c60('0xb'),'c')[_0x7c60('0xc')](_0x7c60('0xd'));}function applyJoinClauses(_0x58e234,_0x1364fc){var _0x1677c9=_0x1364fc?'c':'subqry';_0x58e234[_0x7c60('0xe')]('cm_user_has_contacts','uc',_0x7c60('0xf')+_0x1677c9+_0x7c60('0x10'))[_0x7c60('0xe')](_0x7c60('0x11'),'ct','ct.CmContactId\x20=\x20'+_0x1677c9+_0x7c60('0x10'))['left_join'](_0x7c60('0x12'),'t',_0x7c60('0x13'));return _0x58e234;}function addFieldsToQuery(_0x32ec8c,_0x577615,_0x9e9fb1,_0x5df686,_0x11f841){var _0x278b99=_0x11f841?'c':_0x7c60('0x14');if(!_0x577615){_0x577615=['id',_0x7c60('0x15'),_0x7c60('0x16'),_0x7c60('0x17'),_0x7c60('0x18'),_0x7c60('0x19'),_0x7c60('0x1a'),'ListId',_0x7c60('0x1b'),_0x7c60('0x1c'),_0x7c60('0x1d'),_0x7c60('0x1e'),_0x7c60('0x1f')];}else if(!_0x577615[_0x7c60('0x20')]('id')){_0x577615[_0x7c60('0x21')]('id');}var _0x2dd629=_0x9e9fb1&&_0x11f841||!_0x9e9fb1&&!_0x11f841;if(_0x5df686){_0x2dd629=_0x5df686&&_0x11f841||!_0x5df686&&!_0x11f841;}_0x577615[_0x7c60('0x22')](function(_0x33b9f9){if(_0x33b9f9==='TagIds'){if(_0x2dd629){_0x32ec8c[_0x7c60('0x23')](_0x7c60('0x24'),_0x33b9f9);}else if(_0x9e9fb1||_0x5df686){_0x32ec8c[_0x7c60('0x23')](_0x278b99+'.'+_0x33b9f9);}}else{_0x32ec8c[_0x7c60('0x23')](_0x278b99+'.'+_0x33b9f9);}});return _0x32ec8c;}function getSqlClauses(){var _0xf0e72a={'default':squel[_0x7c60('0x25')](),'fields':squel[_0x7c60('0x25')](),'filter':squel['expr'](),'tags':{'clause':squel['expr'](),'ids':null},'user':{'clause':squel[_0x7c60('0x25')](),'skip':![]}};return _0xf0e72a;}function parseTagParameter(_0x3992a0){var _0xcad4ad=squel[_0x7c60('0x25')]();if(_0x3992a0){var _0x4646b5=utils[_0x7c60('0x26')](_0x3992a0);_0x4646b5['forEach'](function(_0x372eb8){_0xcad4ad['or']('CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x372eb8+',%');});}return _0xcad4ad;}function parseSearchFilter(_0x16acf7){var _0x27294e=squel[_0x7c60('0x25')]();if(_0x16acf7){var _0x194603=_0x16acf7['replace']('\x5c','\x5c\x5c')[_0x7c60('0x27')](/'/g,'\x27\x27');if(_0x194603['split']('\x20')[_0x7c60('0x28')]>0x1){_0x27294e['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x7c60('0x29')](_0x194603,!![]),null);}else{if(qs[_0x7c60('0x2a')](_0x194603)){_0x27294e['or'](_0x7c60('0x2b'),_0x194603+'%');_0x27294e['or'](_0x7c60('0x2c'),_0x194603+'%');_0x27294e['or'](_0x7c60('0x2d'),_0x194603+'%');_0x27294e['or'](_0x7c60('0x2e'),_0x194603+'%');}else if(qs[_0x7c60('0x2f')](_0x194603)){_0x27294e['or']('c.email\x20LIKE\x20?',_0x194603+'%');}else{_0x27294e['or']('c.firstName\x20LIKE\x20?','%'+_0x194603+'%');_0x27294e['or']('c.lastName\x20LIKE\x20?','%'+_0x194603+'%');_0x27294e['or']('c.email\x20LIKE\x20?','%'+_0x194603+'%');}}}return _0x27294e;}function parseAdvancedSearchFilter(_0x1bc64b,_0x5cecb0){var _0x1bce5b=getSqlClauses();var _0x191cb0=as[_0x7c60('0x30')](_0x1bc64b);var _0x2974b3=_0x191cb0[_0x7c60('0x31')];for(var _0x9c703a=0x0;_0x9c703a<_0x191cb0['conditions']['length'];_0x9c703a++){var _0x452fba=_0x191cb0[_0x7c60('0x32')][_0x9c703a];var _0x715a4f='c';var _0x3d1e7f=_[_0x7c60('0x33')](_0x5cecb0,[_0x7c60('0x34'),_0x452fba[_0x7c60('0x23')]]);if(_0x3d1e7f){if(_0x452fba[_0x7c60('0x23')]===_0x7c60('0x35')||_0x3d1e7f['fieldType']==='datetime'){_0x452fba[_0x7c60('0x36')]=_0x7c60('0x37');}var _0x4ebbb0=as[_0x7c60('0x38')](_0x715a4f,_0x3d1e7f[_0x7c60('0x39')],_0x452fba);_0x1bce5b[_0x7c60('0x3a')][_0x2974b3](_0x4ebbb0['text'],_0x4ebbb0[_0x7c60('0x3b')][_0x7c60('0x3c')],_0x4ebbb0['value'][_0x7c60('0x3d')]);}else{if(_0x452fba['field']===_0x7c60('0x3e')){var _0x5566b6=_0x452fba[_0x7c60('0x3b')][_0x7c60('0x3f')](',')[_0x7c60('0x40')](function(_0x41d339){return Number(_0x41d339);});var _0x3f487b=parseTagParameter(_0x5566b6);_0x1bce5b[_0x7c60('0x41')][_0x7c60('0x42')][_0x7c60('0x43')](_0x3f487b);_0x1bce5b['tags']['ids']=_0x5566b6;}else if(_0x452fba[_0x7c60('0x23')]==='User'){_0x1bce5b['user']['clause'][_0x7c60('0x43')]('uc.UserId\x20=\x20?',_0x452fba[_0x7c60('0x3b')]);_0x1bce5b[_0x7c60('0x44')][_0x7c60('0x45')]=!![];}}}return _0x1bce5b;}function parseModelFields(_0x439521,_0x471c10){var _0x1b1da5=squel[_0x7c60('0x25')]();var _0x565eb3=_(_0x439521)[_0x7c60('0x46')]()['map'](function(_0x17e8bf){return _[_0x7c60('0x47')](_0x471c10,['name',_0x17e8bf])?_0x17e8bf:undefined;})[_0x7c60('0x48')]()[_0x7c60('0x3b')]();if(_0x439521[_0x7c60('0x49')]){_0x565eb3[_0x7c60('0x21')]('Contact');}if(_0x439521['User']){_0x565eb3[_0x7c60('0x21')](_0x7c60('0x4a'));}if(_0x565eb3[_0x7c60('0x28')]>0x0){_0x565eb3[_0x7c60('0x22')](function(_0x51ba62){if(_0x51ba62==='ListId'){_0x1b1da5[_0x7c60('0x43')]('c.ListId\x20IN\x20?',[]['concat'](_0x439521[_0x51ba62]));}else if(_0x51ba62==='Contact'){var _0x17d490='%'+_0x439521[_0x51ba62]+'%';_0x1b1da5['and'](_0x7c60('0x4b'),_0x17d490);}else if(_0x51ba62===_0x7c60('0x4a')){_0x1b1da5['and'](_0x7c60('0x4c'),_0x439521[_0x51ba62]);}else{_0x1b1da5[_0x7c60('0x43')]('c.'+_0x51ba62+_0x7c60('0x4d'),_0x439521[_0x51ba62]);}});}return _0x1b1da5;}function parseQueryParameters(_0xd5e88,_0x25c0f0){var _0x50b6cb=getSqlClauses();return Promise['resolve']()[_0x7c60('0x4e')](function(){return parseModelFields(_0xd5e88,_0x25c0f0);})[_0x7c60('0x4e')](function(_0x4a2bb1){_0x50b6cb['fields'][_0x7c60('0x43')](_0x4a2bb1);return parseTagParameter(_0xd5e88[_0x7c60('0x4f')]);})[_0x7c60('0x4e')](function(_0x5cbb0a){_0x50b6cb[_0x7c60('0x41')][_0x7c60('0x42')][_0x7c60('0x43')](_0x5cbb0a);return parseSearchFilter(_0xd5e88[_0x7c60('0x50')]);})['then'](function(_0x2147fd){_0x50b6cb['filter']=_0x2147fd;return _0x50b6cb;});}function checkListsRestrictions(_0x3b009f,_0x2a761d,_0x471c3b){var _0xece1f4=squel[_0x7c60('0x25')]();return Promise[_0x7c60('0x51')]()[_0x7c60('0x4e')](function(){if(_0x2a761d[_0x7c60('0x52')]&&_0x3b009f[_0x7c60('0x5')]===_0x7c60('0x53')&&!_0x471c3b){return _0x3b009f['getLists']({'attributes':['id'],'raw':!![]});}})[_0x7c60('0x4e')](function(_0x373e14){if(_0x373e14){if(_0x373e14[_0x7c60('0x28')]===0x0){_0xece1f4[_0x7c60('0x43')](_0x7c60('0x54'));}else{_0xece1f4['and'](_0x7c60('0x55'),_['map'](_0x373e14,'id'));}}})[_0x7c60('0x4e')](function(){return _0xece1f4;});}function buildContactsQuery(_0x1b31dc,_0x3900b1,_0x3ac845,_0x1dc20a,_0xed107,_0x531219){if(_0x3900b1){_0x3900b1=_0x3ac845[_0x7c60('0x56')];}_0x1b31dc=addFieldsToQuery(_0x1b31dc,_0x3900b1,_0x1dc20a,_0x531219,!![]);var _0x7bbe42=squel[_0x7c60('0x9')]();_0x7bbe42=addFieldsToQuery(_0x7bbe42,_0x3900b1,_0x1dc20a,_0x531219,![]);if(_0x1dc20a||_0x531219){_0x1b31dc=applyJoinClauses(_0x1b31dc,!![]);_0x1b31dc[_0x7c60('0x57')]('c.id');if(_0x3ac845[_0x7c60('0x58')]){_0x7bbe42[_0x7c60('0x58')](_0x3ac845[_0x7c60('0x58')]);}if(_0x3ac845[_0x7c60('0x59')]){_0x7bbe42['offset'](_0x3ac845[_0x7c60('0x59')]);}}else{_0x7bbe42=applyJoinClauses(_0x7bbe42,![]);_0x7bbe42['group']('subqry.id');if(_0x3ac845[_0x7c60('0x58')]){_0x1b31dc[_0x7c60('0x58')](_0x3ac845['limit']);}if(_0x3ac845['offset']){_0x1b31dc['offset'](_0x3ac845[_0x7c60('0x59')]);}}_0x7bbe42[_0x7c60('0x5a')](_0xed107);if(_0x3ac845[_0x7c60('0x5b')]){_0x3ac845[_0x7c60('0x5b')][_0x7c60('0x22')](function(_0x4f351b){_0x1b31dc[_0x7c60('0x5b')]('c.'+_0x4f351b[0x0],_0x4f351b[0x1]===_0x7c60('0x5c')?![]:!![]);_0x7bbe42[_0x7c60('0x5b')]('subqry.'+_0x4f351b[0x0],_0x4f351b[0x1]===_0x7c60('0x5c')?![]:!![]);});}_0x7bbe42['from'](_0x1b31dc,_0x7c60('0x14'));return _0x7bbe42;}function getFilteredContacts(_0x861b3b){var _0x41f767=[];return db[_0x7c60('0x3e')][_0x7c60('0x5d')]({'attributes':['id',_0x7c60('0x34'),_0x7c60('0x5e')],'raw':!![]})[_0x7c60('0x4e')](function(_0x21cfe6){_0x41f767=_[_0x7c60('0x5f')](_0x21cfe6,'id');var _0x1758d8={'type':db[_0x7c60('0x60')]['QueryTypes'][_0x7c60('0x61')],'model':db[_0x7c60('0x62')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x7c60('0x63')][_0x7c60('0x64')](_0x861b3b[_0x7c60('0x65')](),_0x1758d8);})['then'](function(_0x12b941){_0x12b941[_0x7c60('0x22')](function(_0x5499db){if(_0x5499db['TagIds']){_0x5499db[_0x7c60('0x66')]=[];_0x5499db['TagIds'][_0x7c60('0x3f')](',')[_0x7c60('0x22')](function(_0xe64a4c){_0x5499db[_0x7c60('0x66')][_0x7c60('0x21')](_0x41f767[_0xe64a4c]);});}delete _0x5499db[_0x7c60('0x1f')];});return _0x12b941;});}function countFilteredContacts(_0x5ca8f2,_0x584586){var _0x13a9e1=_0x5ca8f2[_0x7c60('0x67')]();_0x13a9e1[_0x7c60('0x23')](_0x7c60('0x68'));_0x13a9e1=applyJoinClauses(_0x13a9e1,!![]);_0x5ca8f2[_0x7c60('0x57')](_0x7c60('0x69'));var _0x41eee7=utils[_0x7c60('0x26')](_0x584586);if(!_[_0x7c60('0x6a')](_0x41eee7)){_0x13a9e1[_0x7c60('0xc')]('t.id\x20IN\x20?',_0x41eee7);}var _0x471e11={'type':db[_0x7c60('0x60')][_0x7c60('0x6b')][_0x7c60('0x61')],'raw':!![]};return db['sequelize'][_0x7c60('0x64')](_0x13a9e1[_0x7c60('0x65')](),_0x471e11)[_0x7c60('0x4e')](function(_0x5293fb){return _0x5293fb[0x0][_0x7c60('0x68')];});}module[_0x7c60('0x6c')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};