8f22e0ab8844f6eec8e5c987399f024cdb6a37b4
[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 _0x4722=['field','\x20AS\x20','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','$gte','>=\x20?','$between','BETWEEN\x20?\x20AND\x20?','start','shift','pop','DATE','hours','minutes','seconds','lodash','moment','parseSearch','sqlOperator','and','replace','[$or]','split','length','slice','forEach','match','filter','indexOf','map','conditions','push','buildExpression','operator','$eq','value','includes','$gt','$lte','add','days','format','YYYY-MM-DD','castTo','text'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x4722,0x1ba));var _0x2472=function(_0x4c59c1,_0x4cfb83){_0x4c59c1=_0x4c59c1-0x0;var _0x4dac5c=_0x4722[_0x4c59c1];return _0x4dac5c;};'use strict';var _=require(_0x2472('0x0'));var moment=require(_0x2472('0x1'));exports[_0x2472('0x2')]=function(_0x5bc394){var _0x23d7dc={'conditions':[]};_0x23d7dc[_0x2472('0x3')]=_['startsWith'](_0x5bc394,'[$or]')?'or':_0x2472('0x4');var _0x5609bd=_0x5bc394[_0x2472('0x5')]('[$and]','')[_0x2472('0x5')](_0x2472('0x6'),'')[_0x2472('0x7')]('||');for(var _0x860300=0x0;_0x860300<_0x5609bd[_0x2472('0x8')];_0x860300++){var _0x48dcc8=_0x5609bd[_0x860300][_0x2472('0x7')](':=');var _0x22ee5e=_0x48dcc8[0x0];var _0x1d49d0=_0x48dcc8[_0x2472('0x9')](0x1);_0x1d49d0[_0x2472('0xa')](function(_0x358578){var _0x7f889b=_0x358578['split']('[')['shift']();var _0x1475fa=_0x358578[_0x2472('0xb')](/\[(.*?)\]/g);_0x1475fa['forEach'](function(_0x5dd95d){var _0x2c15e6=_0x5dd95d[_0x2472('0x7')]('[')[_0x2472('0xc')](function(_0x5813e0){return _0x5813e0[_0x2472('0xd')](']')>-0x1;})[_0x2472('0xe')](function(_0x2571e5){return _0x2571e5[_0x2472('0x7')](']')[0x0];})[0x0];_0x23d7dc[_0x2472('0xf')][_0x2472('0x10')]({'field':_0x22ee5e,'operator':_0x7f889b,'value':_0x2c15e6});});});}return _0x23d7dc;};exports[_0x2472('0x11')]=function(_0x2f0668,_0xcdd6ea,_0x35ee66){var _0xd3df={};if(_0xcdd6ea==='DATE'){if(_0x35ee66[_0x2472('0x12')]===_0x2472('0x13')){_0x35ee66[_0x2472('0x12')]='$between';_0x35ee66[_0x2472('0x14')]+=','+_0x35ee66[_0x2472('0x14')];}else if(_[_0x2472('0x15')]([_0x2472('0x16'),_0x2472('0x17')],_0x35ee66[_0x2472('0x12')])){_0x35ee66['value']=moment(_0x35ee66[_0x2472('0x14')])[_0x2472('0x18')](0x1,_0x2472('0x19'))[_0x2472('0x1a')](_0x2472('0x1b'));}}if(_0x35ee66[_0x2472('0x1c')]){_0xcdd6ea=_0x35ee66[_0x2472('0x1c')];_0xd3df[_0x2472('0x1d')]='CAST('+_0x2f0668+'.'+_0x35ee66[_0x2472('0x1e')]+_0x2472('0x1f')+_0x35ee66[_0x2472('0x1c')]+')\x20'+parseOperator(_0x35ee66[_0x2472('0x12')]);}else{_0xd3df['text']=_0x2f0668+'.'+_0x35ee66['field']+'\x20'+parseOperator(_0x35ee66[_0x2472('0x12')]);}if(_[_0x2472('0x15')]([_0x2472('0x20'),_0x2472('0x21')],_0x35ee66[_0x2472('0x12')]))_0xd3df[_0x2472('0x1d')]='('+_0xd3df[_0x2472('0x1d')]+_0x2472('0x22')+_0x2f0668+'.'+_0x35ee66['field']+_0x2472('0x23');_0xd3df[_0x2472('0x14')]=parseValue(_0xcdd6ea,_0x35ee66[_0x2472('0x12')],_0x35ee66['value']);return _0xd3df;};function parseOperator(_0x18dd4f){var _0x979ce8;switch(_0x18dd4f){case _0x2472('0x24'):_0x979ce8=_0x2472('0x25');break;case _0x2472('0x21'):_0x979ce8=_0x2472('0x26');break;case _0x2472('0x13'):_0x979ce8=_0x2472('0x27');break;case _0x2472('0x20'):_0x979ce8='<>\x20?';break;case _0x2472('0x28'):case _0x2472('0x29'):case _0x2472('0x2a'):_0x979ce8=_0x2472('0x2b');break;case _0x2472('0x2c'):_0x979ce8=_0x2472('0x2d');break;case'$gt':_0x979ce8=_0x2472('0x2e');break;case'$lte':_0x979ce8=_0x2472('0x2f');break;case _0x2472('0x30'):_0x979ce8=_0x2472('0x31');break;case _0x2472('0x32'):_0x979ce8=_0x2472('0x33');break;}return _0x979ce8;}function parseValue(_0x5bd648,_0x15c881,_0x427cac){var _0x4f3c79={'start':undefined,'end':undefined};switch(_0x15c881){case _0x2472('0x24'):case _0x2472('0x21'):_0x4f3c79[_0x2472('0x34')]=_0x427cac[_0x2472('0x7')](',');break;case'$substring':_0x4f3c79['start']='%'+_0x427cac+'%';break;case _0x2472('0x29'):_0x4f3c79['start']=_0x427cac+'%';break;case _0x2472('0x2a'):_0x4f3c79['start']='%'+_0x427cac;break;case'$between':var _0x4f2188=_0x427cac[_0x2472('0x7')](',');var _0x427cac=_0x4f2188[_0x2472('0x35')]();var _0x5c8da6=_0x4f2188[_0x2472('0x36')]();if(_0x5bd648===_0x2472('0x37')){_0x427cac=moment(_0x427cac)['utcOffset'](0x0,!![])['format']();_0x5c8da6=moment(_0x5c8da6)['utcOffset'](0x0,!![])[_0x2472('0x18')](0x17,_0x2472('0x38'))[_0x2472('0x18')](0x3b,_0x2472('0x39'))[_0x2472('0x18')](0x3b,_0x2472('0x3a'))['format']();}_0x4f3c79={'start':_0x427cac,'end':_0x5c8da6};break;default:_0x4f3c79[_0x2472('0x34')]=_0x427cac;break;}return _0x4f3c79;}