Built motion from commit 538092ac.|2.6.10
[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 _0xf3a0=['operator','$eq','$between','value','includes','$gt','$lte','add','days','format','YYYY-MM-DD','castTo','CAST(','field','\x20AS\x20','text','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','$substring','$startsWith','$endsWith','$lt','<\x20?','$gte','BETWEEN\x20?\x20AND\x20?','$notIn','start','shift','pop','utcOffset','hours','minutes','seconds','moment','sqlOperator','startsWith','[$or]','and','replace','[$and]','split','length','slice','forEach','match','indexOf','conditions','push','buildExpression','DATE'];(function(_0x145cd9,_0x2fca5d){var _0x3b2e75=function(_0x16bcf2){while(--_0x16bcf2){_0x145cd9['push'](_0x145cd9['shift']());}};_0x3b2e75(++_0x2fca5d);}(_0xf3a0,0x197));var _0x0f3a=function(_0xd5584e,_0x251c06){_0xd5584e=_0xd5584e-0x0;var _0xdc594e=_0xf3a0[_0xd5584e];return _0xdc594e;};'use strict';var _=require('lodash');var moment=require(_0x0f3a('0x0'));exports['parseSearch']=function(_0x368534){var _0x22f815={'conditions':[]};_0x22f815[_0x0f3a('0x1')]=_[_0x0f3a('0x2')](_0x368534,_0x0f3a('0x3'))?'or':_0x0f3a('0x4');var _0x43177d=_0x368534[_0x0f3a('0x5')](_0x0f3a('0x6'),'')[_0x0f3a('0x5')](_0x0f3a('0x3'),'')[_0x0f3a('0x7')]('||');for(var _0x31bc4f=0x0;_0x31bc4f<_0x43177d[_0x0f3a('0x8')];_0x31bc4f++){var _0xf2b229=_0x43177d[_0x31bc4f][_0x0f3a('0x7')](':=');var _0x75e15d=_0xf2b229[0x0];var _0x1c2044=_0xf2b229[_0x0f3a('0x9')](0x1);_0x1c2044[_0x0f3a('0xa')](function(_0x51026d){var _0x57bb75=_0x51026d['split']('[')['shift']();var _0x5d4559=_0x51026d[_0x0f3a('0xb')](/\[(.*?)\]/g);_0x5d4559[_0x0f3a('0xa')](function(_0x23ffb1){var _0x2a2260=_0x23ffb1[_0x0f3a('0x7')]('[')['filter'](function(_0x43727e){return _0x43727e[_0x0f3a('0xc')](']')>-0x1;})['map'](function(_0x1d7880){return _0x1d7880[_0x0f3a('0x7')](']')[0x0];})[0x0];_0x22f815[_0x0f3a('0xd')][_0x0f3a('0xe')]({'field':_0x75e15d,'operator':_0x57bb75,'value':_0x2a2260});});});}return _0x22f815;};exports[_0x0f3a('0xf')]=function(_0x4c2092,_0x374101,_0x53928f){var _0x4aa1bf={};if(_0x374101===_0x0f3a('0x10')){if(_0x53928f[_0x0f3a('0x11')]===_0x0f3a('0x12')){_0x53928f[_0x0f3a('0x11')]=_0x0f3a('0x13');_0x53928f[_0x0f3a('0x14')]+=','+_0x53928f['value'];}else if(_[_0x0f3a('0x15')]([_0x0f3a('0x16'),_0x0f3a('0x17')],_0x53928f['operator'])){_0x53928f[_0x0f3a('0x14')]=moment(_0x53928f[_0x0f3a('0x14')])[_0x0f3a('0x18')](0x1,_0x0f3a('0x19'))[_0x0f3a('0x1a')](_0x0f3a('0x1b'));}}if(_0x53928f[_0x0f3a('0x1c')]){_0x374101=_0x53928f[_0x0f3a('0x1c')];_0x4aa1bf['text']=_0x0f3a('0x1d')+_0x4c2092+'.'+_0x53928f[_0x0f3a('0x1e')]+_0x0f3a('0x1f')+_0x53928f[_0x0f3a('0x1c')]+')\x20'+parseOperator(_0x53928f['operator']);}else{_0x4aa1bf[_0x0f3a('0x20')]=_0x4c2092+'.'+_0x53928f['field']+'\x20'+parseOperator(_0x53928f[_0x0f3a('0x11')]);}if(_['includes'](['$ne','$notIn'],_0x53928f[_0x0f3a('0x11')]))_0x4aa1bf[_0x0f3a('0x20')]='('+_0x4aa1bf['text']+_0x0f3a('0x21')+_0x4c2092+'.'+_0x53928f[_0x0f3a('0x1e')]+_0x0f3a('0x22');_0x4aa1bf['value']=parseValue(_0x374101,_0x53928f[_0x0f3a('0x11')],_0x53928f[_0x0f3a('0x14')]);return _0x4aa1bf;};function parseOperator(_0x5c0510){var _0x200ceb;switch(_0x5c0510){case _0x0f3a('0x23'):_0x200ceb=_0x0f3a('0x24');break;case'$notIn':_0x200ceb=_0x0f3a('0x25');break;case'$eq':_0x200ceb='=\x20?';break;case'$ne':_0x200ceb='<>\x20?';break;case _0x0f3a('0x26'):case _0x0f3a('0x27'):case _0x0f3a('0x28'):_0x200ceb='LIKE\x20?';break;case _0x0f3a('0x29'):_0x200ceb=_0x0f3a('0x2a');break;case _0x0f3a('0x16'):_0x200ceb='>\x20?';break;case _0x0f3a('0x17'):_0x200ceb='<=\x20?';break;case _0x0f3a('0x2b'):_0x200ceb='>=\x20?';break;case _0x0f3a('0x13'):_0x200ceb=_0x0f3a('0x2c');break;}return _0x200ceb;}function parseValue(_0x1a5048,_0x266d85,_0x5e3c70){var _0x516a1e={'start':undefined,'end':undefined};switch(_0x266d85){case'$in':case _0x0f3a('0x2d'):_0x516a1e['start']=_0x5e3c70[_0x0f3a('0x7')](',');break;case _0x0f3a('0x26'):_0x516a1e[_0x0f3a('0x2e')]='%'+_0x5e3c70+'%';break;case _0x0f3a('0x27'):_0x516a1e[_0x0f3a('0x2e')]=_0x5e3c70+'%';break;case'$endsWith':_0x516a1e[_0x0f3a('0x2e')]='%'+_0x5e3c70;break;case _0x0f3a('0x13'):var _0x464f73=_0x5e3c70[_0x0f3a('0x7')](',');var _0x5e3c70=_0x464f73[_0x0f3a('0x2f')]();var _0x1a588e=_0x464f73[_0x0f3a('0x30')]();if(_0x1a5048===_0x0f3a('0x10')){_0x5e3c70=moment(_0x5e3c70)['utcOffset'](0x0,!![])[_0x0f3a('0x1a')]();_0x1a588e=moment(_0x1a588e)[_0x0f3a('0x31')](0x0,!![])[_0x0f3a('0x18')](0x17,_0x0f3a('0x32'))[_0x0f3a('0x18')](0x3b,_0x0f3a('0x33'))['add'](0x3b,_0x0f3a('0x34'))[_0x0f3a('0x1a')]();}_0x516a1e={'start':_0x5e3c70,'end':_0x1a588e};break;default:_0x516a1e[_0x0f3a('0x2e')]=_0x5e3c70;break;}return _0x516a1e;}