Built motion from commit b0a9a629.|2.6.33
[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 _0x2e8b=['length','find','name','fieldType','datetime','castTo','buildExpression','default','text','value','start','Tag','map','tags','ids','User','user','clause','and','uc.UserId\x20=\x20?','skip','keys','compact','Contact','c.ListId\x20IN\x20?','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','filter','getLists','c.id','limit','offset','group','having','order','DESC','color','keyBy','Sequelize','CmContact','sequelize','Tags','TagIds','clone','isEmpty','t.id\x20IN\x20?','QueryTypes','SELECT','query','COUNT(*)','exports','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','role','agent','search','ListId','autocomplete','true','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','cm_contact_has_tags','ct.CmContactId\x20=\x20','.id','t.id\x20=\x20ct.TagId','lastName','phone','fax','CompanyId','createdAt','updatedAt','deletedAt','push','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','split','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','parseSearch','sqlOperator','conditions'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0x2e8b,0x1c9));var _0xb2e8=function(_0x47e61d,_0x32b15f){_0x47e61d=_0x47e61d-0x0;var _0x42bfd0=_0x2e8b[_0x47e61d];return _0x42bfd0;};'use strict';var _=require('lodash');var squel=require('squel');var as=require(_0xb2e8('0x0'));var qs=require(_0xb2e8('0x1'));var utils=require(_0xb2e8('0x2'));var db=require(_0xb2e8('0x3'))['db'];function skipContactsQuery(_0x2113c2,_0x41c450){var _0x4c8114=![];if(_0x2113c2[_0xb2e8('0x4')]===_0xb2e8('0x5')&&!_0x41c450[_0xb2e8('0x6')]&&!_0x41c450[_0xb2e8('0x7')]&&_0x41c450[_0xb2e8('0x8')]!==_0xb2e8('0x9')){_0x4c8114=!![];}return _0x4c8114;}function getContactsSubquery(){return squel['select']()[_0xb2e8('0xa')](_0xb2e8('0xb'),'c')[_0xb2e8('0xc')](_0xb2e8('0xd'));}function applyJoinClauses(_0x550949,_0x54e665){var _0xa4b126=_0x54e665?'c':_0xb2e8('0xe');_0x550949[_0xb2e8('0xf')](_0xb2e8('0x10'),'uc',_0xb2e8('0x11')+_0xa4b126+'.id')[_0xb2e8('0xf')](_0xb2e8('0x12'),'ct',_0xb2e8('0x13')+_0xa4b126+_0xb2e8('0x14'))[_0xb2e8('0xf')]('tools_tags','t',_0xb2e8('0x15'));return _0x550949;}function addFieldsToQuery(_0x483636,_0x15fe28,_0xb5ba76,_0x22b82d,_0x218624){var _0x451620=_0x218624?'c':'subqry';if(!_0x15fe28){_0x15fe28=['id','firstName',_0xb2e8('0x16'),_0xb2e8('0x17'),'mobile',_0xb2e8('0x18'),'email',_0xb2e8('0x7'),_0xb2e8('0x19'),_0xb2e8('0x1a'),_0xb2e8('0x1b'),_0xb2e8('0x1c'),'TagIds'];}else if(!_0x15fe28['includes']('id')){_0x15fe28[_0xb2e8('0x1d')]('id');}var _0x4505ac=_0xb5ba76&&_0x218624||!_0xb5ba76&&!_0x218624;if(_0x22b82d){_0x4505ac=_0x22b82d&&_0x218624||!_0x22b82d&&!_0x218624;}_0x15fe28['forEach'](function(_0xd5e00){if(_0xd5e00==='TagIds'){if(_0x4505ac){_0x483636[_0xb2e8('0x1e')](_0xb2e8('0x1f'),_0xd5e00);}else if(_0xb5ba76||_0x22b82d){_0x483636['field'](_0x451620+'.'+_0xd5e00);}}else{_0x483636[_0xb2e8('0x1e')](_0x451620+'.'+_0xd5e00);}});return _0x483636;}function getSqlClauses(){var _0x309fc3={'default':squel[_0xb2e8('0x20')](),'fields':squel[_0xb2e8('0x20')](),'filter':squel[_0xb2e8('0x20')](),'tags':{'clause':squel[_0xb2e8('0x20')](),'ids':null},'user':{'clause':squel[_0xb2e8('0x20')](),'skip':![]}};return _0x309fc3;}function parseTagParameter(_0x449c1a){var _0x2042e7=squel[_0xb2e8('0x20')]();if(_0x449c1a){var _0x56dd30=utils[_0xb2e8('0x21')](_0x449c1a);_0x56dd30[_0xb2e8('0x22')](function(_0x77cc56){_0x2042e7['or'](_0xb2e8('0x23'),'%,'+_0x77cc56+',%');});}return _0x2042e7;}function parseSearchFilter(_0x32ce01){var _0x3e4a71=squel[_0xb2e8('0x20')]();if(_0x32ce01){var _0x49e30a=_0x32ce01['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');var _0x229043=qs['escapeLIKESpecialChars'](_0x49e30a);if(_0x49e30a[_0xb2e8('0x24')]('\x20')['length']>0x1){_0x3e4a71['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xb2e8('0x25')](_0x49e30a,!![]),null);}else{if(qs[_0xb2e8('0x26')](_0x49e30a)){_0x3e4a71['or'](_0xb2e8('0x27'),_0x229043+'%');_0x3e4a71['or'](_0xb2e8('0x28'),_0x229043+'%');_0x3e4a71['or'](_0xb2e8('0x29'),_0x229043+'%');_0x3e4a71['or'](_0xb2e8('0x2a'),_0x229043+'%');}else if(qs[_0xb2e8('0x2b')](_0x49e30a)){_0x3e4a71['or'](_0xb2e8('0x2c'),_0x229043+'%');}else{_0x3e4a71['or']('c.firstName\x20LIKE\x20?','%'+_0x229043+'%');_0x3e4a71['or']('c.lastName\x20LIKE\x20?','%'+_0x229043+'%');_0x3e4a71['or'](_0xb2e8('0x2c'),'%'+_0x229043+'%');}}}return _0x3e4a71;}function parseAdvancedSearchFilter(_0x2185b6,_0x2194f0){var _0x3ec705=getSqlClauses();var _0x5b4f05=as[_0xb2e8('0x2d')](_0x2185b6);var _0x53ad6d=_0x5b4f05[_0xb2e8('0x2e')];for(var _0x470ee9=0x0;_0x470ee9<_0x5b4f05[_0xb2e8('0x2f')][_0xb2e8('0x30')];_0x470ee9++){var _0x151ca7=_0x5b4f05['conditions'][_0x470ee9];var _0x163cb3='c';var _0x3188da=_[_0xb2e8('0x31')](_0x2194f0,[_0xb2e8('0x32'),_0x151ca7[_0xb2e8('0x1e')]]);if(_0x3188da){if(_0x151ca7[_0xb2e8('0x1e')]==='dateOfBirth'||_0x3188da[_0xb2e8('0x33')]===_0xb2e8('0x34')){_0x151ca7[_0xb2e8('0x35')]='DATE';}var _0x1acd9d=as[_0xb2e8('0x36')](_0x163cb3,_0x3188da['type'],_0x151ca7);_0x3ec705[_0xb2e8('0x37')][_0x53ad6d](_0x1acd9d[_0xb2e8('0x38')],_0x1acd9d[_0xb2e8('0x39')][_0xb2e8('0x3a')],_0x1acd9d[_0xb2e8('0x39')]['end']);}else{if(_0x151ca7[_0xb2e8('0x1e')]===_0xb2e8('0x3b')){var _0xd9f9d8=_0x151ca7['value'][_0xb2e8('0x24')](',')[_0xb2e8('0x3c')](function(_0x53625b){return Number(_0x53625b);});var _0x310f3f=parseTagParameter(_0xd9f9d8);_0x3ec705[_0xb2e8('0x3d')]['clause']['and'](_0x310f3f);_0x3ec705[_0xb2e8('0x3d')][_0xb2e8('0x3e')]=_0xd9f9d8;}else if(_0x151ca7[_0xb2e8('0x1e')]===_0xb2e8('0x3f')){_0x3ec705[_0xb2e8('0x40')][_0xb2e8('0x41')][_0xb2e8('0x42')](_0xb2e8('0x43'),_0x151ca7[_0xb2e8('0x39')]);_0x3ec705['user'][_0xb2e8('0x44')]=!![];}}}return _0x3ec705;}function parseModelFields(_0x50453f,_0x31d9da){var _0x27f086=squel[_0xb2e8('0x20')]();var _0xd3712d=_(_0x50453f)[_0xb2e8('0x45')]()['map'](function(_0x42049f){return _['some'](_0x31d9da,[_0xb2e8('0x32'),_0x42049f])?_0x42049f:undefined;})[_0xb2e8('0x46')]()[_0xb2e8('0x39')]();if(_0x50453f[_0xb2e8('0x47')]){_0xd3712d[_0xb2e8('0x1d')](_0xb2e8('0x47'));}if(_0x50453f[_0xb2e8('0x3f')]){_0xd3712d[_0xb2e8('0x1d')](_0xb2e8('0x3f'));}if(_0xd3712d['length']>0x0){_0xd3712d[_0xb2e8('0x22')](function(_0x5daed6){if(_0x5daed6==='ListId'){_0x27f086[_0xb2e8('0x42')](_0xb2e8('0x48'),[]['concat'](_0x50453f[_0x5daed6]));}else if(_0x5daed6===_0xb2e8('0x47')){var _0x495b04='%'+_0x50453f[_0x5daed6]+'%';_0x27f086[_0xb2e8('0x42')](_0xb2e8('0x49'),_0x495b04);}else if(_0x5daed6==='User'){_0x27f086['and']('uc.UserId\x20=\x20?',_0x50453f[_0x5daed6]);}else{_0x27f086[_0xb2e8('0x42')]('c.'+_0x5daed6+_0xb2e8('0x4a'),_0x50453f[_0x5daed6]);}});}return _0x27f086;}function parseQueryParameters(_0x1b03ae,_0x22ab08){var _0x5521d9=getSqlClauses();return Promise[_0xb2e8('0x4b')]()[_0xb2e8('0x4c')](function(){return parseModelFields(_0x1b03ae,_0x22ab08);})['then'](function(_0x55d647){_0x5521d9['fields'][_0xb2e8('0x42')](_0x55d647);return parseTagParameter(_0x1b03ae['tag']);})[_0xb2e8('0x4c')](function(_0x5f2ce7){_0x5521d9['tags'][_0xb2e8('0x41')][_0xb2e8('0x42')](_0x5f2ce7);return parseSearchFilter(_0x1b03ae[_0xb2e8('0x4d')]);})[_0xb2e8('0x4c')](function(_0x29af94){_0x5521d9['filter']=_0x29af94;return _0x5521d9;});}function checkListsRestrictions(_0x586cac,_0x5a211f,_0x4a8b68){var _0x1dbb60=squel['expr']();return Promise[_0xb2e8('0x4b')]()[_0xb2e8('0x4c')](function(){if(_0x5a211f[_0xb2e8('0x6')]&&_0x586cac[_0xb2e8('0x4')]==='agent'&&!_0x4a8b68){return _0x586cac[_0xb2e8('0x4e')]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x4da2bd){if(_0x4da2bd){if(_0x4da2bd[_0xb2e8('0x30')]===0x0){_0x1dbb60[_0xb2e8('0x42')]('c.ListId\x20IS\x20NULL');}else{_0x1dbb60['and'](_0xb2e8('0x48'),_[_0xb2e8('0x3c')](_0x4da2bd,'id'));}}})[_0xb2e8('0x4c')](function(){return _0x1dbb60;});}function buildContactsQuery(_0x5988ab,_0x6818b7,_0x1f1c98,_0x24a8f5,_0x53cdb3,_0x1268e7){if(_0x6818b7){_0x6818b7=_0x1f1c98['attributes'];}_0x5988ab=addFieldsToQuery(_0x5988ab,_0x6818b7,_0x24a8f5,_0x1268e7,!![]);var _0x3e988b=squel['select']();_0x3e988b=addFieldsToQuery(_0x3e988b,_0x6818b7,_0x24a8f5,_0x1268e7,![]);if(_0x24a8f5||_0x1268e7){_0x5988ab=applyJoinClauses(_0x5988ab,!![]);_0x5988ab['group'](_0xb2e8('0x4f'));if(_0x1f1c98[_0xb2e8('0x50')]){_0x3e988b['limit'](_0x1f1c98[_0xb2e8('0x50')]);}if(_0x1f1c98[_0xb2e8('0x51')]){_0x3e988b[_0xb2e8('0x51')](_0x1f1c98[_0xb2e8('0x51')]);}}else{_0x3e988b=applyJoinClauses(_0x3e988b,![]);_0x3e988b[_0xb2e8('0x52')]('subqry.id');if(_0x1f1c98[_0xb2e8('0x50')]){_0x5988ab[_0xb2e8('0x50')](_0x1f1c98['limit']);}if(_0x1f1c98[_0xb2e8('0x51')]){_0x5988ab[_0xb2e8('0x51')](_0x1f1c98[_0xb2e8('0x51')]);}}_0x3e988b[_0xb2e8('0x53')](_0x53cdb3);if(_0x1f1c98['order']){_0x1f1c98[_0xb2e8('0x54')]['forEach'](function(_0x4d5c79){_0x5988ab[_0xb2e8('0x54')]('c.'+_0x4d5c79[0x0],_0x4d5c79[0x1]==='DESC'?![]:!![]);_0x3e988b[_0xb2e8('0x54')]('subqry.'+_0x4d5c79[0x0],_0x4d5c79[0x1]===_0xb2e8('0x55')?![]:!![]);});}_0x3e988b['from'](_0x5988ab,_0xb2e8('0xe'));return _0x3e988b;}function getFilteredContacts(_0x21a03c){var _0x375b9d=[];return db[_0xb2e8('0x3b')]['findAll']({'attributes':['id',_0xb2e8('0x32'),_0xb2e8('0x56')],'raw':!![]})[_0xb2e8('0x4c')](function(_0x23b5a3){_0x375b9d=_[_0xb2e8('0x57')](_0x23b5a3,'id');var _0x2c8305={'type':db[_0xb2e8('0x58')]['QueryTypes']['SELECT'],'model':db[_0xb2e8('0x59')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xb2e8('0x5a')]['query'](_0x21a03c['toString'](),_0x2c8305);})[_0xb2e8('0x4c')](function(_0x4f16a4){_0x4f16a4['forEach'](function(_0x4eb540){if(_0x4eb540['TagIds']){_0x4eb540[_0xb2e8('0x5b')]=[];_0x4eb540[_0xb2e8('0x5c')][_0xb2e8('0x24')](',')[_0xb2e8('0x22')](function(_0x1c901e){_0x4eb540[_0xb2e8('0x5b')][_0xb2e8('0x1d')](_0x375b9d[_0x1c901e]);});}delete _0x4eb540['TagIds'];});return _0x4f16a4;});}function countFilteredContacts(_0x442266,_0x140eb0){var _0x427967=_0x442266[_0xb2e8('0x5d')]();_0x427967[_0xb2e8('0x1e')]('COUNT(*)');_0x427967=applyJoinClauses(_0x427967,!![]);_0x442266[_0xb2e8('0x52')](_0xb2e8('0x4f'));var _0x35cd39=utils[_0xb2e8('0x21')](_0x140eb0);if(!_[_0xb2e8('0x5e')](_0x35cd39)){_0x427967[_0xb2e8('0xc')](_0xb2e8('0x5f'),_0x35cd39);}var _0x155be0={'type':db[_0xb2e8('0x58')][_0xb2e8('0x60')][_0xb2e8('0x61')],'raw':!![]};return db[_0xb2e8('0x5a')][_0xb2e8('0x62')](_0x427967['toString'](),_0x155be0)[_0xb2e8('0x4c')](function(_0x4c9f90){return _0x4c9f90[0x0][_0xb2e8('0x63')];});}module[_0xb2e8('0x64')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};