ced9fd1c4ec66b4481a2c20e01218d44004530ce
[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 _0xe9f5=['type','default','text','value','start','end','Tag','split','map','tags','clause','ids','User','uc.UserId\x20=\x20?','user','keys','some','compact','Contact','and','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','resolve','then','tag','filter','role','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','attributes','group','c.id','limit','offset','subqry.id','having','order','DESC','subqry.','findAll','color','Sequelize','QueryTypes','CmContact','toString','Tags','COUNT(*)','isEmpty','t.id\x20IN\x20?','SELECT','sequelize','query','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','agent','search','ListId','autocomplete','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','left_join','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','subqry','firstName','lastName','phone','mobile','email','CompanyId','createdAt','updatedAt','deletedAt','TagIds','includes','push','forEach','field','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','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?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','name','dateOfBirth','fieldType','castTo','buildExpression'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xe9f5,0xaa));var _0x5e9f=function(_0x513344,_0x168b27){_0x513344=_0x513344-0x0;var _0x4ced74=_0xe9f5[_0x513344];return _0x4ced74;};'use strict';var _=require(_0x5e9f('0x0'));var squel=require(_0x5e9f('0x1'));var as=require(_0x5e9f('0x2'));var qs=require(_0x5e9f('0x3'));var utils=require(_0x5e9f('0x4'));var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x486d00,_0x27c7ca){var _0x5321a8=![];if(_0x486d00['role']===_0x5e9f('0x5')&&!_0x27c7ca[_0x5e9f('0x6')]&&!_0x27c7ca[_0x5e9f('0x7')]&&_0x27c7ca[_0x5e9f('0x8')]!==_0x5e9f('0x9')){_0x5321a8=!![];}return _0x5321a8;}function getContactsSubquery(){return squel[_0x5e9f('0xa')]()[_0x5e9f('0xb')](_0x5e9f('0xc'),'c')[_0x5e9f('0xd')](_0x5e9f('0xe'));}function applyJoinClauses(_0x4cfe5f,_0x10b219){var _0x938435=_0x10b219?'c':'subqry';_0x4cfe5f['left_join'](_0x5e9f('0xf'),'uc',_0x5e9f('0x10')+_0x938435+_0x5e9f('0x11'))[_0x5e9f('0x12')](_0x5e9f('0x13'),'ct',_0x5e9f('0x14')+_0x938435+_0x5e9f('0x11'))[_0x5e9f('0x12')](_0x5e9f('0x15'),'t',_0x5e9f('0x16'));return _0x4cfe5f;}function addFieldsToQuery(_0x4c5475,_0x38ba5f,_0x2bbcdd,_0x429b2f,_0x2c663c){var _0x1142a1=_0x2c663c?'c':_0x5e9f('0x17');if(!_0x38ba5f){_0x38ba5f=['id',_0x5e9f('0x18'),_0x5e9f('0x19'),_0x5e9f('0x1a'),_0x5e9f('0x1b'),'fax',_0x5e9f('0x1c'),_0x5e9f('0x7'),_0x5e9f('0x1d'),_0x5e9f('0x1e'),_0x5e9f('0x1f'),_0x5e9f('0x20'),_0x5e9f('0x21')];}else if(!_0x38ba5f[_0x5e9f('0x22')]('id')){_0x38ba5f[_0x5e9f('0x23')]('id');}var _0x330dea=_0x2bbcdd&&_0x2c663c||!_0x2bbcdd&&!_0x2c663c;if(_0x429b2f){_0x330dea=_0x429b2f&&_0x2c663c||!_0x429b2f&&!_0x2c663c;}_0x38ba5f[_0x5e9f('0x24')](function(_0x72bbd4){if(_0x72bbd4===_0x5e9f('0x21')){if(_0x330dea){_0x4c5475[_0x5e9f('0x25')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x72bbd4);}else if(_0x2bbcdd||_0x429b2f){_0x4c5475[_0x5e9f('0x25')](_0x1142a1+'.'+_0x72bbd4);}}else{_0x4c5475[_0x5e9f('0x25')](_0x1142a1+'.'+_0x72bbd4);}});return _0x4c5475;}function getSqlClauses(){var _0x49401d={'default':squel['expr'](),'fields':squel['expr'](),'filter':squel[_0x5e9f('0x26')](),'tags':{'clause':squel[_0x5e9f('0x26')](),'ids':null},'user':{'clause':squel[_0x5e9f('0x26')](),'skip':![]}};return _0x49401d;}function parseTagParameter(_0x4d625c){var _0x17fc5b=squel[_0x5e9f('0x26')]();if(_0x4d625c){var _0x5cb2ad=utils[_0x5e9f('0x27')](_0x4d625c);_0x5cb2ad[_0x5e9f('0x24')](function(_0x44444b){_0x17fc5b['or'](_0x5e9f('0x28'),'%,'+_0x44444b+',%');});}return _0x17fc5b;}function parseSearchFilter(_0x371233){var _0x42254e=squel[_0x5e9f('0x26')]();if(_0x371233){var _0x4ba05e=_0x371233[_0x5e9f('0x29')]('\x5c','\x5c\x5c')[_0x5e9f('0x29')](/'/g,'\x27\x27');if(_0x4ba05e['split']('\x20')[_0x5e9f('0x2a')]>0x1){_0x42254e['or'](_0x5e9f('0x2b'),qs[_0x5e9f('0x2c')](_0x4ba05e,!![]),null);}else{if(qs['isNumeric'](_0x4ba05e)){_0x42254e['or'](_0x5e9f('0x2d'),_0x4ba05e+'%');_0x42254e['or'](_0x5e9f('0x2e'),_0x4ba05e+'%');_0x42254e['or'](_0x5e9f('0x2f'),_0x4ba05e+'%');_0x42254e['or'](_0x5e9f('0x30'),_0x4ba05e+'%');}else if(qs[_0x5e9f('0x31')](_0x4ba05e)){_0x42254e['or'](_0x5e9f('0x32'),_0x4ba05e+'%');}else{_0x42254e['or'](_0x5e9f('0x33'),'%'+_0x4ba05e+'%');_0x42254e['or'](_0x5e9f('0x34'),'%'+_0x4ba05e+'%');_0x42254e['or']('c.email\x20LIKE\x20?','%'+_0x4ba05e+'%');}}}return _0x42254e;}function parseAdvancedSearchFilter(_0x1a0d2d,_0x23e406){var _0x3dbff6=getSqlClauses();var _0x34246d=as[_0x5e9f('0x35')](_0x1a0d2d);var _0x2e18a7=_0x34246d[_0x5e9f('0x36')];for(var _0x5aed18=0x0;_0x5aed18<_0x34246d[_0x5e9f('0x37')]['length'];_0x5aed18++){var _0x7cb5e8=_0x34246d[_0x5e9f('0x37')][_0x5aed18];var _0xa3a3a='c';var _0x246560=_[_0x5e9f('0x38')](_0x23e406,[_0x5e9f('0x39'),_0x7cb5e8[_0x5e9f('0x25')]]);if(_0x246560){if(_0x7cb5e8['field']===_0x5e9f('0x3a')||_0x246560[_0x5e9f('0x3b')]==='datetime'){_0x7cb5e8[_0x5e9f('0x3c')]='DATE';}var _0x1f9bad=as[_0x5e9f('0x3d')](_0xa3a3a,_0x246560[_0x5e9f('0x3e')],_0x7cb5e8);_0x3dbff6[_0x5e9f('0x3f')][_0x2e18a7](_0x1f9bad[_0x5e9f('0x40')],_0x1f9bad[_0x5e9f('0x41')][_0x5e9f('0x42')],_0x1f9bad[_0x5e9f('0x41')][_0x5e9f('0x43')]);}else{if(_0x7cb5e8[_0x5e9f('0x25')]===_0x5e9f('0x44')){var _0x2212a6=_0x7cb5e8[_0x5e9f('0x41')][_0x5e9f('0x45')](',')[_0x5e9f('0x46')](function(_0x86afcf){return Number(_0x86afcf);});var _0x18fe55=parseTagParameter(_0x2212a6);_0x3dbff6[_0x5e9f('0x47')][_0x5e9f('0x48')]['and'](_0x18fe55);_0x3dbff6[_0x5e9f('0x47')][_0x5e9f('0x49')]=_0x2212a6;}else if(_0x7cb5e8[_0x5e9f('0x25')]===_0x5e9f('0x4a')){_0x3dbff6['user'][_0x5e9f('0x48')]['and'](_0x5e9f('0x4b'),_0x7cb5e8['value']);_0x3dbff6[_0x5e9f('0x4c')]['skip']=!![];}}}return _0x3dbff6;}function parseModelFields(_0xb5d4f4,_0x50008d){var _0x494442=squel[_0x5e9f('0x26')]();var _0x49e3ee=_(_0xb5d4f4)[_0x5e9f('0x4d')]()['map'](function(_0x39243b){return _[_0x5e9f('0x4e')](_0x50008d,['name',_0x39243b])?_0x39243b:undefined;})[_0x5e9f('0x4f')]()['value']();if(_0xb5d4f4['Contact']){_0x49e3ee[_0x5e9f('0x23')](_0x5e9f('0x50'));}if(_0xb5d4f4[_0x5e9f('0x4a')]){_0x49e3ee[_0x5e9f('0x23')](_0x5e9f('0x4a'));}if(_0x49e3ee[_0x5e9f('0x2a')]>0x0){_0x49e3ee[_0x5e9f('0x24')](function(_0xd5dcd){if(_0xd5dcd==='ListId'){_0x494442[_0x5e9f('0x51')]('c.ListId\x20IN\x20?',[][_0x5e9f('0x52')](_0xb5d4f4[_0xd5dcd]));}else if(_0xd5dcd===_0x5e9f('0x50')){var _0x1ee0ae='%'+_0xb5d4f4[_0xd5dcd]+'%';_0x494442['and'](_0x5e9f('0x53'),_0x1ee0ae);}else if(_0xd5dcd===_0x5e9f('0x4a')){_0x494442['and'](_0x5e9f('0x4b'),_0xb5d4f4[_0xd5dcd]);}else{_0x494442[_0x5e9f('0x51')]('c.'+_0xd5dcd+'\x20=\x20?',_0xb5d4f4[_0xd5dcd]);}});}return _0x494442;}function parseQueryParameters(_0x3245b2,_0x585293){var _0x4f69c1=getSqlClauses();return Promise[_0x5e9f('0x54')]()[_0x5e9f('0x55')](function(){return parseModelFields(_0x3245b2,_0x585293);})[_0x5e9f('0x55')](function(_0x27adc0){_0x4f69c1['fields'][_0x5e9f('0x51')](_0x27adc0);return parseTagParameter(_0x3245b2[_0x5e9f('0x56')]);})[_0x5e9f('0x55')](function(_0x496791){_0x4f69c1[_0x5e9f('0x47')][_0x5e9f('0x48')][_0x5e9f('0x51')](_0x496791);return parseSearchFilter(_0x3245b2[_0x5e9f('0x57')]);})[_0x5e9f('0x55')](function(_0x41eabf){_0x4f69c1['filter']=_0x41eabf;return _0x4f69c1;});}function checkListsRestrictions(_0x2c862c,_0x1f0914,_0x458e1b){var _0x3587c3=squel[_0x5e9f('0x26')]();return Promise[_0x5e9f('0x54')]()[_0x5e9f('0x55')](function(){if(_0x1f0914[_0x5e9f('0x6')]&&_0x2c862c[_0x5e9f('0x58')]===_0x5e9f('0x5')&&!_0x458e1b){return _0x2c862c[_0x5e9f('0x59')]({'attributes':['id'],'raw':!![]});}})[_0x5e9f('0x55')](function(_0x2ba977){if(_0x2ba977){if(_0x2ba977[_0x5e9f('0x2a')]===0x0){_0x3587c3[_0x5e9f('0x51')](_0x5e9f('0x5a'));}else{_0x3587c3['and'](_0x5e9f('0x5b'),_[_0x5e9f('0x46')](_0x2ba977,'id'));}}})[_0x5e9f('0x55')](function(){return _0x3587c3;});}function buildContactsQuery(_0x27d387,_0x295609,_0x25eef9,_0x1a3f0a,_0x19c849,_0x51fd4e){if(_0x295609){_0x295609=_0x25eef9[_0x5e9f('0x5c')];}_0x27d387=addFieldsToQuery(_0x27d387,_0x295609,_0x1a3f0a,_0x51fd4e,!![]);var _0x1dfd7f=squel[_0x5e9f('0xa')]();_0x1dfd7f=addFieldsToQuery(_0x1dfd7f,_0x295609,_0x1a3f0a,_0x51fd4e,![]);if(_0x1a3f0a||_0x51fd4e){_0x27d387=applyJoinClauses(_0x27d387,!![]);_0x27d387[_0x5e9f('0x5d')](_0x5e9f('0x5e'));if(_0x25eef9[_0x5e9f('0x5f')]){_0x1dfd7f[_0x5e9f('0x5f')](_0x25eef9[_0x5e9f('0x5f')]);}if(_0x25eef9['offset']){_0x1dfd7f['offset'](_0x25eef9[_0x5e9f('0x60')]);}}else{_0x1dfd7f=applyJoinClauses(_0x1dfd7f,![]);_0x1dfd7f[_0x5e9f('0x5d')](_0x5e9f('0x61'));if(_0x25eef9[_0x5e9f('0x5f')]){_0x27d387[_0x5e9f('0x5f')](_0x25eef9[_0x5e9f('0x5f')]);}if(_0x25eef9['offset']){_0x27d387[_0x5e9f('0x60')](_0x25eef9[_0x5e9f('0x60')]);}}_0x1dfd7f[_0x5e9f('0x62')](_0x19c849);if(_0x25eef9[_0x5e9f('0x63')]){_0x25eef9[_0x5e9f('0x63')]['forEach'](function(_0x202305){_0x27d387[_0x5e9f('0x63')]('c.'+_0x202305[0x0],_0x202305[0x1]===_0x5e9f('0x64')?![]:!![]);_0x1dfd7f[_0x5e9f('0x63')](_0x5e9f('0x65')+_0x202305[0x0],_0x202305[0x1]===_0x5e9f('0x64')?![]:!![]);});}_0x1dfd7f[_0x5e9f('0xb')](_0x27d387,_0x5e9f('0x17'));return _0x1dfd7f;}function getFilteredContacts(_0x2adf08){var _0x79a5e0=[];return db[_0x5e9f('0x44')][_0x5e9f('0x66')]({'attributes':['id',_0x5e9f('0x39'),_0x5e9f('0x67')],'raw':!![]})[_0x5e9f('0x55')](function(_0x5d4542){_0x79a5e0=_['keyBy'](_0x5d4542,'id');var _0x297f8e={'type':db[_0x5e9f('0x68')][_0x5e9f('0x69')]['SELECT'],'model':db[_0x5e9f('0x6a')],'mapToModel':!![],'nest':!![],'raw':!![]};return db['sequelize']['query'](_0x2adf08[_0x5e9f('0x6b')](),_0x297f8e);})['then'](function(_0x186c05){_0x186c05[_0x5e9f('0x24')](function(_0x27d233){if(_0x27d233[_0x5e9f('0x21')]){_0x27d233['Tags']=[];_0x27d233[_0x5e9f('0x21')]['split'](',')[_0x5e9f('0x24')](function(_0x34f4dd){_0x27d233[_0x5e9f('0x6c')][_0x5e9f('0x23')](_0x79a5e0[_0x34f4dd]);});}delete _0x27d233[_0x5e9f('0x21')];});return _0x186c05;});}function countFilteredContacts(_0x88e050,_0xeff64a){var _0x307e0b=_0x88e050['clone']();_0x307e0b[_0x5e9f('0x25')](_0x5e9f('0x6d'));_0x307e0b=applyJoinClauses(_0x307e0b,!![]);_0x88e050[_0x5e9f('0x5d')](_0x5e9f('0x5e'));var _0x1711ca=utils[_0x5e9f('0x27')](_0xeff64a);if(!_[_0x5e9f('0x6e')](_0x1711ca)){_0x307e0b[_0x5e9f('0xd')](_0x5e9f('0x6f'),_0x1711ca);}var _0x5a56ab={'type':db['Sequelize'][_0x5e9f('0x69')][_0x5e9f('0x70')],'raw':!![]};return db[_0x5e9f('0x71')][_0x5e9f('0x72')](_0x307e0b[_0x5e9f('0x6b')](),_0x5a56ab)['then'](function(_0x557b2a){return _0x557b2a[0x0]['COUNT(*)'];});}module[_0x5e9f('0x73')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};