mirror of
https://bitbucket.org/myhomie/mycorerepository.git
synced 2025-12-06 01:31:19 +00:00
MC automation controller update and create + clean dto
This commit is contained in:
parent
db89f0a753
commit
e34bc3763e
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using MyCore.Interfaces.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
@ -9,5 +10,24 @@ namespace MyCore.Interfaces.DTO
|
||||
{
|
||||
public string Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string UserId { get; set; }
|
||||
public DateTime CreatedDate { get; set; }
|
||||
public DateTime UpdatedDate { get; set; }
|
||||
}
|
||||
|
||||
public class AutomationDetailDTO : AutomationDTO
|
||||
{
|
||||
public List<Trigger> Triggers { get; set; }
|
||||
public List<Condition> Conditions { get; set; }
|
||||
public List<MyCore.Interfaces.Models.Action> Actions { get; set; }
|
||||
public List<string> DeviceIds { get; set; }
|
||||
}
|
||||
|
||||
public class AutomationCreateOrUpdateDetailDTO : AutomationDTO
|
||||
{
|
||||
public List<Trigger> Triggers { get; set; }
|
||||
public List<Condition> Conditions { get; set; }
|
||||
public List<MyCore.Interfaces.Models.Action> Actions { get; set; }
|
||||
public List<string> DeviceIds { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -38,33 +38,14 @@ namespace MyCore.Interfaces.DTO
|
||||
public int BatteryStatus { get; set; }
|
||||
}
|
||||
|
||||
public class DeviceDetailDTO
|
||||
public class DeviceDetailDTO : DeviceSummaryDTO
|
||||
{
|
||||
public string Id { get; set; }
|
||||
|
||||
public string UserId { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
public string Description { get; set; }
|
||||
|
||||
public string Model { get; set; }
|
||||
|
||||
public DeviceType Type { get; set; }
|
||||
|
||||
public string FirmwareVersion { get; set; }
|
||||
|
||||
public string HardwareVersion { get; set; }
|
||||
|
||||
public int Port { get; set; }
|
||||
|
||||
public ConnectionStatus ConnectionStatus { get; set; }
|
||||
|
||||
public bool Status { get; set; }
|
||||
|
||||
public string LocationId { get; set; }
|
||||
|
||||
public LocationDTO Location { get; set; }
|
||||
|
||||
public List<MeansOfCommunication> MeansOfCommunications { get; set; }
|
||||
|
||||
public DateTime CreatedDate { get; set; }
|
||||
@ -73,20 +54,10 @@ namespace MyCore.Interfaces.DTO
|
||||
|
||||
public string LastState { get; set; } // TODO UNIFORMISATION ?
|
||||
|
||||
public DateTime LastStateDate { get; set; }
|
||||
|
||||
public string IpAddress { get; set; }
|
||||
|
||||
public string ServiceIdentification { get; set; }
|
||||
|
||||
public bool Battery { get; set; }
|
||||
|
||||
public int BatteryStatus { get; set; }
|
||||
|
||||
public string ProviderId { get; set; }
|
||||
|
||||
public string ProviderName { get; set; }
|
||||
|
||||
public string ManufacturerName { get; set; }
|
||||
|
||||
public List<string> GroupIds { get; set; }
|
||||
|
||||
@ -14,14 +14,8 @@ namespace MyCore.Interfaces.DTO
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class RoomDetailDTO
|
||||
public class RoomDetailDTO : RoomSummaryDTO
|
||||
{
|
||||
public string Id { get; set; }
|
||||
|
||||
public string UserId { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public DateTime CreatedDate { get; set; }
|
||||
|
||||
public DateTime UpdatedDate { get; set; }
|
||||
@ -29,14 +23,8 @@ namespace MyCore.Interfaces.DTO
|
||||
public List<string> DeviceIds { get; set; }
|
||||
}
|
||||
|
||||
public class RoomCreateOrUpdateDetailDTO
|
||||
public class RoomCreateOrUpdateDetailDTO : RoomSummaryDTO
|
||||
{
|
||||
public string Id { get; set; }
|
||||
|
||||
public string UserId { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public List<string> DeviceIds { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,24 +23,46 @@ namespace MyCore.Interfaces.Models
|
||||
[BsonRequired]
|
||||
public string Name { get; set; }
|
||||
|
||||
[BsonElement("CreatedDate")]
|
||||
public DateTime CreatedDate { get; set; }
|
||||
|
||||
[BsonElement("UpdatedDate")]
|
||||
public DateTime UpdatedDate { get; set; }
|
||||
|
||||
[BsonElement("Triggers")]
|
||||
public List<Trigger> Triggers { get; set; }
|
||||
|
||||
[BsonElement("Conditions")]
|
||||
public List<Condition> Conditions { get; set; }
|
||||
|
||||
[BsonElement("DevicesIds")]
|
||||
public List<string> DevicesIds { get; set; }
|
||||
|
||||
[BsonElement("Actions")]
|
||||
public List<Action> Actions { get; set; }
|
||||
|
||||
[BsonElement("DevicesIds")]
|
||||
public List<string> DevicesIds { get; set; }
|
||||
|
||||
public AutomationDTO ToDTO()
|
||||
{
|
||||
return new AutomationDTO()
|
||||
{
|
||||
Id = Id,
|
||||
Name = Name,
|
||||
UserId = UserId,
|
||||
//Triggers = Triggers
|
||||
//Conditions = Conditions
|
||||
//Actions = Actions
|
||||
};
|
||||
}
|
||||
|
||||
public AutomationDetailDTO ToDetailDTO()
|
||||
{
|
||||
return new AutomationDetailDTO()
|
||||
{
|
||||
Id = Id,
|
||||
Name = Name,
|
||||
UserId = UserId,
|
||||
CreatedDate = CreatedDate,
|
||||
UpdatedDate = UpdatedDate,
|
||||
//Triggers = Triggers
|
||||
//Conditions = Conditions
|
||||
//Actions = Actions
|
||||
|
||||
@ -11,6 +11,7 @@ using MongoDB.Bson;
|
||||
using Mqtt.Client.AspNetCore.Services;
|
||||
using MyCore.Interfaces.DTO;
|
||||
using MyCore.Interfaces.Models;
|
||||
using MyCore.Service.Services;
|
||||
using MyCore.Services;
|
||||
using MyCore.Services.Devices;
|
||||
using MyCore.Services.MyControlPanel;
|
||||
@ -61,7 +62,7 @@ namespace MyCore.Service.Controllers
|
||||
/// Get detail info of a specified automation
|
||||
/// </summary>
|
||||
/// <param name="automationId">automation id</param>
|
||||
[ProducesResponseType(typeof(RoomDetailDTO), 200)]
|
||||
[ProducesResponseType(typeof(AutomationDetailDTO), 200)]
|
||||
[HttpGet("detail/{roomId}")]
|
||||
public ObjectResult GetDetail(string automationId)
|
||||
{
|
||||
@ -69,7 +70,7 @@ namespace MyCore.Service.Controllers
|
||||
{
|
||||
Automation automation = _AutomationDatabaseService.GetById(automationId);
|
||||
|
||||
return new OkObjectResult(automation.ToDTO());
|
||||
return new OkObjectResult(automation.ToDetailDTO());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -77,23 +78,23 @@ namespace MyCore.Service.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
//// <summary>
|
||||
/// Create an automation
|
||||
/// </summary>
|
||||
/// <param name="automationCreateOrUpdateDetail">Automation to create</param>
|
||||
[ProducesResponseType(typeof(RoomDetailDTO), 200)]
|
||||
[ProducesResponseType(typeof(AutomationDTO), 200)]
|
||||
[HttpPost]
|
||||
public ObjectResult Create([FromBody] AutomationCreateOrUpdateDetailDTO automationCreateOrUpdateDetail)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (roomCreateOrUpdateDetail == null)
|
||||
throw new KeyNotFoundException("Room is null");
|
||||
if (automationCreateOrUpdateDetail == null)
|
||||
throw new KeyNotFoundException("Automation is null");
|
||||
|
||||
RoomDetailDTO roomCreated = RoomService.CreateOrUpdate(this._RoomDatabaseService, roomCreateOrUpdateDetail.UserId, roomCreateOrUpdateDetail, true);
|
||||
AutomationDTO automationCreated = AutomationService.CreateOrUpdate(this._AutomationDatabaseService, automationCreateOrUpdateDetail.UserId, automationCreateOrUpdateDetail, true);
|
||||
|
||||
return new OkObjectResult(roomCreated);
|
||||
return new OkObjectResult(automationCreated);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -101,22 +102,23 @@ namespace MyCore.Service.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Update a room
|
||||
/// Update an automation
|
||||
/// </summary>
|
||||
/// <param name="roomCreateOrUpdateDetail">room to update</param>
|
||||
[ProducesResponseType(typeof(RoomCreateOrUpdateDetailDTO), 200)]
|
||||
/// <param name="automationCreateOrUpdateDetail">automation to update</param>
|
||||
[ProducesResponseType(typeof(AutomationCreateOrUpdateDetailDTO), 200)]
|
||||
[HttpPut]
|
||||
public ObjectResult Update([FromBody] RoomCreateOrUpdateDetailDTO roomCreateOrUpdateDetail)
|
||||
public ObjectResult Update([FromBody] AutomationCreateOrUpdateDetailDTO automationCreateOrUpdateDetail)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!_RoomDatabaseService.IsExist(roomCreateOrUpdateDetail.Id))
|
||||
throw new KeyNotFoundException("Room does not exist");
|
||||
if (!_AutomationDatabaseService.IsExist(automationCreateOrUpdateDetail.Id))
|
||||
throw new KeyNotFoundException("Automation does not exist");
|
||||
|
||||
RoomDetailDTO roomUpdated = RoomService.CreateOrUpdate(this._RoomDatabaseService, roomCreateOrUpdateDetail.UserId, roomCreateOrUpdateDetail, false);
|
||||
AutomationDTO automationUpdated = AutomationService.CreateOrUpdate(this._AutomationDatabaseService, automationCreateOrUpdateDetail.UserId, automationCreateOrUpdateDetail, false);
|
||||
|
||||
return new OkObjectResult(roomUpdated);
|
||||
return new OkObjectResult(automationUpdated);
|
||||
}
|
||||
catch (KeyNotFoundException ex)
|
||||
{
|
||||
@ -126,7 +128,7 @@ namespace MyCore.Service.Controllers
|
||||
{
|
||||
return new ObjectResult(ex.Message) { StatusCode = 500 };
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Delete an automation
|
||||
|
||||
37
MyCore/Services/AutomationService.cs
Normal file
37
MyCore/Services/AutomationService.cs
Normal file
@ -0,0 +1,37 @@
|
||||
using MyCore.Interfaces.DTO;
|
||||
using MyCore.Interfaces.Models;
|
||||
using MyCore.Services.MyControlPanel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MyCore.Service.Services
|
||||
{
|
||||
public class AutomationService
|
||||
{
|
||||
public static AutomationDTO CreateOrUpdate(AutomationDatabaseService _AutomationDatabaseService, string userId, AutomationCreateOrUpdateDetailDTO automationCreateOrUpdateDetailDTO, bool create)
|
||||
{
|
||||
Automation automation;
|
||||
if (create)
|
||||
automation = new Automation();
|
||||
else
|
||||
{
|
||||
automation = _AutomationDatabaseService.GetById(automationCreateOrUpdateDetailDTO.Id);
|
||||
}
|
||||
|
||||
automation.UserId = userId;
|
||||
automation.Name = automationCreateOrUpdateDetailDTO.Name;
|
||||
automation.CreatedDate = DateTime.Now;
|
||||
automation.UpdatedDate = DateTime.Now;
|
||||
automation.Triggers = automationCreateOrUpdateDetailDTO.Triggers;
|
||||
automation.Conditions = automationCreateOrUpdateDetailDTO.Conditions;
|
||||
automation.Actions = automationCreateOrUpdateDetailDTO.Actions;
|
||||
|
||||
if (create)
|
||||
return _AutomationDatabaseService.Create(automation).ToDTO();
|
||||
else
|
||||
return _AutomationDatabaseService.Update(automation.Id, automation).ToDTO();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user