private async Task GetbGridAssets()
        {
            var tenantId = User.Claims.Where(c => c.Type == "http://schemas.microsoft.com/identity/claims/tenantid").FirstOrDefault().Value;

            if (!_cache.TryGetValue(tenantId + "_bGridAssets", out List <bGridAsset> cachedAssets))
            {
                _bGridAssets = await BuildingActionHelper.ExecuteGetAction <List <bGridAsset> >("api/assets", _tenantConfig.bGridConfig);

                var cacheEntryOptionsShort = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(_roomsConfig.Value.CacheTime / 5));
                _cache.Set(tenantId + "_bGridAssets", _bGridAssets, cacheEntryOptionsShort);
            }
            else
            {
                _bGridAssets = cachedAssets;
            }
        }
        private async Task <List <bGridTemperature> > GetbGridTemperatures()
        {
            var tenantId = User.Claims.Where(c => c.Type == "http://schemas.microsoft.com/identity/claims/tenantid").FirstOrDefault().Value;

            if (!_cache.TryGetValue(tenantId + "_bGridTemperatures", out List <bGridTemperature> cachedRoomTemperatures))
            {
                var roomTemperatures = await BuildingActionHelper.ExecuteGetAction <List <bGridTemperature> >("api/locations/recent/temperature", _tenantConfig.bGridConfig);

                var cacheEntryOptionsShort = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(_roomsConfig.Value.CacheTime));
                _cache.Set(tenantId + "_bGridTemperatures", roomTemperatures, cacheEntryOptionsShort);
                return(roomTemperatures);
            }
            else
            {
                return(cachedRoomTemperatures);
            }
        }
Beispiel #3
0
        private async Task <List <bGridAsset> > GetAssets()
        {
            var bGridAssets = await BuildingActionHelper.ExecuteGetAction <List <bGridAsset> >("api/assets", _bGridConfig);

            return(bGridAssets);
        }
        private async Task <TenantConfig> ReadConfig(IOptions <RoomsConfig> roomsConfig)
        {
            //var tenantId = User.Claims.Where(c => c.Type == "http://schemas.microsoft.com/identity/claims/tenantid").FirstOrDefault();

            if (!_cache.TryGetValue(_tenantId + "_tenantConfig", out TenantConfig cachedConfig))
            {
                TenantConfig tenantConfig = new TenantConfig();
                if (roomsConfig.Value == null)
                {
                    return(cachedConfig);
                }

                var blobName = "dev-" + _tenantId + ".json";

                switch (roomsConfig.Value.FileLocation)
                {
                case "LocalFile":
                    var json = System.IO.File.ReadAllText(roomsConfig.Value.URI);
                    tenantConfig = JsonConvert.DeserializeObject <TenantConfig>(json);
                    break;

                case "AzureStorageFile":
                    using (var webClient = new WebClient())
                    {
                        var jsonWC = webClient.DownloadString(roomsConfig.Value.URI);
                        tenantConfig = JsonConvert.DeserializeObject <TenantConfig>(jsonWC);
                    }
                    break;

                case "AzureStorageContainerAndTenantIdSAS":
                    var            blobContainer = new CloudBlobContainer(new Uri(roomsConfig.Value.URI));
                    CloudBlockBlob blob          = blobContainer.GetBlockBlobReference(blobName);
                    if (blob.ExistsAsync().Result)
                    {
                        var jsonTidSAS = blob.DownloadTextAsync().Result;
                        tenantConfig = JsonConvert.DeserializeObject <TenantConfig>(jsonTidSAS);
                    }
                    else
                    {
                        return(tenantConfig);
                    }
                    break;

                case "AzureStorageContainerAndTenantIdMI":
                    var jsonTidMI = await ReadConfigBlob(blobName);

                    if (jsonTidMI != null)
                    {
                        tenantConfig = JsonConvert.DeserializeObject <TenantConfig>(jsonTidMI);
                    }
                    else
                    {
                        return(tenantConfig);
                    }
                    break;

                default:
                    break;
                }

                if (tenantConfig.bGridConfig.bGridUser != "")
                {
                    var bGridlocations = await BuildingActionHelper.ExecuteGetAction <List <bGridLocation> >("api/locations", tenantConfig.bGridConfig);

                    if (bGridlocations != null)
                    {
                        foreach (var room in tenantConfig.Rooms)
                        {
                            if (room.Nodes.Count > 0)
                            {
                                var bGridLocation = room.Nodes.First().Id;
                                room.X = Convert.ToInt32(bGridlocations.Where(b => b.id.ToString() == bGridLocation).First().x);
                                room.Y = Convert.ToInt32(bGridlocations.Where(b => b.id.ToString() == bGridLocation).First().y);
                            }
                        }
                    }
                }
                var cacheEntryOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(_roomsConfig.Value.CacheTime));
                _cache.Set(_tenantId + "_tenantConfig", tenantConfig, cacheEntryOptions);
                return(tenantConfig);
            }
            else
            {
                return(cachedConfig);
            }
        }