Built motion from commit f57cc866.|2.6.31
[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 _0xa38b=['push','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','escapeLIKESpecialChars','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.phone\x20LIKE\x20?','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','fieldType','datetime','castTo','DATE','type','default','value','end','Tag','split','tags','clause','and','uc.UserId\x20=\x20?','user','skip','keys','map','some','compact','Contact','ListId','c.ListId\x20IN\x20?','concat','User','\x20=\x20?','resolve','then','fields','tag','filter','attributes','group','c.id','limit','subqry.id','offset','having','order','subqry.','DESC','findAll','color','keyBy','QueryTypes','SELECT','CmContact','sequelize','query','toString','Tags','clone','COUNT(*)','isEmpty','where','t.id\x20IN\x20?','Sequelize','exports','lodash','../../mysqldb','role','agent','search','autocomplete','true','select','from','cm_contacts','c.deletedAt\x20IS\x20NULL','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','ct.CmContactId\x20=\x20','subqry','phone','mobile','email','CompanyId','createdAt','updatedAt','deletedAt','TagIds','includes'];(function(_0x32ca32,_0x238b2b){var _0x5438ff=function(_0x1e3337){while(--_0x1e3337){_0x32ca32['push'](_0x32ca32['shift']());}};_0x5438ff(++_0x238b2b);}(_0xa38b,0x19b));var _0xba38=function(_0x1b0f2b,_0x16a480){_0x1b0f2b=_0x1b0f2b-0x0;var _0x284828=_0xa38b[_0x1b0f2b];return _0x284828;};'use strict';var _=require(_0xba38('0x0'));var squel=require('squel');var as=require('../parsers/advancedSearch');var qs=require('../parsers/qs');var utils=require('../interaction/utils');var db=require(_0xba38('0x1'))['db'];function skipContactsQuery(_0xccd365,_0x54ab26){var _0x8c97b=![];if(_0xccd365[_0xba38('0x2')]===_0xba38('0x3')&&!_0x54ab26[_0xba38('0x4')]&&!_0x54ab26['ListId']&&_0x54ab26[_0xba38('0x5')]!==_0xba38('0x6')){_0x8c97b=!![];}return _0x8c97b;}function getContactsSubquery(){return squel[_0xba38('0x7')]()[_0xba38('0x8')](_0xba38('0x9'),'c')['where'](_0xba38('0xa'));}function applyJoinClauses(_0x1d86fb,_0xc17e03){var _0x7ab323=_0xc17e03?'c':'subqry';_0x1d86fb[_0xba38('0xb')](_0xba38('0xc'),'uc',_0xba38('0xd')+_0x7ab323+'.id')[_0xba38('0xb')]('cm_contact_has_tags','ct',_0xba38('0xe')+_0x7ab323+'.id')[_0xba38('0xb')]('tools_tags','t','t.id\x20=\x20ct.TagId');return _0x1d86fb;}function addFieldsToQuery(_0x2b5bb6,_0x2e1fa3,_0x347812,_0x5e2ea8,_0xd26bf4){var _0x4110fa=_0xd26bf4?'c':_0xba38('0xf');if(!_0x2e1fa3){_0x2e1fa3=['id','firstName','lastName',_0xba38('0x10'),_0xba38('0x11'),'fax',_0xba38('0x12'),'ListId',_0xba38('0x13'),_0xba38('0x14'),_0xba38('0x15'),_0xba38('0x16'),_0xba38('0x17')];}else if(!_0x2e1fa3[_0xba38('0x18')]('id')){_0x2e1fa3[_0xba38('0x19')]('id');}var _0x82249f=_0x347812&&_0xd26bf4||!_0x347812&&!_0xd26bf4;if(_0x5e2ea8){_0x82249f=_0x5e2ea8&&_0xd26bf4||!_0x5e2ea8&&!_0xd26bf4;}_0x2e1fa3[_0xba38('0x1a')](function(_0x4eae62){if(_0x4eae62===_0xba38('0x17')){if(_0x82249f){_0x2b5bb6[_0xba38('0x1b')](_0xba38('0x1c'),_0x4eae62);}else if(_0x347812||_0x5e2ea8){_0x2b5bb6[_0xba38('0x1b')](_0x4110fa+'.'+_0x4eae62);}}else{_0x2b5bb6[_0xba38('0x1b')](_0x4110fa+'.'+_0x4eae62);}});return _0x2b5bb6;}function getSqlClauses(){var _0x537f81={'default':squel[_0xba38('0x1d')](),'fields':squel[_0xba38('0x1d')](),'filter':squel['expr'](),'tags':{'clause':squel[_0xba38('0x1d')](),'ids':null},'user':{'clause':squel[_0xba38('0x1d')](),'skip':![]}};return _0x537f81;}function parseTagParameter(_0x33ac0d){var _0x4ba60e=squel['expr']();if(_0x33ac0d){var _0x11925d=utils[_0xba38('0x1e')](_0x33ac0d);_0x11925d[_0xba38('0x1a')](function(_0x330594){_0x4ba60e['or'](_0xba38('0x1f'),'%,'+_0x330594+',%');});}return _0x4ba60e;}function parseSearchFilter(_0x4ee07f){var _0x7d9d60=squel['expr']();if(_0x4ee07f){var _0x487ebc=_0x4ee07f[_0xba38('0x20')]('\x5c','\x5c\x5c')[_0xba38('0x20')](/'/g,'\x27\x27');var _0x39d7c8=qs[_0xba38('0x21')](_0x487ebc);if(_0x487ebc['split']('\x20')[_0xba38('0x22')]>0x1){_0x7d9d60['or'](_0xba38('0x23'),qs[_0xba38('0x24')](_0x487ebc,!![]),null);}else{if(qs[_0xba38('0x25')](_0x487ebc)){_0x7d9d60['or'](_0xba38('0x26'),_0x39d7c8+'%');_0x7d9d60['or'](_0xba38('0x27'),_0x39d7c8+'%');_0x7d9d60['or'](_0xba38('0x28'),_0x39d7c8+'%');_0x7d9d60['or'](_0xba38('0x29'),_0x39d7c8+'%');}else if(qs[_0xba38('0x2a')](_0x487ebc)){_0x7d9d60['or'](_0xba38('0x2b'),_0x39d7c8+'%');}else{_0x7d9d60['or'](_0xba38('0x2c'),'%'+_0x39d7c8+'%');_0x7d9d60['or'](_0xba38('0x2d'),'%'+_0x39d7c8+'%');_0x7d9d60['or'](_0xba38('0x2b'),'%'+_0x39d7c8+'%');}}}return _0x7d9d60;}function parseAdvancedSearchFilter(_0x1ac719,_0x566013){var _0x220b2d=getSqlClauses();var _0x5120ee=as[_0xba38('0x2e')](_0x1ac719);var _0x510645=_0x5120ee[_0xba38('0x2f')];for(var _0x4d3819=0x0;_0x4d3819<_0x5120ee['conditions'][_0xba38('0x22')];_0x4d3819++){var _0x5756be=_0x5120ee[_0xba38('0x30')][_0x4d3819];var _0x8785c9='c';var _0xc53b95=_[_0xba38('0x31')](_0x566013,[_0xba38('0x32'),_0x5756be[_0xba38('0x1b')]]);if(_0xc53b95){if(_0x5756be[_0xba38('0x1b')]==='dateOfBirth'||_0xc53b95[_0xba38('0x33')]===_0xba38('0x34')){_0x5756be[_0xba38('0x35')]=_0xba38('0x36');}var _0x3c332c=as['buildExpression'](_0x8785c9,_0xc53b95[_0xba38('0x37')],_0x5756be);_0x220b2d[_0xba38('0x38')][_0x510645](_0x3c332c['text'],_0x3c332c[_0xba38('0x39')]['start'],_0x3c332c[_0xba38('0x39')][_0xba38('0x3a')]);}else{if(_0x5756be[_0xba38('0x1b')]===_0xba38('0x3b')){var _0x2323d1=_0x5756be[_0xba38('0x39')][_0xba38('0x3c')](',')['map'](function(_0x321b5b){return Number(_0x321b5b);});var _0x2b593b=parseTagParameter(_0x2323d1);_0x220b2d[_0xba38('0x3d')][_0xba38('0x3e')]['and'](_0x2b593b);_0x220b2d[_0xba38('0x3d')]['ids']=_0x2323d1;}else if(_0x5756be[_0xba38('0x1b')]==='User'){_0x220b2d['user'][_0xba38('0x3e')][_0xba38('0x3f')](_0xba38('0x40'),_0x5756be[_0xba38('0x39')]);_0x220b2d[_0xba38('0x41')][_0xba38('0x42')]=!![];}}}return _0x220b2d;}function parseModelFields(_0x479068,_0x4033de){var _0xa2de7b=squel[_0xba38('0x1d')]();var _0x95a31c=_(_0x479068)[_0xba38('0x43')]()[_0xba38('0x44')](function(_0x392458){return _[_0xba38('0x45')](_0x4033de,[_0xba38('0x32'),_0x392458])?_0x392458:undefined;})[_0xba38('0x46')]()['value']();if(_0x479068[_0xba38('0x47')]){_0x95a31c[_0xba38('0x19')](_0xba38('0x47'));}if(_0x479068['User']){_0x95a31c[_0xba38('0x19')]('User');}if(_0x95a31c[_0xba38('0x22')]>0x0){_0x95a31c['forEach'](function(_0x98f5c6){if(_0x98f5c6===_0xba38('0x48')){_0xa2de7b[_0xba38('0x3f')](_0xba38('0x49'),[][_0xba38('0x4a')](_0x479068[_0x98f5c6]));}else if(_0x98f5c6==='Contact'){var _0x56de1c='%'+_0x479068[_0x98f5c6]+'%';_0xa2de7b['and']('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x56de1c);}else if(_0x98f5c6===_0xba38('0x4b')){_0xa2de7b[_0xba38('0x3f')](_0xba38('0x40'),_0x479068[_0x98f5c6]);}else{_0xa2de7b[_0xba38('0x3f')]('c.'+_0x98f5c6+_0xba38('0x4c'),_0x479068[_0x98f5c6]);}});}return _0xa2de7b;}function parseQueryParameters(_0x431123,_0x26ba5c){var _0x210d8b=getSqlClauses();return Promise[_0xba38('0x4d')]()[_0xba38('0x4e')](function(){return parseModelFields(_0x431123,_0x26ba5c);})[_0xba38('0x4e')](function(_0x1edb96){_0x210d8b[_0xba38('0x4f')]['and'](_0x1edb96);return parseTagParameter(_0x431123[_0xba38('0x50')]);})[_0xba38('0x4e')](function(_0x303059){_0x210d8b[_0xba38('0x3d')]['clause']['and'](_0x303059);return parseSearchFilter(_0x431123[_0xba38('0x51')]);})[_0xba38('0x4e')](function(_0x6b4bfb){_0x210d8b['filter']=_0x6b4bfb;return _0x210d8b;});}function checkListsRestrictions(_0x58d6aa,_0x5a5fa4,_0x1f29be){var _0x256716=squel[_0xba38('0x1d')]();return Promise[_0xba38('0x4d')]()[_0xba38('0x4e')](function(){if(_0x5a5fa4[_0xba38('0x4')]&&_0x58d6aa['role']===_0xba38('0x3')&&!_0x1f29be){return _0x58d6aa['getLists']({'attributes':['id'],'raw':!![]});}})['then'](function(_0x29b5bb){if(_0x29b5bb){if(_0x29b5bb[_0xba38('0x22')]===0x0){_0x256716['and']('c.ListId\x20IS\x20NULL');}else{_0x256716[_0xba38('0x3f')]('c.ListId\x20IN\x20?',_[_0xba38('0x44')](_0x29b5bb,'id'));}}})[_0xba38('0x4e')](function(){return _0x256716;});}function buildContactsQuery(_0x3fe3fd,_0x2d720f,_0x3e8875,_0x44c435,_0x4d4d9c,_0x700514){if(_0x2d720f){_0x2d720f=_0x3e8875[_0xba38('0x52')];}_0x3fe3fd=addFieldsToQuery(_0x3fe3fd,_0x2d720f,_0x44c435,_0x700514,!![]);var _0x30caa0=squel['select']();_0x30caa0=addFieldsToQuery(_0x30caa0,_0x2d720f,_0x44c435,_0x700514,![]);if(_0x44c435||_0x700514){_0x3fe3fd=applyJoinClauses(_0x3fe3fd,!![]);_0x3fe3fd[_0xba38('0x53')](_0xba38('0x54'));if(_0x3e8875[_0xba38('0x55')]){_0x30caa0[_0xba38('0x55')](_0x3e8875[_0xba38('0x55')]);}if(_0x3e8875['offset']){_0x30caa0['offset'](_0x3e8875['offset']);}}else{_0x30caa0=applyJoinClauses(_0x30caa0,![]);_0x30caa0[_0xba38('0x53')](_0xba38('0x56'));if(_0x3e8875[_0xba38('0x55')]){_0x3fe3fd['limit'](_0x3e8875[_0xba38('0x55')]);}if(_0x3e8875[_0xba38('0x57')]){_0x3fe3fd[_0xba38('0x57')](_0x3e8875[_0xba38('0x57')]);}}_0x30caa0[_0xba38('0x58')](_0x4d4d9c);if(_0x3e8875[_0xba38('0x59')]){_0x3e8875[_0xba38('0x59')][_0xba38('0x1a')](function(_0x3c2c3f){_0x3fe3fd['order']('c.'+_0x3c2c3f[0x0],_0x3c2c3f[0x1]==='DESC'?![]:!![]);_0x30caa0[_0xba38('0x59')](_0xba38('0x5a')+_0x3c2c3f[0x0],_0x3c2c3f[0x1]===_0xba38('0x5b')?![]:!![]);});}_0x30caa0['from'](_0x3fe3fd,_0xba38('0xf'));return _0x30caa0;}function getFilteredContacts(_0x4d28dd){var _0x48a341=[];return db[_0xba38('0x3b')][_0xba38('0x5c')]({'attributes':['id',_0xba38('0x32'),_0xba38('0x5d')],'raw':!![]})['then'](function(_0x34bf1d){_0x48a341=_[_0xba38('0x5e')](_0x34bf1d,'id');var _0x3573a6={'type':db['Sequelize'][_0xba38('0x5f')][_0xba38('0x60')],'model':db[_0xba38('0x61')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xba38('0x62')][_0xba38('0x63')](_0x4d28dd[_0xba38('0x64')](),_0x3573a6);})[_0xba38('0x4e')](function(_0x5a39bf){_0x5a39bf['forEach'](function(_0x1e6e9a){if(_0x1e6e9a['TagIds']){_0x1e6e9a[_0xba38('0x65')]=[];_0x1e6e9a['TagIds']['split'](',')[_0xba38('0x1a')](function(_0x5dcc4a){_0x1e6e9a[_0xba38('0x65')]['push'](_0x48a341[_0x5dcc4a]);});}delete _0x1e6e9a[_0xba38('0x17')];});return _0x5a39bf;});}function countFilteredContacts(_0x3ab067,_0x1884e1){var _0x5274ec=_0x3ab067[_0xba38('0x66')]();_0x5274ec[_0xba38('0x1b')](_0xba38('0x67'));_0x5274ec=applyJoinClauses(_0x5274ec,!![]);_0x3ab067[_0xba38('0x53')]('c.id');var _0x29e52e=utils['getSelectedTags'](_0x1884e1);if(!_[_0xba38('0x68')](_0x29e52e)){_0x5274ec[_0xba38('0x69')](_0xba38('0x6a'),_0x29e52e);}var _0xd450d9={'type':db[_0xba38('0x6b')][_0xba38('0x5f')]['SELECT'],'raw':!![]};return db['sequelize'][_0xba38('0x63')](_0x5274ec[_0xba38('0x64')](),_0xd450d9)[_0xba38('0x4e')](function(_0x397c92){return _0x397c92[0x0]['COUNT(*)'];});}module[_0xba38('0x6c')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};