ab1c3a048d595d9a5de50b12d60a31ca493efe17
[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 _0xa044=['sqlOperator','and','replace','[$and]','split','length','slice','forEach','shift','indexOf','map','conditions','buildExpression','$eq','operator','$between','value','includes','$gt','add','days','format','YYYY-MM-DD','castTo','text','\x20AS\x20','field','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','NOT\x20IN\x20?','<>\x20?','$substring','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','$in','start','$startsWith','pop','utcOffset','hours','minutes','seconds','lodash','parseSearch'];(function(_0x582c64,_0xadba12){var _0x3c906b=function(_0x4a3a82){while(--_0x4a3a82){_0x582c64['push'](_0x582c64['shift']());}};_0x3c906b(++_0xadba12);}(_0xa044,0x1d2));var _0x4a04=function(_0x5ae509,_0x30c3c4){_0x5ae509=_0x5ae509-0x0;var _0x2d6892=_0xa044[_0x5ae509];return _0x2d6892;};'use strict';var _=require(_0x4a04('0x0'));var moment=require('moment');exports[_0x4a04('0x1')]=function(_0x2814b7){var _0x4bd134={'conditions':[]};_0x4bd134[_0x4a04('0x2')]=_['startsWith'](_0x2814b7,'[$or]')?'or':_0x4a04('0x3');var _0x433160=_0x2814b7[_0x4a04('0x4')](_0x4a04('0x5'),'')['replace']('[$or]','')[_0x4a04('0x6')]('||');for(var _0x48fdf3=0x0;_0x48fdf3<_0x433160[_0x4a04('0x7')];_0x48fdf3++){var _0x2427d1=_0x433160[_0x48fdf3][_0x4a04('0x6')](':=');var _0x400ab1=_0x2427d1[0x0];var _0x4c72ea=_0x2427d1[_0x4a04('0x8')](0x1);_0x4c72ea[_0x4a04('0x9')](function(_0xce639c){var _0x44a287=_0xce639c[_0x4a04('0x6')]('[')[_0x4a04('0xa')]();var _0x1b4ab0=_0xce639c['match'](/\[(.*?)\]/g);_0x1b4ab0[_0x4a04('0x9')](function(_0x577143){var _0x184038=_0x577143[_0x4a04('0x6')]('[')['filter'](function(_0x3ae869){return _0x3ae869[_0x4a04('0xb')](']')>-0x1;})[_0x4a04('0xc')](function(_0x3cf8bd){return _0x3cf8bd['split'](']')[0x0];})[0x0];_0x4bd134[_0x4a04('0xd')]['push']({'field':_0x400ab1,'operator':_0x44a287,'value':_0x184038});});});}return _0x4bd134;};exports[_0x4a04('0xe')]=function(_0x23b5bc,_0x3d919b,_0x2e2d24){var _0x437aa4={};if(_0x3d919b==='DATE'){if(_0x2e2d24['operator']===_0x4a04('0xf')){_0x2e2d24[_0x4a04('0x10')]=_0x4a04('0x11');_0x2e2d24[_0x4a04('0x12')]+=','+_0x2e2d24[_0x4a04('0x12')];}else if(_[_0x4a04('0x13')]([_0x4a04('0x14'),'$lte'],_0x2e2d24['operator'])){_0x2e2d24['value']=moment(_0x2e2d24[_0x4a04('0x12')])[_0x4a04('0x15')](0x1,_0x4a04('0x16'))[_0x4a04('0x17')](_0x4a04('0x18'));}}if(_0x2e2d24[_0x4a04('0x19')]){_0x3d919b=_0x2e2d24[_0x4a04('0x19')];_0x437aa4[_0x4a04('0x1a')]='CAST('+_0x23b5bc+'.'+_0x2e2d24['field']+_0x4a04('0x1b')+_0x2e2d24[_0x4a04('0x19')]+')\x20'+parseOperator(_0x2e2d24[_0x4a04('0x10')]);}else{_0x437aa4[_0x4a04('0x1a')]=_0x23b5bc+'.'+_0x2e2d24[_0x4a04('0x1c')]+'\x20'+parseOperator(_0x2e2d24[_0x4a04('0x10')]);}if(_[_0x4a04('0x13')]([_0x4a04('0x1d'),_0x4a04('0x1e')],_0x2e2d24[_0x4a04('0x10')]))_0x437aa4[_0x4a04('0x1a')]='('+_0x437aa4[_0x4a04('0x1a')]+_0x4a04('0x1f')+_0x23b5bc+'.'+_0x2e2d24[_0x4a04('0x1c')]+_0x4a04('0x20');_0x437aa4[_0x4a04('0x12')]=parseValue(_0x3d919b,_0x2e2d24[_0x4a04('0x10')],_0x2e2d24['value']);return _0x437aa4;};function parseOperator(_0x5467b3){var _0x1d21b2;switch(_0x5467b3){case'$in':_0x1d21b2='IN\x20?';break;case _0x4a04('0x1e'):_0x1d21b2=_0x4a04('0x21');break;case _0x4a04('0xf'):_0x1d21b2='=\x20?';break;case _0x4a04('0x1d'):_0x1d21b2=_0x4a04('0x22');break;case _0x4a04('0x23'):case'$startsWith':case _0x4a04('0x24'):_0x1d21b2=_0x4a04('0x25');break;case _0x4a04('0x26'):_0x1d21b2=_0x4a04('0x27');break;case'$gt':_0x1d21b2=_0x4a04('0x28');break;case'$lte':_0x1d21b2='<=\x20?';break;case _0x4a04('0x29'):_0x1d21b2=_0x4a04('0x2a');break;case _0x4a04('0x11'):_0x1d21b2=_0x4a04('0x2b');break;}return _0x1d21b2;}function parseValue(_0x5eb638,_0x50ca60,_0x141fb1){var _0x365727={'start':undefined,'end':undefined};switch(_0x50ca60){case _0x4a04('0x2c'):case'$notIn':_0x365727[_0x4a04('0x2d')]=_0x141fb1[_0x4a04('0x6')](',');break;case _0x4a04('0x23'):_0x365727['start']='%'+_0x141fb1+'%';break;case _0x4a04('0x2e'):_0x365727[_0x4a04('0x2d')]=_0x141fb1+'%';break;case _0x4a04('0x24'):_0x365727[_0x4a04('0x2d')]='%'+_0x141fb1;break;case _0x4a04('0x11'):var _0x8aa7a2=_0x141fb1['split'](',');var _0x141fb1=_0x8aa7a2['shift']();var _0x4e94b3=_0x8aa7a2[_0x4a04('0x2f')]();if(_0x5eb638==='DATE'){_0x141fb1=moment(_0x141fb1)[_0x4a04('0x30')](0x0,!![])[_0x4a04('0x17')]();_0x4e94b3=moment(_0x4e94b3)[_0x4a04('0x30')](0x0,!![])[_0x4a04('0x15')](0x17,_0x4a04('0x31'))[_0x4a04('0x15')](0x3b,_0x4a04('0x32'))[_0x4a04('0x15')](0x3b,_0x4a04('0x33'))[_0x4a04('0x17')]();}_0x365727={'start':_0x141fb1,'end':_0x4e94b3};break;default:_0x365727[_0x4a04('0x2d')]=_0x141fb1;break;}return _0x365727;}