ab984c2803e40db0904db8cf9445f1c5fa9e47e1
[motion2.git] / server / services / agi / graph / index.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 _0xa501=['length','condition','agicommand','vswitch','target','default','invalid','default\x20on\x20switch\x20not\x20found','condition\x20not\x20found','exports','lodash','agi','menu','getdigits','getsecretdigits','vertices','edges','numberOfEdges','addVertex','prototype','addEdge','push','size','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse'];(function(_0x30f280,_0x323fb0){var _0xcca9ba=function(_0x102ced){while(--_0x102ced){_0x30f280['push'](_0x30f280['shift']());}};_0xcca9ba(++_0x323fb0);}(_0xa501,0x15a));var _0x1a50=function(_0x218cac,_0x25289e){_0x218cac=_0x218cac-0x0;var _0x34a488=_0xa501[_0x218cac];return _0x34a488;};'use strict';var _=require(_0x1a50('0x0'));var logger=require('../../../config/logger')(_0x1a50('0x1'));var verticesWithRetry=[_0x1a50('0x2'),_0x1a50('0x3'),_0x1a50('0x4')];var Graph=function(){this[_0x1a50('0x5')]={};this[_0x1a50('0x6')]={};this[_0x1a50('0x7')]=0x0;};Graph['prototype'][_0x1a50('0x8')]=function(_0x3b9a8b){this[_0x1a50('0x5')][_0x3b9a8b['id']]=_0x3b9a8b;this[_0x1a50('0x6')][_0x3b9a8b['id']]=[];};Graph[_0x1a50('0x9')][_0x1a50('0xa')]=function(_0x22a892,_0x30852c,_0x1e03d3){this[_0x1a50('0x6')][_0x22a892][_0x1a50('0xb')]({'target':_0x30852c,'condition':_0x1e03d3});this[_0x1a50('0x7')]+=0x1;};Graph['prototype'][_0x1a50('0xc')]=function(){return _['size'](this['vertices']);};Graph[_0x1a50('0x9')]['relations']=function(){return this['numberOfEdges'];};Graph[_0x1a50('0x9')][_0x1a50('0xd')]=function(_0x5d46d7){return this[_0x1a50('0x5')][_0x5d46d7];};Graph[_0x1a50('0x9')][_0x1a50('0xe')]=function(_0x2e4b69,_0x41475d){if(!this[_0x1a50('0x5')][_0x2e4b69]){return logger[_0x1a50('0xf')](_0x1a50('0x10'));}var _0x2db7e9=_0x41475d(this[_0x1a50('0x5')][_0x2e4b69]);if(!_0x2db7e9){return logger['info'](_0x1a50('0x11'));}if(this[_0x1a50('0x6')][_0x2e4b69][_0x1a50('0x12')]===0x0){return logger[_0x1a50('0xf')]('no\x20edge/s\x20available');}for(var _0x1773de=0x0,_0x158835=[],_0xfcb7fe=![];_0x1773de<this[_0x1a50('0x6')][_0x2e4b69][_0x1a50('0x12')];_0x1773de+=0x1){if(this['edges'][_0x2e4b69][_0x1773de][_0x1a50('0x13')]){_0x158835=this['edges'][_0x2e4b69][_0x1773de]['condition']['split'](',');for(var _0x419ba2=0x0;_0x419ba2<_0x158835[_0x1a50('0x12')];_0x419ba2+=0x1){if(this[_0x1a50('0x5')][_0x2e4b69][_0x1a50('0x14')]===_0x1a50('0x15')&&_0x158835[_0x419ba2]==='-'){_0xfcb7fe=this['edges'][_0x2e4b69][_0x1773de][_0x1a50('0x16')];logger['info'](_0x1a50('0x17'),_0x158835[_0x419ba2],this[_0x1a50('0x6')][_0x2e4b69][_0x1773de][_0x1a50('0x16')]);}else if(this[_0x1a50('0x5')][_0x2e4b69][_0x1a50('0x14')]==='menu'&&_0x158835[_0x419ba2]==='i'){_0xfcb7fe=this[_0x1a50('0x6')][_0x2e4b69][_0x1773de][_0x1a50('0x16')];logger[_0x1a50('0xf')](_0x1a50('0x18'),_0x158835[_0x419ba2],this[_0x1a50('0x6')][_0x2e4b69][_0x1773de][_0x1a50('0x16')]);}if(_0x158835[_0x419ba2]===_0x2db7e9){return this[_0x1a50('0xe')](this[_0x1a50('0x6')][_0x2e4b69][_0x1773de]['target'],_0x41475d);}}}else{return this[_0x1a50('0xe')](this['edges'][_0x2e4b69][_0x1773de][_0x1a50('0x16')],_0x41475d);}}if(_0x158835['length']){if(this[_0x1a50('0x5')][_0x2e4b69][_0x1a50('0x14')]===_0x1a50('0x15')){if(_0xfcb7fe){return this[_0x1a50('0xe')](_0xfcb7fe,_0x41475d);}return logger[_0x1a50('0xf')](_0x1a50('0x19'));}else if(_['includes'](verticesWithRetry,this[_0x1a50('0x5')][_0x2e4b69]['agicommand'])){if(_0x2db7e9==='-'){return logger[_0x1a50('0xf')]('max\x20retry\x20reach');}if(_0xfcb7fe&&_0x2db7e9!=='t'){return this['traverseBFS'](_0xfcb7fe,_0x41475d);}return this[_0x1a50('0xe')](_0x2e4b69,_0x41475d);}return logger[_0x1a50('0xf')](_0x1a50('0x1a'));}};module[_0x1a50('0x1b')]=Graph;