Built motion from commit d5e4af8c.|2.6.23
[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 _0x3193=['dateOfBirth','castTo','DATE','type','default','text','value','start','end','map','tags','clause','and','ids','user','uc.UserId\x20=\x20?','skip','keys','some','compact','Contact','User','push','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','group','c.id','limit','offset','subqry.id','having','order','DESC','subqry.','subqry','Tag','findAll','color','keyBy','Sequelize','SELECT','CmContact','sequelize','query','toString','Tags','clone','COUNT(*)','isEmpty','t.id\x20IN\x20?','QueryTypes','exports','lodash','squel','../parsers/advancedSearch','../../mysqldb','role','agent','search','ListId','autocomplete','true','from','where','c.deletedAt\x20IS\x20NULL','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','left_join','t.id\x20=\x20ct.TagId','lastName','phone','mobile','fax','createdAt','deletedAt','TagIds','includes','forEach','field','expr','getSelectedTags','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.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'];(function(_0x439ea2,_0x504140){var _0x103472=function(_0x1c6a10){while(--_0x1c6a10){_0x439ea2['push'](_0x439ea2['shift']());}};_0x103472(++_0x504140);}(_0x3193,0x115));var _0x3319=function(_0x458f80,_0x23459f){_0x458f80=_0x458f80-0x0;var _0x2586b9=_0x3193[_0x458f80];return _0x2586b9;};'use strict';var _=require(_0x3319('0x0'));var squel=require(_0x3319('0x1'));var as=require(_0x3319('0x2'));var qs=require('../parsers/qs');var utils=require('../interaction/utils');var db=require(_0x3319('0x3'))['db'];function skipContactsQuery(_0x41ffc8,_0x408d01){var _0x53a03c=![];if(_0x41ffc8[_0x3319('0x4')]===_0x3319('0x5')&&!_0x408d01[_0x3319('0x6')]&&!_0x408d01[_0x3319('0x7')]&&_0x408d01[_0x3319('0x8')]!==_0x3319('0x9')){_0x53a03c=!![];}return _0x53a03c;}function getContactsSubquery(){return squel['select']()[_0x3319('0xa')]('cm_contacts','c')[_0x3319('0xb')](_0x3319('0xc'));}function applyJoinClauses(_0x42782a,_0x38b02e){var _0x4b39b7=_0x38b02e?'c':'subqry';_0x42782a['left_join'](_0x3319('0xd'),'uc',_0x3319('0xe')+_0x4b39b7+_0x3319('0xf'))['left_join'](_0x3319('0x10'),'ct',_0x3319('0x11')+_0x4b39b7+'.id')[_0x3319('0x12')]('tools_tags','t',_0x3319('0x13'));return _0x42782a;}function addFieldsToQuery(_0x5bb693,_0x5784f4,_0x3a33c9,_0x421974,_0x23b754){var _0x4a39a3=_0x23b754?'c':'subqry';if(!_0x5784f4){_0x5784f4=['id','firstName',_0x3319('0x14'),_0x3319('0x15'),_0x3319('0x16'),_0x3319('0x17'),'email',_0x3319('0x7'),'CompanyId',_0x3319('0x18'),'updatedAt',_0x3319('0x19'),_0x3319('0x1a')];}else if(!_0x5784f4[_0x3319('0x1b')]('id')){_0x5784f4['push']('id');}var _0x11b92d=_0x3a33c9&&_0x23b754||!_0x3a33c9&&!_0x23b754;if(_0x421974){_0x11b92d=_0x421974&&_0x23b754||!_0x421974&&!_0x23b754;}_0x5784f4[_0x3319('0x1c')](function(_0x526c53){if(_0x526c53===_0x3319('0x1a')){if(_0x11b92d){_0x5bb693['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x526c53);}else if(_0x3a33c9||_0x421974){_0x5bb693['field'](_0x4a39a3+'.'+_0x526c53);}}else{_0x5bb693[_0x3319('0x1d')](_0x4a39a3+'.'+_0x526c53);}});return _0x5bb693;}function getSqlClauses(){var _0x19b0d6={'default':squel['expr'](),'fields':squel[_0x3319('0x1e')](),'filter':squel[_0x3319('0x1e')](),'tags':{'clause':squel[_0x3319('0x1e')](),'ids':null},'user':{'clause':squel['expr'](),'skip':![]}};return _0x19b0d6;}function parseTagParameter(_0xe1231b){var _0x4bce77=squel[_0x3319('0x1e')]();if(_0xe1231b){var _0x4e8bf3=utils[_0x3319('0x1f')](_0xe1231b);_0x4e8bf3[_0x3319('0x1c')](function(_0x419fc6){_0x4bce77['or'](_0x3319('0x20'),'%,'+_0x419fc6+',%');});}return _0x4bce77;}function parseSearchFilter(_0x6dec1c){var _0x4fad42=squel[_0x3319('0x1e')]();if(_0x6dec1c){var _0x404e95=_0x6dec1c[_0x3319('0x21')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x404e95[_0x3319('0x22')]('\x20')[_0x3319('0x23')]>0x1){_0x4fad42['or'](_0x3319('0x24'),qs[_0x3319('0x25')](_0x404e95,!![]),null);}else{if(qs[_0x3319('0x26')](_0x404e95)){_0x4fad42['or']('c.id\x20LIKE\x20?',_0x404e95+'%');_0x4fad42['or']('c.phone\x20LIKE\x20?',_0x404e95+'%');_0x4fad42['or'](_0x3319('0x27'),_0x404e95+'%');_0x4fad42['or'](_0x3319('0x28'),_0x404e95+'%');}else if(qs[_0x3319('0x29')](_0x404e95)){_0x4fad42['or'](_0x3319('0x2a'),_0x404e95+'%');}else{_0x4fad42['or'](_0x3319('0x2b'),'%'+_0x404e95+'%');_0x4fad42['or'](_0x3319('0x2c'),'%'+_0x404e95+'%');_0x4fad42['or'](_0x3319('0x2a'),'%'+_0x404e95+'%');}}}return _0x4fad42;}function parseAdvancedSearchFilter(_0x35c1fe,_0x1cdc6c){var _0x4c0851=getSqlClauses();var _0x37da92=as[_0x3319('0x2d')](_0x35c1fe);var _0x56f3b0=_0x37da92[_0x3319('0x2e')];for(var _0x55190d=0x0;_0x55190d<_0x37da92[_0x3319('0x2f')][_0x3319('0x23')];_0x55190d++){var _0x47664d=_0x37da92[_0x3319('0x2f')][_0x55190d];var _0x273d2c='c';var _0x6e38a4=_[_0x3319('0x30')](_0x1cdc6c,[_0x3319('0x31'),_0x47664d[_0x3319('0x1d')]]);if(_0x6e38a4){if(_0x47664d[_0x3319('0x1d')]===_0x3319('0x32')||_0x6e38a4['fieldType']==='datetime'){_0x47664d[_0x3319('0x33')]=_0x3319('0x34');}var _0x45f5e0=as['buildExpression'](_0x273d2c,_0x6e38a4[_0x3319('0x35')],_0x47664d);_0x4c0851[_0x3319('0x36')][_0x56f3b0](_0x45f5e0[_0x3319('0x37')],_0x45f5e0[_0x3319('0x38')][_0x3319('0x39')],_0x45f5e0[_0x3319('0x38')][_0x3319('0x3a')]);}else{if(_0x47664d[_0x3319('0x1d')]==='Tag'){var _0x2d78f8=_0x47664d[_0x3319('0x38')][_0x3319('0x22')](',')[_0x3319('0x3b')](function(_0x49a412){return Number(_0x49a412);});var _0x1c2f38=parseTagParameter(_0x2d78f8);_0x4c0851[_0x3319('0x3c')][_0x3319('0x3d')][_0x3319('0x3e')](_0x1c2f38);_0x4c0851[_0x3319('0x3c')][_0x3319('0x3f')]=_0x2d78f8;}else if(_0x47664d[_0x3319('0x1d')]==='User'){_0x4c0851[_0x3319('0x40')][_0x3319('0x3d')]['and'](_0x3319('0x41'),_0x47664d[_0x3319('0x38')]);_0x4c0851['user'][_0x3319('0x42')]=!![];}}}return _0x4c0851;}function parseModelFields(_0x4aa1c6,_0xef600c){var _0x3b8ef9=squel[_0x3319('0x1e')]();var _0x52eb97=_(_0x4aa1c6)[_0x3319('0x43')]()[_0x3319('0x3b')](function(_0x958418){return _[_0x3319('0x44')](_0xef600c,[_0x3319('0x31'),_0x958418])?_0x958418:undefined;})[_0x3319('0x45')]()[_0x3319('0x38')]();if(_0x4aa1c6[_0x3319('0x46')]){_0x52eb97['push'](_0x3319('0x46'));}if(_0x4aa1c6[_0x3319('0x47')]){_0x52eb97[_0x3319('0x48')](_0x3319('0x47'));}if(_0x52eb97[_0x3319('0x23')]>0x0){_0x52eb97[_0x3319('0x1c')](function(_0x466414){if(_0x466414===_0x3319('0x7')){_0x3b8ef9['and'](_0x3319('0x49'),[]['concat'](_0x4aa1c6[_0x466414]));}else if(_0x466414===_0x3319('0x46')){var _0x429b6f='%'+_0x4aa1c6[_0x466414]+'%';_0x3b8ef9[_0x3319('0x3e')](_0x3319('0x4a'),_0x429b6f);}else if(_0x466414===_0x3319('0x47')){_0x3b8ef9['and'](_0x3319('0x41'),_0x4aa1c6[_0x466414]);}else{_0x3b8ef9[_0x3319('0x3e')]('c.'+_0x466414+_0x3319('0x4b'),_0x4aa1c6[_0x466414]);}});}return _0x3b8ef9;}function parseQueryParameters(_0x38795d,_0x2e16d1){var _0x38afb7=getSqlClauses();return Promise[_0x3319('0x4c')]()[_0x3319('0x4d')](function(){return parseModelFields(_0x38795d,_0x2e16d1);})[_0x3319('0x4d')](function(_0x2de87e){_0x38afb7[_0x3319('0x4e')][_0x3319('0x3e')](_0x2de87e);return parseTagParameter(_0x38795d[_0x3319('0x4f')]);})['then'](function(_0x161b67){_0x38afb7[_0x3319('0x3c')][_0x3319('0x3d')]['and'](_0x161b67);return parseSearchFilter(_0x38795d['filter']);})['then'](function(_0x369a92){_0x38afb7[_0x3319('0x50')]=_0x369a92;return _0x38afb7;});}function checkListsRestrictions(_0x3cb9c2,_0x1949e6,_0x38ffdc){var _0xad60a4=squel[_0x3319('0x1e')]();return Promise[_0x3319('0x4c')]()[_0x3319('0x4d')](function(){if(_0x1949e6[_0x3319('0x6')]&&_0x3cb9c2[_0x3319('0x4')]==='agent'&&!_0x38ffdc){return _0x3cb9c2[_0x3319('0x51')]({'attributes':['id'],'raw':!![]});}})[_0x3319('0x4d')](function(_0x4b68d0){if(_0x4b68d0){if(_0x4b68d0['length']===0x0){_0xad60a4[_0x3319('0x3e')]('c.ListId\x20IS\x20NULL');}else{_0xad60a4[_0x3319('0x3e')](_0x3319('0x49'),_[_0x3319('0x3b')](_0x4b68d0,'id'));}}})[_0x3319('0x4d')](function(){return _0xad60a4;});}function buildContactsQuery(_0x32054c,_0x5c69f1,_0x3084ef,_0x194118,_0x3dfc3e,_0x46610c){if(_0x5c69f1){_0x5c69f1=_0x3084ef['attributes'];}_0x32054c=addFieldsToQuery(_0x32054c,_0x5c69f1,_0x194118,_0x46610c,!![]);var _0x170f64=squel['select']();_0x170f64=addFieldsToQuery(_0x170f64,_0x5c69f1,_0x194118,_0x46610c,![]);if(_0x194118||_0x46610c){_0x32054c=applyJoinClauses(_0x32054c,!![]);_0x32054c[_0x3319('0x52')](_0x3319('0x53'));if(_0x3084ef[_0x3319('0x54')]){_0x170f64[_0x3319('0x54')](_0x3084ef[_0x3319('0x54')]);}if(_0x3084ef[_0x3319('0x55')]){_0x170f64['offset'](_0x3084ef[_0x3319('0x55')]);}}else{_0x170f64=applyJoinClauses(_0x170f64,![]);_0x170f64['group'](_0x3319('0x56'));if(_0x3084ef['limit']){_0x32054c[_0x3319('0x54')](_0x3084ef[_0x3319('0x54')]);}if(_0x3084ef[_0x3319('0x55')]){_0x32054c[_0x3319('0x55')](_0x3084ef['offset']);}}_0x170f64[_0x3319('0x57')](_0x3dfc3e);if(_0x3084ef[_0x3319('0x58')]){_0x3084ef['order'][_0x3319('0x1c')](function(_0x4c628c){_0x32054c[_0x3319('0x58')]('c.'+_0x4c628c[0x0],_0x4c628c[0x1]===_0x3319('0x59')?![]:!![]);_0x170f64[_0x3319('0x58')](_0x3319('0x5a')+_0x4c628c[0x0],_0x4c628c[0x1]===_0x3319('0x59')?![]:!![]);});}_0x170f64['from'](_0x32054c,_0x3319('0x5b'));return _0x170f64;}function getFilteredContacts(_0x180af0){var _0x24e1a6=[];return db[_0x3319('0x5c')][_0x3319('0x5d')]({'attributes':['id',_0x3319('0x31'),_0x3319('0x5e')],'raw':!![]})[_0x3319('0x4d')](function(_0x4ff971){_0x24e1a6=_[_0x3319('0x5f')](_0x4ff971,'id');var _0x2947fb={'type':db[_0x3319('0x60')]['QueryTypes'][_0x3319('0x61')],'model':db[_0x3319('0x62')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x3319('0x63')][_0x3319('0x64')](_0x180af0[_0x3319('0x65')](),_0x2947fb);})['then'](function(_0x43356e){_0x43356e[_0x3319('0x1c')](function(_0x32fbed){if(_0x32fbed['TagIds']){_0x32fbed[_0x3319('0x66')]=[];_0x32fbed[_0x3319('0x1a')]['split'](',')[_0x3319('0x1c')](function(_0x239462){_0x32fbed[_0x3319('0x66')][_0x3319('0x48')](_0x24e1a6[_0x239462]);});}delete _0x32fbed['TagIds'];});return _0x43356e;});}function countFilteredContacts(_0x2abc68,_0x592d29){var _0x31f32a=_0x2abc68[_0x3319('0x67')]();_0x31f32a['field'](_0x3319('0x68'));_0x31f32a=applyJoinClauses(_0x31f32a,!![]);_0x2abc68[_0x3319('0x52')](_0x3319('0x53'));var _0x5a51b6=utils[_0x3319('0x1f')](_0x592d29);if(!_[_0x3319('0x69')](_0x5a51b6)){_0x31f32a['where'](_0x3319('0x6a'),_0x5a51b6);}var _0x2187f3={'type':db[_0x3319('0x60')][_0x3319('0x6b')]['SELECT'],'raw':!![]};return db['sequelize']['query'](_0x31f32a[_0x3319('0x65')](),_0x2187f3)[_0x3319('0x4d')](function(_0x573681){return _0x573681[0x0]['COUNT(*)'];});}module[_0x3319('0x6c')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};