diff --git a/src/CommunicationControl/DevOpsProject.CommunicationControl.Logic/Services/CommunicationControlService.cs b/src/CommunicationControl/DevOpsProject.CommunicationControl.Logic/Services/CommunicationControlService.cs index 5e0b449..68ea12f 100644 --- a/src/CommunicationControl/DevOpsProject.CommunicationControl.Logic/Services/CommunicationControlService.cs +++ b/src/CommunicationControl/DevOpsProject.CommunicationControl.Logic/Services/CommunicationControlService.cs @@ -1,4 +1,4 @@ -using DevOpsProject.CommunicationControl.Logic.Services.Interfaces; +using DevOpsProject.CommunicationControl.Logic.Services.Interfaces; using DevOpsProject.Shared.Clients; using DevOpsProject.Shared.Configuration; using DevOpsProject.Shared.Enums; @@ -65,19 +65,40 @@ namespace DevOpsProject.CommunicationControl.Logic.Services public async Task ConnectHive(HiveModel model) { - _logger.LogInformation("Trying to connect Hive: {@model}", model); + bool isHiveAlreadyConnected = await IsHiveConnected(model.HiveID); + if (isHiveAlreadyConnected) + { + _logger.LogWarning("Reconnect Hive request: {@model}", model); + } + else + { + _logger.LogInformation("Trying to connect Hive: {@model}", model); + } bool result = await _redisService.SetAsync(GetHiveKey(model.HiveID), model); if (result) { _logger.LogInformation("Successfully connected Hive: {@model}", model); var operationalArea = _spatialService.GetHiveOperationalArea(model); - await _messageBus.Publish(new HiveConnectedMessage + if (isHiveAlreadyConnected) { - HiveID = model.HiveID, - Hive = model, - InitialOperationalArea = operationalArea, - IsSuccessfullyConnected = result - }); + await _messageBus.Publish(new HiveReconnectedMessage + { + HiveID = model.HiveID, + Hive = model, + InitialOperationalArea = operationalArea, + IsSuccessfullyReconnected = result + }); + } + else + { + await _messageBus.Publish(new HiveConnectedMessage + { + HiveID = model.HiveID, + Hive = model, + InitialOperationalArea = operationalArea, + IsSuccessfullyConnected = result + }); + } return operationalArea; } else diff --git a/src/CommunicationControl/DevOpsProject/Controllers/HiveController.cs b/src/CommunicationControl/DevOpsProject/Controllers/HiveController.cs index 8c3bf9c..62a284e 100644 --- a/src/CommunicationControl/DevOpsProject/Controllers/HiveController.cs +++ b/src/CommunicationControl/DevOpsProject/Controllers/HiveController.cs @@ -30,13 +30,6 @@ namespace DevOpsProject.CommunicationControl.API.Controllers HiveSchema = request.HiveSchema }; - bool isConnected = await _communicationControlService.IsHiveConnected(request.HiveID); - if (isConnected) - { - _logger.LogError("Hive with HiveID: {hiveId} already connected. Request: {@request}", request.HiveID, request); - return BadRequest($"Hive with HiveID: {request.HiveID} already connected"); - } - var hiveOperationalArea = await _communicationControlService.ConnectHive(hiveModel); var connectResponse = new HiveConnectResponse {