423ff6827bad7861482590da1ebcfcd314c98e71
[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 _0x1095=['LIKE\x20?','<\x20?','<=\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','$endsWith','$between','pop','utcOffset','hours','minutes','seconds','lodash','moment','sqlOperator','startsWith','[$or]','and','replace','[$and]','split','forEach','shift','match','filter','indexOf','map','conditions','push','buildExpression','DATE','operator','$eq','value','$gt','$lte','add','days','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','includes','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$startsWith'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0x1095,0x82));var _0x5109=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0x1095[_0x513aa5];return _0x1a1a7c;};'use strict';var _=require(_0x5109('0x0'));var moment=require(_0x5109('0x1'));exports['parseSearch']=function(_0x2dcf35){var _0x1d38a5={'conditions':[]};_0x1d38a5[_0x5109('0x2')]=_[_0x5109('0x3')](_0x2dcf35,_0x5109('0x4'))?'or':_0x5109('0x5');var _0x4c2bf7=_0x2dcf35[_0x5109('0x6')](_0x5109('0x7'),'')['replace'](_0x5109('0x4'),'')[_0x5109('0x8')]('||');for(var _0x3f8ed5=0x0;_0x3f8ed5<_0x4c2bf7['length'];_0x3f8ed5++){var _0x33967b=_0x4c2bf7[_0x3f8ed5][_0x5109('0x8')](':=');var _0x41786f=_0x33967b[0x0];var _0x3a4bdb=_0x33967b['slice'](0x1);_0x3a4bdb[_0x5109('0x9')](function(_0x537f24){var _0x55ad57=_0x537f24[_0x5109('0x8')]('[')[_0x5109('0xa')]();var _0x15beee=_0x537f24[_0x5109('0xb')](/\[(.*?)\]/g);_0x15beee[_0x5109('0x9')](function(_0x3c300c){var _0xd30543=_0x3c300c[_0x5109('0x8')]('[')[_0x5109('0xc')](function(_0x4fdd25){return _0x4fdd25[_0x5109('0xd')](']')>-0x1;})[_0x5109('0xe')](function(_0x4650ae){return _0x4650ae[_0x5109('0x8')](']')[0x0];})[0x0];_0x1d38a5[_0x5109('0xf')][_0x5109('0x10')]({'field':_0x41786f,'operator':_0x55ad57,'value':_0xd30543});});});}return _0x1d38a5;};exports[_0x5109('0x11')]=function(_0x171569,_0x3f3b74,_0x5dd196){var _0x2f13cc={};if(_0x3f3b74===_0x5109('0x12')){if(_0x5dd196[_0x5109('0x13')]===_0x5109('0x14')){_0x5dd196['operator']='$between';_0x5dd196[_0x5109('0x15')]+=','+_0x5dd196['value'];}else if(_['includes']([_0x5109('0x16'),_0x5109('0x17')],_0x5dd196['operator'])){_0x5dd196['value']=moment(_0x5dd196[_0x5109('0x15')])[_0x5109('0x18')](0x1,_0x5109('0x19'))[_0x5109('0x1a')](_0x5109('0x1b'));}}if(_0x5dd196[_0x5109('0x1c')]){_0x3f3b74=_0x5dd196[_0x5109('0x1c')];_0x2f13cc[_0x5109('0x1d')]=_0x5109('0x1e')+_0x171569+'.'+_0x5dd196[_0x5109('0x1f')]+_0x5109('0x20')+_0x5dd196[_0x5109('0x1c')]+')\x20'+parseOperator(_0x5dd196[_0x5109('0x13')]);}else{_0x2f13cc['text']=_0x171569+'.'+_0x5dd196[_0x5109('0x1f')]+'\x20'+parseOperator(_0x5dd196[_0x5109('0x13')]);}if(_[_0x5109('0x21')]([_0x5109('0x22'),_0x5109('0x23')],_0x5dd196[_0x5109('0x13')]))_0x2f13cc[_0x5109('0x1d')]='('+_0x2f13cc['text']+_0x5109('0x24')+_0x171569+'.'+_0x5dd196[_0x5109('0x1f')]+_0x5109('0x25');_0x2f13cc[_0x5109('0x15')]=parseValue(_0x3f3b74,_0x5dd196['operator'],_0x5dd196[_0x5109('0x15')]);return _0x2f13cc;};function parseOperator(_0x4347c4){var _0x4c8957;switch(_0x4347c4){case _0x5109('0x26'):_0x4c8957='IN\x20?';break;case'$notIn':_0x4c8957=_0x5109('0x27');break;case _0x5109('0x14'):_0x4c8957=_0x5109('0x28');break;case'$ne':_0x4c8957=_0x5109('0x29');break;case _0x5109('0x2a'):case _0x5109('0x2b'):case'$endsWith':_0x4c8957=_0x5109('0x2c');break;case'$lt':_0x4c8957=_0x5109('0x2d');break;case'$gt':_0x4c8957='>\x20?';break;case _0x5109('0x17'):_0x4c8957=_0x5109('0x2e');break;case _0x5109('0x2f'):_0x4c8957=_0x5109('0x30');break;case'$between':_0x4c8957=_0x5109('0x31');break;}return _0x4c8957;}function parseValue(_0x10ba64,_0xaeb483,_0x578018){var _0x2bc8a9={'start':undefined,'end':undefined};switch(_0xaeb483){case'$in':case _0x5109('0x23'):_0x2bc8a9[_0x5109('0x32')]=_0x578018[_0x5109('0x8')](',');break;case _0x5109('0x2a'):_0x2bc8a9['start']='%'+_0x578018+'%';break;case _0x5109('0x2b'):_0x2bc8a9[_0x5109('0x32')]=_0x578018+'%';break;case _0x5109('0x33'):_0x2bc8a9[_0x5109('0x32')]='%'+_0x578018;break;case _0x5109('0x34'):var _0x32c474=_0x578018[_0x5109('0x8')](',');var _0x578018=_0x32c474[_0x5109('0xa')]();var _0x23ccc0=_0x32c474[_0x5109('0x35')]();if(_0x10ba64===_0x5109('0x12')){_0x578018=moment(_0x578018)[_0x5109('0x36')](0x0,!![])['format']();_0x23ccc0=moment(_0x23ccc0)[_0x5109('0x36')](0x0,!![])[_0x5109('0x18')](0x17,_0x5109('0x37'))[_0x5109('0x18')](0x3b,_0x5109('0x38'))[_0x5109('0x18')](0x3b,_0x5109('0x39'))[_0x5109('0x1a')]();}_0x2bc8a9={'start':_0x578018,'end':_0x23ccc0};break;default:_0x2bc8a9[_0x5109('0x32')]=_0x578018;break;}return _0x2bc8a9;}