5b8b89f790d12fd24242b9f37890cc222f415334
[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 _0x3984=['vswitch','target','default','invalid','default\x20on\x20switch\x20not\x20found','max\x20retry\x20reach','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','push','size','relations','traverseBFS','info','no\x20vertex\x20found','no\x20edge/s\x20available','length','condition','split','agicommand'];(function(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0x3984,0x1ab));var _0x4398=function(_0x422be2,_0x1c439e){_0x422be2=_0x422be2-0x0;var _0x1b820e=_0x3984[_0x422be2];return _0x1b820e;};'use strict';var _=require(_0x4398('0x0'));var logger=require(_0x4398('0x1'))(_0x4398('0x2'));var verticesWithRetry=[_0x4398('0x3'),_0x4398('0x4'),_0x4398('0x5')];var Graph=function(){this[_0x4398('0x6')]={};this[_0x4398('0x7')]={};this[_0x4398('0x8')]=0x0;};Graph[_0x4398('0x9')]['addVertex']=function(_0x1a759b){this['vertices'][_0x1a759b['id']]=_0x1a759b;this[_0x4398('0x7')][_0x1a759b['id']]=[];};Graph[_0x4398('0x9')]['addEdge']=function(_0x492099,_0x121862,_0xfd033e){this['edges'][_0x492099][_0x4398('0xa')]({'target':_0x121862,'condition':_0xfd033e});this[_0x4398('0x8')]+=0x1;};Graph[_0x4398('0x9')][_0x4398('0xb')]=function(){return _[_0x4398('0xb')](this[_0x4398('0x6')]);};Graph[_0x4398('0x9')][_0x4398('0xc')]=function(){return this[_0x4398('0x8')];};Graph['prototype']['getVertex']=function(_0x3ee310){return this[_0x4398('0x6')][_0x3ee310];};Graph[_0x4398('0x9')][_0x4398('0xd')]=function(_0x5dc611,_0x3084dd){if(!this[_0x4398('0x6')][_0x5dc611]){return logger[_0x4398('0xe')](_0x4398('0xf'));}var _0x52df9c=_0x3084dd(this['vertices'][_0x5dc611]);if(!_0x52df9c){return logger[_0x4398('0xe')]('stop\x20traverse');}if(this[_0x4398('0x7')][_0x5dc611]['length']===0x0){return logger[_0x4398('0xe')](_0x4398('0x10'));}for(var _0x77d68c=0x0,_0x367650=[],_0x119fa6=![];_0x77d68c<this[_0x4398('0x7')][_0x5dc611][_0x4398('0x11')];_0x77d68c+=0x1){if(this['edges'][_0x5dc611][_0x77d68c][_0x4398('0x12')]){_0x367650=this[_0x4398('0x7')][_0x5dc611][_0x77d68c][_0x4398('0x12')][_0x4398('0x13')](',');for(var _0x312dc5=0x0;_0x312dc5<_0x367650[_0x4398('0x11')];_0x312dc5+=0x1){if(this['vertices'][_0x5dc611][_0x4398('0x14')]===_0x4398('0x15')&&_0x367650[_0x312dc5]==='-'){_0x119fa6=this[_0x4398('0x7')][_0x5dc611][_0x77d68c][_0x4398('0x16')];logger['info'](_0x4398('0x17'),_0x367650[_0x312dc5],this[_0x4398('0x7')][_0x5dc611][_0x77d68c]['target']);}else if(this['vertices'][_0x5dc611][_0x4398('0x14')]==='menu'&&_0x367650[_0x312dc5]==='i'){_0x119fa6=this['edges'][_0x5dc611][_0x77d68c][_0x4398('0x16')];logger[_0x4398('0xe')](_0x4398('0x18'),_0x367650[_0x312dc5],this[_0x4398('0x7')][_0x5dc611][_0x77d68c][_0x4398('0x16')]);}if(_0x367650[_0x312dc5]===_0x52df9c){return this['traverseBFS'](this[_0x4398('0x7')][_0x5dc611][_0x77d68c]['target'],_0x3084dd);}}}else{return this['traverseBFS'](this['edges'][_0x5dc611][_0x77d68c][_0x4398('0x16')],_0x3084dd);}}if(_0x367650[_0x4398('0x11')]){if(this[_0x4398('0x6')][_0x5dc611]['agicommand']===_0x4398('0x15')){if(_0x119fa6){return this[_0x4398('0xd')](_0x119fa6,_0x3084dd);}return logger[_0x4398('0xe')](_0x4398('0x19'));}else if(_['includes'](verticesWithRetry,this[_0x4398('0x6')][_0x5dc611][_0x4398('0x14')])){if(_0x52df9c==='-'){return logger[_0x4398('0xe')](_0x4398('0x1a'));}if(_0x119fa6&&_0x52df9c!=='t'){return this[_0x4398('0xd')](_0x119fa6,_0x3084dd);}return this[_0x4398('0xd')](_0x5dc611,_0x3084dd);}return logger['info']('condition\x20not\x20found');}};module[_0x4398('0x1b')]=Graph;