diff --git a/ManagerService/Controllers/ConfigurationController.cs b/ManagerService/Controllers/ConfigurationController.cs index 841c0ad..edd9a96 100644 --- a/ManagerService/Controllers/ConfigurationController.cs +++ b/ManagerService/Controllers/ConfigurationController.cs @@ -23,14 +23,16 @@ namespace ManagerService.Controllers private ConfigurationDatabaseService _configurationService; private SectionDatabaseService _sectionService; private ResourceDatabaseService _resourceService; + private DeviceDatabaseService _deviceService; private readonly ILogger _logger; - public ConfigurationController(ILogger logger, ConfigurationDatabaseService configurationService, SectionDatabaseService sectionService, ResourceDatabaseService resourceService) + public ConfigurationController(ILogger logger, ConfigurationDatabaseService configurationService, SectionDatabaseService sectionService, ResourceDatabaseService resourceService, DeviceDatabaseService deviceService) { _logger = logger; _configurationService = configurationService; _sectionService = sectionService; _resourceService = resourceService; + _deviceService = deviceService; } /// @@ -197,6 +199,16 @@ namespace ManagerService.Controllers _configurationService.Remove(id); + // Delete config for all devices + List devices = _deviceService.GetAllWithConfig(id); + + foreach (var device in devices) + { + device.Configuration = null; + device.ConfigurationId = null; + _deviceService.Update(device.Id, device); + } + MqttClientService.PublishMessage($"config/{id}", JsonConvert.SerializeObject(new PlayerMessageDTO() { configChanged = true, isDeleted = true })); return new ObjectResult("The configuration has been deleted") { StatusCode = 202 }; diff --git a/ManagerService/Controllers/SectionController.cs b/ManagerService/Controllers/SectionController.cs index 714dfef..5b4e1e9 100644 --- a/ManagerService/Controllers/SectionController.cs +++ b/ManagerService/Controllers/SectionController.cs @@ -65,9 +65,14 @@ namespace ManagerService.Controllers if (id == null) throw new ArgumentNullException("Param is null"); - List
sections = _sectionService.GetAllFromConfiguration(id); + if (_configurationService.IsExist(id)) + { + List
sections = _sectionService.GetAllFromConfiguration(id); - return new OkObjectResult(sections.Select(r => r.ToDTO())); + return new OkObjectResult(sections.Select(r => r.ToDTO())); + } + else + return new NotFoundObjectResult("Configuration not found"); } catch (ArgumentNullException ex) { diff --git a/ManagerService/Extensions/MqttClientService.cs b/ManagerService/Extensions/MqttClientService.cs index a13ba88..3ea84c4 100644 --- a/ManagerService/Extensions/MqttClientService.cs +++ b/ManagerService/Extensions/MqttClientService.cs @@ -5,6 +5,7 @@ using MQTTnet.Client; using MQTTnet.Client.Connecting; using MQTTnet.Client.Disconnecting; using MQTTnet.Client.Options; +using MQTTnet.Protocol; using Newtonsoft.Json; using System; using System.Collections.Generic; @@ -135,8 +136,9 @@ namespace Mqtt.Client.AspNetCore.Services var mqttMessage = new MqttApplicationMessageBuilder() .WithTopic(topic) .WithPayload(message) - .WithExactlyOnceQoS() - .WithRetainFlag() + .WithAtMostOnceQoS() + .WithQualityOfServiceLevel(MqttQualityOfServiceLevel.AtMostOnce) + .WithRetainFlag(false) .Build(); if (mqttClient.IsConnected) diff --git a/ManagerService/Services/DeviceDatabaseService.cs b/ManagerService/Services/DeviceDatabaseService.cs index 766340c..da39b09 100644 --- a/ManagerService/Services/DeviceDatabaseService.cs +++ b/ManagerService/Services/DeviceDatabaseService.cs @@ -29,6 +29,11 @@ namespace Manager.Services return _Devices.Find(d => d.Connected).ToList(); } + public List GetAllWithConfig(string configId) + { + return _Devices.Find(d => d.ConfigurationId == configId).ToList(); + } + public Device GetById(string id) { return _Devices.Find(d => d.Id == id).FirstOrDefault();