Built motion from commit f541bb3b.|2.6.14
[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 _0x15aa=['t.id\x20IN\x20?','lodash','squel','../parsers/advancedSearch','../parsers/qs','../../mysqldb','role','agent','ListId','autocomplete','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','lastName','phone','fax','email','CompanyId','updatedAt','deletedAt','TagIds','includes','push','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','replace','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','sqlOperator','conditions','find','name','dateOfBirth','fieldType','datetime','DATE','buildExpression','type','default','text','value','start','end','Tag','and','tags','ids','User','user','clause','uc.UserId\x20=\x20?','skip','keys','some','compact','Contact','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','then','fields','filter','resolve','search','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','map','attributes','group','limit','offset','subqry.id','having','order','DESC','subqry.','findAll','color','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','toString','Tags','split','clone','COUNT(*)','c.id','isEmpty'];(function(_0xc8adab,_0x5ff7dd){var _0x266a25=function(_0x37b277){while(--_0x37b277){_0xc8adab['push'](_0xc8adab['shift']());}};_0x266a25(++_0x5ff7dd);}(_0x15aa,0xdd));var _0xa15a=function(_0x47a1da,_0x517938){_0x47a1da=_0x47a1da-0x0;var _0x2c4480=_0x15aa[_0x47a1da];return _0x2c4480;};'use strict';var _=require(_0xa15a('0x0'));var squel=require(_0xa15a('0x1'));var as=require(_0xa15a('0x2'));var qs=require(_0xa15a('0x3'));var utils=require('../interaction/utils');var db=require(_0xa15a('0x4'))['db'];function skipContactsQuery(_0x3685fa,_0x359d6d){var _0x2495d2=![];if(_0x3685fa[_0xa15a('0x5')]===_0xa15a('0x6')&&!_0x359d6d['search']&&!_0x359d6d[_0xa15a('0x7')]&&_0x359d6d[_0xa15a('0x8')]!==_0xa15a('0x9')){_0x2495d2=!![];}return _0x2495d2;}function getContactsSubquery(){return squel[_0xa15a('0xa')]()[_0xa15a('0xb')](_0xa15a('0xc'),'c')[_0xa15a('0xd')](_0xa15a('0xe'));}function applyJoinClauses(_0x38a456,_0x3f8381){var _0xaf9847=_0x3f8381?'c':_0xa15a('0xf');_0x38a456[_0xa15a('0x10')](_0xa15a('0x11'),'uc',_0xa15a('0x12')+_0xaf9847+_0xa15a('0x13'))[_0xa15a('0x10')](_0xa15a('0x14'),'ct','ct.CmContactId\x20=\x20'+_0xaf9847+'.id')[_0xa15a('0x10')]('tools_tags','t','t.id\x20=\x20ct.TagId');return _0x38a456;}function addFieldsToQuery(_0x5e229f,_0x4f4220,_0x55fecd,_0x3bdd30,_0x320f7c){var _0x5154b5=_0x320f7c?'c':_0xa15a('0xf');if(!_0x4f4220){_0x4f4220=['id','firstName',_0xa15a('0x15'),_0xa15a('0x16'),'mobile',_0xa15a('0x17'),_0xa15a('0x18'),_0xa15a('0x7'),_0xa15a('0x19'),'createdAt',_0xa15a('0x1a'),_0xa15a('0x1b'),_0xa15a('0x1c')];}else if(!_0x4f4220[_0xa15a('0x1d')]('id')){_0x4f4220[_0xa15a('0x1e')]('id');}var _0x5e9ede=_0x55fecd&&_0x320f7c||!_0x55fecd&&!_0x320f7c;if(_0x3bdd30){_0x5e9ede=_0x3bdd30&&_0x320f7c||!_0x3bdd30&&!_0x320f7c;}_0x4f4220[_0xa15a('0x1f')](function(_0x3c35f1){if(_0x3c35f1===_0xa15a('0x1c')){if(_0x5e9ede){_0x5e229f[_0xa15a('0x20')](_0xa15a('0x21'),_0x3c35f1);}else if(_0x55fecd||_0x3bdd30){_0x5e229f[_0xa15a('0x20')](_0x5154b5+'.'+_0x3c35f1);}}else{_0x5e229f[_0xa15a('0x20')](_0x5154b5+'.'+_0x3c35f1);}});return _0x5e229f;}function getSqlClauses(){var _0x4d7b64={'default':squel['expr'](),'fields':squel[_0xa15a('0x22')](),'filter':squel[_0xa15a('0x22')](),'tags':{'clause':squel[_0xa15a('0x22')](),'ids':null},'user':{'clause':squel[_0xa15a('0x22')](),'skip':![]}};return _0x4d7b64;}function parseTagParameter(_0x1dbccb){var _0x55cf9e=squel[_0xa15a('0x22')]();if(_0x1dbccb){var _0x4463c3=utils[_0xa15a('0x23')](_0x1dbccb);_0x4463c3['forEach'](function(_0x1017f4){_0x55cf9e['or']('CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1017f4+',%');});}return _0x55cf9e;}function parseSearchFilter(_0x16bd5b){var _0x551191=squel['expr']();if(_0x16bd5b){var _0xc0c550=_0x16bd5b[_0xa15a('0x24')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0xc0c550['split']('\x20')[_0xa15a('0x25')]>0x1){_0x551191['or'](_0xa15a('0x26'),qs['getFullTextValue'](_0xc0c550,!![]),null);}else{if(qs[_0xa15a('0x27')](_0xc0c550)){_0x551191['or']('c.id\x20LIKE\x20?',_0xc0c550+'%');_0x551191['or'](_0xa15a('0x28'),_0xc0c550+'%');_0x551191['or'](_0xa15a('0x29'),_0xc0c550+'%');_0x551191['or'](_0xa15a('0x2a'),_0xc0c550+'%');}else if(qs['isEmail'](_0xc0c550)){_0x551191['or'](_0xa15a('0x2b'),_0xc0c550+'%');}else{_0x551191['or'](_0xa15a('0x2c'),'%'+_0xc0c550+'%');_0x551191['or'](_0xa15a('0x2d'),'%'+_0xc0c550+'%');_0x551191['or'](_0xa15a('0x2b'),'%'+_0xc0c550+'%');}}}return _0x551191;}function parseAdvancedSearchFilter(_0x3ab987,_0x324d00){var _0x4defd6=getSqlClauses();var _0x5a6346=as['parseSearch'](_0x3ab987);var _0x435aae=_0x5a6346[_0xa15a('0x2e')];for(var _0x5c2d7b=0x0;_0x5c2d7b<_0x5a6346['conditions']['length'];_0x5c2d7b++){var _0x32f343=_0x5a6346[_0xa15a('0x2f')][_0x5c2d7b];var _0x57106c='c';var _0x4b42d8=_[_0xa15a('0x30')](_0x324d00,[_0xa15a('0x31'),_0x32f343[_0xa15a('0x20')]]);if(_0x4b42d8){if(_0x32f343[_0xa15a('0x20')]===_0xa15a('0x32')||_0x4b42d8[_0xa15a('0x33')]===_0xa15a('0x34')){_0x32f343['castTo']=_0xa15a('0x35');}var _0x1f8c50=as[_0xa15a('0x36')](_0x57106c,_0x4b42d8[_0xa15a('0x37')],_0x32f343);_0x4defd6[_0xa15a('0x38')][_0x435aae](_0x1f8c50[_0xa15a('0x39')],_0x1f8c50[_0xa15a('0x3a')][_0xa15a('0x3b')],_0x1f8c50[_0xa15a('0x3a')][_0xa15a('0x3c')]);}else{if(_0x32f343[_0xa15a('0x20')]===_0xa15a('0x3d')){var _0x3b87fc=_0x32f343['value']['split'](',')['map'](function(_0x215bf7){return Number(_0x215bf7);});var _0x40d7c0=parseTagParameter(_0x3b87fc);_0x4defd6['tags']['clause'][_0xa15a('0x3e')](_0x40d7c0);_0x4defd6[_0xa15a('0x3f')][_0xa15a('0x40')]=_0x3b87fc;}else if(_0x32f343[_0xa15a('0x20')]===_0xa15a('0x41')){_0x4defd6[_0xa15a('0x42')][_0xa15a('0x43')][_0xa15a('0x3e')](_0xa15a('0x44'),_0x32f343[_0xa15a('0x3a')]);_0x4defd6[_0xa15a('0x42')][_0xa15a('0x45')]=!![];}}}return _0x4defd6;}function parseModelFields(_0x1fc9ae,_0x2089a2){var _0x3a6c65=squel['expr']();var _0x5c60ca=_(_0x1fc9ae)[_0xa15a('0x46')]()['map'](function(_0x34398d){return _[_0xa15a('0x47')](_0x2089a2,[_0xa15a('0x31'),_0x34398d])?_0x34398d:undefined;})[_0xa15a('0x48')]()['value']();if(_0x1fc9ae[_0xa15a('0x49')]){_0x5c60ca[_0xa15a('0x1e')](_0xa15a('0x49'));}if(_0x1fc9ae[_0xa15a('0x41')]){_0x5c60ca[_0xa15a('0x1e')](_0xa15a('0x41'));}if(_0x5c60ca['length']>0x0){_0x5c60ca[_0xa15a('0x1f')](function(_0x44cc89){if(_0x44cc89===_0xa15a('0x7')){_0x3a6c65[_0xa15a('0x3e')]('c.ListId\x20IN\x20?',[]['concat'](_0x1fc9ae[_0x44cc89]));}else if(_0x44cc89===_0xa15a('0x49')){var _0xf56b39='%'+_0x1fc9ae[_0x44cc89]+'%';_0x3a6c65[_0xa15a('0x3e')](_0xa15a('0x4a'),_0xf56b39);}else if(_0x44cc89==='User'){_0x3a6c65[_0xa15a('0x3e')]('uc.UserId\x20=\x20?',_0x1fc9ae[_0x44cc89]);}else{_0x3a6c65[_0xa15a('0x3e')]('c.'+_0x44cc89+_0xa15a('0x4b'),_0x1fc9ae[_0x44cc89]);}});}return _0x3a6c65;}function parseQueryParameters(_0x9b25fc,_0x4a7588){var _0xb6a4bd=getSqlClauses();return Promise['resolve']()[_0xa15a('0x4c')](function(){return parseModelFields(_0x9b25fc,_0x4a7588);})[_0xa15a('0x4c')](function(_0x655cb2){_0xb6a4bd[_0xa15a('0x4d')]['and'](_0x655cb2);return parseTagParameter(_0x9b25fc['tag']);})['then'](function(_0x43cfb1){_0xb6a4bd[_0xa15a('0x3f')][_0xa15a('0x43')][_0xa15a('0x3e')](_0x43cfb1);return parseSearchFilter(_0x9b25fc[_0xa15a('0x4e')]);})['then'](function(_0x16e159){_0xb6a4bd[_0xa15a('0x4e')]=_0x16e159;return _0xb6a4bd;});}function checkListsRestrictions(_0x395956,_0x316118,_0x39cde8){var _0x20f486=squel[_0xa15a('0x22')]();return Promise[_0xa15a('0x4f')]()['then'](function(){if(_0x316118[_0xa15a('0x50')]&&_0x395956[_0xa15a('0x5')]===_0xa15a('0x6')&&!_0x39cde8){return _0x395956[_0xa15a('0x51')]({'attributes':['id'],'raw':!![]});}})[_0xa15a('0x4c')](function(_0x59379a){if(_0x59379a){if(_0x59379a['length']===0x0){_0x20f486[_0xa15a('0x3e')](_0xa15a('0x52'));}else{_0x20f486[_0xa15a('0x3e')](_0xa15a('0x53'),_[_0xa15a('0x54')](_0x59379a,'id'));}}})[_0xa15a('0x4c')](function(){return _0x20f486;});}function buildContactsQuery(_0xc925eb,_0x1f126f,_0x795582,_0x220b29,_0x3442b2,_0x390ded){if(_0x1f126f){_0x1f126f=_0x795582[_0xa15a('0x55')];}_0xc925eb=addFieldsToQuery(_0xc925eb,_0x1f126f,_0x220b29,_0x390ded,!![]);var _0x58c9b8=squel[_0xa15a('0xa')]();_0x58c9b8=addFieldsToQuery(_0x58c9b8,_0x1f126f,_0x220b29,_0x390ded,![]);if(_0x220b29||_0x390ded){_0xc925eb=applyJoinClauses(_0xc925eb,!![]);_0xc925eb[_0xa15a('0x56')]('c.id');if(_0x795582[_0xa15a('0x57')]){_0x58c9b8[_0xa15a('0x57')](_0x795582[_0xa15a('0x57')]);}if(_0x795582[_0xa15a('0x58')]){_0x58c9b8[_0xa15a('0x58')](_0x795582['offset']);}}else{_0x58c9b8=applyJoinClauses(_0x58c9b8,![]);_0x58c9b8[_0xa15a('0x56')](_0xa15a('0x59'));if(_0x795582['limit']){_0xc925eb[_0xa15a('0x57')](_0x795582[_0xa15a('0x57')]);}if(_0x795582['offset']){_0xc925eb['offset'](_0x795582[_0xa15a('0x58')]);}}_0x58c9b8[_0xa15a('0x5a')](_0x3442b2);if(_0x795582[_0xa15a('0x5b')]){_0x795582[_0xa15a('0x5b')][_0xa15a('0x1f')](function(_0x18774b){_0xc925eb[_0xa15a('0x5b')]('c.'+_0x18774b[0x0],_0x18774b[0x1]===_0xa15a('0x5c')?![]:!![]);_0x58c9b8[_0xa15a('0x5b')](_0xa15a('0x5d')+_0x18774b[0x0],_0x18774b[0x1]==='DESC'?![]:!![]);});}_0x58c9b8[_0xa15a('0xb')](_0xc925eb,_0xa15a('0xf'));return _0x58c9b8;}function getFilteredContacts(_0x144148){var _0x33c1c4=[];return db['Tag'][_0xa15a('0x5e')]({'attributes':['id',_0xa15a('0x31'),_0xa15a('0x5f')],'raw':!![]})[_0xa15a('0x4c')](function(_0x319b74){_0x33c1c4=_['keyBy'](_0x319b74,'id');var _0x4d2105={'type':db[_0xa15a('0x60')][_0xa15a('0x61')][_0xa15a('0x62')],'model':db[_0xa15a('0x63')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xa15a('0x64')][_0xa15a('0x65')](_0x144148[_0xa15a('0x66')](),_0x4d2105);})[_0xa15a('0x4c')](function(_0x2dfddf){_0x2dfddf[_0xa15a('0x1f')](function(_0x8fe2dd){if(_0x8fe2dd[_0xa15a('0x1c')]){_0x8fe2dd[_0xa15a('0x67')]=[];_0x8fe2dd[_0xa15a('0x1c')][_0xa15a('0x68')](',')[_0xa15a('0x1f')](function(_0x4b7b23){_0x8fe2dd['Tags']['push'](_0x33c1c4[_0x4b7b23]);});}delete _0x8fe2dd['TagIds'];});return _0x2dfddf;});}function countFilteredContacts(_0x56fc0f,_0x564df0){var _0x566c44=_0x56fc0f[_0xa15a('0x69')]();_0x566c44['field'](_0xa15a('0x6a'));_0x566c44=applyJoinClauses(_0x566c44,!![]);_0x56fc0f[_0xa15a('0x56')](_0xa15a('0x6b'));var _0x3094c7=utils[_0xa15a('0x23')](_0x564df0);if(!_[_0xa15a('0x6c')](_0x3094c7)){_0x566c44[_0xa15a('0xd')](_0xa15a('0x6d'),_0x3094c7);}var _0x319a0a={'type':db[_0xa15a('0x60')][_0xa15a('0x61')][_0xa15a('0x62')],'raw':!![]};return db[_0xa15a('0x64')][_0xa15a('0x65')](_0x566c44[_0xa15a('0x66')](),_0x319a0a)['then'](function(_0x50c2ad){return _0x50c2ad[0x0][_0xa15a('0x6a')];});}module['exports']={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};