9abd0e4619d957a77a2d29bddf8bb76dd4766823
[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 _0x7692=['[$or]','replace','[$and]','split','length','slice','forEach','shift','match','map','conditions','push','buildExpression','DATE','operator','$eq','$between','value','includes','$gt','$lte','add','format','YYYY-MM-DD','castTo','text','CAST(','field','$ne','$notIn','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','pop','utcOffset','hours','minutes','seconds','lodash','parseSearch','sqlOperator','startsWith'];(function(_0x32f571,_0x4e7961){var _0x31e1ae=function(_0x5f0cce){while(--_0x5f0cce){_0x32f571['push'](_0x32f571['shift']());}};_0x31e1ae(++_0x4e7961);}(_0x7692,0xa1));var _0x2769=function(_0x332c1b,_0x28d711){_0x332c1b=_0x332c1b-0x0;var _0x21b49b=_0x7692[_0x332c1b];return _0x21b49b;};'use strict';var _=require(_0x2769('0x0'));var moment=require('moment');exports[_0x2769('0x1')]=function(_0x353ae4){var _0x57a0de={'conditions':[]};_0x57a0de[_0x2769('0x2')]=_[_0x2769('0x3')](_0x353ae4,_0x2769('0x4'))?'or':'and';var _0x15aed5=_0x353ae4[_0x2769('0x5')](_0x2769('0x6'),'')[_0x2769('0x5')]('[$or]','')[_0x2769('0x7')]('||');for(var _0x46e6b9=0x0;_0x46e6b9<_0x15aed5[_0x2769('0x8')];_0x46e6b9++){var _0x5cd983=_0x15aed5[_0x46e6b9][_0x2769('0x7')](':=');var _0xe49c60=_0x5cd983[0x0];var _0x177e5c=_0x5cd983[_0x2769('0x9')](0x1);_0x177e5c[_0x2769('0xa')](function(_0x28d7e8){var _0x3ae101=_0x28d7e8[_0x2769('0x7')]('[')[_0x2769('0xb')]();var _0x498153=_0x28d7e8[_0x2769('0xc')](/\[(.*?)\]/g);_0x498153[_0x2769('0xa')](function(_0x3b14f6){var _0x5d6df8=_0x3b14f6['split']('[')['filter'](function(_0x95c742){return _0x95c742['indexOf'](']')>-0x1;})[_0x2769('0xd')](function(_0x5100e0){return _0x5100e0[_0x2769('0x7')](']')[0x0];})[0x0];_0x57a0de[_0x2769('0xe')][_0x2769('0xf')]({'field':_0xe49c60,'operator':_0x3ae101,'value':_0x5d6df8});});});}return _0x57a0de;};exports[_0x2769('0x10')]=function(_0x5b94c0,_0x3c0626,_0x5e6986){var _0x4e872d={};if(_0x3c0626===_0x2769('0x11')){if(_0x5e6986[_0x2769('0x12')]===_0x2769('0x13')){_0x5e6986['operator']=_0x2769('0x14');_0x5e6986['value']+=','+_0x5e6986[_0x2769('0x15')];}else if(_[_0x2769('0x16')]([_0x2769('0x17'),_0x2769('0x18')],_0x5e6986['operator'])){_0x5e6986[_0x2769('0x15')]=moment(_0x5e6986[_0x2769('0x15')])[_0x2769('0x19')](0x1,'days')[_0x2769('0x1a')](_0x2769('0x1b'));}}if(_0x5e6986[_0x2769('0x1c')]){_0x3c0626=_0x5e6986[_0x2769('0x1c')];_0x4e872d[_0x2769('0x1d')]=_0x2769('0x1e')+_0x5b94c0+'.'+_0x5e6986[_0x2769('0x1f')]+'\x20AS\x20'+_0x5e6986[_0x2769('0x1c')]+')\x20'+parseOperator(_0x5e6986[_0x2769('0x12')]);}else{_0x4e872d[_0x2769('0x1d')]=_0x5b94c0+'.'+_0x5e6986[_0x2769('0x1f')]+'\x20'+parseOperator(_0x5e6986[_0x2769('0x12')]);}if(_[_0x2769('0x16')]([_0x2769('0x20'),_0x2769('0x21')],_0x5e6986[_0x2769('0x12')]))_0x4e872d[_0x2769('0x1d')]='('+_0x4e872d[_0x2769('0x1d')]+'\x20OR\x20'+_0x5b94c0+'.'+_0x5e6986[_0x2769('0x1f')]+_0x2769('0x22');_0x4e872d[_0x2769('0x15')]=parseValue(_0x3c0626,_0x5e6986[_0x2769('0x12')],_0x5e6986[_0x2769('0x15')]);return _0x4e872d;};function parseOperator(_0x1b0856){var _0x26902f;switch(_0x1b0856){case _0x2769('0x23'):_0x26902f=_0x2769('0x24');break;case _0x2769('0x21'):_0x26902f=_0x2769('0x25');break;case _0x2769('0x13'):_0x26902f=_0x2769('0x26');break;case _0x2769('0x20'):_0x26902f='<>\x20?';break;case _0x2769('0x27'):case _0x2769('0x28'):case _0x2769('0x29'):_0x26902f=_0x2769('0x2a');break;case _0x2769('0x2b'):_0x26902f=_0x2769('0x2c');break;case _0x2769('0x17'):_0x26902f=_0x2769('0x2d');break;case'$lte':_0x26902f='<=\x20?';break;case _0x2769('0x2e'):_0x26902f=_0x2769('0x2f');break;case _0x2769('0x14'):_0x26902f=_0x2769('0x30');break;}return _0x26902f;}function parseValue(_0x4d25a9,_0x2b0fc1,_0x5c0bcc){var _0x1cf7fe={'start':undefined,'end':undefined};switch(_0x2b0fc1){case'$in':case _0x2769('0x21'):_0x1cf7fe['start']=_0x5c0bcc[_0x2769('0x7')](',');break;case'$substring':_0x1cf7fe[_0x2769('0x31')]='%'+_0x5c0bcc+'%';break;case'$startsWith':_0x1cf7fe[_0x2769('0x31')]=_0x5c0bcc+'%';break;case'$endsWith':_0x1cf7fe[_0x2769('0x31')]='%'+_0x5c0bcc;break;case'$between':var _0x44821f=_0x5c0bcc[_0x2769('0x7')](',');var _0x5c0bcc=_0x44821f[_0x2769('0xb')]();var _0x15dad5=_0x44821f[_0x2769('0x32')]();if(_0x4d25a9==='DATE'){_0x5c0bcc=moment(_0x5c0bcc)[_0x2769('0x33')](0x0,!![])[_0x2769('0x1a')]();_0x15dad5=moment(_0x15dad5)[_0x2769('0x33')](0x0,!![])['add'](0x17,_0x2769('0x34'))['add'](0x3b,_0x2769('0x35'))[_0x2769('0x19')](0x3b,_0x2769('0x36'))[_0x2769('0x1a')]();}_0x1cf7fe={'start':_0x5c0bcc,'end':_0x15dad5};break;default:_0x1cf7fe['start']=_0x5c0bcc;break;}return _0x1cf7fe;}