Built motion from commit b5996064.|2.6.21
[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 _0x0b76=['c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','dateOfBirth','fieldType','datetime','castTo','text','value','start','end','Tag','map','tags','User','user','and','skip','some','name','compact','Contact','push','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','uc.UserId\x20=\x20?','\x20=\x20?','fields','tag','then','clause','resolve','getLists','c.ListId\x20IS\x20NULL','attributes','c.id','limit','offset','group','having','order','DESC','findAll','color','keyBy','Sequelize','QueryTypes','CmContact','sequelize','query','toString','Tags','split','clone','isEmpty','t.id\x20IN\x20?','SELECT','exports','lodash','../parsers/advancedSearch','../parsers/qs','../../mysqldb','role','search','ListId','autocomplete','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','tools_tags','t.id\x20=\x20ct.TagId','firstName','phone','mobile','fax','createdAt','updatedAt','deletedAt','TagIds','GROUP_CONCAT(DISTINCT\x20t.id)','field','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','length','getFullTextValue','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?'];(function(_0xfac19b,_0x51b4b6){var _0x59446a=function(_0x3949ff){while(--_0x3949ff){_0xfac19b['push'](_0xfac19b['shift']());}};_0x59446a(++_0x51b4b6);}(_0x0b76,0x1e5));var _0x60b7=function(_0x24dfbd,_0x23c14f){_0x24dfbd=_0x24dfbd-0x0;var _0x11ebb4=_0x0b76[_0x24dfbd];return _0x11ebb4;};'use strict';var _=require(_0x60b7('0x0'));var squel=require('squel');var as=require(_0x60b7('0x1'));var qs=require(_0x60b7('0x2'));var utils=require('../interaction/utils');var db=require(_0x60b7('0x3'))['db'];function skipContactsQuery(_0x226c45,_0x589538){var _0x574742=![];if(_0x226c45[_0x60b7('0x4')]==='agent'&&!_0x589538[_0x60b7('0x5')]&&!_0x589538[_0x60b7('0x6')]&&_0x589538[_0x60b7('0x7')]!==_0x60b7('0x8')){_0x574742=!![];}return _0x574742;}function getContactsSubquery(){return squel[_0x60b7('0x9')]()[_0x60b7('0xa')](_0x60b7('0xb'),'c')[_0x60b7('0xc')](_0x60b7('0xd'));}function applyJoinClauses(_0x49134f,_0x5b776d){var _0x25b4f8=_0x5b776d?'c':_0x60b7('0xe');_0x49134f[_0x60b7('0xf')](_0x60b7('0x10'),'uc',_0x60b7('0x11')+_0x25b4f8+_0x60b7('0x12'))['left_join'](_0x60b7('0x13'),'ct','ct.CmContactId\x20=\x20'+_0x25b4f8+_0x60b7('0x12'))['left_join'](_0x60b7('0x14'),'t',_0x60b7('0x15'));return _0x49134f;}function addFieldsToQuery(_0x31d204,_0x55e66b,_0x2358d9,_0x4b9dc4,_0x45543b){var _0x345a8e=_0x45543b?'c':_0x60b7('0xe');if(!_0x55e66b){_0x55e66b=['id',_0x60b7('0x16'),'lastName',_0x60b7('0x17'),_0x60b7('0x18'),_0x60b7('0x19'),'email',_0x60b7('0x6'),'CompanyId',_0x60b7('0x1a'),_0x60b7('0x1b'),_0x60b7('0x1c'),_0x60b7('0x1d')];}else if(!_0x55e66b['includes']('id')){_0x55e66b['push']('id');}var _0x233a2a=_0x2358d9&&_0x45543b||!_0x2358d9&&!_0x45543b;if(_0x4b9dc4){_0x233a2a=_0x4b9dc4&&_0x45543b||!_0x4b9dc4&&!_0x45543b;}_0x55e66b['forEach'](function(_0x46d3d3){if(_0x46d3d3===_0x60b7('0x1d')){if(_0x233a2a){_0x31d204['field'](_0x60b7('0x1e'),_0x46d3d3);}else if(_0x2358d9||_0x4b9dc4){_0x31d204['field'](_0x345a8e+'.'+_0x46d3d3);}}else{_0x31d204[_0x60b7('0x1f')](_0x345a8e+'.'+_0x46d3d3);}});return _0x31d204;}function getSqlClauses(){var _0x11ac5d={'default':squel[_0x60b7('0x20')](),'fields':squel[_0x60b7('0x20')](),'filter':squel[_0x60b7('0x20')](),'tags':{'clause':squel[_0x60b7('0x20')](),'ids':null},'user':{'clause':squel['expr'](),'skip':![]}};return _0x11ac5d;}function parseTagParameter(_0x26348a){var _0x386398=squel['expr']();if(_0x26348a){var _0x4e0d44=utils[_0x60b7('0x21')](_0x26348a);_0x4e0d44[_0x60b7('0x22')](function(_0x17ea90){_0x386398['or'](_0x60b7('0x23'),'%,'+_0x17ea90+',%');});}return _0x386398;}function parseSearchFilter(_0x4f6950){var _0x321583=squel[_0x60b7('0x20')]();if(_0x4f6950){var _0x82aa02=_0x4f6950[_0x60b7('0x24')]('\x5c','\x5c\x5c')[_0x60b7('0x24')](/'/g,'\x27\x27');if(_0x82aa02['split']('\x20')[_0x60b7('0x25')]>0x1){_0x321583['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x60b7('0x26')](_0x82aa02,!![]),null);}else{if(qs['isNumeric'](_0x82aa02)){_0x321583['or'](_0x60b7('0x27'),_0x82aa02+'%');_0x321583['or'](_0x60b7('0x28'),_0x82aa02+'%');_0x321583['or'](_0x60b7('0x29'),_0x82aa02+'%');_0x321583['or'](_0x60b7('0x2a'),_0x82aa02+'%');}else if(qs[_0x60b7('0x2b')](_0x82aa02)){_0x321583['or'](_0x60b7('0x2c'),_0x82aa02+'%');}else{_0x321583['or']('c.firstName\x20LIKE\x20?','%'+_0x82aa02+'%');_0x321583['or'](_0x60b7('0x2d'),'%'+_0x82aa02+'%');_0x321583['or'](_0x60b7('0x2c'),'%'+_0x82aa02+'%');}}}return _0x321583;}function parseAdvancedSearchFilter(_0x51dbc3,_0x4b5108){var _0x5df4f4=getSqlClauses();var _0x2adc8e=as[_0x60b7('0x2e')](_0x51dbc3);var _0x563b8b=_0x2adc8e[_0x60b7('0x2f')];for(var _0x106d35=0x0;_0x106d35<_0x2adc8e[_0x60b7('0x30')]['length'];_0x106d35++){var _0x2aba27=_0x2adc8e[_0x60b7('0x30')][_0x106d35];var _0x9a77b0='c';var _0x4f59be=_[_0x60b7('0x31')](_0x4b5108,['name',_0x2aba27[_0x60b7('0x1f')]]);if(_0x4f59be){if(_0x2aba27[_0x60b7('0x1f')]===_0x60b7('0x32')||_0x4f59be[_0x60b7('0x33')]===_0x60b7('0x34')){_0x2aba27[_0x60b7('0x35')]='DATE';}var _0x27e91e=as['buildExpression'](_0x9a77b0,_0x4f59be['type'],_0x2aba27);_0x5df4f4['default'][_0x563b8b](_0x27e91e[_0x60b7('0x36')],_0x27e91e[_0x60b7('0x37')][_0x60b7('0x38')],_0x27e91e[_0x60b7('0x37')][_0x60b7('0x39')]);}else{if(_0x2aba27[_0x60b7('0x1f')]===_0x60b7('0x3a')){var _0x2956d4=_0x2aba27[_0x60b7('0x37')]['split'](',')[_0x60b7('0x3b')](function(_0x273b36){return Number(_0x273b36);});var _0x22f81=parseTagParameter(_0x2956d4);_0x5df4f4[_0x60b7('0x3c')]['clause']['and'](_0x22f81);_0x5df4f4[_0x60b7('0x3c')]['ids']=_0x2956d4;}else if(_0x2aba27[_0x60b7('0x1f')]===_0x60b7('0x3d')){_0x5df4f4[_0x60b7('0x3e')]['clause'][_0x60b7('0x3f')]('uc.UserId\x20=\x20?',_0x2aba27[_0x60b7('0x37')]);_0x5df4f4[_0x60b7('0x3e')][_0x60b7('0x40')]=!![];}}}return _0x5df4f4;}function parseModelFields(_0x336f83,_0x57d0cc){var _0x20f3f4=squel[_0x60b7('0x20')]();var _0x1eb97c=_(_0x336f83)['keys']()['map'](function(_0x46e837){return _[_0x60b7('0x41')](_0x57d0cc,[_0x60b7('0x42'),_0x46e837])?_0x46e837:undefined;})[_0x60b7('0x43')]()[_0x60b7('0x37')]();if(_0x336f83[_0x60b7('0x44')]){_0x1eb97c[_0x60b7('0x45')](_0x60b7('0x44'));}if(_0x336f83[_0x60b7('0x3d')]){_0x1eb97c[_0x60b7('0x45')]('User');}if(_0x1eb97c[_0x60b7('0x25')]>0x0){_0x1eb97c[_0x60b7('0x22')](function(_0x508bd9){if(_0x508bd9==='ListId'){_0x20f3f4[_0x60b7('0x3f')](_0x60b7('0x46'),[][_0x60b7('0x47')](_0x336f83[_0x508bd9]));}else if(_0x508bd9===_0x60b7('0x44')){var _0x19a854='%'+_0x336f83[_0x508bd9]+'%';_0x20f3f4[_0x60b7('0x3f')](_0x60b7('0x48'),_0x19a854);}else if(_0x508bd9===_0x60b7('0x3d')){_0x20f3f4['and'](_0x60b7('0x49'),_0x336f83[_0x508bd9]);}else{_0x20f3f4['and']('c.'+_0x508bd9+_0x60b7('0x4a'),_0x336f83[_0x508bd9]);}});}return _0x20f3f4;}function parseQueryParameters(_0x97bbb2,_0x550a5a){var _0x378098=getSqlClauses();return Promise['resolve']()['then'](function(){return parseModelFields(_0x97bbb2,_0x550a5a);})['then'](function(_0x1e0c39){_0x378098[_0x60b7('0x4b')][_0x60b7('0x3f')](_0x1e0c39);return parseTagParameter(_0x97bbb2[_0x60b7('0x4c')]);})[_0x60b7('0x4d')](function(_0x786adb){_0x378098[_0x60b7('0x3c')][_0x60b7('0x4e')][_0x60b7('0x3f')](_0x786adb);return parseSearchFilter(_0x97bbb2['filter']);})[_0x60b7('0x4d')](function(_0x2b85c3){_0x378098['filter']=_0x2b85c3;return _0x378098;});}function checkListsRestrictions(_0x3a2486,_0x477428,_0x949755){var _0x3f80cf=squel[_0x60b7('0x20')]();return Promise[_0x60b7('0x4f')]()[_0x60b7('0x4d')](function(){if(_0x477428[_0x60b7('0x5')]&&_0x3a2486[_0x60b7('0x4')]==='agent'&&!_0x949755){return _0x3a2486[_0x60b7('0x50')]({'attributes':['id'],'raw':!![]});}})[_0x60b7('0x4d')](function(_0x1652e8){if(_0x1652e8){if(_0x1652e8[_0x60b7('0x25')]===0x0){_0x3f80cf[_0x60b7('0x3f')](_0x60b7('0x51'));}else{_0x3f80cf[_0x60b7('0x3f')]('c.ListId\x20IN\x20?',_[_0x60b7('0x3b')](_0x1652e8,'id'));}}})[_0x60b7('0x4d')](function(){return _0x3f80cf;});}function buildContactsQuery(_0x32bf2b,_0x50e3e0,_0x6e0108,_0xc97311,_0x43a716,_0x1a86c8){if(_0x50e3e0){_0x50e3e0=_0x6e0108[_0x60b7('0x52')];}_0x32bf2b=addFieldsToQuery(_0x32bf2b,_0x50e3e0,_0xc97311,_0x1a86c8,!![]);var _0x2b5d52=squel[_0x60b7('0x9')]();_0x2b5d52=addFieldsToQuery(_0x2b5d52,_0x50e3e0,_0xc97311,_0x1a86c8,![]);if(_0xc97311||_0x1a86c8){_0x32bf2b=applyJoinClauses(_0x32bf2b,!![]);_0x32bf2b['group'](_0x60b7('0x53'));if(_0x6e0108[_0x60b7('0x54')]){_0x2b5d52[_0x60b7('0x54')](_0x6e0108[_0x60b7('0x54')]);}if(_0x6e0108[_0x60b7('0x55')]){_0x2b5d52[_0x60b7('0x55')](_0x6e0108[_0x60b7('0x55')]);}}else{_0x2b5d52=applyJoinClauses(_0x2b5d52,![]);_0x2b5d52[_0x60b7('0x56')]('subqry.id');if(_0x6e0108[_0x60b7('0x54')]){_0x32bf2b[_0x60b7('0x54')](_0x6e0108[_0x60b7('0x54')]);}if(_0x6e0108[_0x60b7('0x55')]){_0x32bf2b[_0x60b7('0x55')](_0x6e0108[_0x60b7('0x55')]);}}_0x2b5d52[_0x60b7('0x57')](_0x43a716);if(_0x6e0108[_0x60b7('0x58')]){_0x6e0108[_0x60b7('0x58')][_0x60b7('0x22')](function(_0x4e4d56){_0x32bf2b[_0x60b7('0x58')]('c.'+_0x4e4d56[0x0],_0x4e4d56[0x1]===_0x60b7('0x59')?![]:!![]);_0x2b5d52[_0x60b7('0x58')]('subqry.'+_0x4e4d56[0x0],_0x4e4d56[0x1]===_0x60b7('0x59')?![]:!![]);});}_0x2b5d52[_0x60b7('0xa')](_0x32bf2b,_0x60b7('0xe'));return _0x2b5d52;}function getFilteredContacts(_0xee1399){var _0x5efbdc=[];return db[_0x60b7('0x3a')][_0x60b7('0x5a')]({'attributes':['id',_0x60b7('0x42'),_0x60b7('0x5b')],'raw':!![]})[_0x60b7('0x4d')](function(_0x3d9aa0){_0x5efbdc=_[_0x60b7('0x5c')](_0x3d9aa0,'id');var _0x14b16e={'type':db[_0x60b7('0x5d')][_0x60b7('0x5e')]['SELECT'],'model':db[_0x60b7('0x5f')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x60b7('0x60')][_0x60b7('0x61')](_0xee1399[_0x60b7('0x62')](),_0x14b16e);})[_0x60b7('0x4d')](function(_0x2b3c3a){_0x2b3c3a['forEach'](function(_0x5d3802){if(_0x5d3802[_0x60b7('0x1d')]){_0x5d3802[_0x60b7('0x63')]=[];_0x5d3802[_0x60b7('0x1d')][_0x60b7('0x64')](',')['forEach'](function(_0x4200e7){_0x5d3802[_0x60b7('0x63')][_0x60b7('0x45')](_0x5efbdc[_0x4200e7]);});}delete _0x5d3802[_0x60b7('0x1d')];});return _0x2b3c3a;});}function countFilteredContacts(_0x313bda,_0x2221d9){var _0x57228f=_0x313bda[_0x60b7('0x65')]();_0x57228f['field']('COUNT(*)');_0x57228f=applyJoinClauses(_0x57228f,!![]);_0x313bda['group'](_0x60b7('0x53'));var _0x508259=utils[_0x60b7('0x21')](_0x2221d9);if(!_[_0x60b7('0x66')](_0x508259)){_0x57228f[_0x60b7('0xc')](_0x60b7('0x67'),_0x508259);}var _0xf213ab={'type':db[_0x60b7('0x5d')][_0x60b7('0x5e')][_0x60b7('0x68')],'raw':!![]};return db[_0x60b7('0x60')][_0x60b7('0x61')](_0x57228f[_0x60b7('0x62')](),_0xf213ab)[_0x60b7('0x4d')](function(_0x1d3660){return _0x1d3660[0x0]['COUNT(*)'];});}module[_0x60b7('0x69')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};