public async Task <IActionResult> Add(Guid spaceId)
        {
            CacheHelper.SetPreviousPage(_cache, Request.Headers["Referer"].ToString());

            if (spaceId != Guid.Empty)
            {
                CacheHelper.SetObjectId(_cache, spaceId);
                Space space = await DigitalTwinsHelper.GetSpaceAsync((Guid)spaceId, _cache, Loggers.SilentLogger);

                var pksForSpace = (await DigitalTwinsHelper.GetPropertyKeysForSpace((Guid)spaceId, _cache, Loggers.SilentLogger)).ToList <PropertyKey>();

                // we filter to remove all the properties already known in the Space
                IEnumerable <PropertyKey> pks =
                    from pk in pksForSpace
                    where !space.Properties.Any(prop => prop.Name.Equals(pk.Name))
                    select pk;

                return(View(pks));
            }
            else
            {
                //TODO replace with default view (List)
                return(RedirectToAction(nameof(PropertyKeyController.Create)));
            }
        }
        public async Task <IActionResult> Provision(ProvisionViewModel model)
        {
            Reset();

            try
            {
                if (model.YamlScript == null)
                {
                    throw new Exception("You must enter a valid YAML Script!");
                }

                IEnumerable <SpaceDescription> spaceCreateDescriptions;
                spaceCreateDescriptions = new Deserializer().Deserialize <IEnumerable <SpaceDescription> >(model.YamlScript);

                model.CreatedSpaces = await DigitalTwinsHelper.CreateSpaces(_cache, Loggers.SilentLogger, spaceCreateDescriptions, model.UDFFiles, model.RootParent.Id);

                model.Messages = CacheHelper.GetInfoMessagesFromCache(_cache);
                return(View(model));
            }
            catch (Exception ex)
            {
                FeedbackHelper.Channel.SendMessageAsync($"Error - {ex.Message}", MessageType.Info).Wait();
                return(RedirectToAction(nameof(Index)));
            }
        }
