Add actions to alarm detail + add device detail to automation detail

This commit is contained in:
Fransolet Thomas 2023-03-23 18:24:52 +01:00
parent 971aa63229
commit d212510392
6 changed files with 27 additions and 7 deletions

View File

@ -26,6 +26,7 @@ namespace MyCore.Interfaces.DTO
public class AlarmModeDetailDTO : AlarmModeDTO
{
public List<Trigger> Triggers { get; set; }
public List<MyCore.Interfaces.Models.Action> Actions { get; set; }
public List<DeviceDetailDTO> Devices { get; set; }
public ProgrammedMode ProgrammedMode { get; set; }
public GeolocalizedMode GeolocalizedMode { get; set; }

View File

@ -22,5 +22,6 @@ namespace MyCore.Interfaces.DTO
public List<Condition> Conditions { get; set; }
public List<MyCore.Interfaces.Models.Action> Actions { get; set; }
public List<string> DevicesIds { get; set; }
public List<DeviceDetailDTO> Devices { get; set; }
}
}

View File

@ -100,6 +100,7 @@ namespace MyCore.Interfaces.Models
CreatedDate = CreatedDate,
UpdatedDate = UpdatedDate,
Triggers = Triggers,
Actions = Actions,
Devices = devicesDetail,
ProgrammedMode = ProgrammedMode,
GeolocalizedMode = GeolocalizedMode

View File

@ -58,7 +58,7 @@ namespace MyCore.Interfaces.Models
};
}
public AutomationDetailDTO ToDetailDTO()
public AutomationDetailDTO ToDetailDTO(List<DeviceDetailDTO> devicesDetail)
{
return new AutomationDetailDTO()
{
@ -71,7 +71,8 @@ namespace MyCore.Interfaces.Models
Triggers = Triggers,
Conditions = Conditions,
Actions = Actions,
DevicesIds = DevicesIds
DevicesIds = DevicesIds,
Devices = devicesDetail
};
}
}

View File

@ -24,13 +24,15 @@ namespace MyCore.Service.Controllers
public class AutomationController : ControllerBase
{
private HomeDatabaseService _HomeDatabaseService;
private DeviceDatabaseService _DeviceDatabaseService;
private AutomationDatabaseService _AutomationDatabaseService;
private readonly IMqttClientService _mqttClientService;
//private readonly IMqttOnlineClientService _mqttOnlineClientService;
public AutomationController(HomeDatabaseService homeDatabaseService, AutomationDatabaseService automationDatabaseService, MqttClientServiceProvider provider)//, MqttClientOnlineServiceProvider onlineProvider)
public AutomationController(HomeDatabaseService homeDatabaseService, DeviceDatabaseService deviceDatabaseService, AutomationDatabaseService automationDatabaseService, MqttClientServiceProvider provider)//, MqttClientOnlineServiceProvider onlineProvider)
{
this._HomeDatabaseService = homeDatabaseService;
this._DeviceDatabaseService = deviceDatabaseService;
this._AutomationDatabaseService = automationDatabaseService;
this._mqttClientService = provider.MqttClientService;
//this._mqttOnlineClientService = onlineProvider.MqttOnlineClientService;
@ -80,7 +82,17 @@ namespace MyCore.Service.Controllers
if (automation == null)
throw new KeyNotFoundException("Automation not found");
return new OkObjectResult(automation.ToDetailDTO());
List<Device> devices = new List<Device>();
foreach (var deviceId in automation.DevicesIds)
{
Device device = _DeviceDatabaseService.GetById(deviceId);
if (device != null)
{
devices.Add(device);
}
}
return new OkObjectResult(automation.ToDetailDTO(devices.Select(d => d.ToDTO()).ToList()));
}
catch (ArgumentNullException ex)
{

View File

@ -54,8 +54,12 @@ namespace MyCore.Service.Services
break;
}
List<string> devicesIds = alarmModeCreateOrUpdateDetailDTO.Triggers.Select(t => t.DeviceId).ToList();
alarmMode.DevicesIds = devicesIds;
List<string> devicesIdsTriggers = alarmModeCreateOrUpdateDetailDTO.Triggers.Select(t => t.DeviceId).ToList();
alarmMode.DevicesIds = devicesIdsTriggers;
List<string> devicesIdsActions = alarmModeCreateOrUpdateDetailDTO.Actions.Select(t => t.DeviceId).ToList();
alarmMode.DevicesIds.AddRange(devicesIdsActions);
if (create)
alarmMode = _AlarmDatabaseService.Create(alarmMode);
else
@ -63,7 +67,7 @@ namespace MyCore.Service.Services
// List devices for DTO (only)
List<Device> devices = new List<Device>();
foreach (var deviceId in devicesIds)
foreach (var deviceId in alarmMode.DevicesIds)
{
Device device = _DeviceDatabaseService.GetById(deviceId);
if (device != null)