809546d65a0a21a483b6d1b670f7279e38e47dd0
[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 _0x3d82=['Contact','and','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','uc.UserId\x20=\x20?','resolve','then','fields','tag','filter','search','agent','getLists','c.ListId\x20IS\x20NULL','attributes','limit','offset','having','order','subqry.','DESC','findAll','color','keyBy','Sequelize','QueryTypes','CmContact','sequelize','toString','Tags','COUNT(*)','group','c.id','isEmpty','where','t.id\x20IN\x20?','SELECT','query','exports','lodash','squel','../parsers/advancedSearch','../interaction/utils','role','ListId','autocomplete','true','select','from','c.deletedAt\x20IS\x20NULL','subqry','cm_user_has_contacts','uc.CmContactId\x20=\x20','cm_contact_has_tags','firstName','lastName','phone','fax','CompanyId','createdAt','updatedAt','deletedAt','TagIds','push','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','parseSearch','sqlOperator','conditions','length','find','name','dateOfBirth','fieldType','datetime','DATE','default','text','start','end','Tag','value','map','tags','clause','ids','User','user','keys','some'];(function(_0x34021d,_0x753aa6){var _0x16597b=function(_0x2d040a){while(--_0x2d040a){_0x34021d['push'](_0x34021d['shift']());}};_0x16597b(++_0x753aa6);}(_0x3d82,0x8f));var _0x23d8=function(_0x707d21,_0x28d345){_0x707d21=_0x707d21-0x0;var _0x1bae5f=_0x3d82[_0x707d21];return _0x1bae5f;};'use strict';var _=require(_0x23d8('0x0'));var squel=require(_0x23d8('0x1'));var as=require(_0x23d8('0x2'));var qs=require('../parsers/qs');var utils=require(_0x23d8('0x3'));var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x47fc28,_0x201c26){var _0x5f18d1=![];if(_0x47fc28[_0x23d8('0x4')]==='agent'&&!_0x201c26['search']&&!_0x201c26[_0x23d8('0x5')]&&_0x201c26[_0x23d8('0x6')]!==_0x23d8('0x7')){_0x5f18d1=!![];}return _0x5f18d1;}function getContactsSubquery(){return squel[_0x23d8('0x8')]()[_0x23d8('0x9')]('cm_contacts','c')['where'](_0x23d8('0xa'));}function applyJoinClauses(_0x140f50,_0x5cce2f){var _0x3c2f1b=_0x5cce2f?'c':_0x23d8('0xb');_0x140f50['left_join'](_0x23d8('0xc'),'uc',_0x23d8('0xd')+_0x3c2f1b+'.id')['left_join'](_0x23d8('0xe'),'ct','ct.CmContactId\x20=\x20'+_0x3c2f1b+'.id')['left_join']('tools_tags','t','t.id\x20=\x20ct.TagId');return _0x140f50;}function addFieldsToQuery(_0x7c790b,_0x466a8e,_0x305814,_0x39f894,_0x40243e){var _0x243e65=_0x40243e?'c':_0x23d8('0xb');if(!_0x466a8e){_0x466a8e=['id',_0x23d8('0xf'),_0x23d8('0x10'),_0x23d8('0x11'),'mobile',_0x23d8('0x12'),'email',_0x23d8('0x5'),_0x23d8('0x13'),_0x23d8('0x14'),_0x23d8('0x15'),_0x23d8('0x16'),_0x23d8('0x17')];}else if(!_0x466a8e['includes']('id')){_0x466a8e[_0x23d8('0x18')]('id');}var _0x4e629b=_0x305814&&_0x40243e||!_0x305814&&!_0x40243e;if(_0x39f894){_0x4e629b=_0x39f894&&_0x40243e||!_0x39f894&&!_0x40243e;}_0x466a8e[_0x23d8('0x19')](function(_0x477746){if(_0x477746===_0x23d8('0x17')){if(_0x4e629b){_0x7c790b[_0x23d8('0x1a')](_0x23d8('0x1b'),_0x477746);}else if(_0x305814||_0x39f894){_0x7c790b['field'](_0x243e65+'.'+_0x477746);}}else{_0x7c790b[_0x23d8('0x1a')](_0x243e65+'.'+_0x477746);}});return _0x7c790b;}function getSqlClauses(){var _0x45b8f8={'default':squel[_0x23d8('0x1c')](),'fields':squel[_0x23d8('0x1c')](),'filter':squel[_0x23d8('0x1c')](),'tags':{'clause':squel[_0x23d8('0x1c')](),'ids':null},'user':{'clause':squel[_0x23d8('0x1c')](),'skip':![]}};return _0x45b8f8;}function parseTagParameter(_0x1081c2){var _0x3b712c=squel[_0x23d8('0x1c')]();if(_0x1081c2){var _0x23570a=utils[_0x23d8('0x1d')](_0x1081c2);_0x23570a['forEach'](function(_0x49b9f1){_0x3b712c['or'](_0x23d8('0x1e'),'%,'+_0x49b9f1+',%');});}return _0x3b712c;}function parseSearchFilter(_0x2f0a5e){var _0x2c20fd=squel[_0x23d8('0x1c')]();if(_0x2f0a5e){var _0x411806=_0x2f0a5e[_0x23d8('0x1f')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x411806[_0x23d8('0x20')]('\x20')['length']>0x1){_0x2c20fd['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x411806,!![]),null);}else{if(qs[_0x23d8('0x21')](_0x411806)){_0x2c20fd['or'](_0x23d8('0x22'),_0x411806+'%');_0x2c20fd['or'](_0x23d8('0x23'),_0x411806+'%');_0x2c20fd['or'](_0x23d8('0x24'),_0x411806+'%');_0x2c20fd['or'](_0x23d8('0x25'),_0x411806+'%');}else if(qs[_0x23d8('0x26')](_0x411806)){_0x2c20fd['or']('c.email\x20LIKE\x20?',_0x411806+'%');}else{_0x2c20fd['or']('c.firstName\x20LIKE\x20?','%'+_0x411806+'%');_0x2c20fd['or']('c.lastName\x20LIKE\x20?','%'+_0x411806+'%');_0x2c20fd['or']('c.email\x20LIKE\x20?','%'+_0x411806+'%');}}}return _0x2c20fd;}function parseAdvancedSearchFilter(_0xc41637,_0x3a9a03){var _0x8a6f70=getSqlClauses();var _0x5b54e1=as[_0x23d8('0x27')](_0xc41637);var _0x231278=_0x5b54e1[_0x23d8('0x28')];for(var _0x10c9c5=0x0;_0x10c9c5<_0x5b54e1[_0x23d8('0x29')][_0x23d8('0x2a')];_0x10c9c5++){var _0x170cc1=_0x5b54e1[_0x23d8('0x29')][_0x10c9c5];var _0x3461c0='c';var _0x4317e5=_[_0x23d8('0x2b')](_0x3a9a03,[_0x23d8('0x2c'),_0x170cc1[_0x23d8('0x1a')]]);if(_0x4317e5){if(_0x170cc1[_0x23d8('0x1a')]===_0x23d8('0x2d')||_0x4317e5[_0x23d8('0x2e')]===_0x23d8('0x2f')){_0x170cc1['castTo']=_0x23d8('0x30');}var _0xac5cce=as['buildExpression'](_0x3461c0,_0x4317e5['type'],_0x170cc1);_0x8a6f70[_0x23d8('0x31')][_0x231278](_0xac5cce[_0x23d8('0x32')],_0xac5cce['value'][_0x23d8('0x33')],_0xac5cce['value'][_0x23d8('0x34')]);}else{if(_0x170cc1[_0x23d8('0x1a')]===_0x23d8('0x35')){var _0x1f6a0d=_0x170cc1[_0x23d8('0x36')]['split'](',')[_0x23d8('0x37')](function(_0x1a323d){return Number(_0x1a323d);});var _0x3ed64a=parseTagParameter(_0x1f6a0d);_0x8a6f70[_0x23d8('0x38')][_0x23d8('0x39')]['and'](_0x3ed64a);_0x8a6f70[_0x23d8('0x38')][_0x23d8('0x3a')]=_0x1f6a0d;}else if(_0x170cc1['field']===_0x23d8('0x3b')){_0x8a6f70['user'][_0x23d8('0x39')]['and']('uc.UserId\x20=\x20?',_0x170cc1[_0x23d8('0x36')]);_0x8a6f70[_0x23d8('0x3c')]['skip']=!![];}}}return _0x8a6f70;}function parseModelFields(_0x36e15b,_0x177dc6){var _0x300e75=squel['expr']();var _0x660800=_(_0x36e15b)[_0x23d8('0x3d')]()[_0x23d8('0x37')](function(_0x48a88d){return _[_0x23d8('0x3e')](_0x177dc6,[_0x23d8('0x2c'),_0x48a88d])?_0x48a88d:undefined;})['compact']()[_0x23d8('0x36')]();if(_0x36e15b[_0x23d8('0x3f')]){_0x660800[_0x23d8('0x18')](_0x23d8('0x3f'));}if(_0x36e15b[_0x23d8('0x3b')]){_0x660800['push'](_0x23d8('0x3b'));}if(_0x660800[_0x23d8('0x2a')]>0x0){_0x660800[_0x23d8('0x19')](function(_0x2264f2){if(_0x2264f2==='ListId'){_0x300e75[_0x23d8('0x40')](_0x23d8('0x41'),[][_0x23d8('0x42')](_0x36e15b[_0x2264f2]));}else if(_0x2264f2===_0x23d8('0x3f')){var _0x13f5e1='%'+_0x36e15b[_0x2264f2]+'%';_0x300e75[_0x23d8('0x40')](_0x23d8('0x43'),_0x13f5e1);}else if(_0x2264f2===_0x23d8('0x3b')){_0x300e75[_0x23d8('0x40')](_0x23d8('0x44'),_0x36e15b[_0x2264f2]);}else{_0x300e75[_0x23d8('0x40')]('c.'+_0x2264f2+'\x20=\x20?',_0x36e15b[_0x2264f2]);}});}return _0x300e75;}function parseQueryParameters(_0x140ad6,_0x50e0bf){var _0x437528=getSqlClauses();return Promise[_0x23d8('0x45')]()[_0x23d8('0x46')](function(){return parseModelFields(_0x140ad6,_0x50e0bf);})[_0x23d8('0x46')](function(_0x2d8652){_0x437528[_0x23d8('0x47')][_0x23d8('0x40')](_0x2d8652);return parseTagParameter(_0x140ad6[_0x23d8('0x48')]);})[_0x23d8('0x46')](function(_0x9901b1){_0x437528['tags']['clause']['and'](_0x9901b1);return parseSearchFilter(_0x140ad6[_0x23d8('0x49')]);})[_0x23d8('0x46')](function(_0x2c61fa){_0x437528[_0x23d8('0x49')]=_0x2c61fa;return _0x437528;});}function checkListsRestrictions(_0x1e3302,_0x27d177,_0x50ea6a){var _0x50cbd4=squel[_0x23d8('0x1c')]();return Promise['resolve']()[_0x23d8('0x46')](function(){if(_0x27d177[_0x23d8('0x4a')]&&_0x1e3302[_0x23d8('0x4')]===_0x23d8('0x4b')&&!_0x50ea6a){return _0x1e3302[_0x23d8('0x4c')]({'attributes':['id'],'raw':!![]});}})[_0x23d8('0x46')](function(_0x586bda){if(_0x586bda){if(_0x586bda[_0x23d8('0x2a')]===0x0){_0x50cbd4[_0x23d8('0x40')](_0x23d8('0x4d'));}else{_0x50cbd4[_0x23d8('0x40')](_0x23d8('0x41'),_[_0x23d8('0x37')](_0x586bda,'id'));}}})['then'](function(){return _0x50cbd4;});}function buildContactsQuery(_0x5700f1,_0x1791f2,_0x138f02,_0x42493a,_0x2c72e8,_0x53f3ea){if(_0x1791f2){_0x1791f2=_0x138f02[_0x23d8('0x4e')];}_0x5700f1=addFieldsToQuery(_0x5700f1,_0x1791f2,_0x42493a,_0x53f3ea,!![]);var _0x5b661c=squel[_0x23d8('0x8')]();_0x5b661c=addFieldsToQuery(_0x5b661c,_0x1791f2,_0x42493a,_0x53f3ea,![]);if(_0x42493a||_0x53f3ea){_0x5700f1=applyJoinClauses(_0x5700f1,!![]);_0x5700f1['group']('c.id');if(_0x138f02[_0x23d8('0x4f')]){_0x5b661c[_0x23d8('0x4f')](_0x138f02[_0x23d8('0x4f')]);}if(_0x138f02[_0x23d8('0x50')]){_0x5b661c[_0x23d8('0x50')](_0x138f02[_0x23d8('0x50')]);}}else{_0x5b661c=applyJoinClauses(_0x5b661c,![]);_0x5b661c['group']('subqry.id');if(_0x138f02['limit']){_0x5700f1[_0x23d8('0x4f')](_0x138f02[_0x23d8('0x4f')]);}if(_0x138f02['offset']){_0x5700f1[_0x23d8('0x50')](_0x138f02[_0x23d8('0x50')]);}}_0x5b661c[_0x23d8('0x51')](_0x2c72e8);if(_0x138f02['order']){_0x138f02[_0x23d8('0x52')][_0x23d8('0x19')](function(_0x1d2c39){_0x5700f1[_0x23d8('0x52')]('c.'+_0x1d2c39[0x0],_0x1d2c39[0x1]==='DESC'?![]:!![]);_0x5b661c['order'](_0x23d8('0x53')+_0x1d2c39[0x0],_0x1d2c39[0x1]===_0x23d8('0x54')?![]:!![]);});}_0x5b661c['from'](_0x5700f1,'subqry');return _0x5b661c;}function getFilteredContacts(_0xa99e55){var _0x589fdf=[];return db[_0x23d8('0x35')][_0x23d8('0x55')]({'attributes':['id',_0x23d8('0x2c'),_0x23d8('0x56')],'raw':!![]})[_0x23d8('0x46')](function(_0x453948){_0x589fdf=_[_0x23d8('0x57')](_0x453948,'id');var _0x5b8fae={'type':db[_0x23d8('0x58')][_0x23d8('0x59')]['SELECT'],'model':db[_0x23d8('0x5a')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x23d8('0x5b')]['query'](_0xa99e55[_0x23d8('0x5c')](),_0x5b8fae);})[_0x23d8('0x46')](function(_0x45483d){_0x45483d[_0x23d8('0x19')](function(_0x44aeff){if(_0x44aeff[_0x23d8('0x17')]){_0x44aeff[_0x23d8('0x5d')]=[];_0x44aeff[_0x23d8('0x17')][_0x23d8('0x20')](',')[_0x23d8('0x19')](function(_0x177699){_0x44aeff[_0x23d8('0x5d')]['push'](_0x589fdf[_0x177699]);});}delete _0x44aeff[_0x23d8('0x17')];});return _0x45483d;});}function countFilteredContacts(_0x501a6d,_0x50d391){var _0x334a39=_0x501a6d['clone']();_0x334a39['field'](_0x23d8('0x5e'));_0x334a39=applyJoinClauses(_0x334a39,!![]);_0x501a6d[_0x23d8('0x5f')](_0x23d8('0x60'));var _0x1e8971=utils['getSelectedTags'](_0x50d391);if(!_[_0x23d8('0x61')](_0x1e8971)){_0x334a39[_0x23d8('0x62')](_0x23d8('0x63'),_0x1e8971);}var _0x5916bc={'type':db['Sequelize'][_0x23d8('0x59')][_0x23d8('0x64')],'raw':!![]};return db[_0x23d8('0x5b')][_0x23d8('0x65')](_0x334a39[_0x23d8('0x5c')](),_0x5916bc)[_0x23d8('0x46')](function(_0xad72e9){return _0xad72e9[0x0][_0x23d8('0x5e')];});}module[_0x23d8('0x66')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};