Esempio n. 3
0
        private async Task LoadAsync(UserDefinedFunction udf)
        {
            SpaceList = await DigitalTwinsHelper.GetSpacesAsync(_cache, Loggers.SilentLogger);

            if (udf != null)
            {
                UDF     = udf;
                Content = await DigitalTwinsHelper.GetUserDefinedFunctionContent(UDF.Id, _cache, Loggers.SilentLogger);

                //We get the matcher list to add the related conditions
                List <Matcher> matchersWithConditions = new List <Matcher>();
                var            matchers = await DigitalTwinsHelper.GetMatchersBySpaceId(UDF.SpaceId, _cache, Loggers.SilentLogger, false);

                foreach (Matcher matcher in UDF.Matchers)
                {
                    matchersWithConditions.Add(matchers.First(t => t.Id == matcher.Id));
                }

                UDF.Matchers = new ObservableCollection <Matcher>(matchersWithConditions);
            }
            else
            {
                UDF = new UserDefinedFunction();
            }
        }
        public async Task <ActionResult> Add(List <Matcher> model, string updateButton)
        {
            if (updateButton.Equals("Cancel"))
            {
                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }

            try
            {
                UserDefinedFunction udf = await DigitalTwinsHelper.GetUserDefinedFunction(CacheHelper.GetObjectId(_cache), _cache, Loggers.SilentLogger, true);

                if (udf.Matchers == null)
                {
                    udf.Matchers = new System.Collections.ObjectModel.ObservableCollection <Matcher>();
                }

                foreach (Matcher matcher in model)
                {
                    if (matcher.Add)
                    {
                        udf.Matchers.Add(matcher);
                    }
                }

                await DigitalTwinsHelper.UpdateUserDefinedFunctionAsync(_cache, Loggers.SilentLogger, udf);

                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }
            catch (Exception ex)
            {
                await FeedbackHelper.Channel.SendMessageAsync(ex.Message, MessageType.Info);

                return(View());
            }
        }
        public async Task <ActionResult> Edit(MatcherViewModel model, string updateButton)
        {
            string previousPage = CacheHelper.GetPreviousPage(_cache);

            if (updateButton.Equals("Cancel"))
            {
                return(Redirect(previousPage));
            }

            // we load the matcher in cache to restore the conditions previously defined
            var matcher = await DigitalTwinsHelper.GetMatcherAsync(model.SelectedMatcher.Id, _cache, Loggers.SilentLogger, false);

            matcher.Name = model.SelectedMatcher.Name;

            // we update the matcher
            await DigitalTwinsHelper.UpdateMatcherAsync(matcher, _cache, Loggers.SilentLogger);

            // we associate the matcher with the UDF
            //var udf = await DigitalTwinsHelper.GetUserDefinedFunction(model.UdfId, _cache, Loggers.SilentLogger, false);
            //udf.Matchers.Add(matcher);
            //await DigitalTwinsHelper.UpdateUserDefinedFunctionAsync(_cache, Loggers.SilentLogger, udf);

            //we remove the matcher from the cache
            CacheHelper.AddInCache(_cache, null, Guid.Empty, Context.Matcher);

            return(RedirectToAction("Edit", "UDF", new { id = model.UdfId }));
        }
        public async Task <ActionResult> EditCondition(MatcherViewModel model, string updateButton)
        {
            string previousPage = CacheHelper.GetPreviousPage(_cache);

            if (updateButton.Equals("Cancel"))
            {
                return(Redirect(previousPage));
            }

            var matcher = await DigitalTwinsHelper.GetMatcherAsync(model.SelectedMatcher.Id, _cache, Loggers.SilentLogger, false);

            if (matcher != null)
            {
                var index = matcher.Conditions.FindIndex(m => m.Id == model.SelectedMatcherCondition.Id);

                if (updateButton.Equals("Update"))
                {
                    matcher.Conditions[index] = model.SelectedMatcherCondition;
                }

                if (updateButton.Equals("Delete"))
                {
                    matcher.Conditions.RemoveAt(index);
                }

                CacheHelper.AddInCache(_cache, matcher, matcher.Id, Context.Matcher);
            }
            return(Redirect(previousPage));
        }
        public async Task <IActionResult> Add(Guid spaceId, Guid udfId)
        {
            CacheHelper.SetPreviousPage(_cache, Request.Headers["Referer"].ToString());

            if (udfId != Guid.Empty)
            {
                CacheHelper.SetObjectId(_cache, udfId);
                Space space = await DigitalTwinsHelper.GetSpaceAsync((Guid)spaceId, _cache, Loggers.SilentLogger);

                var matchers = (await DigitalTwinsHelper.GetMatchersBySpaceId((Guid)spaceId, _cache, Loggers.SilentLogger, false)).ToList <Matcher>();

                var udf = await DigitalTwinsHelper.GetUserDefinedFunction(udfId, _cache, Loggers.SilentLogger, false);

                // we filter to remove all the matchers already associated with the UDF
                IEnumerable <Matcher> mtcs =
                    from mtc in matchers
                    where !udf.Matchers.Any(m => m.Name.Equals(mtc.Name))
                    select mtc;

                return(View(mtcs));
            }
            else
            {
                //TODO replace with default view (List)
                return(RedirectToAction(nameof(PropertyKeyController.Create)));
            }
        }
Esempio n. 8
0
        public async Task <ActionResult> Edit(BlobContentViewModel model, string updateButton)
        {
            if (updateButton.Equals("Cancel"))
            {
                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }

            try
            {
                model.SelectedBlobContentItem.Sharing = "None";

                await DigitalTwinsHelper.CreateOrUpdateBlob(
                    model.SelectedBlobContentItem.ParentType,
                    model.SelectedBlobContentItem,
                    model.File,
                    _cache,
                    Loggers.SilentLogger);

                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }
            catch (Exception ex)
            {
                await FeedbackHelper.Channel.SendMessageAsync(ex.Message, MessageType.Info);

                return(View(model));
            }
        }
        public async Task <ActionResult> Delete(SpaceViewModel model, string updateButton)
        {
            if (updateButton.Equals("Cancel"))
            {
                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }

            try
            {
                if (await DigitalTwinsHelper.DeleteSpaceAsync(model.SelectedSpaceItem, _cache, Loggers.SilentLogger))
                {
                    return(Redirect(CacheHelper.GetPreviousPage(_cache)));
                }
                else
                {
                    model = new SpaceViewModel(_cache, model.SelectedSpaceItem.Id);

                    return(View(model));
                }
            }
            catch (Exception ex)
            {
                await FeedbackHelper.Channel.SendMessageAsync(ex.InnerException.ToString(), MessageType.Info);

                return(View());
            }
        }
