Built motion from commit 1fa89557.|2.6.10
[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 _0xd8bd=['value','start','end','Tag','map','tags','clause','ids','User','user','and','uc.UserId\x20=\x20?','skip','Contact','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','then','tag','filter','resolve','role','agent','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','attributes','group','c.id','limit','offset','subqry.id','having','order','DESC','subqry.','from','findAll','color','keyBy','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','toString','Tags','COUNT(*)','isEmpty','t.id\x20IN\x20?','exports','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','ListId','select','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','t.id\x20=\x20ct.TagId','firstName','lastName','mobile','fax','email','CompanyId','updatedAt','TagIds','push','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','replace','split','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','length','find','name','dateOfBirth','fieldType','datetime','DATE','buildExpression','type','default','text'];(function(_0x152121,_0x120c53){var _0x592a85=function(_0x241cab){while(--_0x241cab){_0x152121['push'](_0x152121['shift']());}};_0x592a85(++_0x120c53);}(_0xd8bd,0x1cf));var _0xdd8b=function(_0x41b6a3,_0x11bc16){_0x41b6a3=_0x41b6a3-0x0;var _0x535e79=_0xd8bd[_0x41b6a3];return _0x535e79;};'use strict';var _=require('lodash');var squel=require(_0xdd8b('0x0'));var as=require(_0xdd8b('0x1'));var qs=require(_0xdd8b('0x2'));var utils=require(_0xdd8b('0x3'));var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x5a7be5,_0x38edef){var _0x260b1d=![];if(_0x5a7be5['role']==='agent'&&!_0x38edef['search']&&!_0x38edef[_0xdd8b('0x4')]&&_0x38edef['autocomplete']!=='true'){_0x260b1d=!![];}return _0x260b1d;}function getContactsSubquery(){return squel[_0xdd8b('0x5')]()['from']('cm_contacts','c')[_0xdd8b('0x6')](_0xdd8b('0x7'));}function applyJoinClauses(_0xcf744c,_0xa140b){var _0x163ff6=_0xa140b?'c':_0xdd8b('0x8');_0xcf744c[_0xdd8b('0x9')](_0xdd8b('0xa'),'uc',_0xdd8b('0xb')+_0x163ff6+_0xdd8b('0xc'))['left_join'](_0xdd8b('0xd'),'ct','ct.CmContactId\x20=\x20'+_0x163ff6+'.id')[_0xdd8b('0x9')]('tools_tags','t',_0xdd8b('0xe'));return _0xcf744c;}function addFieldsToQuery(_0x3b7b01,_0x11008f,_0x48ed9d,_0xdc38c8,_0x38d07b){var _0x11e0dd=_0x38d07b?'c':_0xdd8b('0x8');if(!_0x11008f){_0x11008f=['id',_0xdd8b('0xf'),_0xdd8b('0x10'),'phone',_0xdd8b('0x11'),_0xdd8b('0x12'),_0xdd8b('0x13'),_0xdd8b('0x4'),_0xdd8b('0x14'),'createdAt',_0xdd8b('0x15'),'deletedAt',_0xdd8b('0x16')];}else if(!_0x11008f['includes']('id')){_0x11008f[_0xdd8b('0x17')]('id');}var _0x2c0113=_0x48ed9d&&_0x38d07b||!_0x48ed9d&&!_0x38d07b;if(_0xdc38c8){_0x2c0113=_0xdc38c8&&_0x38d07b||!_0xdc38c8&&!_0x38d07b;}_0x11008f[_0xdd8b('0x18')](function(_0x1b6f8d){if(_0x1b6f8d===_0xdd8b('0x16')){if(_0x2c0113){_0x3b7b01[_0xdd8b('0x19')](_0xdd8b('0x1a'),_0x1b6f8d);}else if(_0x48ed9d||_0xdc38c8){_0x3b7b01[_0xdd8b('0x19')](_0x11e0dd+'.'+_0x1b6f8d);}}else{_0x3b7b01[_0xdd8b('0x19')](_0x11e0dd+'.'+_0x1b6f8d);}});return _0x3b7b01;}function getSqlClauses(){var _0x50633f={'default':squel[_0xdd8b('0x1b')](),'fields':squel[_0xdd8b('0x1b')](),'filter':squel[_0xdd8b('0x1b')](),'tags':{'clause':squel[_0xdd8b('0x1b')](),'ids':null},'user':{'clause':squel[_0xdd8b('0x1b')](),'skip':![]}};return _0x50633f;}function parseTagParameter(_0x3c11ec){var _0x4485f2=squel[_0xdd8b('0x1b')]();if(_0x3c11ec){var _0x23e687=utils[_0xdd8b('0x1c')](_0x3c11ec);_0x23e687[_0xdd8b('0x18')](function(_0x2ac642){_0x4485f2['or']('CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2ac642+',%');});}return _0x4485f2;}function parseSearchFilter(_0x2e0d34){var _0x26df41=squel[_0xdd8b('0x1b')]();if(_0x2e0d34){var _0x5af320=_0x2e0d34['replace']('\x5c','\x5c\x5c')[_0xdd8b('0x1d')](/'/g,'\x27\x27');if(_0x5af320[_0xdd8b('0x1e')]('\x20')['length']>0x1){_0x26df41['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xdd8b('0x1f')](_0x5af320),null);}else{if(qs[_0xdd8b('0x20')](_0x5af320)){_0x26df41['or'](_0xdd8b('0x21'),_0x5af320+'%');_0x26df41['or'](_0xdd8b('0x22'),_0x5af320+'%');_0x26df41['or']('c.mobile\x20LIKE\x20?',_0x5af320+'%');_0x26df41['or']('c.fax\x20LIKE\x20?',_0x5af320+'%');}else if(qs[_0xdd8b('0x23')](_0x5af320)){_0x26df41['or'](_0xdd8b('0x24'),_0x5af320+'%');}else{_0x26df41['or'](_0xdd8b('0x25'),'%'+_0x5af320+'%');_0x26df41['or']('c.lastName\x20LIKE\x20?','%'+_0x5af320+'%');_0x26df41['or'](_0xdd8b('0x24'),'%'+_0x5af320+'%');}}}return _0x26df41;}function parseAdvancedSearchFilter(_0x1cc448,_0x2898ec){var _0x48e246=getSqlClauses();var _0x36f2b8=as[_0xdd8b('0x26')](_0x1cc448);var _0x4b7379=_0x36f2b8[_0xdd8b('0x27')];for(var _0x27630b=0x0;_0x27630b<_0x36f2b8[_0xdd8b('0x28')][_0xdd8b('0x29')];_0x27630b++){var _0x1d1a19=_0x36f2b8[_0xdd8b('0x28')][_0x27630b];var _0x20ee21='c';var _0x18c6bb=_[_0xdd8b('0x2a')](_0x2898ec,[_0xdd8b('0x2b'),_0x1d1a19[_0xdd8b('0x19')]]);if(_0x18c6bb){if(_0x1d1a19[_0xdd8b('0x19')]===_0xdd8b('0x2c')||_0x18c6bb[_0xdd8b('0x2d')]===_0xdd8b('0x2e')){_0x1d1a19['castTo']=_0xdd8b('0x2f');}var _0x581d5d=as[_0xdd8b('0x30')](_0x20ee21,_0x18c6bb[_0xdd8b('0x31')],_0x1d1a19);_0x48e246[_0xdd8b('0x32')][_0x4b7379](_0x581d5d[_0xdd8b('0x33')],_0x581d5d[_0xdd8b('0x34')][_0xdd8b('0x35')],_0x581d5d[_0xdd8b('0x34')][_0xdd8b('0x36')]);}else{if(_0x1d1a19[_0xdd8b('0x19')]===_0xdd8b('0x37')){var _0xa2501b=_0x1d1a19['value'][_0xdd8b('0x1e')](',')[_0xdd8b('0x38')](function(_0x487e42){return Number(_0x487e42);});var _0x1e2fe4=parseTagParameter(_0xa2501b);_0x48e246[_0xdd8b('0x39')][_0xdd8b('0x3a')]['and'](_0x1e2fe4);_0x48e246[_0xdd8b('0x39')][_0xdd8b('0x3b')]=_0xa2501b;}else if(_0x1d1a19[_0xdd8b('0x19')]===_0xdd8b('0x3c')){_0x48e246[_0xdd8b('0x3d')][_0xdd8b('0x3a')][_0xdd8b('0x3e')](_0xdd8b('0x3f'),_0x1d1a19[_0xdd8b('0x34')]);_0x48e246[_0xdd8b('0x3d')][_0xdd8b('0x40')]=!![];}}}return _0x48e246;}function parseModelFields(_0x4fbd8b,_0xbe4edd){var _0x20f6ec=squel[_0xdd8b('0x1b')]();var _0x5e842e=_(_0x4fbd8b)['keys']()[_0xdd8b('0x38')](function(_0x1d6cf6){return _['some'](_0xbe4edd,['name',_0x1d6cf6])?_0x1d6cf6:undefined;})['compact']()[_0xdd8b('0x34')]();if(_0x4fbd8b['Contact']){_0x5e842e[_0xdd8b('0x17')](_0xdd8b('0x41'));}if(_0x5e842e[_0xdd8b('0x29')]>0x0){_0x5e842e[_0xdd8b('0x18')](function(_0x35b132){if(_0x35b132===_0xdd8b('0x4')){_0x20f6ec[_0xdd8b('0x3e')]('c.ListId\x20IN\x20?',[][_0xdd8b('0x42')](_0x4fbd8b[_0x35b132]));}else if(_0x35b132===_0xdd8b('0x41')){var _0x40cf5f='%'+_0x4fbd8b[_0x35b132]+'%';_0x20f6ec[_0xdd8b('0x3e')](_0xdd8b('0x43'),_0x40cf5f);}else{_0x20f6ec[_0xdd8b('0x3e')]('c.'+_0x35b132+'\x20=\x20?',_0x4fbd8b[_0x35b132]);}});}return _0x20f6ec;}function parseQueryParameters(_0xd109e9,_0x2292c7){var _0x281772=getSqlClauses();return Promise['resolve']()['then'](function(){return parseModelFields(_0xd109e9,_0x2292c7);})[_0xdd8b('0x44')](function(_0x267f14){_0x281772['fields'][_0xdd8b('0x3e')](_0x267f14);return parseTagParameter(_0xd109e9[_0xdd8b('0x45')]);})[_0xdd8b('0x44')](function(_0x3bbf86){_0x281772[_0xdd8b('0x39')][_0xdd8b('0x3a')]['and'](_0x3bbf86);return parseSearchFilter(_0xd109e9[_0xdd8b('0x46')]);})[_0xdd8b('0x44')](function(_0x2aafff){_0x281772[_0xdd8b('0x46')]=_0x2aafff;return _0x281772;});}function checkListsRestrictions(_0xde8cb7,_0x2e7261,_0x3b59d2){var _0x5cf030=squel[_0xdd8b('0x1b')]();return Promise[_0xdd8b('0x47')]()[_0xdd8b('0x44')](function(){if(_0x2e7261['search']&&_0xde8cb7[_0xdd8b('0x48')]===_0xdd8b('0x49')&&!_0x3b59d2){return _0xde8cb7[_0xdd8b('0x4a')]({'attributes':['id'],'raw':!![]});}})[_0xdd8b('0x44')](function(_0x428a0b){if(_0x428a0b){if(_0x428a0b['length']===0x0){_0x5cf030[_0xdd8b('0x3e')](_0xdd8b('0x4b'));}else{_0x5cf030[_0xdd8b('0x3e')](_0xdd8b('0x4c'),_[_0xdd8b('0x38')](_0x428a0b,'id'));}}})[_0xdd8b('0x44')](function(){return _0x5cf030;});}function buildContactsQuery(_0x1f76af,_0x3a2547,_0x1ee0e7,_0x33fb4e,_0x2e1ce6,_0xa984cc){if(_0x3a2547){_0x3a2547=_0x1ee0e7[_0xdd8b('0x4d')];}_0x1f76af=addFieldsToQuery(_0x1f76af,_0x3a2547,_0x33fb4e,_0xa984cc,!![]);var _0x15d5e7=squel[_0xdd8b('0x5')]();_0x15d5e7=addFieldsToQuery(_0x15d5e7,_0x3a2547,_0x33fb4e,_0xa984cc,![]);if(_0x33fb4e||_0xa984cc){_0x1f76af=applyJoinClauses(_0x1f76af,!![]);_0x1f76af[_0xdd8b('0x4e')](_0xdd8b('0x4f'));if(_0x1ee0e7[_0xdd8b('0x50')]){_0x15d5e7['limit'](_0x1ee0e7[_0xdd8b('0x50')]);}if(_0x1ee0e7[_0xdd8b('0x51')]){_0x15d5e7['offset'](_0x1ee0e7['offset']);}}else{_0x15d5e7=applyJoinClauses(_0x15d5e7,![]);_0x15d5e7['group'](_0xdd8b('0x52'));if(_0x1ee0e7['limit']){_0x1f76af['limit'](_0x1ee0e7[_0xdd8b('0x50')]);}if(_0x1ee0e7[_0xdd8b('0x51')]){_0x1f76af['offset'](_0x1ee0e7[_0xdd8b('0x51')]);}}_0x15d5e7[_0xdd8b('0x53')](_0x2e1ce6);if(_0x1ee0e7['order']){_0x1ee0e7[_0xdd8b('0x54')][_0xdd8b('0x18')](function(_0x50bad0){_0x1f76af[_0xdd8b('0x54')]('c.'+_0x50bad0[0x0],_0x50bad0[0x1]===_0xdd8b('0x55')?![]:!![]);_0x15d5e7[_0xdd8b('0x54')](_0xdd8b('0x56')+_0x50bad0[0x0],_0x50bad0[0x1]==='DESC'?![]:!![]);});}_0x15d5e7[_0xdd8b('0x57')](_0x1f76af,_0xdd8b('0x8'));return _0x15d5e7;}function getFilteredContacts(_0xac0d77){var _0x293843=[];return db[_0xdd8b('0x37')][_0xdd8b('0x58')]({'attributes':['id',_0xdd8b('0x2b'),_0xdd8b('0x59')],'raw':!![]})['then'](function(_0x26df74){_0x293843=_[_0xdd8b('0x5a')](_0x26df74,'id');var _0x27f989={'type':db[_0xdd8b('0x5b')][_0xdd8b('0x5c')][_0xdd8b('0x5d')],'model':db[_0xdd8b('0x5e')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xdd8b('0x5f')][_0xdd8b('0x60')](_0xac0d77[_0xdd8b('0x61')](),_0x27f989);})['then'](function(_0x46bcce){_0x46bcce[_0xdd8b('0x18')](function(_0x4d1a39){if(_0x4d1a39['TagIds']){_0x4d1a39[_0xdd8b('0x62')]=[];_0x4d1a39['TagIds'][_0xdd8b('0x1e')](',')[_0xdd8b('0x18')](function(_0x6a067b){_0x4d1a39[_0xdd8b('0x62')][_0xdd8b('0x17')](_0x293843[_0x6a067b]);});}delete _0x4d1a39[_0xdd8b('0x16')];});return _0x46bcce;});}function countFilteredContacts(_0x25735a,_0x382b70){var _0x113f93=_0x25735a['clone']();_0x113f93['field'](_0xdd8b('0x63'));_0x113f93=applyJoinClauses(_0x113f93,!![]);_0x25735a['group'](_0xdd8b('0x4f'));var _0x1e4c00=utils['getSelectedTags'](_0x382b70);if(!_[_0xdd8b('0x64')](_0x1e4c00)){_0x113f93['where'](_0xdd8b('0x65'),_0x1e4c00);}var _0x1e843d={'type':db[_0xdd8b('0x5b')][_0xdd8b('0x5c')]['SELECT'],'raw':!![]};return db[_0xdd8b('0x5f')][_0xdd8b('0x60')](_0x113f93['toString'](),_0x1e843d)['then'](function(_0x26da7c){return _0x26da7c[0x0][_0xdd8b('0x63')];});}module[_0xdd8b('0x66')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};