Built motion from commit b5413ace.|2.6.9
[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 _0xac5e=['forEach','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','dateOfBirth','fieldType','datetime','castTo','DATE','buildExpression','default','value','start','end','Tag','map','tags','clause','and','ids','User','user','uc.UserId\x20=\x20?','some','name','compact','Contact','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','resolve','then','fields','tag','filter','agent','attributes','group','c.id','limit','offset','subqry.id','having','order','subqry.','color','keyBy','QueryTypes','SELECT','CmContact','sequelize','query','toString','Tags','clone','isEmpty','t.id\x20IN\x20?','exports','lodash','squel','../parsers/advancedSearch','../interaction/utils','../../mysqldb','role','search','autocomplete','true','select','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','.id','left_join','cm_contact_has_tags','t.id\x20=\x20ct.TagId','firstName','phone','fax','ListId','CompanyId','deletedAt','TagIds','includes','push','field','expr','getSelectedTags'];(function(_0x5a5011,_0x3778b9){var _0x2e6ee1=function(_0x5db251){while(--_0x5db251){_0x5a5011['push'](_0x5a5011['shift']());}};_0x2e6ee1(++_0x3778b9);}(_0xac5e,0x114));var _0xeac5=function(_0x3e9853,_0x420b90){_0x3e9853=_0x3e9853-0x0;var _0x50bc0f=_0xac5e[_0x3e9853];return _0x50bc0f;};'use strict';var _=require(_0xeac5('0x0'));var squel=require(_0xeac5('0x1'));var as=require(_0xeac5('0x2'));var qs=require('../parsers/qs');var utils=require(_0xeac5('0x3'));var db=require(_0xeac5('0x4'))['db'];function skipContactsQuery(_0x1123a4,_0x2504da){var _0x652b60=![];if(_0x1123a4[_0xeac5('0x5')]==='agent'&&!_0x2504da[_0xeac5('0x6')]&&!_0x2504da['ListId']&&_0x2504da[_0xeac5('0x7')]!==_0xeac5('0x8')){_0x652b60=!![];}return _0x652b60;}function getContactsSubquery(){return squel[_0xeac5('0x9')]()['from'](_0xeac5('0xa'),'c')[_0xeac5('0xb')](_0xeac5('0xc'));}function applyJoinClauses(_0x3ec988,_0x128981){var _0xa52070=_0x128981?'c':_0xeac5('0xd');_0x3ec988['left_join']('cm_user_has_contacts','uc','uc.CmContactId\x20=\x20'+_0xa52070+_0xeac5('0xe'))[_0xeac5('0xf')](_0xeac5('0x10'),'ct','ct.CmContactId\x20=\x20'+_0xa52070+_0xeac5('0xe'))[_0xeac5('0xf')]('tools_tags','t',_0xeac5('0x11'));return _0x3ec988;}function addFieldsToQuery(_0x18e2c5,_0x45b5f3,_0x3c6cb6,_0x57dab0,_0x4965a7){var _0x4c6648=_0x4965a7?'c':_0xeac5('0xd');if(!_0x45b5f3){_0x45b5f3=['id',_0xeac5('0x12'),'lastName',_0xeac5('0x13'),'mobile',_0xeac5('0x14'),'email',_0xeac5('0x15'),_0xeac5('0x16'),'createdAt','updatedAt',_0xeac5('0x17'),_0xeac5('0x18')];}else if(!_0x45b5f3[_0xeac5('0x19')]('id')){_0x45b5f3[_0xeac5('0x1a')]('id');}var _0x4fce42=_0x3c6cb6&&_0x4965a7||!_0x3c6cb6&&!_0x4965a7;if(_0x57dab0){_0x4fce42=_0x57dab0&&_0x4965a7||!_0x57dab0&&!_0x4965a7;}_0x45b5f3['forEach'](function(_0x29732b){if(_0x29732b===_0xeac5('0x18')){if(_0x4fce42){_0x18e2c5['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x29732b);}else if(_0x3c6cb6||_0x57dab0){_0x18e2c5[_0xeac5('0x1b')](_0x4c6648+'.'+_0x29732b);}}else{_0x18e2c5[_0xeac5('0x1b')](_0x4c6648+'.'+_0x29732b);}});return _0x18e2c5;}function getSqlClauses(){var _0x1510f7={'default':squel[_0xeac5('0x1c')](),'fields':squel[_0xeac5('0x1c')](),'filter':squel['expr'](),'tags':{'clause':squel['expr'](),'ids':null},'user':{'clause':squel[_0xeac5('0x1c')](),'skip':![]}};return _0x1510f7;}function parseTagParameter(_0x5c8f54){var _0x505700=squel[_0xeac5('0x1c')]();if(_0x5c8f54){var _0xc52f98=utils[_0xeac5('0x1d')](_0x5c8f54);_0xc52f98[_0xeac5('0x1e')](function(_0x35d7e9){_0x505700['or'](_0xeac5('0x1f'),'%,'+_0x35d7e9+',%');});}return _0x505700;}function parseSearchFilter(_0x3d8245){var _0x3df3c2=squel['expr']();if(_0x3d8245){var _0x15dd9a=_0x3d8245[_0xeac5('0x20')]('\x5c','\x5c\x5c')[_0xeac5('0x20')](/'/g,'\x27\x27');if(_0x15dd9a[_0xeac5('0x21')]('\x20')[_0xeac5('0x22')]>0x1){_0x3df3c2['or'](_0xeac5('0x23'),qs[_0xeac5('0x24')](_0x15dd9a),null);}else{if(qs[_0xeac5('0x25')](_0x15dd9a)){_0x3df3c2['or'](_0xeac5('0x26'),_0x15dd9a+'%');_0x3df3c2['or']('c.phone\x20LIKE\x20?',_0x15dd9a+'%');_0x3df3c2['or']('c.mobile\x20LIKE\x20?',_0x15dd9a+'%');_0x3df3c2['or'](_0xeac5('0x27'),_0x15dd9a+'%');}else if(qs[_0xeac5('0x28')](_0x15dd9a)){_0x3df3c2['or'](_0xeac5('0x29'),_0x15dd9a+'%');}else{_0x3df3c2['or'](_0xeac5('0x2a'),'%'+_0x15dd9a+'%');_0x3df3c2['or'](_0xeac5('0x2b'),'%'+_0x15dd9a+'%');_0x3df3c2['or']('c.email\x20LIKE\x20?','%'+_0x15dd9a+'%');}}}return _0x3df3c2;}function parseAdvancedSearchFilter(_0x227ad0,_0x15187b){var _0x37d421=getSqlClauses();var _0x42c0d2=as[_0xeac5('0x2c')](_0x227ad0);var _0x27f679=_0x42c0d2[_0xeac5('0x2d')];for(var _0x4dc024=0x0;_0x4dc024<_0x42c0d2[_0xeac5('0x2e')]['length'];_0x4dc024++){var _0x3374e9=_0x42c0d2[_0xeac5('0x2e')][_0x4dc024];var _0x970740='c';var _0x8b4388=_[_0xeac5('0x2f')](_0x15187b,['name',_0x3374e9[_0xeac5('0x1b')]]);if(_0x8b4388){if(_0x3374e9[_0xeac5('0x1b')]===_0xeac5('0x30')||_0x8b4388[_0xeac5('0x31')]===_0xeac5('0x32')){_0x3374e9[_0xeac5('0x33')]=_0xeac5('0x34');}var _0x2672b6=as[_0xeac5('0x35')](_0x970740,_0x8b4388['type'],_0x3374e9);_0x37d421[_0xeac5('0x36')][_0x27f679](_0x2672b6['text'],_0x2672b6[_0xeac5('0x37')][_0xeac5('0x38')],_0x2672b6['value'][_0xeac5('0x39')]);}else{if(_0x3374e9[_0xeac5('0x1b')]===_0xeac5('0x3a')){var _0x4e235b=_0x3374e9['value'][_0xeac5('0x21')](',')[_0xeac5('0x3b')](function(_0x2734a2){return Number(_0x2734a2);});var _0x3f9bf7=parseTagParameter(_0x4e235b);_0x37d421[_0xeac5('0x3c')][_0xeac5('0x3d')][_0xeac5('0x3e')](_0x3f9bf7);_0x37d421['tags'][_0xeac5('0x3f')]=_0x4e235b;}else if(_0x3374e9[_0xeac5('0x1b')]===_0xeac5('0x40')){_0x37d421[_0xeac5('0x41')][_0xeac5('0x3d')][_0xeac5('0x3e')](_0xeac5('0x42'),_0x3374e9[_0xeac5('0x37')]);_0x37d421[_0xeac5('0x41')]['skip']=!![];}}}return _0x37d421;}function parseModelFields(_0x417be6,_0x8ef263){var _0x567636=squel[_0xeac5('0x1c')]();var _0x19de0b=_(_0x417be6)['keys']()['map'](function(_0x236617){return _[_0xeac5('0x43')](_0x8ef263,[_0xeac5('0x44'),_0x236617])?_0x236617:undefined;})[_0xeac5('0x45')]()[_0xeac5('0x37')]();if(_0x417be6[_0xeac5('0x46')]){_0x19de0b[_0xeac5('0x1a')](_0xeac5('0x46'));}if(_0x19de0b['length']>0x0){_0x19de0b[_0xeac5('0x1e')](function(_0x167e4b){if(_0x167e4b===_0xeac5('0x15')){_0x567636['and'](_0xeac5('0x47'),[][_0xeac5('0x48')](_0x417be6[_0x167e4b]));}else if(_0x167e4b===_0xeac5('0x46')){var _0x190698='%'+_0x417be6[_0x167e4b]+'%';_0x567636[_0xeac5('0x3e')](_0xeac5('0x49'),_0x190698);}else{_0x567636[_0xeac5('0x3e')]('c.'+_0x167e4b+'\x20=\x20?',_0x417be6[_0x167e4b]);}});}return _0x567636;}function parseQueryParameters(_0xd70e5e,_0x460cbe){var _0x561280=getSqlClauses();return Promise[_0xeac5('0x4a')]()[_0xeac5('0x4b')](function(){return parseModelFields(_0xd70e5e,_0x460cbe);})[_0xeac5('0x4b')](function(_0x4f6f66){_0x561280[_0xeac5('0x4c')]['and'](_0x4f6f66);return parseTagParameter(_0xd70e5e[_0xeac5('0x4d')]);})[_0xeac5('0x4b')](function(_0x2a2959){_0x561280[_0xeac5('0x3c')][_0xeac5('0x3d')]['and'](_0x2a2959);return parseSearchFilter(_0xd70e5e[_0xeac5('0x4e')]);})[_0xeac5('0x4b')](function(_0x427456){_0x561280[_0xeac5('0x4e')]=_0x427456;return _0x561280;});}function checkListsRestrictions(_0x5983d3,_0x538861,_0x1cd045){var _0x3d6ee9=squel[_0xeac5('0x1c')]();return Promise[_0xeac5('0x4a')]()['then'](function(){if(_0x538861['search']&&_0x5983d3[_0xeac5('0x5')]===_0xeac5('0x4f')&&!_0x1cd045){return _0x5983d3['getLists']({'attributes':['id'],'raw':!![]});}})['then'](function(_0x1894cc){if(_0x1894cc){if(_0x1894cc['length']===0x0){_0x3d6ee9[_0xeac5('0x3e')]('c.ListId\x20IS\x20NULL');}else{_0x3d6ee9[_0xeac5('0x3e')]('c.ListId\x20IN\x20?',_[_0xeac5('0x3b')](_0x1894cc,'id'));}}})[_0xeac5('0x4b')](function(){return _0x3d6ee9;});}function buildContactsQuery(_0x592449,_0x4c39c6,_0x4b05cd,_0x1b0246,_0x2b4002,_0x45435e){if(_0x4c39c6){_0x4c39c6=_0x4b05cd[_0xeac5('0x50')];}_0x592449=addFieldsToQuery(_0x592449,_0x4c39c6,_0x1b0246,_0x45435e,!![]);var _0x2521f8=squel[_0xeac5('0x9')]();_0x2521f8=addFieldsToQuery(_0x2521f8,_0x4c39c6,_0x1b0246,_0x45435e,![]);if(_0x1b0246||_0x45435e){_0x592449=applyJoinClauses(_0x592449,!![]);_0x592449[_0xeac5('0x51')](_0xeac5('0x52'));if(_0x4b05cd['limit']){_0x2521f8[_0xeac5('0x53')](_0x4b05cd[_0xeac5('0x53')]);}if(_0x4b05cd[_0xeac5('0x54')]){_0x2521f8[_0xeac5('0x54')](_0x4b05cd[_0xeac5('0x54')]);}}else{_0x2521f8=applyJoinClauses(_0x2521f8,![]);_0x2521f8['group'](_0xeac5('0x55'));if(_0x4b05cd[_0xeac5('0x53')]){_0x592449['limit'](_0x4b05cd[_0xeac5('0x53')]);}if(_0x4b05cd['offset']){_0x592449[_0xeac5('0x54')](_0x4b05cd['offset']);}}_0x2521f8[_0xeac5('0x56')](_0x2b4002);if(_0x4b05cd[_0xeac5('0x57')]){_0x4b05cd[_0xeac5('0x57')][_0xeac5('0x1e')](function(_0x20bf4c){_0x592449[_0xeac5('0x57')]('c.'+_0x20bf4c[0x0],_0x20bf4c[0x1]==='DESC'?![]:!![]);_0x2521f8['order'](_0xeac5('0x58')+_0x20bf4c[0x0],_0x20bf4c[0x1]==='DESC'?![]:!![]);});}_0x2521f8['from'](_0x592449,_0xeac5('0xd'));return _0x2521f8;}function getFilteredContacts(_0x296e42){var _0x470265=[];return db[_0xeac5('0x3a')]['findAll']({'attributes':['id',_0xeac5('0x44'),_0xeac5('0x59')],'raw':!![]})['then'](function(_0x5d6e50){_0x470265=_[_0xeac5('0x5a')](_0x5d6e50,'id');var _0x5be567={'type':db['Sequelize'][_0xeac5('0x5b')][_0xeac5('0x5c')],'model':db[_0xeac5('0x5d')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xeac5('0x5e')][_0xeac5('0x5f')](_0x296e42[_0xeac5('0x60')](),_0x5be567);})['then'](function(_0x106de7){_0x106de7[_0xeac5('0x1e')](function(_0x485357){if(_0x485357['TagIds']){_0x485357['Tags']=[];_0x485357[_0xeac5('0x18')]['split'](',')[_0xeac5('0x1e')](function(_0x1f8d8f){_0x485357[_0xeac5('0x61')][_0xeac5('0x1a')](_0x470265[_0x1f8d8f]);});}delete _0x485357[_0xeac5('0x18')];});return _0x106de7;});}function countFilteredContacts(_0x56aa6a,_0x23e2a9){var _0x458f24=_0x56aa6a[_0xeac5('0x62')]();_0x458f24[_0xeac5('0x1b')]('COUNT(*)');_0x458f24=applyJoinClauses(_0x458f24,!![]);_0x56aa6a[_0xeac5('0x51')](_0xeac5('0x52'));var _0x1ca309=utils['getSelectedTags'](_0x23e2a9);if(!_[_0xeac5('0x63')](_0x1ca309)){_0x458f24[_0xeac5('0xb')](_0xeac5('0x64'),_0x1ca309);}var _0x369bc3={'type':db['Sequelize'][_0xeac5('0x5b')][_0xeac5('0x5c')],'raw':!![]};return db[_0xeac5('0x5e')]['query'](_0x458f24[_0xeac5('0x60')](),_0x369bc3)[_0xeac5('0x4b')](function(_0x3fe46a){return _0x3fe46a[0x0]['COUNT(*)'];});}module[_0xeac5('0x65')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};