Esempio n. 10
0
        private async Task LoadAsync(Guid?id = null)
        {
            SpaceList = new List <Space>();
            SpaceList.Add(new Space()
            {
                Id = Guid.Empty, Name = "None"
            });
            SpaceList.AddRange(await DigitalTwinsHelper.GetSpacesAsync(_cache, Loggers.SilentLogger));

            //SpaceList = await DigitalTwinsHelper.GetSpacesAsync(_cache, Loggers.SilentLogger);

            SpaceTypeList = await DigitalTwinsHelper.GetTypesAsync(Models.Types.SpaceType, _cache, Loggers.SilentLogger, onlyEnabled : true);

            SpaceSubTypeList = await DigitalTwinsHelper.GetTypesAsync(Models.Types.SpaceSubtype, _cache, Loggers.SilentLogger, onlyEnabled : true);

            SpaceStatusList = await DigitalTwinsHelper.GetTypesAsync(Models.Types.SpaceStatus, _cache, Loggers.SilentLogger, onlyEnabled : true);

            if (id != null)
            {
                this.SelectedSpaceItem = await DigitalTwinsHelper.GetSpaceAsync((Guid)id, _cache, Loggers.SilentLogger, false);

                this.UDFList = await DigitalTwinsHelper.GetUDFsBySpaceIdAsync((Guid)id, _cache, Loggers.SilentLogger, false);

                this.Blobs = await DigitalTwinsHelper.GetBlobsAsync((Guid)id, _cache, Loggers.SilentLogger, true);

                this.AvailableProperties = await DigitalTwinsHelper.GetPropertyKeysForSpace((Guid)id, _cache, Loggers.SilentLogger);
            }
            else
            {
                this.SelectedSpaceItem   = new Space();
                this.UDFList             = new List <UserDefinedFunction>();
                this.Blobs               = new List <BlobContent>();
                this.AvailableProperties = new List <PropertyKey>();
            }
        }
        private async Task LoadAsync(Models.Types?filterType)
        {
            List <Ontology> ontologies = await DigitalTwinsHelper.GetOntologiesWithTypes(_cache, Loggers.SilentLogger);

            List <Ontology> filteredOntologies = new List <Ontology>();
            Ontology        ontology;

            foreach (Ontology item in ontologies)
            {
                ontology = new Ontology()
                {
                    Id = item.Id, Name = item.Name, Loaded = item.Loaded
                };
                if (filterType != null)
                {
                    ontology.types = item.types.FindAll(t => t.Category.Equals(filterType.ToString()));
                }
                else
                {
                    ontology.types = item.types;
                }
                filteredOntologies.Add(ontology);
            }
            OntologyList = filteredOntologies;
        }
        private async Task MergeTree(PropertyKey propertyKey, IEnumerable <Guid> spacePath, int level)
        {
            level++;
            Guid  spaceId = spacePath.First();
            Space space   = await DigitalTwinsHelper.GetSpaceAsync(spaceId, _cache, Loggers.SilentLogger);

            if (spacePath.Count() == 1)
            {
                if (!space.PropertyKeys.Exists(p => p.Id == propertyKey.Id))
                {
                    space.PropertyKeys.Add(propertyKey);
                }
            }

            if (!spaces.Exists(s => s.Space.Id == space.Id))
            {
                int index = spaces.FindIndex(s => s.Space.Id == space.ParentSpaceId);
                spaces.Insert(index + 1, new UISpace()
                {
                    Space = space, MarginLeft = $"{25 * level-1}px"
                });
            }
            else
            {
                spaces.First(s => s.Space.Id == space.Id).Space = space;
            }

            if (spacePath.Count() > 1)
            {
                await MergeTree(propertyKey, spacePath.Skip(1), level);
            }
        }
