Built motion from commit e02f907f.|2.6.14
[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 _0x9e7f=['keyBy','QueryTypes','SELECT','CmContact','query','toString','Tags','COUNT(*)','c.id','isEmpty','t.id\x20IN\x20?','Sequelize','sequelize','exports','squel','../parsers/advancedSearch','../parsers/qs','role','agent','ListId','autocomplete','true','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','firstName','phone','mobile','email','CompanyId','createdAt','updatedAt','deletedAt','TagIds','includes','forEach','field','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','length','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','dateOfBirth','datetime','DATE','buildExpression','type','default','text','value','start','split','map','tags','clause','and','uc.UserId\x20=\x20?','user','skip','keys','Contact','push','User','c.ListId\x20IN\x20?','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','fields','search','getLists','c.ListId\x20IS\x20NULL','select','limit','offset','order','DESC','Tag','findAll'];(function(_0x430205,_0x328c94){var _0x3f5146=function(_0x3cd6bd){while(--_0x3cd6bd){_0x430205['push'](_0x430205['shift']());}};_0x3f5146(++_0x328c94);}(_0x9e7f,0x13d));var _0xf9e7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9e7f[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var squel=require(_0xf9e7('0x0'));var as=require(_0xf9e7('0x1'));var qs=require(_0xf9e7('0x2'));var utils=require('../interaction/utils');var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x29acf4,_0x3ddb60){var _0x599764=![];if(_0x29acf4[_0xf9e7('0x3')]===_0xf9e7('0x4')&&!_0x3ddb60['search']&&!_0x3ddb60[_0xf9e7('0x5')]&&_0x3ddb60[_0xf9e7('0x6')]!==_0xf9e7('0x7')){_0x599764=!![];}return _0x599764;}function getContactsSubquery(){return squel['select']()[_0xf9e7('0x8')](_0xf9e7('0x9'),'c')[_0xf9e7('0xa')](_0xf9e7('0xb'));}function applyJoinClauses(_0x207875,_0x51eeb4){var _0x38314c=_0x51eeb4?'c':_0xf9e7('0xc');_0x207875[_0xf9e7('0xd')]('cm_user_has_contacts','uc',_0xf9e7('0xe')+_0x38314c+_0xf9e7('0xf'))[_0xf9e7('0xd')](_0xf9e7('0x10'),'ct',_0xf9e7('0x11')+_0x38314c+_0xf9e7('0xf'))[_0xf9e7('0xd')](_0xf9e7('0x12'),'t',_0xf9e7('0x13'));return _0x207875;}function addFieldsToQuery(_0x20902b,_0x1f6b46,_0x55dde0,_0x4c587d,_0x259670){var _0x550946=_0x259670?'c':_0xf9e7('0xc');if(!_0x1f6b46){_0x1f6b46=['id',_0xf9e7('0x14'),'lastName',_0xf9e7('0x15'),_0xf9e7('0x16'),'fax',_0xf9e7('0x17'),_0xf9e7('0x5'),_0xf9e7('0x18'),_0xf9e7('0x19'),_0xf9e7('0x1a'),_0xf9e7('0x1b'),_0xf9e7('0x1c')];}else if(!_0x1f6b46[_0xf9e7('0x1d')]('id')){_0x1f6b46['push']('id');}var _0xff7205=_0x55dde0&&_0x259670||!_0x55dde0&&!_0x259670;if(_0x4c587d){_0xff7205=_0x4c587d&&_0x259670||!_0x4c587d&&!_0x259670;}_0x1f6b46[_0xf9e7('0x1e')](function(_0xe904ca){if(_0xe904ca===_0xf9e7('0x1c')){if(_0xff7205){_0x20902b[_0xf9e7('0x1f')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xe904ca);}else if(_0x55dde0||_0x4c587d){_0x20902b[_0xf9e7('0x1f')](_0x550946+'.'+_0xe904ca);}}else{_0x20902b[_0xf9e7('0x1f')](_0x550946+'.'+_0xe904ca);}});return _0x20902b;}function getSqlClauses(){var _0x269456={'default':squel[_0xf9e7('0x20')](),'fields':squel[_0xf9e7('0x20')](),'filter':squel['expr'](),'tags':{'clause':squel[_0xf9e7('0x20')](),'ids':null},'user':{'clause':squel[_0xf9e7('0x20')](),'skip':![]}};return _0x269456;}function parseTagParameter(_0x4e1a6e){var _0x285304=squel[_0xf9e7('0x20')]();if(_0x4e1a6e){var _0x3ec6d5=utils[_0xf9e7('0x21')](_0x4e1a6e);_0x3ec6d5[_0xf9e7('0x1e')](function(_0x5eb135){_0x285304['or'](_0xf9e7('0x22'),'%,'+_0x5eb135+',%');});}return _0x285304;}function parseSearchFilter(_0x548407){var _0x178778=squel[_0xf9e7('0x20')]();if(_0x548407){var _0x43a81f=_0x548407[_0xf9e7('0x23')]('\x5c','\x5c\x5c')[_0xf9e7('0x23')](/'/g,'\x27\x27');if(_0x43a81f['split']('\x20')[_0xf9e7('0x24')]>0x1){_0x178778['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xf9e7('0x25')](_0x43a81f,!![]),null);}else{if(qs[_0xf9e7('0x26')](_0x43a81f)){_0x178778['or']('c.id\x20LIKE\x20?',_0x43a81f+'%');_0x178778['or']('c.phone\x20LIKE\x20?',_0x43a81f+'%');_0x178778['or'](_0xf9e7('0x27'),_0x43a81f+'%');_0x178778['or'](_0xf9e7('0x28'),_0x43a81f+'%');}else if(qs[_0xf9e7('0x29')](_0x43a81f)){_0x178778['or'](_0xf9e7('0x2a'),_0x43a81f+'%');}else{_0x178778['or'](_0xf9e7('0x2b'),'%'+_0x43a81f+'%');_0x178778['or'](_0xf9e7('0x2c'),'%'+_0x43a81f+'%');_0x178778['or'](_0xf9e7('0x2a'),'%'+_0x43a81f+'%');}}}return _0x178778;}function parseAdvancedSearchFilter(_0xd78889,_0x3625ed){var _0x2e5c9f=getSqlClauses();var _0x57dd2a=as[_0xf9e7('0x2d')](_0xd78889);var _0x3ceb95=_0x57dd2a[_0xf9e7('0x2e')];for(var _0x4de113=0x0;_0x4de113<_0x57dd2a[_0xf9e7('0x2f')][_0xf9e7('0x24')];_0x4de113++){var _0x5f4732=_0x57dd2a['conditions'][_0x4de113];var _0x3d7b95='c';var _0x3c5a5a=_[_0xf9e7('0x30')](_0x3625ed,[_0xf9e7('0x31'),_0x5f4732[_0xf9e7('0x1f')]]);if(_0x3c5a5a){if(_0x5f4732[_0xf9e7('0x1f')]===_0xf9e7('0x32')||_0x3c5a5a['fieldType']===_0xf9e7('0x33')){_0x5f4732['castTo']=_0xf9e7('0x34');}var _0x21fded=as[_0xf9e7('0x35')](_0x3d7b95,_0x3c5a5a[_0xf9e7('0x36')],_0x5f4732);_0x2e5c9f[_0xf9e7('0x37')][_0x3ceb95](_0x21fded[_0xf9e7('0x38')],_0x21fded[_0xf9e7('0x39')][_0xf9e7('0x3a')],_0x21fded[_0xf9e7('0x39')]['end']);}else{if(_0x5f4732['field']==='Tag'){var _0x1c8919=_0x5f4732[_0xf9e7('0x39')][_0xf9e7('0x3b')](',')[_0xf9e7('0x3c')](function(_0x592c65){return Number(_0x592c65);});var _0x4b4699=parseTagParameter(_0x1c8919);_0x2e5c9f[_0xf9e7('0x3d')][_0xf9e7('0x3e')][_0xf9e7('0x3f')](_0x4b4699);_0x2e5c9f['tags']['ids']=_0x1c8919;}else if(_0x5f4732['field']==='User'){_0x2e5c9f['user'][_0xf9e7('0x3e')]['and'](_0xf9e7('0x40'),_0x5f4732[_0xf9e7('0x39')]);_0x2e5c9f[_0xf9e7('0x41')][_0xf9e7('0x42')]=!![];}}}return _0x2e5c9f;}function parseModelFields(_0x3404e8,_0x445dfd){var _0x467595=squel[_0xf9e7('0x20')]();var _0x5877c8=_(_0x3404e8)[_0xf9e7('0x43')]()[_0xf9e7('0x3c')](function(_0x52a8e6){return _['some'](_0x445dfd,[_0xf9e7('0x31'),_0x52a8e6])?_0x52a8e6:undefined;})['compact']()[_0xf9e7('0x39')]();if(_0x3404e8[_0xf9e7('0x44')]){_0x5877c8[_0xf9e7('0x45')](_0xf9e7('0x44'));}if(_0x3404e8[_0xf9e7('0x46')]){_0x5877c8[_0xf9e7('0x45')](_0xf9e7('0x46'));}if(_0x5877c8[_0xf9e7('0x24')]>0x0){_0x5877c8[_0xf9e7('0x1e')](function(_0x262582){if(_0x262582===_0xf9e7('0x5')){_0x467595[_0xf9e7('0x3f')](_0xf9e7('0x47'),[]['concat'](_0x3404e8[_0x262582]));}else if(_0x262582===_0xf9e7('0x44')){var _0x56c9c7='%'+_0x3404e8[_0x262582]+'%';_0x467595[_0xf9e7('0x3f')](_0xf9e7('0x48'),_0x56c9c7);}else if(_0x262582===_0xf9e7('0x46')){_0x467595[_0xf9e7('0x3f')]('uc.UserId\x20=\x20?',_0x3404e8[_0x262582]);}else{_0x467595[_0xf9e7('0x3f')]('c.'+_0x262582+_0xf9e7('0x49'),_0x3404e8[_0x262582]);}});}return _0x467595;}function parseQueryParameters(_0x281cfd,_0x195682){var _0x1bd629=getSqlClauses();return Promise[_0xf9e7('0x4a')]()[_0xf9e7('0x4b')](function(){return parseModelFields(_0x281cfd,_0x195682);})['then'](function(_0x305afb){_0x1bd629[_0xf9e7('0x4c')][_0xf9e7('0x3f')](_0x305afb);return parseTagParameter(_0x281cfd['tag']);})['then'](function(_0x5b3f2a){_0x1bd629[_0xf9e7('0x3d')][_0xf9e7('0x3e')][_0xf9e7('0x3f')](_0x5b3f2a);return parseSearchFilter(_0x281cfd['filter']);})['then'](function(_0x271a12){_0x1bd629['filter']=_0x271a12;return _0x1bd629;});}function checkListsRestrictions(_0x505633,_0x46d185,_0x161c7e){var _0x198b2c=squel['expr']();return Promise['resolve']()[_0xf9e7('0x4b')](function(){if(_0x46d185[_0xf9e7('0x4d')]&&_0x505633[_0xf9e7('0x3')]===_0xf9e7('0x4')&&!_0x161c7e){return _0x505633[_0xf9e7('0x4e')]({'attributes':['id'],'raw':!![]});}})[_0xf9e7('0x4b')](function(_0xdd48ca){if(_0xdd48ca){if(_0xdd48ca[_0xf9e7('0x24')]===0x0){_0x198b2c[_0xf9e7('0x3f')](_0xf9e7('0x4f'));}else{_0x198b2c['and'](_0xf9e7('0x47'),_[_0xf9e7('0x3c')](_0xdd48ca,'id'));}}})['then'](function(){return _0x198b2c;});}function buildContactsQuery(_0x1f0c7b,_0x1973f6,_0x3bd643,_0x167e87,_0x1f6c5c,_0x5b3987){if(_0x1973f6){_0x1973f6=_0x3bd643['attributes'];}_0x1f0c7b=addFieldsToQuery(_0x1f0c7b,_0x1973f6,_0x167e87,_0x5b3987,!![]);var _0x59adc3=squel[_0xf9e7('0x50')]();_0x59adc3=addFieldsToQuery(_0x59adc3,_0x1973f6,_0x167e87,_0x5b3987,![]);if(_0x167e87||_0x5b3987){_0x1f0c7b=applyJoinClauses(_0x1f0c7b,!![]);_0x1f0c7b['group']('c.id');if(_0x3bd643[_0xf9e7('0x51')]){_0x59adc3[_0xf9e7('0x51')](_0x3bd643[_0xf9e7('0x51')]);}if(_0x3bd643['offset']){_0x59adc3[_0xf9e7('0x52')](_0x3bd643[_0xf9e7('0x52')]);}}else{_0x59adc3=applyJoinClauses(_0x59adc3,![]);_0x59adc3['group']('subqry.id');if(_0x3bd643[_0xf9e7('0x51')]){_0x1f0c7b[_0xf9e7('0x51')](_0x3bd643[_0xf9e7('0x51')]);}if(_0x3bd643['offset']){_0x1f0c7b[_0xf9e7('0x52')](_0x3bd643['offset']);}}_0x59adc3['having'](_0x1f6c5c);if(_0x3bd643['order']){_0x3bd643[_0xf9e7('0x53')]['forEach'](function(_0x25b57f){_0x1f0c7b[_0xf9e7('0x53')]('c.'+_0x25b57f[0x0],_0x25b57f[0x1]===_0xf9e7('0x54')?![]:!![]);_0x59adc3['order']('subqry.'+_0x25b57f[0x0],_0x25b57f[0x1]===_0xf9e7('0x54')?![]:!![]);});}_0x59adc3[_0xf9e7('0x8')](_0x1f0c7b,'subqry');return _0x59adc3;}function getFilteredContacts(_0x1723c2){var _0x35e68d=[];return db[_0xf9e7('0x55')][_0xf9e7('0x56')]({'attributes':['id',_0xf9e7('0x31'),'color'],'raw':!![]})['then'](function(_0x254358){_0x35e68d=_[_0xf9e7('0x57')](_0x254358,'id');var _0x524146={'type':db['Sequelize'][_0xf9e7('0x58')][_0xf9e7('0x59')],'model':db[_0xf9e7('0x5a')],'mapToModel':!![],'nest':!![],'raw':!![]};return db['sequelize'][_0xf9e7('0x5b')](_0x1723c2[_0xf9e7('0x5c')](),_0x524146);})[_0xf9e7('0x4b')](function(_0x2f3750){_0x2f3750[_0xf9e7('0x1e')](function(_0xa12eeb){if(_0xa12eeb[_0xf9e7('0x1c')]){_0xa12eeb[_0xf9e7('0x5d')]=[];_0xa12eeb[_0xf9e7('0x1c')]['split'](',')[_0xf9e7('0x1e')](function(_0x2a53fa){_0xa12eeb[_0xf9e7('0x5d')]['push'](_0x35e68d[_0x2a53fa]);});}delete _0xa12eeb[_0xf9e7('0x1c')];});return _0x2f3750;});}function countFilteredContacts(_0x116681,_0x30ec62){var _0x6e7676=_0x116681['clone']();_0x6e7676['field'](_0xf9e7('0x5e'));_0x6e7676=applyJoinClauses(_0x6e7676,!![]);_0x116681['group'](_0xf9e7('0x5f'));var _0x1e536f=utils['getSelectedTags'](_0x30ec62);if(!_[_0xf9e7('0x60')](_0x1e536f)){_0x6e7676[_0xf9e7('0xa')](_0xf9e7('0x61'),_0x1e536f);}var _0x318ff4={'type':db[_0xf9e7('0x62')][_0xf9e7('0x58')]['SELECT'],'raw':!![]};return db[_0xf9e7('0x63')][_0xf9e7('0x5b')](_0x6e7676['toString'](),_0x318ff4)[_0xf9e7('0x4b')](function(_0x2edd34){return _0x2edd34[0x0][_0xf9e7('0x5e')];});}module[_0xf9e7('0x64')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};