bd2b518694a1b0c3895dd0a7baf1631f5744dace
[motion2.git] / server / components / parsers / advancedSearch.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 _0xcf0b=['lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','and','replace','[$and]','split','length','slice','forEach','shift','match','filter','indexOf','map','conditions','push','DATE','operator','value','includes','$gt','$lte','format','YYYY-MM-DD','castTo','CAST(','field','$ne','$notIn','text','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$lt','<\x20?','<=\x20?','$gte','>=\x20?','$between','start','$startsWith','$endsWith','pop','utcOffset','add','hours','minutes','seconds'];(function(_0x2e50e4,_0xc9271e){var _0x1ccb48=function(_0x496ab7){while(--_0x496ab7){_0x2e50e4['push'](_0x2e50e4['shift']());}};_0x1ccb48(++_0xc9271e);}(_0xcf0b,0x156));var _0xbcf0=function(_0x123824,_0x52a5c7){_0x123824=_0x123824-0x0;var _0x1421eb=_0xcf0b[_0x123824];return _0x1421eb;};'use strict';var _=require(_0xbcf0('0x0'));var moment=require(_0xbcf0('0x1'));exports[_0xbcf0('0x2')]=function(_0xff0dd7){var _0x38683a={'conditions':[]};_0x38683a[_0xbcf0('0x3')]=_[_0xbcf0('0x4')](_0xff0dd7,_0xbcf0('0x5'))?'or':_0xbcf0('0x6');var _0x491ded=_0xff0dd7[_0xbcf0('0x7')](_0xbcf0('0x8'),'')[_0xbcf0('0x7')](_0xbcf0('0x5'),'')[_0xbcf0('0x9')]('||');for(var _0x14aed=0x0;_0x14aed<_0x491ded[_0xbcf0('0xa')];_0x14aed++){var _0x500c58=_0x491ded[_0x14aed][_0xbcf0('0x9')](':=');var _0x6f9a96=_0x500c58[0x0];var _0x14b44e=_0x500c58[_0xbcf0('0xb')](0x1);_0x14b44e[_0xbcf0('0xc')](function(_0x275387){var _0x3d3653=_0x275387[_0xbcf0('0x9')]('[')[_0xbcf0('0xd')]();var _0x403bb6=_0x275387[_0xbcf0('0xe')](/\[(.*?)\]/g);_0x403bb6[_0xbcf0('0xc')](function(_0x130159){var _0xa8ccf7=_0x130159[_0xbcf0('0x9')]('[')[_0xbcf0('0xf')](function(_0x30d265){return _0x30d265[_0xbcf0('0x10')](']')>-0x1;})[_0xbcf0('0x11')](function(_0x509280){return _0x509280[_0xbcf0('0x9')](']')[0x0];})[0x0];_0x38683a[_0xbcf0('0x12')][_0xbcf0('0x13')]({'field':_0x6f9a96,'operator':_0x3d3653,'value':_0xa8ccf7});});});}return _0x38683a;};exports['buildExpression']=function(_0xf8ba4c,_0x1d2cc0,_0x4fdb58){var _0x2b1991={};if(_0x1d2cc0===_0xbcf0('0x14')){if(_0x4fdb58[_0xbcf0('0x15')]==='$eq'){_0x4fdb58[_0xbcf0('0x15')]='$between';_0x4fdb58[_0xbcf0('0x16')]+=','+_0x4fdb58['value'];}else if(_[_0xbcf0('0x17')]([_0xbcf0('0x18'),_0xbcf0('0x19')],_0x4fdb58[_0xbcf0('0x15')])){_0x4fdb58[_0xbcf0('0x16')]=moment(_0x4fdb58['value'])['add'](0x1,'days')[_0xbcf0('0x1a')](_0xbcf0('0x1b'));}}if(_0x4fdb58[_0xbcf0('0x1c')]){_0x1d2cc0=_0x4fdb58[_0xbcf0('0x1c')];_0x2b1991['text']=_0xbcf0('0x1d')+_0xf8ba4c+'.'+_0x4fdb58[_0xbcf0('0x1e')]+'\x20AS\x20'+_0x4fdb58['castTo']+')\x20'+parseOperator(_0x4fdb58['operator']);}else{_0x2b1991['text']=_0xf8ba4c+'.'+_0x4fdb58['field']+'\x20'+parseOperator(_0x4fdb58[_0xbcf0('0x15')]);}if(_['includes']([_0xbcf0('0x1f'),_0xbcf0('0x20')],_0x4fdb58[_0xbcf0('0x15')]))_0x2b1991['text']='('+_0x2b1991[_0xbcf0('0x21')]+_0xbcf0('0x22')+_0xf8ba4c+'.'+_0x4fdb58[_0xbcf0('0x1e')]+_0xbcf0('0x23');_0x2b1991[_0xbcf0('0x16')]=parseValue(_0x1d2cc0,_0x4fdb58[_0xbcf0('0x15')],_0x4fdb58[_0xbcf0('0x16')]);return _0x2b1991;};function parseOperator(_0x4f9bb6){var _0x1bc729;switch(_0x4f9bb6){case _0xbcf0('0x24'):_0x1bc729=_0xbcf0('0x25');break;case _0xbcf0('0x20'):_0x1bc729=_0xbcf0('0x26');break;case'$eq':_0x1bc729=_0xbcf0('0x27');break;case _0xbcf0('0x1f'):_0x1bc729=_0xbcf0('0x28');break;case _0xbcf0('0x29'):case'$startsWith':case'$endsWith':_0x1bc729='LIKE\x20?';break;case _0xbcf0('0x2a'):_0x1bc729=_0xbcf0('0x2b');break;case'$gt':_0x1bc729='>\x20?';break;case _0xbcf0('0x19'):_0x1bc729=_0xbcf0('0x2c');break;case _0xbcf0('0x2d'):_0x1bc729=_0xbcf0('0x2e');break;case _0xbcf0('0x2f'):_0x1bc729='BETWEEN\x20?\x20AND\x20?';break;}return _0x1bc729;}function parseValue(_0x28b7c6,_0x17269c,_0x5f5a0f){var _0x34bc0b={'start':undefined,'end':undefined};switch(_0x17269c){case _0xbcf0('0x24'):case _0xbcf0('0x20'):_0x34bc0b[_0xbcf0('0x30')]=_0x5f5a0f[_0xbcf0('0x9')](',');break;case _0xbcf0('0x29'):_0x34bc0b[_0xbcf0('0x30')]='%'+_0x5f5a0f+'%';break;case _0xbcf0('0x31'):_0x34bc0b[_0xbcf0('0x30')]=_0x5f5a0f+'%';break;case _0xbcf0('0x32'):_0x34bc0b[_0xbcf0('0x30')]='%'+_0x5f5a0f;break;case'$between':var _0x46cbb1=_0x5f5a0f[_0xbcf0('0x9')](',');var _0x5f5a0f=_0x46cbb1[_0xbcf0('0xd')]();var _0x53f2f8=_0x46cbb1[_0xbcf0('0x33')]();if(_0x28b7c6===_0xbcf0('0x14')){_0x5f5a0f=moment(_0x5f5a0f)[_0xbcf0('0x34')](0x0,!![])[_0xbcf0('0x1a')]();_0x53f2f8=moment(_0x53f2f8)[_0xbcf0('0x34')](0x0,!![])[_0xbcf0('0x35')](0x17,_0xbcf0('0x36'))[_0xbcf0('0x35')](0x3b,_0xbcf0('0x37'))['add'](0x3b,_0xbcf0('0x38'))[_0xbcf0('0x1a')]();}_0x34bc0b={'start':_0x5f5a0f,'end':_0x53f2f8};break;default:_0x34bc0b['start']=_0x5f5a0f;break;}return _0x34bc0b;}