Esempio n. 13
0
        public async Task <ActionResult> SimulatorAction(SimulatorViewModel model, string Action)
        {
            if (Action.Equals("Cancel"))
            {
                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }

            if (model.SelectedDevice == Guid.Empty)
            {
                await FeedbackHelper.Channel.SendMessageAsync("No connection string added to connect to Azure IoT Hub", MessageType.Info);

                return(RedirectToAction(nameof(Index)));
            }
            else
            {
                var device = await DigitalTwinsHelper.GetDeviceAsync(model.SelectedDevice, _cache, Loggers.SilentLogger, false);

                try
                {
                    if (Action.Equals("Launch") && !CacheHelper.IsInSendingDataState(_cache))
                    {
                        var list = await CacheHelper.GetSimulatedSensorListFromCacheAsync(_cache);

                        if (list != null && list.Count > 0)
                        {
                            CacheHelper.SetInSendingDataState(_cache, true);

                            try
                            {
                                await SendDataAsync(device.ConnectionString);
                            }
                            catch (Exception)
                            {
                                await FeedbackHelper.Channel.SendMessageAsync("Error during sending", MessageType.Info);
                            }

                            CacheHelper.SetInSendingDataState(_cache, false);
                        }
                        else
                        {
                            await FeedbackHelper.Channel.SendMessageAsync("No sensor defined to send data", MessageType.Info);
                        }
                    }
                    else if (Action.Equals("Stop"))
                    {
                        await FeedbackHelper.Channel.SendMessageAsync("Stopping sending data...", MessageType.Info);

                        CacheHelper.SetInSendingDataState(_cache, false);
                    }
                }
                catch (Exception ex)
                {
                    FeedbackHelper.Channel.SendMessageAsync($"Error - {ex.Message}", MessageType.Info).Wait();
                }

                return(RedirectToAction(nameof(Index)));
            }
        }
Esempio n. 14
0
 internal async Task LoadAsync(Guid?id = null)
 {
     SpaceList = new List <Space>();
     SpaceList.Add(new Space()
     {
         Name = "None", Id = Guid.Empty
     });
     SpaceList.AddRange(await DigitalTwinsHelper.GetSpacesAsync(_cache, Loggers.SilentLogger));
 }
Esempio n. 15
0
 private async Task LoadAsync()
 {
     SpaceTypeList = new List <Models.Type>();
     SpaceTypeList.Add(new Models.Type()
     {
         Name = "All"
     });
     SpaceTypeList.AddRange(await DigitalTwinsHelper.GetTypesAsync(Models.Types.SpaceType, _cache, Loggers.SilentLogger, onlyEnabled: true));
 }
        private async Task LoadAsync()
        {
            SpaceList = await DigitalTwinsHelper.GetSpacesAsync(_cache, Loggers.SilentLogger);

            DataTypeList = await DigitalTwinsHelper.GetTypesAsync(Models.Types.SensorDataType, _cache, Loggers.SilentLogger, onlyEnabled : true);

            DataUnitTypeList = await DigitalTwinsHelper.GetTypesAsync(Models.Types.SensorDataUnitType, _cache, Loggers.SilentLogger, onlyEnabled : true);

            DataSubTypeList = await DigitalTwinsHelper.GetTypesAsync(Models.Types.SensorDataSubtype, _cache, Loggers.SilentLogger, onlyEnabled : true);
        }
Esempio n. 17
0
        public async Task <ActionResult> Edit(Guid id)
        {
            CacheHelper.SetPreviousPage(_cache, Request.Headers["Referer"].ToString());

            var udf = await DigitalTwinsHelper.GetUserDefinedFunction(id, _cache, Loggers.SilentLogger, false);

            var viewModel = new UDFViewModel(_cache, udf);

            return(View(viewModel));
        }
