Built motion from commit efa66e19.|2.6.22
[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 _0xbe2f=['ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','firstName','lastName','mobile','fax','CompanyId','createdAt','updatedAt','deletedAt','TagIds','includes','push','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','getFullTextValue','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','name','dateOfBirth','fieldType','datetime','castTo','buildExpression','value','end','Tag','map','tags','and','ids','User','user','clause','uc.UserId\x20=\x20?','skip','keys','some','Contact','c.ListId\x20IN\x20?','concat','\x20=\x20?','resolve','then','tag','filter','getLists','group','c.id','limit','offset','subqry.id','having','order','DESC','subqry.','keyBy','QueryTypes','SELECT','CmContact','sequelize','query','Tags','clone','COUNT(*)','isEmpty','t.id\x20IN\x20?','exports','lodash','../parsers/advancedSearch','../parsers/qs','../interaction/utils','role','agent','search','ListId','autocomplete','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','.id','left_join'];(function(_0x5aefa0,_0x387b10){var _0x34b6e8=function(_0x44285c){while(--_0x44285c){_0x5aefa0['push'](_0x5aefa0['shift']());}};_0x34b6e8(++_0x387b10);}(_0xbe2f,0x182));var _0xfbe2=function(_0x11da2c,_0xb84b59){_0x11da2c=_0x11da2c-0x0;var _0x27c614=_0xbe2f[_0x11da2c];return _0x27c614;};'use strict';var _=require(_0xfbe2('0x0'));var squel=require('squel');var as=require(_0xfbe2('0x1'));var qs=require(_0xfbe2('0x2'));var utils=require(_0xfbe2('0x3'));var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x1fbb7f,_0x3e710b){var _0x15c6c5=![];if(_0x1fbb7f[_0xfbe2('0x4')]===_0xfbe2('0x5')&&!_0x3e710b[_0xfbe2('0x6')]&&!_0x3e710b[_0xfbe2('0x7')]&&_0x3e710b[_0xfbe2('0x8')]!==_0xfbe2('0x9')){_0x15c6c5=!![];}return _0x15c6c5;}function getContactsSubquery(){return squel[_0xfbe2('0xa')]()[_0xfbe2('0xb')](_0xfbe2('0xc'),'c')[_0xfbe2('0xd')](_0xfbe2('0xe'));}function applyJoinClauses(_0x54bc8a,_0x5bc358){var _0x33b88c=_0x5bc358?'c':_0xfbe2('0xf');_0x54bc8a['left_join']('cm_user_has_contacts','uc','uc.CmContactId\x20=\x20'+_0x33b88c+_0xfbe2('0x10'))[_0xfbe2('0x11')]('cm_contact_has_tags','ct',_0xfbe2('0x12')+_0x33b88c+'.id')[_0xfbe2('0x11')](_0xfbe2('0x13'),'t',_0xfbe2('0x14'));return _0x54bc8a;}function addFieldsToQuery(_0x1c84a6,_0x5bb13d,_0x5e9f08,_0x38dbbd,_0x3ff5a6){var _0x20dbe0=_0x3ff5a6?'c':_0xfbe2('0xf');if(!_0x5bb13d){_0x5bb13d=['id',_0xfbe2('0x15'),_0xfbe2('0x16'),'phone',_0xfbe2('0x17'),_0xfbe2('0x18'),'email',_0xfbe2('0x7'),_0xfbe2('0x19'),_0xfbe2('0x1a'),_0xfbe2('0x1b'),_0xfbe2('0x1c'),_0xfbe2('0x1d')];}else if(!_0x5bb13d[_0xfbe2('0x1e')]('id')){_0x5bb13d[_0xfbe2('0x1f')]('id');}var _0x520ea6=_0x5e9f08&&_0x3ff5a6||!_0x5e9f08&&!_0x3ff5a6;if(_0x38dbbd){_0x520ea6=_0x38dbbd&&_0x3ff5a6||!_0x38dbbd&&!_0x3ff5a6;}_0x5bb13d[_0xfbe2('0x20')](function(_0x391149){if(_0x391149==='TagIds'){if(_0x520ea6){_0x1c84a6[_0xfbe2('0x21')](_0xfbe2('0x22'),_0x391149);}else if(_0x5e9f08||_0x38dbbd){_0x1c84a6['field'](_0x20dbe0+'.'+_0x391149);}}else{_0x1c84a6[_0xfbe2('0x21')](_0x20dbe0+'.'+_0x391149);}});return _0x1c84a6;}function getSqlClauses(){var _0x5a7673={'default':squel[_0xfbe2('0x23')](),'fields':squel[_0xfbe2('0x23')](),'filter':squel[_0xfbe2('0x23')](),'tags':{'clause':squel[_0xfbe2('0x23')](),'ids':null},'user':{'clause':squel[_0xfbe2('0x23')](),'skip':![]}};return _0x5a7673;}function parseTagParameter(_0x8b0d53){var _0x4b902a=squel[_0xfbe2('0x23')]();if(_0x8b0d53){var _0x29a9a9=utils[_0xfbe2('0x24')](_0x8b0d53);_0x29a9a9[_0xfbe2('0x20')](function(_0x33ef0a){_0x4b902a['or'](_0xfbe2('0x25'),'%,'+_0x33ef0a+',%');});}return _0x4b902a;}function parseSearchFilter(_0x44b037){var _0x8c7067=squel[_0xfbe2('0x23')]();if(_0x44b037){var _0xb25abc=_0x44b037[_0xfbe2('0x26')]('\x5c','\x5c\x5c')[_0xfbe2('0x26')](/'/g,'\x27\x27');if(_0xb25abc[_0xfbe2('0x27')]('\x20')[_0xfbe2('0x28')]>0x1){_0x8c7067['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xfbe2('0x29')](_0xb25abc,!![]),null);}else{if(qs['isNumeric'](_0xb25abc)){_0x8c7067['or']('c.id\x20LIKE\x20?',_0xb25abc+'%');_0x8c7067['or'](_0xfbe2('0x2a'),_0xb25abc+'%');_0x8c7067['or'](_0xfbe2('0x2b'),_0xb25abc+'%');_0x8c7067['or'](_0xfbe2('0x2c'),_0xb25abc+'%');}else if(qs[_0xfbe2('0x2d')](_0xb25abc)){_0x8c7067['or'](_0xfbe2('0x2e'),_0xb25abc+'%');}else{_0x8c7067['or']('c.firstName\x20LIKE\x20?','%'+_0xb25abc+'%');_0x8c7067['or'](_0xfbe2('0x2f'),'%'+_0xb25abc+'%');_0x8c7067['or'](_0xfbe2('0x2e'),'%'+_0xb25abc+'%');}}}return _0x8c7067;}function parseAdvancedSearchFilter(_0x191716,_0x2e7e60){var _0x136694=getSqlClauses();var _0x32790c=as[_0xfbe2('0x30')](_0x191716);var _0x2c7fb3=_0x32790c[_0xfbe2('0x31')];for(var _0x48598b=0x0;_0x48598b<_0x32790c[_0xfbe2('0x32')][_0xfbe2('0x28')];_0x48598b++){var _0x2d120e=_0x32790c[_0xfbe2('0x32')][_0x48598b];var _0x247d25='c';var _0x31874c=_['find'](_0x2e7e60,[_0xfbe2('0x33'),_0x2d120e['field']]);if(_0x31874c){if(_0x2d120e['field']===_0xfbe2('0x34')||_0x31874c[_0xfbe2('0x35')]===_0xfbe2('0x36')){_0x2d120e[_0xfbe2('0x37')]='DATE';}var _0x37bcf5=as[_0xfbe2('0x38')](_0x247d25,_0x31874c['type'],_0x2d120e);_0x136694['default'][_0x2c7fb3](_0x37bcf5['text'],_0x37bcf5[_0xfbe2('0x39')]['start'],_0x37bcf5[_0xfbe2('0x39')][_0xfbe2('0x3a')]);}else{if(_0x2d120e[_0xfbe2('0x21')]===_0xfbe2('0x3b')){var _0xd1ad11=_0x2d120e['value'][_0xfbe2('0x27')](',')[_0xfbe2('0x3c')](function(_0x5439aa){return Number(_0x5439aa);});var _0x889e34=parseTagParameter(_0xd1ad11);_0x136694[_0xfbe2('0x3d')]['clause'][_0xfbe2('0x3e')](_0x889e34);_0x136694[_0xfbe2('0x3d')][_0xfbe2('0x3f')]=_0xd1ad11;}else if(_0x2d120e[_0xfbe2('0x21')]===_0xfbe2('0x40')){_0x136694[_0xfbe2('0x41')][_0xfbe2('0x42')][_0xfbe2('0x3e')](_0xfbe2('0x43'),_0x2d120e[_0xfbe2('0x39')]);_0x136694[_0xfbe2('0x41')][_0xfbe2('0x44')]=!![];}}}return _0x136694;}function parseModelFields(_0x4223bc,_0x1c893f){var _0x31237b=squel['expr']();var _0x47cbde=_(_0x4223bc)[_0xfbe2('0x45')]()['map'](function(_0x35a89d){return _[_0xfbe2('0x46')](_0x1c893f,[_0xfbe2('0x33'),_0x35a89d])?_0x35a89d:undefined;})['compact']()[_0xfbe2('0x39')]();if(_0x4223bc[_0xfbe2('0x47')]){_0x47cbde['push'](_0xfbe2('0x47'));}if(_0x4223bc['User']){_0x47cbde[_0xfbe2('0x1f')](_0xfbe2('0x40'));}if(_0x47cbde[_0xfbe2('0x28')]>0x0){_0x47cbde['forEach'](function(_0x48389e){if(_0x48389e==='ListId'){_0x31237b[_0xfbe2('0x3e')](_0xfbe2('0x48'),[][_0xfbe2('0x49')](_0x4223bc[_0x48389e]));}else if(_0x48389e===_0xfbe2('0x47')){var _0x344d87='%'+_0x4223bc[_0x48389e]+'%';_0x31237b[_0xfbe2('0x3e')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x344d87);}else if(_0x48389e==='User'){_0x31237b[_0xfbe2('0x3e')]('uc.UserId\x20=\x20?',_0x4223bc[_0x48389e]);}else{_0x31237b[_0xfbe2('0x3e')]('c.'+_0x48389e+_0xfbe2('0x4a'),_0x4223bc[_0x48389e]);}});}return _0x31237b;}function parseQueryParameters(_0x7a0563,_0x48a22a){var _0x5b9770=getSqlClauses();return Promise[_0xfbe2('0x4b')]()['then'](function(){return parseModelFields(_0x7a0563,_0x48a22a);})[_0xfbe2('0x4c')](function(_0x406a99){_0x5b9770['fields'][_0xfbe2('0x3e')](_0x406a99);return parseTagParameter(_0x7a0563[_0xfbe2('0x4d')]);})[_0xfbe2('0x4c')](function(_0x48d064){_0x5b9770['tags'][_0xfbe2('0x42')][_0xfbe2('0x3e')](_0x48d064);return parseSearchFilter(_0x7a0563['filter']);})[_0xfbe2('0x4c')](function(_0x48b090){_0x5b9770[_0xfbe2('0x4e')]=_0x48b090;return _0x5b9770;});}function checkListsRestrictions(_0x130fa3,_0x3c7330,_0x3f8e13){var _0xa3885b=squel[_0xfbe2('0x23')]();return Promise[_0xfbe2('0x4b')]()[_0xfbe2('0x4c')](function(){if(_0x3c7330[_0xfbe2('0x6')]&&_0x130fa3[_0xfbe2('0x4')]==='agent'&&!_0x3f8e13){return _0x130fa3[_0xfbe2('0x4f')]({'attributes':['id'],'raw':!![]});}})[_0xfbe2('0x4c')](function(_0x15fa4d){if(_0x15fa4d){if(_0x15fa4d[_0xfbe2('0x28')]===0x0){_0xa3885b['and']('c.ListId\x20IS\x20NULL');}else{_0xa3885b[_0xfbe2('0x3e')](_0xfbe2('0x48'),_['map'](_0x15fa4d,'id'));}}})[_0xfbe2('0x4c')](function(){return _0xa3885b;});}function buildContactsQuery(_0xe30a68,_0x57f853,_0x56171b,_0x3ac7ee,_0x3d5613,_0x1407f4){if(_0x57f853){_0x57f853=_0x56171b['attributes'];}_0xe30a68=addFieldsToQuery(_0xe30a68,_0x57f853,_0x3ac7ee,_0x1407f4,!![]);var _0x5109aa=squel[_0xfbe2('0xa')]();_0x5109aa=addFieldsToQuery(_0x5109aa,_0x57f853,_0x3ac7ee,_0x1407f4,![]);if(_0x3ac7ee||_0x1407f4){_0xe30a68=applyJoinClauses(_0xe30a68,!![]);_0xe30a68[_0xfbe2('0x50')](_0xfbe2('0x51'));if(_0x56171b[_0xfbe2('0x52')]){_0x5109aa[_0xfbe2('0x52')](_0x56171b['limit']);}if(_0x56171b[_0xfbe2('0x53')]){_0x5109aa[_0xfbe2('0x53')](_0x56171b[_0xfbe2('0x53')]);}}else{_0x5109aa=applyJoinClauses(_0x5109aa,![]);_0x5109aa[_0xfbe2('0x50')](_0xfbe2('0x54'));if(_0x56171b[_0xfbe2('0x52')]){_0xe30a68[_0xfbe2('0x52')](_0x56171b[_0xfbe2('0x52')]);}if(_0x56171b['offset']){_0xe30a68[_0xfbe2('0x53')](_0x56171b[_0xfbe2('0x53')]);}}_0x5109aa[_0xfbe2('0x55')](_0x3d5613);if(_0x56171b[_0xfbe2('0x56')]){_0x56171b['order'][_0xfbe2('0x20')](function(_0x4bd1df){_0xe30a68[_0xfbe2('0x56')]('c.'+_0x4bd1df[0x0],_0x4bd1df[0x1]===_0xfbe2('0x57')?![]:!![]);_0x5109aa[_0xfbe2('0x56')](_0xfbe2('0x58')+_0x4bd1df[0x0],_0x4bd1df[0x1]===_0xfbe2('0x57')?![]:!![]);});}_0x5109aa[_0xfbe2('0xb')](_0xe30a68,_0xfbe2('0xf'));return _0x5109aa;}function getFilteredContacts(_0xc611be){var _0x3a8f2b=[];return db[_0xfbe2('0x3b')]['findAll']({'attributes':['id',_0xfbe2('0x33'),'color'],'raw':!![]})[_0xfbe2('0x4c')](function(_0x2a91c6){_0x3a8f2b=_[_0xfbe2('0x59')](_0x2a91c6,'id');var _0x1af787={'type':db['Sequelize'][_0xfbe2('0x5a')][_0xfbe2('0x5b')],'model':db[_0xfbe2('0x5c')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xfbe2('0x5d')][_0xfbe2('0x5e')](_0xc611be['toString'](),_0x1af787);})['then'](function(_0x4a06cc){_0x4a06cc['forEach'](function(_0x52011f){if(_0x52011f[_0xfbe2('0x1d')]){_0x52011f['Tags']=[];_0x52011f[_0xfbe2('0x1d')][_0xfbe2('0x27')](',')[_0xfbe2('0x20')](function(_0x4a1a05){_0x52011f[_0xfbe2('0x5f')][_0xfbe2('0x1f')](_0x3a8f2b[_0x4a1a05]);});}delete _0x52011f[_0xfbe2('0x1d')];});return _0x4a06cc;});}function countFilteredContacts(_0x49f4ac,_0x3d1a15){var _0x4783ce=_0x49f4ac[_0xfbe2('0x60')]();_0x4783ce[_0xfbe2('0x21')](_0xfbe2('0x61'));_0x4783ce=applyJoinClauses(_0x4783ce,!![]);_0x49f4ac[_0xfbe2('0x50')]('c.id');var _0x1ab670=utils[_0xfbe2('0x24')](_0x3d1a15);if(!_[_0xfbe2('0x62')](_0x1ab670)){_0x4783ce['where'](_0xfbe2('0x63'),_0x1ab670);}var _0x563d79={'type':db['Sequelize'][_0xfbe2('0x5a')][_0xfbe2('0x5b')],'raw':!![]};return db[_0xfbe2('0x5d')]['query'](_0x4783ce['toString'](),_0x563d79)[_0xfbe2('0x4c')](function(_0x523f39){return _0x523f39[0x0]['COUNT(*)'];});}module[_0xfbe2('0x64')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};