Built motion from commit d1eab355.|2.6.28
[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 _0xdcb4=['agicommand','vswitch','target','default','invalid','traverseBFS','includes','exports','lodash','menu','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','push','size','info','no\x20vertex\x20found','stop\x20traverse','length','condition'];(function(_0x1cf135,_0x519b1c){var _0x588b36=function(_0x245b73){while(--_0x245b73){_0x1cf135['push'](_0x1cf135['shift']());}};_0x588b36(++_0x519b1c);}(_0xdcb4,0x64));var _0x4dcb=function(_0x42f387,_0xdcab22){_0x42f387=_0x42f387-0x0;var _0x322270=_0xdcb4[_0x42f387];return _0x322270;};'use strict';var _=require(_0x4dcb('0x0'));var logger=require('../../../config/logger')('agi');var verticesWithRetry=[_0x4dcb('0x1'),'getdigits',_0x4dcb('0x2')];var Graph=function(){this[_0x4dcb('0x3')]={};this[_0x4dcb('0x4')]={};this[_0x4dcb('0x5')]=0x0;};Graph[_0x4dcb('0x6')][_0x4dcb('0x7')]=function(_0x1d78a9){this[_0x4dcb('0x3')][_0x1d78a9['id']]=_0x1d78a9;this[_0x4dcb('0x4')][_0x1d78a9['id']]=[];};Graph[_0x4dcb('0x6')]['addEdge']=function(_0x1b20d9,_0x179233,_0xfc4888){this[_0x4dcb('0x4')][_0x1b20d9][_0x4dcb('0x8')]({'target':_0x179233,'condition':_0xfc4888});this[_0x4dcb('0x5')]+=0x1;};Graph[_0x4dcb('0x6')][_0x4dcb('0x9')]=function(){return _[_0x4dcb('0x9')](this[_0x4dcb('0x3')]);};Graph[_0x4dcb('0x6')]['relations']=function(){return this[_0x4dcb('0x5')];};Graph['prototype']['getVertex']=function(_0x5b9f91){return this[_0x4dcb('0x3')][_0x5b9f91];};Graph[_0x4dcb('0x6')]['traverseBFS']=function(_0x3f3af9,_0x121ae9){if(!this['vertices'][_0x3f3af9]){return logger[_0x4dcb('0xa')](_0x4dcb('0xb'));}var _0x1b58a6=_0x121ae9(this[_0x4dcb('0x3')][_0x3f3af9]);if(!_0x1b58a6){return logger[_0x4dcb('0xa')](_0x4dcb('0xc'));}if(this[_0x4dcb('0x4')][_0x3f3af9][_0x4dcb('0xd')]===0x0){return logger['info']('no\x20edge/s\x20available');}for(var _0x33f0c4=0x0,_0x3151f1=[],_0x6995d=![];_0x33f0c4<this[_0x4dcb('0x4')][_0x3f3af9][_0x4dcb('0xd')];_0x33f0c4+=0x1){if(this['edges'][_0x3f3af9][_0x33f0c4][_0x4dcb('0xe')]){_0x3151f1=this['edges'][_0x3f3af9][_0x33f0c4][_0x4dcb('0xe')]['split'](',');for(var _0x2b25f1=0x0;_0x2b25f1<_0x3151f1[_0x4dcb('0xd')];_0x2b25f1+=0x1){if(this[_0x4dcb('0x3')][_0x3f3af9][_0x4dcb('0xf')]===_0x4dcb('0x10')&&_0x3151f1[_0x2b25f1]==='-'){_0x6995d=this['edges'][_0x3f3af9][_0x33f0c4][_0x4dcb('0x11')];logger['info'](_0x4dcb('0x12'),_0x3151f1[_0x2b25f1],this[_0x4dcb('0x4')][_0x3f3af9][_0x33f0c4][_0x4dcb('0x11')]);}else if(this['vertices'][_0x3f3af9][_0x4dcb('0xf')]===_0x4dcb('0x1')&&_0x3151f1[_0x2b25f1]==='i'){_0x6995d=this['edges'][_0x3f3af9][_0x33f0c4][_0x4dcb('0x11')];logger[_0x4dcb('0xa')](_0x4dcb('0x13'),_0x3151f1[_0x2b25f1],this[_0x4dcb('0x4')][_0x3f3af9][_0x33f0c4][_0x4dcb('0x11')]);}if(_0x3151f1[_0x2b25f1]===_0x1b58a6){return this[_0x4dcb('0x14')](this['edges'][_0x3f3af9][_0x33f0c4][_0x4dcb('0x11')],_0x121ae9);}}}else{return this[_0x4dcb('0x14')](this[_0x4dcb('0x4')][_0x3f3af9][_0x33f0c4][_0x4dcb('0x11')],_0x121ae9);}}if(_0x3151f1[_0x4dcb('0xd')]){if(this[_0x4dcb('0x3')][_0x3f3af9][_0x4dcb('0xf')]===_0x4dcb('0x10')){if(_0x6995d){return this[_0x4dcb('0x14')](_0x6995d,_0x121ae9);}return logger['info']('default\x20on\x20switch\x20not\x20found');}else if(_[_0x4dcb('0x15')](verticesWithRetry,this['vertices'][_0x3f3af9]['agicommand'])){if(_0x1b58a6==='-'){return logger['info']('max\x20retry\x20reach');}if(_0x6995d&&_0x1b58a6!=='t'){return this[_0x4dcb('0x14')](_0x6995d,_0x121ae9);}return this[_0x4dcb('0x14')](_0x3f3af9,_0x121ae9);}return logger[_0x4dcb('0xa')]('condition\x20not\x20found');}};module[_0x4dcb('0x16')]=Graph;