Built motion from commit 6f14c8ba.|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 _0x2fa3=['keyBy','QueryTypes','SELECT','CmContact','query','toString','Tags','clone','Sequelize','sequelize','COUNT(*)','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','role','agent','search','ListId','autocomplete','true','select','from','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','t.id\x20=\x20ct.TagId','firstName','lastName','phone','mobile','fax','email','CompanyId','updatedAt','deletedAt','TagIds','includes','push','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','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','length','dateOfBirth','fieldType','castTo','DATE','buildExpression','default','start','value','end','Tag','map','tags','ids','User','user','clause','and','uc.UserId\x20=\x20?','skip','keys','some','compact','Contact','c.ListId\x20IN\x20?','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','fields','tag','filter','getLists','c.ListId\x20IS\x20NULL','attributes','group','limit','offset','subqry.id','having','order','DESC','subqry.','findAll','name','color'];(function(_0x284050,_0x3ea975){var _0x74e261=function(_0x3f9ace){while(--_0x3f9ace){_0x284050['push'](_0x284050['shift']());}};_0x74e261(++_0x3ea975);}(_0x2fa3,0xf4));var _0x32fa=function(_0x2efc25,_0x403b2f){_0x2efc25=_0x2efc25-0x0;var _0xe5238f=_0x2fa3[_0x2efc25];return _0xe5238f;};'use strict';var _=require(_0x32fa('0x0'));var squel=require(_0x32fa('0x1'));var as=require(_0x32fa('0x2'));var qs=require(_0x32fa('0x3'));var utils=require(_0x32fa('0x4'));var db=require(_0x32fa('0x5'))['db'];function skipContactsQuery(_0xbf4515,_0x16e3b9){var _0x59343b=![];if(_0xbf4515[_0x32fa('0x6')]===_0x32fa('0x7')&&!_0x16e3b9[_0x32fa('0x8')]&&!_0x16e3b9[_0x32fa('0x9')]&&_0x16e3b9[_0x32fa('0xa')]!==_0x32fa('0xb')){_0x59343b=!![];}return _0x59343b;}function getContactsSubquery(){return squel[_0x32fa('0xc')]()[_0x32fa('0xd')](_0x32fa('0xe'),'c')[_0x32fa('0xf')](_0x32fa('0x10'));}function applyJoinClauses(_0x18d807,_0x3364ac){var _0x122a4f=_0x3364ac?'c':_0x32fa('0x11');_0x18d807[_0x32fa('0x12')]('cm_user_has_contacts','uc',_0x32fa('0x13')+_0x122a4f+_0x32fa('0x14'))['left_join'](_0x32fa('0x15'),'ct',_0x32fa('0x16')+_0x122a4f+_0x32fa('0x14'))[_0x32fa('0x12')](_0x32fa('0x17'),'t',_0x32fa('0x18'));return _0x18d807;}function addFieldsToQuery(_0xe9f570,_0x2c00cc,_0x3f49b9,_0x187c96,_0x50aac5){var _0x43e62e=_0x50aac5?'c':_0x32fa('0x11');if(!_0x2c00cc){_0x2c00cc=['id',_0x32fa('0x19'),_0x32fa('0x1a'),_0x32fa('0x1b'),_0x32fa('0x1c'),_0x32fa('0x1d'),_0x32fa('0x1e'),_0x32fa('0x9'),_0x32fa('0x1f'),'createdAt',_0x32fa('0x20'),_0x32fa('0x21'),_0x32fa('0x22')];}else if(!_0x2c00cc[_0x32fa('0x23')]('id')){_0x2c00cc[_0x32fa('0x24')]('id');}var _0x36cde6=_0x3f49b9&&_0x50aac5||!_0x3f49b9&&!_0x50aac5;if(_0x187c96){_0x36cde6=_0x187c96&&_0x50aac5||!_0x187c96&&!_0x50aac5;}_0x2c00cc[_0x32fa('0x25')](function(_0x18ace7){if(_0x18ace7===_0x32fa('0x22')){if(_0x36cde6){_0xe9f570[_0x32fa('0x26')](_0x32fa('0x27'),_0x18ace7);}else if(_0x3f49b9||_0x187c96){_0xe9f570[_0x32fa('0x26')](_0x43e62e+'.'+_0x18ace7);}}else{_0xe9f570['field'](_0x43e62e+'.'+_0x18ace7);}});return _0xe9f570;}function getSqlClauses(){var _0x22615d={'default':squel[_0x32fa('0x28')](),'fields':squel[_0x32fa('0x28')](),'filter':squel[_0x32fa('0x28')](),'tags':{'clause':squel[_0x32fa('0x28')](),'ids':null},'user':{'clause':squel['expr'](),'skip':![]}};return _0x22615d;}function parseTagParameter(_0x4cfb08){var _0x35222e=squel['expr']();if(_0x4cfb08){var _0x63f43e=utils[_0x32fa('0x29')](_0x4cfb08);_0x63f43e[_0x32fa('0x25')](function(_0x3b8bd5){_0x35222e['or'](_0x32fa('0x2a'),'%,'+_0x3b8bd5+',%');});}return _0x35222e;}function parseSearchFilter(_0x3b380d){var _0x22854d=squel[_0x32fa('0x28')]();if(_0x3b380d){var _0x4fdbbb=_0x3b380d[_0x32fa('0x2b')]('\x5c','\x5c\x5c')[_0x32fa('0x2b')](/'/g,'\x27\x27');if(_0x4fdbbb[_0x32fa('0x2c')]('\x20')['length']>0x1){_0x22854d['or'](_0x32fa('0x2d'),qs[_0x32fa('0x2e')](_0x4fdbbb,!![]),null);}else{if(qs['isNumeric'](_0x4fdbbb)){_0x22854d['or'](_0x32fa('0x2f'),_0x4fdbbb+'%');_0x22854d['or'](_0x32fa('0x30'),_0x4fdbbb+'%');_0x22854d['or'](_0x32fa('0x31'),_0x4fdbbb+'%');_0x22854d['or'](_0x32fa('0x32'),_0x4fdbbb+'%');}else if(qs[_0x32fa('0x33')](_0x4fdbbb)){_0x22854d['or'](_0x32fa('0x34'),_0x4fdbbb+'%');}else{_0x22854d['or'](_0x32fa('0x35'),'%'+_0x4fdbbb+'%');_0x22854d['or'](_0x32fa('0x36'),'%'+_0x4fdbbb+'%');_0x22854d['or']('c.email\x20LIKE\x20?','%'+_0x4fdbbb+'%');}}}return _0x22854d;}function parseAdvancedSearchFilter(_0x2e1940,_0x1d47df){var _0x107b74=getSqlClauses();var _0x411217=as[_0x32fa('0x37')](_0x2e1940);var _0x116438=_0x411217[_0x32fa('0x38')];for(var _0x588526=0x0;_0x588526<_0x411217[_0x32fa('0x39')][_0x32fa('0x3a')];_0x588526++){var _0x11256d=_0x411217['conditions'][_0x588526];var _0x4c31c2='c';var _0x32272d=_['find'](_0x1d47df,['name',_0x11256d[_0x32fa('0x26')]]);if(_0x32272d){if(_0x11256d[_0x32fa('0x26')]===_0x32fa('0x3b')||_0x32272d[_0x32fa('0x3c')]==='datetime'){_0x11256d[_0x32fa('0x3d')]=_0x32fa('0x3e');}var _0xf7cbf6=as[_0x32fa('0x3f')](_0x4c31c2,_0x32272d['type'],_0x11256d);_0x107b74[_0x32fa('0x40')][_0x116438](_0xf7cbf6['text'],_0xf7cbf6['value'][_0x32fa('0x41')],_0xf7cbf6[_0x32fa('0x42')][_0x32fa('0x43')]);}else{if(_0x11256d['field']===_0x32fa('0x44')){var _0x4df33b=_0x11256d[_0x32fa('0x42')][_0x32fa('0x2c')](',')[_0x32fa('0x45')](function(_0x1dbe5e){return Number(_0x1dbe5e);});var _0xc7e71f=parseTagParameter(_0x4df33b);_0x107b74[_0x32fa('0x46')]['clause']['and'](_0xc7e71f);_0x107b74[_0x32fa('0x46')][_0x32fa('0x47')]=_0x4df33b;}else if(_0x11256d[_0x32fa('0x26')]===_0x32fa('0x48')){_0x107b74[_0x32fa('0x49')][_0x32fa('0x4a')][_0x32fa('0x4b')](_0x32fa('0x4c'),_0x11256d[_0x32fa('0x42')]);_0x107b74[_0x32fa('0x49')][_0x32fa('0x4d')]=!![];}}}return _0x107b74;}function parseModelFields(_0x3dd628,_0x1734d4){var _0xcbf681=squel[_0x32fa('0x28')]();var _0x13f1cc=_(_0x3dd628)[_0x32fa('0x4e')]()[_0x32fa('0x45')](function(_0x274369){return _[_0x32fa('0x4f')](_0x1734d4,['name',_0x274369])?_0x274369:undefined;})[_0x32fa('0x50')]()[_0x32fa('0x42')]();if(_0x3dd628[_0x32fa('0x51')]){_0x13f1cc[_0x32fa('0x24')](_0x32fa('0x51'));}if(_0x3dd628['User']){_0x13f1cc['push'](_0x32fa('0x48'));}if(_0x13f1cc[_0x32fa('0x3a')]>0x0){_0x13f1cc[_0x32fa('0x25')](function(_0x4e51ac){if(_0x4e51ac===_0x32fa('0x9')){_0xcbf681[_0x32fa('0x4b')](_0x32fa('0x52'),[]['concat'](_0x3dd628[_0x4e51ac]));}else if(_0x4e51ac===_0x32fa('0x51')){var _0x588156='%'+_0x3dd628[_0x4e51ac]+'%';_0xcbf681[_0x32fa('0x4b')](_0x32fa('0x53'),_0x588156);}else if(_0x4e51ac===_0x32fa('0x48')){_0xcbf681['and'](_0x32fa('0x4c'),_0x3dd628[_0x4e51ac]);}else{_0xcbf681[_0x32fa('0x4b')]('c.'+_0x4e51ac+_0x32fa('0x54'),_0x3dd628[_0x4e51ac]);}});}return _0xcbf681;}function parseQueryParameters(_0x5be13e,_0x3d1898){var _0x215f22=getSqlClauses();return Promise[_0x32fa('0x55')]()[_0x32fa('0x56')](function(){return parseModelFields(_0x5be13e,_0x3d1898);})[_0x32fa('0x56')](function(_0x5b6232){_0x215f22[_0x32fa('0x57')][_0x32fa('0x4b')](_0x5b6232);return parseTagParameter(_0x5be13e[_0x32fa('0x58')]);})[_0x32fa('0x56')](function(_0x4f36a3){_0x215f22[_0x32fa('0x46')][_0x32fa('0x4a')][_0x32fa('0x4b')](_0x4f36a3);return parseSearchFilter(_0x5be13e[_0x32fa('0x59')]);})[_0x32fa('0x56')](function(_0x40dcd3){_0x215f22[_0x32fa('0x59')]=_0x40dcd3;return _0x215f22;});}function checkListsRestrictions(_0x39bb2b,_0x225247,_0x1adb87){var _0x41e15b=squel[_0x32fa('0x28')]();return Promise[_0x32fa('0x55')]()[_0x32fa('0x56')](function(){if(_0x225247[_0x32fa('0x8')]&&_0x39bb2b[_0x32fa('0x6')]===_0x32fa('0x7')&&!_0x1adb87){return _0x39bb2b[_0x32fa('0x5a')]({'attributes':['id'],'raw':!![]});}})[_0x32fa('0x56')](function(_0x3d745e){if(_0x3d745e){if(_0x3d745e['length']===0x0){_0x41e15b[_0x32fa('0x4b')](_0x32fa('0x5b'));}else{_0x41e15b[_0x32fa('0x4b')](_0x32fa('0x52'),_['map'](_0x3d745e,'id'));}}})[_0x32fa('0x56')](function(){return _0x41e15b;});}function buildContactsQuery(_0x53a20b,_0x2b016f,_0x346528,_0x2aa51e,_0x2b1b98,_0x1468af){if(_0x2b016f){_0x2b016f=_0x346528[_0x32fa('0x5c')];}_0x53a20b=addFieldsToQuery(_0x53a20b,_0x2b016f,_0x2aa51e,_0x1468af,!![]);var _0x69306d=squel['select']();_0x69306d=addFieldsToQuery(_0x69306d,_0x2b016f,_0x2aa51e,_0x1468af,![]);if(_0x2aa51e||_0x1468af){_0x53a20b=applyJoinClauses(_0x53a20b,!![]);_0x53a20b[_0x32fa('0x5d')]('c.id');if(_0x346528[_0x32fa('0x5e')]){_0x69306d[_0x32fa('0x5e')](_0x346528['limit']);}if(_0x346528[_0x32fa('0x5f')]){_0x69306d['offset'](_0x346528[_0x32fa('0x5f')]);}}else{_0x69306d=applyJoinClauses(_0x69306d,![]);_0x69306d['group'](_0x32fa('0x60'));if(_0x346528['limit']){_0x53a20b['limit'](_0x346528[_0x32fa('0x5e')]);}if(_0x346528[_0x32fa('0x5f')]){_0x53a20b[_0x32fa('0x5f')](_0x346528['offset']);}}_0x69306d[_0x32fa('0x61')](_0x2b1b98);if(_0x346528[_0x32fa('0x62')]){_0x346528['order'][_0x32fa('0x25')](function(_0x212c6c){_0x53a20b['order']('c.'+_0x212c6c[0x0],_0x212c6c[0x1]===_0x32fa('0x63')?![]:!![]);_0x69306d['order'](_0x32fa('0x64')+_0x212c6c[0x0],_0x212c6c[0x1]===_0x32fa('0x63')?![]:!![]);});}_0x69306d['from'](_0x53a20b,_0x32fa('0x11'));return _0x69306d;}function getFilteredContacts(_0xb92c1a){var _0xc4cff6=[];return db['Tag'][_0x32fa('0x65')]({'attributes':['id',_0x32fa('0x66'),_0x32fa('0x67')],'raw':!![]})[_0x32fa('0x56')](function(_0x1cc980){_0xc4cff6=_[_0x32fa('0x68')](_0x1cc980,'id');var _0x4a5d3f={'type':db['Sequelize'][_0x32fa('0x69')][_0x32fa('0x6a')],'model':db[_0x32fa('0x6b')],'mapToModel':!![],'nest':!![],'raw':!![]};return db['sequelize'][_0x32fa('0x6c')](_0xb92c1a[_0x32fa('0x6d')](),_0x4a5d3f);})[_0x32fa('0x56')](function(_0xdc75fb){_0xdc75fb[_0x32fa('0x25')](function(_0x17a218){if(_0x17a218[_0x32fa('0x22')]){_0x17a218[_0x32fa('0x6e')]=[];_0x17a218[_0x32fa('0x22')][_0x32fa('0x2c')](',')[_0x32fa('0x25')](function(_0x5e8365){_0x17a218[_0x32fa('0x6e')][_0x32fa('0x24')](_0xc4cff6[_0x5e8365]);});}delete _0x17a218[_0x32fa('0x22')];});return _0xdc75fb;});}function countFilteredContacts(_0x83f963,_0x338f66){var _0x4697a7=_0x83f963[_0x32fa('0x6f')]();_0x4697a7[_0x32fa('0x26')]('COUNT(*)');_0x4697a7=applyJoinClauses(_0x4697a7,!![]);_0x83f963['group']('c.id');var _0x4912f4=utils[_0x32fa('0x29')](_0x338f66);if(!_['isEmpty'](_0x4912f4)){_0x4697a7[_0x32fa('0xf')]('t.id\x20IN\x20?',_0x4912f4);}var _0x4418b9={'type':db[_0x32fa('0x70')]['QueryTypes']['SELECT'],'raw':!![]};return db[_0x32fa('0x71')][_0x32fa('0x6c')](_0x4697a7[_0x32fa('0x6d')](),_0x4418b9)[_0x32fa('0x56')](function(_0x211c54){return _0x211c54[0x0][_0x32fa('0x72')];});}module[_0x32fa('0x73')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};