fd3881b134923dadf183a415ed40f1cbcefcf35c
[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 _0x743d=['skip','keys','some','name','compact','Contact','push','User','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','tag','filter','search','c.ListId\x20IS\x20NULL','attributes','group','c.id','limit','offset','subqry.id','having','order','DESC','subqry.','subqry','findAll','color','CmContact','sequelize','query','Tags','COUNT(*)','isEmpty','Sequelize','QueryTypes','SELECT','toString','exports','squel','../parsers/qs','../../mysqldb','role','agent','ListId','autocomplete','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','cm_user_has_contacts','.id','left_join','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','firstName','phone','mobile','fax','email','CompanyId','createdAt','updatedAt','deletedAt','TagIds','includes','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','sqlOperator','conditions','find','dateOfBirth','fieldType','datetime','buildExpression','type','default','start','value','end','Tag','map','tags','user','clause','and'];(function(_0x132f18,_0x435fb5){var _0x493c82=function(_0x2df2fb){while(--_0x2df2fb){_0x132f18['push'](_0x132f18['shift']());}};_0x493c82(++_0x435fb5);}(_0x743d,0x16e));var _0xd743=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x743d[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var squel=require(_0xd743('0x0'));var as=require('../parsers/advancedSearch');var qs=require(_0xd743('0x1'));var utils=require('../interaction/utils');var db=require(_0xd743('0x2'))['db'];function skipContactsQuery(_0x441e77,_0x3c5c82){var _0x509e77=![];if(_0x441e77[_0xd743('0x3')]===_0xd743('0x4')&&!_0x3c5c82['search']&&!_0x3c5c82[_0xd743('0x5')]&&_0x3c5c82[_0xd743('0x6')]!==_0xd743('0x7')){_0x509e77=!![];}return _0x509e77;}function getContactsSubquery(){return squel[_0xd743('0x8')]()[_0xd743('0x9')](_0xd743('0xa'),'c')[_0xd743('0xb')](_0xd743('0xc'));}function applyJoinClauses(_0x1744ee,_0x45dea9){var _0x20e7f7=_0x45dea9?'c':'subqry';_0x1744ee['left_join'](_0xd743('0xd'),'uc','uc.CmContactId\x20=\x20'+_0x20e7f7+_0xd743('0xe'))[_0xd743('0xf')](_0xd743('0x10'),'ct',_0xd743('0x11')+_0x20e7f7+'.id')[_0xd743('0xf')](_0xd743('0x12'),'t',_0xd743('0x13'));return _0x1744ee;}function addFieldsToQuery(_0xd00d1a,_0xad101c,_0x378891,_0x57cc31,_0x2a16d8){var _0x5f3bdb=_0x2a16d8?'c':'subqry';if(!_0xad101c){_0xad101c=['id',_0xd743('0x14'),'lastName',_0xd743('0x15'),_0xd743('0x16'),_0xd743('0x17'),_0xd743('0x18'),_0xd743('0x5'),_0xd743('0x19'),_0xd743('0x1a'),_0xd743('0x1b'),_0xd743('0x1c'),_0xd743('0x1d')];}else if(!_0xad101c[_0xd743('0x1e')]('id')){_0xad101c['push']('id');}var _0x293656=_0x378891&&_0x2a16d8||!_0x378891&&!_0x2a16d8;if(_0x57cc31){_0x293656=_0x57cc31&&_0x2a16d8||!_0x57cc31&&!_0x2a16d8;}_0xad101c['forEach'](function(_0x396686){if(_0x396686===_0xd743('0x1d')){if(_0x293656){_0xd00d1a[_0xd743('0x1f')](_0xd743('0x20'),_0x396686);}else if(_0x378891||_0x57cc31){_0xd00d1a[_0xd743('0x1f')](_0x5f3bdb+'.'+_0x396686);}}else{_0xd00d1a[_0xd743('0x1f')](_0x5f3bdb+'.'+_0x396686);}});return _0xd00d1a;}function getSqlClauses(){var _0x5e4b64={'default':squel['expr'](),'fields':squel[_0xd743('0x21')](),'filter':squel['expr'](),'tags':{'clause':squel[_0xd743('0x21')](),'ids':null},'user':{'clause':squel['expr'](),'skip':![]}};return _0x5e4b64;}function parseTagParameter(_0x53b865){var _0x219ac5=squel[_0xd743('0x21')]();if(_0x53b865){var _0x188d6d=utils[_0xd743('0x22')](_0x53b865);_0x188d6d[_0xd743('0x23')](function(_0xdde50e){_0x219ac5['or'](_0xd743('0x24'),'%,'+_0xdde50e+',%');});}return _0x219ac5;}function parseSearchFilter(_0xcfccf){var _0x4169e5=squel[_0xd743('0x21')]();if(_0xcfccf){var _0x11f167=_0xcfccf[_0xd743('0x25')]('\x5c','\x5c\x5c')[_0xd743('0x25')](/'/g,'\x27\x27');if(_0x11f167[_0xd743('0x26')]('\x20')[_0xd743('0x27')]>0x1){_0x4169e5['or'](_0xd743('0x28'),qs[_0xd743('0x29')](_0x11f167,!![]),null);}else{if(qs['isNumeric'](_0x11f167)){_0x4169e5['or']('c.id\x20LIKE\x20?',_0x11f167+'%');_0x4169e5['or']('c.phone\x20LIKE\x20?',_0x11f167+'%');_0x4169e5['or'](_0xd743('0x2a'),_0x11f167+'%');_0x4169e5['or'](_0xd743('0x2b'),_0x11f167+'%');}else if(qs[_0xd743('0x2c')](_0x11f167)){_0x4169e5['or'](_0xd743('0x2d'),_0x11f167+'%');}else{_0x4169e5['or'](_0xd743('0x2e'),'%'+_0x11f167+'%');_0x4169e5['or'](_0xd743('0x2f'),'%'+_0x11f167+'%');_0x4169e5['or']('c.email\x20LIKE\x20?','%'+_0x11f167+'%');}}}return _0x4169e5;}function parseAdvancedSearchFilter(_0x242a8b,_0x2881cd){var _0x44613c=getSqlClauses();var _0x4cc585=as['parseSearch'](_0x242a8b);var _0x5216f7=_0x4cc585[_0xd743('0x30')];for(var _0x454262=0x0;_0x454262<_0x4cc585[_0xd743('0x31')]['length'];_0x454262++){var _0x47b592=_0x4cc585[_0xd743('0x31')][_0x454262];var _0x1ba7a6='c';var _0x4ae881=_[_0xd743('0x32')](_0x2881cd,['name',_0x47b592[_0xd743('0x1f')]]);if(_0x4ae881){if(_0x47b592[_0xd743('0x1f')]===_0xd743('0x33')||_0x4ae881[_0xd743('0x34')]===_0xd743('0x35')){_0x47b592['castTo']='DATE';}var _0xdbd4eb=as[_0xd743('0x36')](_0x1ba7a6,_0x4ae881[_0xd743('0x37')],_0x47b592);_0x44613c[_0xd743('0x38')][_0x5216f7](_0xdbd4eb['text'],_0xdbd4eb['value'][_0xd743('0x39')],_0xdbd4eb[_0xd743('0x3a')][_0xd743('0x3b')]);}else{if(_0x47b592[_0xd743('0x1f')]===_0xd743('0x3c')){var _0x50f810=_0x47b592['value'][_0xd743('0x26')](',')[_0xd743('0x3d')](function(_0x456bb0){return Number(_0x456bb0);});var _0x125eba=parseTagParameter(_0x50f810);_0x44613c[_0xd743('0x3e')]['clause']['and'](_0x125eba);_0x44613c[_0xd743('0x3e')]['ids']=_0x50f810;}else if(_0x47b592[_0xd743('0x1f')]==='User'){_0x44613c[_0xd743('0x3f')][_0xd743('0x40')][_0xd743('0x41')]('uc.UserId\x20=\x20?',_0x47b592[_0xd743('0x3a')]);_0x44613c[_0xd743('0x3f')][_0xd743('0x42')]=!![];}}}return _0x44613c;}function parseModelFields(_0x5d4175,_0x288a08){var _0x4c4ec4=squel[_0xd743('0x21')]();var _0x4b6b00=_(_0x5d4175)[_0xd743('0x43')]()['map'](function(_0x3aad59){return _[_0xd743('0x44')](_0x288a08,[_0xd743('0x45'),_0x3aad59])?_0x3aad59:undefined;})[_0xd743('0x46')]()['value']();if(_0x5d4175[_0xd743('0x47')]){_0x4b6b00[_0xd743('0x48')](_0xd743('0x47'));}if(_0x5d4175[_0xd743('0x49')]){_0x4b6b00[_0xd743('0x48')](_0xd743('0x49'));}if(_0x4b6b00['length']>0x0){_0x4b6b00[_0xd743('0x23')](function(_0x20c2cf){if(_0x20c2cf==='ListId'){_0x4c4ec4[_0xd743('0x41')](_0xd743('0x4a'),[][_0xd743('0x4b')](_0x5d4175[_0x20c2cf]));}else if(_0x20c2cf===_0xd743('0x47')){var _0x2d97bb='%'+_0x5d4175[_0x20c2cf]+'%';_0x4c4ec4[_0xd743('0x41')](_0xd743('0x4c'),_0x2d97bb);}else if(_0x20c2cf===_0xd743('0x49')){_0x4c4ec4[_0xd743('0x41')]('uc.UserId\x20=\x20?',_0x5d4175[_0x20c2cf]);}else{_0x4c4ec4[_0xd743('0x41')]('c.'+_0x20c2cf+_0xd743('0x4d'),_0x5d4175[_0x20c2cf]);}});}return _0x4c4ec4;}function parseQueryParameters(_0x18a4ed,_0x415329){var _0x200f79=getSqlClauses();return Promise[_0xd743('0x4e')]()[_0xd743('0x4f')](function(){return parseModelFields(_0x18a4ed,_0x415329);})['then'](function(_0xfd958e){_0x200f79['fields'][_0xd743('0x41')](_0xfd958e);return parseTagParameter(_0x18a4ed[_0xd743('0x50')]);})[_0xd743('0x4f')](function(_0x477f5c){_0x200f79[_0xd743('0x3e')][_0xd743('0x40')]['and'](_0x477f5c);return parseSearchFilter(_0x18a4ed['filter']);})[_0xd743('0x4f')](function(_0x54f31c){_0x200f79[_0xd743('0x51')]=_0x54f31c;return _0x200f79;});}function checkListsRestrictions(_0x403a0e,_0x36f77e,_0x2c44b5){var _0x3f7465=squel[_0xd743('0x21')]();return Promise[_0xd743('0x4e')]()['then'](function(){if(_0x36f77e[_0xd743('0x52')]&&_0x403a0e['role']===_0xd743('0x4')&&!_0x2c44b5){return _0x403a0e['getLists']({'attributes':['id'],'raw':!![]});}})[_0xd743('0x4f')](function(_0x25ad15){if(_0x25ad15){if(_0x25ad15['length']===0x0){_0x3f7465[_0xd743('0x41')](_0xd743('0x53'));}else{_0x3f7465[_0xd743('0x41')](_0xd743('0x4a'),_[_0xd743('0x3d')](_0x25ad15,'id'));}}})[_0xd743('0x4f')](function(){return _0x3f7465;});}function buildContactsQuery(_0x2ab2c7,_0x4229d2,_0xa3e7c5,_0x292b20,_0x4063f5,_0x4e05f2){if(_0x4229d2){_0x4229d2=_0xa3e7c5[_0xd743('0x54')];}_0x2ab2c7=addFieldsToQuery(_0x2ab2c7,_0x4229d2,_0x292b20,_0x4e05f2,!![]);var _0x49d957=squel[_0xd743('0x8')]();_0x49d957=addFieldsToQuery(_0x49d957,_0x4229d2,_0x292b20,_0x4e05f2,![]);if(_0x292b20||_0x4e05f2){_0x2ab2c7=applyJoinClauses(_0x2ab2c7,!![]);_0x2ab2c7[_0xd743('0x55')](_0xd743('0x56'));if(_0xa3e7c5[_0xd743('0x57')]){_0x49d957[_0xd743('0x57')](_0xa3e7c5[_0xd743('0x57')]);}if(_0xa3e7c5[_0xd743('0x58')]){_0x49d957['offset'](_0xa3e7c5[_0xd743('0x58')]);}}else{_0x49d957=applyJoinClauses(_0x49d957,![]);_0x49d957[_0xd743('0x55')](_0xd743('0x59'));if(_0xa3e7c5[_0xd743('0x57')]){_0x2ab2c7[_0xd743('0x57')](_0xa3e7c5['limit']);}if(_0xa3e7c5[_0xd743('0x58')]){_0x2ab2c7[_0xd743('0x58')](_0xa3e7c5[_0xd743('0x58')]);}}_0x49d957[_0xd743('0x5a')](_0x4063f5);if(_0xa3e7c5['order']){_0xa3e7c5[_0xd743('0x5b')][_0xd743('0x23')](function(_0x23960e){_0x2ab2c7['order']('c.'+_0x23960e[0x0],_0x23960e[0x1]===_0xd743('0x5c')?![]:!![]);_0x49d957[_0xd743('0x5b')](_0xd743('0x5d')+_0x23960e[0x0],_0x23960e[0x1]===_0xd743('0x5c')?![]:!![]);});}_0x49d957['from'](_0x2ab2c7,_0xd743('0x5e'));return _0x49d957;}function getFilteredContacts(_0x21136b){var _0x551d1e=[];return db[_0xd743('0x3c')][_0xd743('0x5f')]({'attributes':['id','name',_0xd743('0x60')],'raw':!![]})[_0xd743('0x4f')](function(_0x182d7f){_0x551d1e=_['keyBy'](_0x182d7f,'id');var _0x4da516={'type':db['Sequelize']['QueryTypes']['SELECT'],'model':db[_0xd743('0x61')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xd743('0x62')][_0xd743('0x63')](_0x21136b['toString'](),_0x4da516);})[_0xd743('0x4f')](function(_0x1f7d23){_0x1f7d23[_0xd743('0x23')](function(_0x5e5e62){if(_0x5e5e62['TagIds']){_0x5e5e62[_0xd743('0x64')]=[];_0x5e5e62[_0xd743('0x1d')][_0xd743('0x26')](',')[_0xd743('0x23')](function(_0x1e0b7f){_0x5e5e62[_0xd743('0x64')][_0xd743('0x48')](_0x551d1e[_0x1e0b7f]);});}delete _0x5e5e62[_0xd743('0x1d')];});return _0x1f7d23;});}function countFilteredContacts(_0x51af94,_0x4716ea){var _0x3f52d7=_0x51af94['clone']();_0x3f52d7[_0xd743('0x1f')](_0xd743('0x65'));_0x3f52d7=applyJoinClauses(_0x3f52d7,!![]);_0x51af94['group'](_0xd743('0x56'));var _0x38f2bd=utils[_0xd743('0x22')](_0x4716ea);if(!_[_0xd743('0x66')](_0x38f2bd)){_0x3f52d7['where']('t.id\x20IN\x20?',_0x38f2bd);}var _0x2e4c5b={'type':db[_0xd743('0x67')][_0xd743('0x68')][_0xd743('0x69')],'raw':!![]};return db['sequelize']['query'](_0x3f52d7[_0xd743('0x6a')](),_0x2e4c5b)['then'](function(_0x1e8188){return _0x1e8188[0x0][_0xd743('0x65')];});}module[_0xd743('0x6b')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};