Пример #1
0
        public async Task StartAsync()
        {
            _context.FullMenu = (await _terminalApi.GetMenus2(new MenuRequestDto())).Value.First();
            IMenuCacheModel menuCache = CacheTree.Map <MenuCacheModel, Availability, CommonModifier, Language, MenuCategory, MenuItem, ModifierGroup, RelatedModifier, MenuCategory2Availability, MenuItem2Availability, ModifierGroup2MenuItem>(_context.FullMenu);

            _context.TreeMenu = CacheTree.CreateTree(menuCache, menuCache.Language.First().Key);
        }
        public SessionImplObject GetTree(SessionQuery sessionQuery)
        {
            var    ser = new JavaScriptSerializer();
            string json;

            try
            {
                //string decimalCulture=TreeObj.Configuration.Locale;
                //TreeObj.Configuration.Locale = System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.ToUpper();
                CacheTree ct = new CacheTree(ConnectionString, TreeObj.Configuration);
                //controlla il parametro CachedTree del webconfig se utilizzare o meno la cache
                bool UseWidgetCache = (WebClientSettings.Instance != null) ? WebClientSettings.Instance.CachedTree : false;

                string JsonTree = null;
                if (UseWidgetCache)
                {
                    JsonTree = ct.GetCachedTree();
                }

                if (!string.IsNullOrEmpty(JsonTree))
                {
                    return new SessionImplObject()
                           {
                               SavedTree = JsonTree
                           }
                }
                ;

                //ISdmxObjects SdmxOBJ = GetSdmxObject(TreeObj.Configuration);
                ISdmxObjects SdmxOBJ = null;

                if (sessionQuery._IGetSDMXObject == null || TreeObj.Configuration.EndPoint != sessionQuery._endpointSettings.EndPoint)
                {
                    SdmxOBJ = GetSdmxObject(TreeObj.Configuration, sessionQuery);

                    sessionQuery._IGetSDMXObject = SdmxOBJ;
                }
                else
                {
                    SdmxOBJ = sessionQuery._IGetSDMXObject;
                }


                //TreeObj.Configuration.Locale = decimalCulture;

                List <JsTreeNode> nodelist = BuildJSTree(SdmxOBJ, System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName);
                if (nodelist == null || nodelist.Count == 0)
                {//Invio Errore
                    var x = new { error = true, dataflowError = true, message = ISTAT.WebClient.WidgetComplements.Model.App_GlobalResources.Messages.no_results_found };
                    throw new Exception(ser.Serialize(x));
                }

                json = ser.Serialize(nodelist);


                JArray jobject = JArray.Parse(json);
                string appo    = jobject.ToString();


                ct.SaveCachedTree(json);

                return(new SessionImplObject()
                {
                    SavedTree = json, SdmxObject = SdmxOBJ
                });
            }
            catch (InvalidOperationException ex)
            {
                Logger.Warn(Resources.ErrorMaxJsonLength);
                Logger.Warn(ex.Message, ex);
                throw new Exception(ErrorOccured);
            }
            catch (ArgumentException ex)
            {
                Logger.Warn(Resources.ErrorRecursionLimit);
                Logger.Warn(ex.Message, ex);
                throw new Exception(ErrorOccured);
            }
            catch (Exception ex)
            {
                Logger.Warn(ex.Message, ex);
                throw new Exception(ErrorOccured);
            }
        }