Delete config link in devices if used + mqtt client not retained message
This commit is contained in:
parent
d6fd248b4f
commit
16d4d6335d
@ -23,14 +23,16 @@ namespace ManagerService.Controllers
|
||||
private ConfigurationDatabaseService _configurationService;
|
||||
private SectionDatabaseService _sectionService;
|
||||
private ResourceDatabaseService _resourceService;
|
||||
private DeviceDatabaseService _deviceService;
|
||||
private readonly ILogger<ConfigurationController> _logger;
|
||||
|
||||
public ConfigurationController(ILogger<ConfigurationController> logger, ConfigurationDatabaseService configurationService, SectionDatabaseService sectionService, ResourceDatabaseService resourceService)
|
||||
public ConfigurationController(ILogger<ConfigurationController> logger, ConfigurationDatabaseService configurationService, SectionDatabaseService sectionService, ResourceDatabaseService resourceService, DeviceDatabaseService deviceService)
|
||||
{
|
||||
_logger = logger;
|
||||
_configurationService = configurationService;
|
||||
_sectionService = sectionService;
|
||||
_resourceService = resourceService;
|
||||
_deviceService = deviceService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -197,6 +199,16 @@ namespace ManagerService.Controllers
|
||||
|
||||
_configurationService.Remove(id);
|
||||
|
||||
// Delete config for all devices
|
||||
List<Device> 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 };
|
||||
|
||||
@ -65,9 +65,14 @@ namespace ManagerService.Controllers
|
||||
if (id == null)
|
||||
throw new ArgumentNullException("Param is null");
|
||||
|
||||
List<Section> sections = _sectionService.GetAllFromConfiguration(id);
|
||||
if (_configurationService.IsExist(id))
|
||||
{
|
||||
List<Section> 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)
|
||||
{
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -29,6 +29,11 @@ namespace Manager.Services
|
||||
return _Devices.Find(d => d.Connected).ToList();
|
||||
}
|
||||
|
||||
public List<Device> GetAllWithConfig(string configId)
|
||||
{
|
||||
return _Devices.Find(d => d.ConfigurationId == configId).ToList();
|
||||
}
|
||||
|
||||
public Device GetById(string id)
|
||||
{
|
||||
return _Devices.Find<Device>(d => d.Id == id).FirstOrDefault();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user