Cucumber/Cloud/Controllers/WebHookController.cs

59 lines
1.3 KiB
C#

using Cloud.Models;
using Cloud.Requests;
using Cloud.Services.Broker;
using Cloud.Services.Broker.Implement.Kafka;
using Cloud.Services.Broker.Support;
using Microsoft.AspNetCore.Mvc;
using System;
namespace Cloud.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class WebhookController : ControllerBase
{
private readonly IBrokerService _kafkaService;
public WebhookController (KafkaService kafkaService)
{
_kafkaService = kafkaService;
}
[HttpPost]
public async Task<IActionResult> ReceiveWebhook([FromBody] WebhookData payload)
{
if (payload == null)
{
return BadRequest("Invalid data.");
}
if (payload.moisture >= payload.target_moisture && payload.valveStatus == "open")
{
var command = new Command
{
request_id = Guid.NewGuid(),
greenhouse_id = payload.greenhouse_id,
command = "valve",
};
await _kafkaService.ProduceAsync("commands", command);
}
if (payload.temp >= payload.target_temp && payload.heaterStatus == "on")
{
var command = new Command
{
request_id = Guid.NewGuid(),
greenhouse_id = payload.greenhouse_id,
command = "heater",
};
await _kafkaService.ProduceAsync("commands", command);
}
// Respond with a success status
return Ok(new { message = "Webhook received successfully", data = payload });
}
}
}