Built motion from commit fd055180.|2.6.30
[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 _0xba3c=['$eq','value','$gt','$lte','format','YYYY-MM-DD','castTo','CAST(','field','\x20AS\x20','operator','text','includes','$ne','\x20OR\x20','IN\x20?','$notIn','=\x20?','<>\x20?','$endsWith','<\x20?','>\x20?','<=\x20?','$gte','BETWEEN\x20?\x20AND\x20?','$in','start','$substring','$startsWith','$between','shift','pop','DATE','utcOffset','add','minutes','seconds','lodash','moment','[$or]','replace','split','length','slice','forEach','indexOf','map','conditions','push'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0xba3c,0x1de));var _0xcba3=function(_0x40f170,_0x4e26c6){_0x40f170=_0x40f170-0x0;var _0x5ed0a4=_0xba3c[_0x40f170];return _0x5ed0a4;};'use strict';var _=require(_0xcba3('0x0'));var moment=require(_0xcba3('0x1'));exports['parseSearch']=function(_0x187c1e){var _0x2ce731={'conditions':[]};_0x2ce731['sqlOperator']=_['startsWith'](_0x187c1e,_0xcba3('0x2'))?'or':'and';var _0x242ec8=_0x187c1e[_0xcba3('0x3')]('[$and]','')['replace'](_0xcba3('0x2'),'')[_0xcba3('0x4')]('||');for(var _0x4cc330=0x0;_0x4cc330<_0x242ec8[_0xcba3('0x5')];_0x4cc330++){var _0x2a296a=_0x242ec8[_0x4cc330][_0xcba3('0x4')](':=');var _0x1b7e22=_0x2a296a[0x0];var _0x127ab2=_0x2a296a[_0xcba3('0x6')](0x1);_0x127ab2['forEach'](function(_0x16ed3a){var _0x5bc8d9=_0x16ed3a[_0xcba3('0x4')]('[')['shift']();var _0x17a7e8=_0x16ed3a['match'](/\[(.*?)\]/g);_0x17a7e8[_0xcba3('0x7')](function(_0x19b119){var _0x578661=_0x19b119[_0xcba3('0x4')]('[')['filter'](function(_0x2c4e43){return _0x2c4e43[_0xcba3('0x8')](']')>-0x1;})[_0xcba3('0x9')](function(_0x5523a2){return _0x5523a2[_0xcba3('0x4')](']')[0x0];})[0x0];_0x2ce731[_0xcba3('0xa')][_0xcba3('0xb')]({'field':_0x1b7e22,'operator':_0x5bc8d9,'value':_0x578661});});});}return _0x2ce731;};exports['buildExpression']=function(_0x56a24b,_0x57530a,_0x27c175){var _0x2c6e07={};if(_0x57530a==='DATE'){if(_0x27c175['operator']===_0xcba3('0xc')){_0x27c175['operator']='$between';_0x27c175[_0xcba3('0xd')]+=','+_0x27c175[_0xcba3('0xd')];}else if(_['includes']([_0xcba3('0xe'),_0xcba3('0xf')],_0x27c175['operator'])){_0x27c175[_0xcba3('0xd')]=moment(_0x27c175[_0xcba3('0xd')])['add'](0x1,'days')[_0xcba3('0x10')](_0xcba3('0x11'));}}if(_0x27c175[_0xcba3('0x12')]){_0x57530a=_0x27c175['castTo'];_0x2c6e07['text']=_0xcba3('0x13')+_0x56a24b+'.'+_0x27c175[_0xcba3('0x14')]+_0xcba3('0x15')+_0x27c175[_0xcba3('0x12')]+')\x20'+parseOperator(_0x27c175[_0xcba3('0x16')]);}else{_0x2c6e07[_0xcba3('0x17')]=_0x56a24b+'.'+_0x27c175['field']+'\x20'+parseOperator(_0x27c175[_0xcba3('0x16')]);}if(_[_0xcba3('0x18')]([_0xcba3('0x19'),'$notIn'],_0x27c175['operator']))_0x2c6e07[_0xcba3('0x17')]='('+_0x2c6e07[_0xcba3('0x17')]+_0xcba3('0x1a')+_0x56a24b+'.'+_0x27c175[_0xcba3('0x14')]+'\x20IS\x20NULL)';_0x2c6e07[_0xcba3('0xd')]=parseValue(_0x57530a,_0x27c175[_0xcba3('0x16')],_0x27c175[_0xcba3('0xd')]);return _0x2c6e07;};function parseOperator(_0xebae26){var _0x19c85a;switch(_0xebae26){case'$in':_0x19c85a=_0xcba3('0x1b');break;case _0xcba3('0x1c'):_0x19c85a='NOT\x20IN\x20?';break;case _0xcba3('0xc'):_0x19c85a=_0xcba3('0x1d');break;case _0xcba3('0x19'):_0x19c85a=_0xcba3('0x1e');break;case'$substring':case'$startsWith':case _0xcba3('0x1f'):_0x19c85a='LIKE\x20?';break;case'$lt':_0x19c85a=_0xcba3('0x20');break;case _0xcba3('0xe'):_0x19c85a=_0xcba3('0x21');break;case'$lte':_0x19c85a=_0xcba3('0x22');break;case _0xcba3('0x23'):_0x19c85a='>=\x20?';break;case'$between':_0x19c85a=_0xcba3('0x24');break;}return _0x19c85a;}function parseValue(_0x3a6e8a,_0x27e5e4,_0x1beee4){var _0xa622e2={'start':undefined,'end':undefined};switch(_0x27e5e4){case _0xcba3('0x25'):case _0xcba3('0x1c'):_0xa622e2[_0xcba3('0x26')]=_0x1beee4[_0xcba3('0x4')](',');break;case _0xcba3('0x27'):_0xa622e2[_0xcba3('0x26')]='%'+_0x1beee4+'%';break;case _0xcba3('0x28'):_0xa622e2['start']=_0x1beee4+'%';break;case'$endsWith':_0xa622e2[_0xcba3('0x26')]='%'+_0x1beee4;break;case _0xcba3('0x29'):var _0x4a9f54=_0x1beee4[_0xcba3('0x4')](',');var _0x1beee4=_0x4a9f54[_0xcba3('0x2a')]();var _0x5ff952=_0x4a9f54[_0xcba3('0x2b')]();if(_0x3a6e8a===_0xcba3('0x2c')){_0x1beee4=moment(_0x1beee4)['utcOffset'](0x0,!![])['format']();_0x5ff952=moment(_0x5ff952)[_0xcba3('0x2d')](0x0,!![])['add'](0x17,'hours')[_0xcba3('0x2e')](0x3b,_0xcba3('0x2f'))[_0xcba3('0x2e')](0x3b,_0xcba3('0x30'))['format']();}_0xa622e2={'start':_0x1beee4,'end':_0x5ff952};break;default:_0xa622e2[_0xcba3('0x26')]=_0x1beee4;break;}return _0xa622e2;}