HiveMind PoC + P1, P3 fixes
This commit is contained in:
committed by
Kirill
parent
1744425d5f
commit
9f6c1f5135
@@ -1,4 +1,5 @@
|
||||
using DevOpsProject.CommunicationControl.API.DTO.Client.Request;
|
||||
using Asp.Versioning;
|
||||
using DevOpsProject.CommunicationControl.API.DTO.Client.Request;
|
||||
using DevOpsProject.CommunicationControl.Logic.Services.Interfaces;
|
||||
using DevOpsProject.Shared.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
@@ -6,22 +7,24 @@ using Microsoft.Extensions.Options;
|
||||
|
||||
namespace DevOpsProject.CommunicationControl.API.Controllers
|
||||
{
|
||||
|
||||
[ApiVersion("1.0")]
|
||||
[ApiController]
|
||||
[Route("api/client")]
|
||||
[Route("api/v{version:apiVersion}/client")]
|
||||
public class ClientController : Controller
|
||||
{
|
||||
private readonly ICommunicationControlService _communicationControlService;
|
||||
private readonly IOptionsMonitor<OperationalAreaConfig> _operationalAreaConfig;
|
||||
private readonly ILogger<ClientController> _logger;
|
||||
|
||||
public ClientController(ICommunicationControlService communicationControlService, IOptionsMonitor<OperationalAreaConfig> operationalAreaConfig)
|
||||
public ClientController(ICommunicationControlService communicationControlService, IOptionsMonitor<OperationalAreaConfig> operationalAreaConfig, ILogger<ClientController> logger)
|
||||
{
|
||||
_communicationControlService = communicationControlService;
|
||||
_operationalAreaConfig = operationalAreaConfig;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
[HttpGet("area")]
|
||||
public async Task<IActionResult> GetOperationalArea()
|
||||
public IActionResult GetOperationalArea()
|
||||
{
|
||||
return Ok(_operationalAreaConfig.CurrentValue);
|
||||
}
|
||||
@@ -51,16 +54,27 @@ namespace DevOpsProject.CommunicationControl.API.Controllers
|
||||
}
|
||||
|
||||
[HttpPatch("hive")]
|
||||
public async Task<IActionResult> SendBulkHiveMovingSignal(MoveHivesRequest request)
|
||||
public IActionResult SendBulkHiveMovingSignal(MoveHivesRequest request)
|
||||
{
|
||||
if (request?.Hives == null || !request.Hives.Any())
|
||||
return BadRequest("No hive IDs provided.");
|
||||
|
||||
foreach (var id in request.Hives)
|
||||
{
|
||||
Task.Run(async () => await _communicationControlService.SendHiveControlSignal(id, request.Destination));
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await _communicationControlService.SendHiveControlSignal(id, request.Destination);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, $"Failed to send control signal for HiveID: {id}");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
return Accepted("Hives are being moved asynchronously.");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user