Built motion from commit 37e1ed56.|2.6.29
[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 _0x16a6=['firstName','lastName','phone','mobile','fax','email','CompanyId','createdAt','TagIds','includes','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','replace','split','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?','c.email\x20LIKE\x20?','sqlOperator','conditions','find','name','fieldType','castTo','buildExpression','default','text','value','end','Tag','map','tags','clause','and','ids','User','user','skip','keys','compact','push','c.ListId\x20IN\x20?','Contact','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','uc.UserId\x20=\x20?','\x20=\x20?','then','fields','tag','filter','getLists','c.ListId\x20IS\x20NULL','attributes','c.id','limit','offset','group','having','order','subqry.','DESC','from','findAll','color','QueryTypes','CmContact','sequelize','query','toString','Tags','clone','isEmpty','t.id\x20IN\x20?','Sequelize','COUNT(*)','exports','lodash','squel','../parsers/qs','../interaction/utils','../../mysqldb','role','agent','search','ListId','true','select','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags'];(function(_0x1f8961,_0x23189a){var _0x5a9abb=function(_0x2e1982){while(--_0x2e1982){_0x1f8961['push'](_0x1f8961['shift']());}};_0x5a9abb(++_0x23189a);}(_0x16a6,0x18b));var _0x616a=function(_0x2c18a8,_0x24eaa5){_0x2c18a8=_0x2c18a8-0x0;var _0x1e009a=_0x16a6[_0x2c18a8];return _0x1e009a;};'use strict';var _=require(_0x616a('0x0'));var squel=require(_0x616a('0x1'));var as=require('../parsers/advancedSearch');var qs=require(_0x616a('0x2'));var utils=require(_0x616a('0x3'));var db=require(_0x616a('0x4'))['db'];function skipContactsQuery(_0x2858eb,_0x2f9599){var _0x505eea=![];if(_0x2858eb[_0x616a('0x5')]===_0x616a('0x6')&&!_0x2f9599[_0x616a('0x7')]&&!_0x2f9599[_0x616a('0x8')]&&_0x2f9599['autocomplete']!==_0x616a('0x9')){_0x505eea=!![];}return _0x505eea;}function getContactsSubquery(){return squel[_0x616a('0xa')]()['from'](_0x616a('0xb'),'c')[_0x616a('0xc')](_0x616a('0xd'));}function applyJoinClauses(_0x4f9e61,_0x4c48dc){var _0x44a72d=_0x4c48dc?'c':_0x616a('0xe');_0x4f9e61[_0x616a('0xf')]('cm_user_has_contacts','uc',_0x616a('0x10')+_0x44a72d+_0x616a('0x11'))[_0x616a('0xf')](_0x616a('0x12'),'ct',_0x616a('0x13')+_0x44a72d+_0x616a('0x11'))[_0x616a('0xf')](_0x616a('0x14'),'t','t.id\x20=\x20ct.TagId');return _0x4f9e61;}function addFieldsToQuery(_0x524166,_0x3cb33e,_0x32fdfd,_0x3b84b5,_0x31960d){var _0x3b74d8=_0x31960d?'c':_0x616a('0xe');if(!_0x3cb33e){_0x3cb33e=['id',_0x616a('0x15'),_0x616a('0x16'),_0x616a('0x17'),_0x616a('0x18'),_0x616a('0x19'),_0x616a('0x1a'),_0x616a('0x8'),_0x616a('0x1b'),_0x616a('0x1c'),'updatedAt','deletedAt',_0x616a('0x1d')];}else if(!_0x3cb33e[_0x616a('0x1e')]('id')){_0x3cb33e['push']('id');}var _0x2750ff=_0x32fdfd&&_0x31960d||!_0x32fdfd&&!_0x31960d;if(_0x3b84b5){_0x2750ff=_0x3b84b5&&_0x31960d||!_0x3b84b5&&!_0x31960d;}_0x3cb33e[_0x616a('0x1f')](function(_0x2f6886){if(_0x2f6886===_0x616a('0x1d')){if(_0x2750ff){_0x524166[_0x616a('0x20')](_0x616a('0x21'),_0x2f6886);}else if(_0x32fdfd||_0x3b84b5){_0x524166[_0x616a('0x20')](_0x3b74d8+'.'+_0x2f6886);}}else{_0x524166[_0x616a('0x20')](_0x3b74d8+'.'+_0x2f6886);}});return _0x524166;}function getSqlClauses(){var _0x20618d={'default':squel[_0x616a('0x22')](),'fields':squel[_0x616a('0x22')](),'filter':squel[_0x616a('0x22')](),'tags':{'clause':squel[_0x616a('0x22')](),'ids':null},'user':{'clause':squel[_0x616a('0x22')](),'skip':![]}};return _0x20618d;}function parseTagParameter(_0x38e804){var _0x4da883=squel[_0x616a('0x22')]();if(_0x38e804){var _0x3f90ac=utils[_0x616a('0x23')](_0x38e804);_0x3f90ac['forEach'](function(_0x39a4da){_0x4da883['or']('CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x39a4da+',%');});}return _0x4da883;}function parseSearchFilter(_0x2a85e7){var _0x41e348=squel[_0x616a('0x22')]();if(_0x2a85e7){var _0x2db297=_0x2a85e7[_0x616a('0x24')]('\x5c','\x5c\x5c')[_0x616a('0x24')](/'/g,'\x27\x27');if(_0x2db297[_0x616a('0x25')]('\x20')[_0x616a('0x26')]>0x1){_0x41e348['or'](_0x616a('0x27'),qs[_0x616a('0x28')](_0x2db297,!![]),null);}else{if(qs['isNumeric'](_0x2db297)){_0x41e348['or'](_0x616a('0x29'),_0x2db297+'%');_0x41e348['or'](_0x616a('0x2a'),_0x2db297+'%');_0x41e348['or'](_0x616a('0x2b'),_0x2db297+'%');_0x41e348['or'](_0x616a('0x2c'),_0x2db297+'%');}else if(qs['isEmail'](_0x2db297)){_0x41e348['or'](_0x616a('0x2d'),_0x2db297+'%');}else{_0x41e348['or']('c.firstName\x20LIKE\x20?','%'+_0x2db297+'%');_0x41e348['or']('c.lastName\x20LIKE\x20?','%'+_0x2db297+'%');_0x41e348['or']('c.email\x20LIKE\x20?','%'+_0x2db297+'%');}}}return _0x41e348;}function parseAdvancedSearchFilter(_0x1274b5,_0x4f75a2){var _0x3c1c1c=getSqlClauses();var _0xe2ef48=as['parseSearch'](_0x1274b5);var _0x4fd80c=_0xe2ef48[_0x616a('0x2e')];for(var _0x2abdaf=0x0;_0x2abdaf<_0xe2ef48[_0x616a('0x2f')]['length'];_0x2abdaf++){var _0x14ca96=_0xe2ef48[_0x616a('0x2f')][_0x2abdaf];var _0x95c0c1='c';var _0x2ebf19=_[_0x616a('0x30')](_0x4f75a2,[_0x616a('0x31'),_0x14ca96[_0x616a('0x20')]]);if(_0x2ebf19){if(_0x14ca96['field']==='dateOfBirth'||_0x2ebf19[_0x616a('0x32')]==='datetime'){_0x14ca96[_0x616a('0x33')]='DATE';}var _0x1808ca=as[_0x616a('0x34')](_0x95c0c1,_0x2ebf19['type'],_0x14ca96);_0x3c1c1c[_0x616a('0x35')][_0x4fd80c](_0x1808ca[_0x616a('0x36')],_0x1808ca[_0x616a('0x37')]['start'],_0x1808ca[_0x616a('0x37')][_0x616a('0x38')]);}else{if(_0x14ca96[_0x616a('0x20')]===_0x616a('0x39')){var _0x21c7c6=_0x14ca96['value'][_0x616a('0x25')](',')[_0x616a('0x3a')](function(_0x1dc69e){return Number(_0x1dc69e);});var _0xf38aea=parseTagParameter(_0x21c7c6);_0x3c1c1c[_0x616a('0x3b')][_0x616a('0x3c')][_0x616a('0x3d')](_0xf38aea);_0x3c1c1c[_0x616a('0x3b')][_0x616a('0x3e')]=_0x21c7c6;}else if(_0x14ca96[_0x616a('0x20')]===_0x616a('0x3f')){_0x3c1c1c[_0x616a('0x40')]['clause'][_0x616a('0x3d')]('uc.UserId\x20=\x20?',_0x14ca96[_0x616a('0x37')]);_0x3c1c1c[_0x616a('0x40')][_0x616a('0x41')]=!![];}}}return _0x3c1c1c;}function parseModelFields(_0x2885ed,_0x46c979){var _0x4ec205=squel['expr']();var _0x5f209f=_(_0x2885ed)[_0x616a('0x42')]()[_0x616a('0x3a')](function(_0x4f3bd2){return _['some'](_0x46c979,[_0x616a('0x31'),_0x4f3bd2])?_0x4f3bd2:undefined;})[_0x616a('0x43')]()[_0x616a('0x37')]();if(_0x2885ed['Contact']){_0x5f209f[_0x616a('0x44')]('Contact');}if(_0x2885ed['User']){_0x5f209f[_0x616a('0x44')](_0x616a('0x3f'));}if(_0x5f209f[_0x616a('0x26')]>0x0){_0x5f209f[_0x616a('0x1f')](function(_0x422124){if(_0x422124===_0x616a('0x8')){_0x4ec205['and'](_0x616a('0x45'),[]['concat'](_0x2885ed[_0x422124]));}else if(_0x422124===_0x616a('0x46')){var _0x4b70bd='%'+_0x2885ed[_0x422124]+'%';_0x4ec205[_0x616a('0x3d')](_0x616a('0x47'),_0x4b70bd);}else if(_0x422124===_0x616a('0x3f')){_0x4ec205['and'](_0x616a('0x48'),_0x2885ed[_0x422124]);}else{_0x4ec205[_0x616a('0x3d')]('c.'+_0x422124+_0x616a('0x49'),_0x2885ed[_0x422124]);}});}return _0x4ec205;}function parseQueryParameters(_0x1ee2c7,_0x1f30fe){var _0x26a447=getSqlClauses();return Promise['resolve']()[_0x616a('0x4a')](function(){return parseModelFields(_0x1ee2c7,_0x1f30fe);})[_0x616a('0x4a')](function(_0x595778){_0x26a447[_0x616a('0x4b')][_0x616a('0x3d')](_0x595778);return parseTagParameter(_0x1ee2c7[_0x616a('0x4c')]);})[_0x616a('0x4a')](function(_0x35dfef){_0x26a447[_0x616a('0x3b')][_0x616a('0x3c')]['and'](_0x35dfef);return parseSearchFilter(_0x1ee2c7[_0x616a('0x4d')]);})[_0x616a('0x4a')](function(_0x3fee5b){_0x26a447[_0x616a('0x4d')]=_0x3fee5b;return _0x26a447;});}function checkListsRestrictions(_0x5e27e6,_0x122fb1,_0x38b4f3){var _0x3f6639=squel[_0x616a('0x22')]();return Promise['resolve']()[_0x616a('0x4a')](function(){if(_0x122fb1[_0x616a('0x7')]&&_0x5e27e6['role']===_0x616a('0x6')&&!_0x38b4f3){return _0x5e27e6[_0x616a('0x4e')]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x716de8){if(_0x716de8){if(_0x716de8['length']===0x0){_0x3f6639[_0x616a('0x3d')](_0x616a('0x4f'));}else{_0x3f6639[_0x616a('0x3d')](_0x616a('0x45'),_[_0x616a('0x3a')](_0x716de8,'id'));}}})[_0x616a('0x4a')](function(){return _0x3f6639;});}function buildContactsQuery(_0x2f6a21,_0x284cd1,_0x3fcca3,_0x3dc97b,_0x37e0bc,_0xcacdfe){if(_0x284cd1){_0x284cd1=_0x3fcca3[_0x616a('0x50')];}_0x2f6a21=addFieldsToQuery(_0x2f6a21,_0x284cd1,_0x3dc97b,_0xcacdfe,!![]);var _0x4d07a6=squel[_0x616a('0xa')]();_0x4d07a6=addFieldsToQuery(_0x4d07a6,_0x284cd1,_0x3dc97b,_0xcacdfe,![]);if(_0x3dc97b||_0xcacdfe){_0x2f6a21=applyJoinClauses(_0x2f6a21,!![]);_0x2f6a21['group'](_0x616a('0x51'));if(_0x3fcca3[_0x616a('0x52')]){_0x4d07a6[_0x616a('0x52')](_0x3fcca3[_0x616a('0x52')]);}if(_0x3fcca3[_0x616a('0x53')]){_0x4d07a6[_0x616a('0x53')](_0x3fcca3[_0x616a('0x53')]);}}else{_0x4d07a6=applyJoinClauses(_0x4d07a6,![]);_0x4d07a6[_0x616a('0x54')]('subqry.id');if(_0x3fcca3[_0x616a('0x52')]){_0x2f6a21[_0x616a('0x52')](_0x3fcca3[_0x616a('0x52')]);}if(_0x3fcca3[_0x616a('0x53')]){_0x2f6a21[_0x616a('0x53')](_0x3fcca3[_0x616a('0x53')]);}}_0x4d07a6[_0x616a('0x55')](_0x37e0bc);if(_0x3fcca3[_0x616a('0x56')]){_0x3fcca3[_0x616a('0x56')]['forEach'](function(_0x13abce){_0x2f6a21[_0x616a('0x56')]('c.'+_0x13abce[0x0],_0x13abce[0x1]==='DESC'?![]:!![]);_0x4d07a6[_0x616a('0x56')](_0x616a('0x57')+_0x13abce[0x0],_0x13abce[0x1]===_0x616a('0x58')?![]:!![]);});}_0x4d07a6[_0x616a('0x59')](_0x2f6a21,_0x616a('0xe'));return _0x4d07a6;}function getFilteredContacts(_0x21e4e3){var _0x376d65=[];return db[_0x616a('0x39')][_0x616a('0x5a')]({'attributes':['id',_0x616a('0x31'),_0x616a('0x5b')],'raw':!![]})[_0x616a('0x4a')](function(_0x2e30e5){_0x376d65=_['keyBy'](_0x2e30e5,'id');var _0x572021={'type':db['Sequelize'][_0x616a('0x5c')]['SELECT'],'model':db[_0x616a('0x5d')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x616a('0x5e')][_0x616a('0x5f')](_0x21e4e3[_0x616a('0x60')](),_0x572021);})['then'](function(_0x4bf8f0){_0x4bf8f0[_0x616a('0x1f')](function(_0x17e34b){if(_0x17e34b[_0x616a('0x1d')]){_0x17e34b[_0x616a('0x61')]=[];_0x17e34b[_0x616a('0x1d')][_0x616a('0x25')](',')[_0x616a('0x1f')](function(_0x46d81b){_0x17e34b[_0x616a('0x61')][_0x616a('0x44')](_0x376d65[_0x46d81b]);});}delete _0x17e34b[_0x616a('0x1d')];});return _0x4bf8f0;});}function countFilteredContacts(_0x4e20ed,_0x209b86){var _0x13d3b6=_0x4e20ed[_0x616a('0x62')]();_0x13d3b6[_0x616a('0x20')]('COUNT(*)');_0x13d3b6=applyJoinClauses(_0x13d3b6,!![]);_0x4e20ed[_0x616a('0x54')](_0x616a('0x51'));var _0x13de60=utils[_0x616a('0x23')](_0x209b86);if(!_[_0x616a('0x63')](_0x13de60)){_0x13d3b6[_0x616a('0xc')](_0x616a('0x64'),_0x13de60);}var _0x204771={'type':db[_0x616a('0x65')][_0x616a('0x5c')]['SELECT'],'raw':!![]};return db[_0x616a('0x5e')][_0x616a('0x5f')](_0x13d3b6[_0x616a('0x60')](),_0x204771)[_0x616a('0x4a')](function(_0x137343){return _0x137343[0x0][_0x616a('0x66')];});}module[_0x616a('0x67')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};