487d9af9a7e545ad71d6d7e47251a342d0b1f432
[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 _0x3770=['split','slice','forEach','match','map','conditions','push','buildExpression','DATE','operator','$eq','$between','value','includes','$gt','$lte','add','days','format','YYYY-MM-DD','castTo','text','CAST(','field','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','NOT\x20IN\x20?','$ne','<>\x20?','$substring','$startsWith','$endsWith','$lt','<\x20?','>\x20?','<=\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','shift','pop','utcOffset','hours','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','and','replace','[$and]'];(function(_0x138c4c,_0x5693fa){var _0x57af3d=function(_0x1b229d){while(--_0x1b229d){_0x138c4c['push'](_0x138c4c['shift']());}};_0x57af3d(++_0x5693fa);}(_0x3770,0x1b7));var _0x0377=function(_0x4b7510,_0x13c45e){_0x4b7510=_0x4b7510-0x0;var _0x47736a=_0x3770[_0x4b7510];return _0x47736a;};'use strict';var _=require(_0x0377('0x0'));var moment=require(_0x0377('0x1'));exports[_0x0377('0x2')]=function(_0x520c90){var _0x382072={'conditions':[]};_0x382072[_0x0377('0x3')]=_[_0x0377('0x4')](_0x520c90,_0x0377('0x5'))?'or':_0x0377('0x6');var _0x1808b2=_0x520c90[_0x0377('0x7')](_0x0377('0x8'),'')[_0x0377('0x7')](_0x0377('0x5'),'')[_0x0377('0x9')]('||');for(var _0x55e358=0x0;_0x55e358<_0x1808b2['length'];_0x55e358++){var _0x431b1a=_0x1808b2[_0x55e358][_0x0377('0x9')](':=');var _0x352ea1=_0x431b1a[0x0];var _0x35e0ca=_0x431b1a[_0x0377('0xa')](0x1);_0x35e0ca[_0x0377('0xb')](function(_0x3111a8){var _0x4e440d=_0x3111a8['split']('[')['shift']();var _0x1dccba=_0x3111a8[_0x0377('0xc')](/\[(.*?)\]/g);_0x1dccba[_0x0377('0xb')](function(_0x5a3f97){var _0x3d886a=_0x5a3f97[_0x0377('0x9')]('[')['filter'](function(_0x1d8571){return _0x1d8571['indexOf'](']')>-0x1;})[_0x0377('0xd')](function(_0x5b539c){return _0x5b539c['split'](']')[0x0];})[0x0];_0x382072[_0x0377('0xe')][_0x0377('0xf')]({'field':_0x352ea1,'operator':_0x4e440d,'value':_0x3d886a});});});}return _0x382072;};exports[_0x0377('0x10')]=function(_0x4a7271,_0x9d463d,_0x1f86f9){var _0x27a3ac={};if(_0x9d463d===_0x0377('0x11')){if(_0x1f86f9[_0x0377('0x12')]===_0x0377('0x13')){_0x1f86f9[_0x0377('0x12')]=_0x0377('0x14');_0x1f86f9[_0x0377('0x15')]+=','+_0x1f86f9['value'];}else if(_[_0x0377('0x16')]([_0x0377('0x17'),_0x0377('0x18')],_0x1f86f9['operator'])){_0x1f86f9[_0x0377('0x15')]=moment(_0x1f86f9[_0x0377('0x15')])[_0x0377('0x19')](0x1,_0x0377('0x1a'))[_0x0377('0x1b')](_0x0377('0x1c'));}}if(_0x1f86f9[_0x0377('0x1d')]){_0x9d463d=_0x1f86f9[_0x0377('0x1d')];_0x27a3ac[_0x0377('0x1e')]=_0x0377('0x1f')+_0x4a7271+'.'+_0x1f86f9[_0x0377('0x20')]+'\x20AS\x20'+_0x1f86f9['castTo']+')\x20'+parseOperator(_0x1f86f9[_0x0377('0x12')]);}else{_0x27a3ac[_0x0377('0x1e')]=_0x4a7271+'.'+_0x1f86f9['field']+'\x20'+parseOperator(_0x1f86f9[_0x0377('0x12')]);}if(_[_0x0377('0x16')](['$ne',_0x0377('0x21')],_0x1f86f9[_0x0377('0x12')]))_0x27a3ac['text']='('+_0x27a3ac['text']+_0x0377('0x22')+_0x4a7271+'.'+_0x1f86f9[_0x0377('0x20')]+_0x0377('0x23');_0x27a3ac[_0x0377('0x15')]=parseValue(_0x9d463d,_0x1f86f9[_0x0377('0x12')],_0x1f86f9[_0x0377('0x15')]);return _0x27a3ac;};function parseOperator(_0x40d9a3){var _0x25c01c;switch(_0x40d9a3){case _0x0377('0x24'):_0x25c01c='IN\x20?';break;case _0x0377('0x21'):_0x25c01c=_0x0377('0x25');break;case _0x0377('0x13'):_0x25c01c='=\x20?';break;case _0x0377('0x26'):_0x25c01c=_0x0377('0x27');break;case _0x0377('0x28'):case _0x0377('0x29'):case _0x0377('0x2a'):_0x25c01c='LIKE\x20?';break;case _0x0377('0x2b'):_0x25c01c=_0x0377('0x2c');break;case _0x0377('0x17'):_0x25c01c=_0x0377('0x2d');break;case _0x0377('0x18'):_0x25c01c=_0x0377('0x2e');break;case _0x0377('0x2f'):_0x25c01c=_0x0377('0x30');break;case _0x0377('0x14'):_0x25c01c=_0x0377('0x31');break;}return _0x25c01c;}function parseValue(_0x45ed85,_0x344566,_0x13d38a){var _0x2eaaa6={'start':undefined,'end':undefined};switch(_0x344566){case _0x0377('0x24'):case _0x0377('0x21'):_0x2eaaa6[_0x0377('0x32')]=_0x13d38a[_0x0377('0x9')](',');break;case'$substring':_0x2eaaa6[_0x0377('0x32')]='%'+_0x13d38a+'%';break;case _0x0377('0x29'):_0x2eaaa6[_0x0377('0x32')]=_0x13d38a+'%';break;case _0x0377('0x2a'):_0x2eaaa6[_0x0377('0x32')]='%'+_0x13d38a;break;case'$between':var _0x2db002=_0x13d38a[_0x0377('0x9')](',');var _0x13d38a=_0x2db002[_0x0377('0x33')]();var _0x3975f9=_0x2db002[_0x0377('0x34')]();if(_0x45ed85===_0x0377('0x11')){_0x13d38a=moment(_0x13d38a)[_0x0377('0x35')](0x0,!![])[_0x0377('0x1b')]();_0x3975f9=moment(_0x3975f9)[_0x0377('0x35')](0x0,!![])['add'](0x17,_0x0377('0x36'))[_0x0377('0x19')](0x3b,'minutes')[_0x0377('0x19')](0x3b,_0x0377('0x37'))[_0x0377('0x1b')]();}_0x2eaaa6={'start':_0x13d38a,'end':_0x3975f9};break;default:_0x2eaaa6[_0x0377('0x32')]=_0x13d38a;break;}return _0x2eaaa6;}