Esempio n. 18
0
        private async Task LoadAsync(Guid?id = null)
        {
            SpaceList = await DigitalTwinsHelper.GetSpacesAsync(_cache, Loggers.SilentLogger);

            DeviceTypeList = await DigitalTwinsHelper.GetTypesAsync(Models.Types.DeviceType, _cache, Loggers.SilentLogger, onlyEnabled : true);

            DeviceSubTypeList = await DigitalTwinsHelper.GetTypesAsync(Models.Types.DeviceSubtype, _cache, Loggers.SilentLogger, onlyEnabled : true);

            if (id != null)
            {
                this.SelectedDeviceItem = await DigitalTwinsHelper.GetDeviceAsync((Guid)id, _cache, Loggers.SilentLogger, false);
            }
        }
        public async Task <ActionResult> Delete(MatcherViewModel model, string updateButton)
        {
            string previousPage = CacheHelper.GetPreviousPage(_cache);

            if (updateButton.Equals("Cancel"))
            {
                return(Redirect(previousPage));
            }

            await DigitalTwinsHelper.DeleteMatcherAsync(model.SelectedMatcher, _cache, Loggers.SilentLogger);

            return(RedirectToAction("Edit", "UDF", new { id = model.UdfId }));
        }
        public async Task <ActionResult> Search(SpacesViewModel model)
        {
            var searchString = model.SearchString;
            var searchType   = model.SearchType;

            model = new SpacesViewModel(_cache);

            int searchTypeId = searchType.Equals("All") ? -1 : model.SpaceTypeList.Single(t => t.Name.Equals(searchType)).Id;

            model.SpaceList = await DigitalTwinsHelper.SearchSpacesAsync(_cache, Loggers.SilentLogger, searchString, searchTypeId);

            return(View("List", model));
        }
        public async Task <ActionResult> AddCondition(MatcherViewModel model, string createButton)
        {
            string previousPage = CacheHelper.GetPreviousPage(_cache);

            var matcher = await DigitalTwinsHelper.GetMatcherAsync(model.SelectedMatcher.Id, _cache, Loggers.SilentLogger, false);

            if (matcher != null)
            {
                matcher.Conditions.Add(model.SelectedMatcherCondition);
                CacheHelper.AddInCache(_cache, matcher, matcher.Id, Context.Matcher);
            }
            return(Redirect(previousPage));
        }
        public async Task <ActionResult> Create(SpaceViewModel model, string createButton)
        {
            string previousPage = CacheHelper.GetPreviousPage(_cache);

            if (createButton.Equals("Cancel"))
            {
                return(Redirect(previousPage));
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var spaceResult = await DigitalTwinsHelper.CreateSpaceAsync(model.SelectedSpaceItem, _cache, Loggers.SilentLogger);

                    switch (createButton)
                    {
                    case "Save & Close":
                        return(Redirect(previousPage));

                    case "Save & Create another":
                        return(RedirectToAction(nameof(Create)));

                    case "Save & Edit":
                        if (spaceResult.Id != Guid.Empty)
                        {
                            return(RedirectToAction(nameof(Edit), new { id = spaceResult.Id }));
                        }
                        else
                        {
                            return(Redirect(previousPage));
                        }

                    default:
                        return(RedirectToAction(nameof(List)));
                    }
                }
                catch (Exception ex)
                {
                    await FeedbackHelper.Channel.SendMessageAsync(ex.Message, MessageType.Info);

                    model = new SpaceViewModel(_cache);
                    return(View(model));
                }
            }
            else
            {
                return(View("Create"));
            }
        }
Esempio n. 23
0
        private async Task LoadAsync(Guid?id = null)
        {
            switch (_parentType)
            {
            case ParentType.Space:
            {
                BlobContentTypeList = await DigitalTwinsHelper.GetTypesAsync(
                    Models.Types.SpaceBlobType, _cache, Loggers.SilentLogger, onlyEnabled : true);

                BlobContentSubTypeList = await DigitalTwinsHelper.GetTypesAsync(
                    Models.Types.SpaceBlobSubtype, _cache, Loggers.SilentLogger, onlyEnabled : true);

                break;
            }

            case ParentType.Device:
            {
                BlobContentTypeList = await DigitalTwinsHelper.GetTypesAsync(
                    Models.Types.DeviceBlobType, _cache, Loggers.SilentLogger, onlyEnabled : true);

                BlobContentSubTypeList = await DigitalTwinsHelper.GetTypesAsync(
                    Models.Types.DeviceBlobSubtype, _cache, Loggers.SilentLogger, onlyEnabled : true);

                break;
            }

            case ParentType.Sensor:
            {
                BlobContentTypeList = await DigitalTwinsHelper.GetTypesAsync(
                    Models.Types.SensorDataType, _cache, Loggers.SilentLogger, onlyEnabled : true);

                BlobContentSubTypeList = await DigitalTwinsHelper.GetTypesAsync(
                    Models.Types.DeviceBlobSubtype, _cache, Loggers.SilentLogger, onlyEnabled : true);

                break;
            }
            }

            if (id != null)
            {
                this.SelectedBlobContentItem = await DigitalTwinsHelper.GetBlobAsync((Guid)id, _cache, Loggers.SilentLogger, true);
            }
            else
            {
                SelectedBlobContentItem = new BlobContent();
            }
            this.SelectedBlobContentItem.ParentType = _parentType;
        }
        public async Task <ActionResult> List()
        {
            CacheHelper.SetPreviousPage(_cache, Request.Headers["Referer"].ToString());
            var model = new SpacesViewModel(_cache);

            try
            {
                model.SpaceList = await DigitalTwinsHelper.GetRootSpacesAsync(_cache, Loggers.SilentLogger, false);
            }
            catch (Exception ex)
            {
                FeedbackHelper.Channel.SendMessageAsync($"Error - {ex.Message}", MessageType.Info).Wait();
            }

            return(View(model));
        }
