b73664b8c01891d1cb0a41b6d71839d52c95a1f6
[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 _0xfa1b=['compact','Contact','User','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','tag','filter','c.ListId\x20IS\x20NULL','attributes','group','c.id','limit','offset','subqry.id','having','order','DESC','subqry.','from','findAll','color','keyBy','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','toString','clone','COUNT(*)','isEmpty','where','t.id\x20IN\x20?','squel','../parsers/advancedSearch','../interaction/utils','role','agent','search','ListId','autocomplete','true','select','cm_contacts','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','t.id\x20=\x20ct.TagId','phone','mobile','fax','CompanyId','createdAt','updatedAt','deletedAt','TagIds','includes','push','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.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','name','fieldType','datetime','castTo','DATE','buildExpression','text','value','end','Tag','map','clause','and','tags','ids','user','uc.UserId\x20=\x20?','skip','keys'];(function(_0x277a61,_0x65cfa7){var _0x187b36=function(_0x47288d){while(--_0x47288d){_0x277a61['push'](_0x277a61['shift']());}};_0x187b36(++_0x65cfa7);}(_0xfa1b,0xfa));var _0xbfa1=function(_0x37f266,_0x245e7d){_0x37f266=_0x37f266-0x0;var _0x2a6251=_0xfa1b[_0x37f266];return _0x2a6251;};'use strict';var _=require('lodash');var squel=require(_0xbfa1('0x0'));var as=require(_0xbfa1('0x1'));var qs=require('../parsers/qs');var utils=require(_0xbfa1('0x2'));var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x4c1056,_0x7ee8){var _0x4c55c2=![];if(_0x4c1056[_0xbfa1('0x3')]===_0xbfa1('0x4')&&!_0x7ee8[_0xbfa1('0x5')]&&!_0x7ee8[_0xbfa1('0x6')]&&_0x7ee8[_0xbfa1('0x7')]!==_0xbfa1('0x8')){_0x4c55c2=!![];}return _0x4c55c2;}function getContactsSubquery(){return squel[_0xbfa1('0x9')]()['from'](_0xbfa1('0xa'),'c')['where'](_0xbfa1('0xb'));}function applyJoinClauses(_0x653b25,_0x58a482){var _0x5248f8=_0x58a482?'c':_0xbfa1('0xc');_0x653b25[_0xbfa1('0xd')](_0xbfa1('0xe'),'uc','uc.CmContactId\x20=\x20'+_0x5248f8+_0xbfa1('0xf'))[_0xbfa1('0xd')](_0xbfa1('0x10'),'ct',_0xbfa1('0x11')+_0x5248f8+_0xbfa1('0xf'))[_0xbfa1('0xd')]('tools_tags','t',_0xbfa1('0x12'));return _0x653b25;}function addFieldsToQuery(_0xf74e48,_0xc6f2c8,_0x59e2c6,_0x17ecfa,_0x15980f){var _0x1ca7d1=_0x15980f?'c':_0xbfa1('0xc');if(!_0xc6f2c8){_0xc6f2c8=['id','firstName','lastName',_0xbfa1('0x13'),_0xbfa1('0x14'),_0xbfa1('0x15'),'email',_0xbfa1('0x6'),_0xbfa1('0x16'),_0xbfa1('0x17'),_0xbfa1('0x18'),_0xbfa1('0x19'),_0xbfa1('0x1a')];}else if(!_0xc6f2c8[_0xbfa1('0x1b')]('id')){_0xc6f2c8[_0xbfa1('0x1c')]('id');}var _0x230588=_0x59e2c6&&_0x15980f||!_0x59e2c6&&!_0x15980f;if(_0x17ecfa){_0x230588=_0x17ecfa&&_0x15980f||!_0x17ecfa&&!_0x15980f;}_0xc6f2c8[_0xbfa1('0x1d')](function(_0x3a079e){if(_0x3a079e===_0xbfa1('0x1a')){if(_0x230588){_0xf74e48[_0xbfa1('0x1e')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x3a079e);}else if(_0x59e2c6||_0x17ecfa){_0xf74e48[_0xbfa1('0x1e')](_0x1ca7d1+'.'+_0x3a079e);}}else{_0xf74e48['field'](_0x1ca7d1+'.'+_0x3a079e);}});return _0xf74e48;}function getSqlClauses(){var _0xa070c0={'default':squel[_0xbfa1('0x1f')](),'fields':squel['expr'](),'filter':squel[_0xbfa1('0x1f')](),'tags':{'clause':squel[_0xbfa1('0x1f')](),'ids':null},'user':{'clause':squel[_0xbfa1('0x1f')](),'skip':![]}};return _0xa070c0;}function parseTagParameter(_0x479561){var _0xe11ac7=squel[_0xbfa1('0x1f')]();if(_0x479561){var _0x392c4f=utils[_0xbfa1('0x20')](_0x479561);_0x392c4f[_0xbfa1('0x1d')](function(_0x4a1aea){_0xe11ac7['or'](_0xbfa1('0x21'),'%,'+_0x4a1aea+',%');});}return _0xe11ac7;}function parseSearchFilter(_0x5e2dc7){var _0x6bad9a=squel[_0xbfa1('0x1f')]();if(_0x5e2dc7){var _0x30e9de=_0x5e2dc7[_0xbfa1('0x22')]('\x5c','\x5c\x5c')[_0xbfa1('0x22')](/'/g,'\x27\x27');if(_0x30e9de[_0xbfa1('0x23')]('\x20')[_0xbfa1('0x24')]>0x1){_0x6bad9a['or'](_0xbfa1('0x25'),qs[_0xbfa1('0x26')](_0x30e9de,!![]),null);}else{if(qs[_0xbfa1('0x27')](_0x30e9de)){_0x6bad9a['or']('c.id\x20LIKE\x20?',_0x30e9de+'%');_0x6bad9a['or'](_0xbfa1('0x28'),_0x30e9de+'%');_0x6bad9a['or']('c.mobile\x20LIKE\x20?',_0x30e9de+'%');_0x6bad9a['or'](_0xbfa1('0x29'),_0x30e9de+'%');}else if(qs['isEmail'](_0x30e9de)){_0x6bad9a['or'](_0xbfa1('0x2a'),_0x30e9de+'%');}else{_0x6bad9a['or'](_0xbfa1('0x2b'),'%'+_0x30e9de+'%');_0x6bad9a['or'](_0xbfa1('0x2c'),'%'+_0x30e9de+'%');_0x6bad9a['or'](_0xbfa1('0x2a'),'%'+_0x30e9de+'%');}}}return _0x6bad9a;}function parseAdvancedSearchFilter(_0x50258d,_0x4aac14){var _0x3e3d43=getSqlClauses();var _0x76cf3a=as[_0xbfa1('0x2d')](_0x50258d);var _0x1dfda0=_0x76cf3a[_0xbfa1('0x2e')];for(var _0x20d8f9=0x0;_0x20d8f9<_0x76cf3a['conditions'][_0xbfa1('0x24')];_0x20d8f9++){var _0x1fdad0=_0x76cf3a[_0xbfa1('0x2f')][_0x20d8f9];var _0x1de0dd='c';var _0x38a625=_[_0xbfa1('0x30')](_0x4aac14,[_0xbfa1('0x31'),_0x1fdad0[_0xbfa1('0x1e')]]);if(_0x38a625){if(_0x1fdad0[_0xbfa1('0x1e')]==='dateOfBirth'||_0x38a625[_0xbfa1('0x32')]===_0xbfa1('0x33')){_0x1fdad0[_0xbfa1('0x34')]=_0xbfa1('0x35');}var _0x109afb=as[_0xbfa1('0x36')](_0x1de0dd,_0x38a625['type'],_0x1fdad0);_0x3e3d43['default'][_0x1dfda0](_0x109afb[_0xbfa1('0x37')],_0x109afb['value']['start'],_0x109afb[_0xbfa1('0x38')][_0xbfa1('0x39')]);}else{if(_0x1fdad0[_0xbfa1('0x1e')]===_0xbfa1('0x3a')){var _0x537dcb=_0x1fdad0['value'][_0xbfa1('0x23')](',')[_0xbfa1('0x3b')](function(_0x57005a){return Number(_0x57005a);});var _0x344178=parseTagParameter(_0x537dcb);_0x3e3d43['tags'][_0xbfa1('0x3c')][_0xbfa1('0x3d')](_0x344178);_0x3e3d43[_0xbfa1('0x3e')][_0xbfa1('0x3f')]=_0x537dcb;}else if(_0x1fdad0[_0xbfa1('0x1e')]==='User'){_0x3e3d43[_0xbfa1('0x40')][_0xbfa1('0x3c')]['and'](_0xbfa1('0x41'),_0x1fdad0[_0xbfa1('0x38')]);_0x3e3d43[_0xbfa1('0x40')][_0xbfa1('0x42')]=!![];}}}return _0x3e3d43;}function parseModelFields(_0x4a473d,_0x68fa7c){var _0x1f3f7f=squel[_0xbfa1('0x1f')]();var _0x52e9ad=_(_0x4a473d)[_0xbfa1('0x43')]()[_0xbfa1('0x3b')](function(_0x243b68){return _['some'](_0x68fa7c,[_0xbfa1('0x31'),_0x243b68])?_0x243b68:undefined;})[_0xbfa1('0x44')]()[_0xbfa1('0x38')]();if(_0x4a473d['Contact']){_0x52e9ad[_0xbfa1('0x1c')](_0xbfa1('0x45'));}if(_0x4a473d[_0xbfa1('0x46')]){_0x52e9ad[_0xbfa1('0x1c')](_0xbfa1('0x46'));}if(_0x52e9ad[_0xbfa1('0x24')]>0x0){_0x52e9ad[_0xbfa1('0x1d')](function(_0x144b8a){if(_0x144b8a==='ListId'){_0x1f3f7f[_0xbfa1('0x3d')](_0xbfa1('0x47'),[][_0xbfa1('0x48')](_0x4a473d[_0x144b8a]));}else if(_0x144b8a===_0xbfa1('0x45')){var _0x12829d='%'+_0x4a473d[_0x144b8a]+'%';_0x1f3f7f[_0xbfa1('0x3d')](_0xbfa1('0x49'),_0x12829d);}else if(_0x144b8a===_0xbfa1('0x46')){_0x1f3f7f[_0xbfa1('0x3d')](_0xbfa1('0x41'),_0x4a473d[_0x144b8a]);}else{_0x1f3f7f[_0xbfa1('0x3d')]('c.'+_0x144b8a+_0xbfa1('0x4a'),_0x4a473d[_0x144b8a]);}});}return _0x1f3f7f;}function parseQueryParameters(_0x20b73e,_0x2ddb7b){var _0x2b8607=getSqlClauses();return Promise[_0xbfa1('0x4b')]()[_0xbfa1('0x4c')](function(){return parseModelFields(_0x20b73e,_0x2ddb7b);})['then'](function(_0x4f2939){_0x2b8607['fields'][_0xbfa1('0x3d')](_0x4f2939);return parseTagParameter(_0x20b73e[_0xbfa1('0x4d')]);})[_0xbfa1('0x4c')](function(_0x38cade){_0x2b8607[_0xbfa1('0x3e')][_0xbfa1('0x3c')]['and'](_0x38cade);return parseSearchFilter(_0x20b73e[_0xbfa1('0x4e')]);})[_0xbfa1('0x4c')](function(_0x30aa03){_0x2b8607[_0xbfa1('0x4e')]=_0x30aa03;return _0x2b8607;});}function checkListsRestrictions(_0x18b1c1,_0x4209e9,_0x520265){var _0x155049=squel[_0xbfa1('0x1f')]();return Promise['resolve']()[_0xbfa1('0x4c')](function(){if(_0x4209e9['search']&&_0x18b1c1[_0xbfa1('0x3')]===_0xbfa1('0x4')&&!_0x520265){return _0x18b1c1['getLists']({'attributes':['id'],'raw':!![]});}})['then'](function(_0x263e58){if(_0x263e58){if(_0x263e58[_0xbfa1('0x24')]===0x0){_0x155049[_0xbfa1('0x3d')](_0xbfa1('0x4f'));}else{_0x155049[_0xbfa1('0x3d')](_0xbfa1('0x47'),_['map'](_0x263e58,'id'));}}})[_0xbfa1('0x4c')](function(){return _0x155049;});}function buildContactsQuery(_0x2517d9,_0x20742b,_0x487067,_0x218343,_0x521b93,_0x4ed4a3){if(_0x20742b){_0x20742b=_0x487067[_0xbfa1('0x50')];}_0x2517d9=addFieldsToQuery(_0x2517d9,_0x20742b,_0x218343,_0x4ed4a3,!![]);var _0x24f66b=squel[_0xbfa1('0x9')]();_0x24f66b=addFieldsToQuery(_0x24f66b,_0x20742b,_0x218343,_0x4ed4a3,![]);if(_0x218343||_0x4ed4a3){_0x2517d9=applyJoinClauses(_0x2517d9,!![]);_0x2517d9[_0xbfa1('0x51')](_0xbfa1('0x52'));if(_0x487067[_0xbfa1('0x53')]){_0x24f66b['limit'](_0x487067[_0xbfa1('0x53')]);}if(_0x487067['offset']){_0x24f66b[_0xbfa1('0x54')](_0x487067[_0xbfa1('0x54')]);}}else{_0x24f66b=applyJoinClauses(_0x24f66b,![]);_0x24f66b[_0xbfa1('0x51')](_0xbfa1('0x55'));if(_0x487067[_0xbfa1('0x53')]){_0x2517d9[_0xbfa1('0x53')](_0x487067[_0xbfa1('0x53')]);}if(_0x487067[_0xbfa1('0x54')]){_0x2517d9[_0xbfa1('0x54')](_0x487067[_0xbfa1('0x54')]);}}_0x24f66b[_0xbfa1('0x56')](_0x521b93);if(_0x487067['order']){_0x487067[_0xbfa1('0x57')]['forEach'](function(_0xde48f4){_0x2517d9['order']('c.'+_0xde48f4[0x0],_0xde48f4[0x1]===_0xbfa1('0x58')?![]:!![]);_0x24f66b[_0xbfa1('0x57')](_0xbfa1('0x59')+_0xde48f4[0x0],_0xde48f4[0x1]==='DESC'?![]:!![]);});}_0x24f66b[_0xbfa1('0x5a')](_0x2517d9,_0xbfa1('0xc'));return _0x24f66b;}function getFilteredContacts(_0x3de8a9){var _0x50e7b4=[];return db[_0xbfa1('0x3a')][_0xbfa1('0x5b')]({'attributes':['id',_0xbfa1('0x31'),_0xbfa1('0x5c')],'raw':!![]})[_0xbfa1('0x4c')](function(_0x541dab){_0x50e7b4=_[_0xbfa1('0x5d')](_0x541dab,'id');var _0x216f31={'type':db[_0xbfa1('0x5e')][_0xbfa1('0x5f')][_0xbfa1('0x60')],'model':db[_0xbfa1('0x61')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xbfa1('0x62')][_0xbfa1('0x63')](_0x3de8a9[_0xbfa1('0x64')](),_0x216f31);})['then'](function(_0x439661){_0x439661['forEach'](function(_0x3d01b5){if(_0x3d01b5[_0xbfa1('0x1a')]){_0x3d01b5['Tags']=[];_0x3d01b5[_0xbfa1('0x1a')][_0xbfa1('0x23')](',')['forEach'](function(_0x16986a){_0x3d01b5['Tags'][_0xbfa1('0x1c')](_0x50e7b4[_0x16986a]);});}delete _0x3d01b5['TagIds'];});return _0x439661;});}function countFilteredContacts(_0x52cf16,_0x4f6160){var _0x5215e6=_0x52cf16[_0xbfa1('0x65')]();_0x5215e6[_0xbfa1('0x1e')](_0xbfa1('0x66'));_0x5215e6=applyJoinClauses(_0x5215e6,!![]);_0x52cf16[_0xbfa1('0x51')](_0xbfa1('0x52'));var _0x2c5ef0=utils[_0xbfa1('0x20')](_0x4f6160);if(!_[_0xbfa1('0x67')](_0x2c5ef0)){_0x5215e6[_0xbfa1('0x68')](_0xbfa1('0x69'),_0x2c5ef0);}var _0x2b1d28={'type':db[_0xbfa1('0x5e')][_0xbfa1('0x5f')]['SELECT'],'raw':!![]};return db[_0xbfa1('0x62')][_0xbfa1('0x63')](_0x5215e6['toString'](),_0x2b1d28)['then'](function(_0x54453b){return _0x54453b[0x0][_0xbfa1('0x66')];});}module['exports']={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};