Esempio n. 25
0
        public async Task <ActionResult> Delete(UDFViewModel model, string updateButton)
        {
            if (updateButton.Equals("Cancel"))
            {
                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }

            try
            {
                await DigitalTwinsHelper.DeleteUserDefinedFunctionAsync(model.UDF, _cache, Loggers.SilentLogger);

                return(RedirectToAction("List", "UDF"));
            }
            catch
            {
                return(View());
            }
        }
Esempio n. 26
0
        public async Task <ActionResult> Edit(SensorViewModel model, string updateButton)
        {
            if (updateButton.Equals("Cancel"))
            {
                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }

            try
            {
                await DigitalTwinsHelper.UpdateSensorAsync(model.SelectedSensor, _cache, Loggers.SilentLogger);

                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }
            catch (Exception ex)
            {
                await FeedbackHelper.Channel.SendMessageAsync(ex.InnerException.ToString(), MessageType.Info);

                return(View());
            }
        }
Esempio n. 27
0
        private async Task LoadAsync(string id)
        {
            SpaceList = await DigitalTwinsHelper.GetSpacesAsync(_cache, Loggers.SilentLogger);

            PrimitiveDataTypeList = new List <string>();
            PrimitiveDataTypeList.Add("Bool");
            PrimitiveDataTypeList.Add("String");
            PrimitiveDataTypeList.Add("Long");
            PrimitiveDataTypeList.Add("Int");
            PrimitiveDataTypeList.Add("Uint");
            PrimitiveDataTypeList.Add("DateTime");
            PrimitiveDataTypeList.Add("Set");
            PrimitiveDataTypeList.Add("Enum");
            PrimitiveDataTypeList.Add("Json");

            if (id != null)
            {
                this.SelectedPropertyKey = await DigitalTwinsHelper.GetPropertyKeyAsync(id, _cache, Loggers.SilentLogger, false);
            }
        }
Esempio n. 28
0
        public async Task <ActionResult> Create(UDFViewModel model, string updateButton)
        {
            if (updateButton.Equals("Cancel"))
            {
                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }

            try
            {
                string js;

                if (model.UDFFile != null)
                {
                    using (var r = new StreamReader(model.UDFFile.OpenReadStream()))
                    {
                        js = await r.ReadToEndAsync();

                        if (String.IsNullOrWhiteSpace(js))
                        {
                            await FeedbackHelper.Channel.SendMessageAsync($"Error - We cannot read the content of the file {model.UDFFile.FileName}.", MessageType.Info);
                        }
                    }
                }
                else if (model.Content != null)
                {
                    js = model.Content;
                }
                else
                {
                    js = string.Empty;
                }

                var id = await DigitalTwinsHelper.CreateUserDefinedFunctionAsync(_cache, Loggers.SilentLogger, model.UDF, js);

                return(RedirectToAction(nameof(Edit), new { id = id }));
            }
            catch
            {
                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }
        }
        public async Task <IActionResult> Remove(Guid spaceId, string name)
        {
            if (spaceId != Guid.Empty && name != null && name != string.Empty)
            {
                Space space = await DigitalTwinsHelper.GetSpaceAsync((Guid)spaceId, _cache, Loggers.SilentLogger);

                var prop = space.Properties.FirstOrDefault(p => p.Name.Equals(name));
                if (prop != null)
                {
                    space.Properties.Remove(prop);
                    await DigitalTwinsHelper.UpdateSpaceAsync(space, _cache, Loggers.SilentLogger);
                }

                return(Redirect(Request.Headers["Referer"].ToString()));
            }
            else
            {
                //TODO replace with default view (List)
                return(RedirectToAction(nameof(PropertyKeyController.Create)));
            }
        }
Esempio n. 30
0
        public async Task <ActionResult> Create(SensorViewModel model, string updateButton)
        {
            if (updateButton.Equals("Cancel"))
            {
                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }

            try
            {
                var id = await DigitalTwinsHelper.CreateSensorAsync(model.SelectedSensor, _cache, Loggers.SilentLogger);

                await FeedbackHelper.Channel.SendMessageAsync($"Sensor with id '{id}' successfully created.", MessageType.Info);

                return(Redirect(CacheHelper.GetPreviousPage(_cache)));
            }
            catch (Exception ex)
            {
                await FeedbackHelper.Channel.SendMessageAsync(ex.Message, MessageType.Info);

                return(View());
            }
        }