using Cloud.Models; using Cloud.Requests; using Cloud.Services.Broker; using Cloud.Services.Broker.Support; using Cloud.Services.Domain; using Microsoft.AspNetCore.Mvc; namespace Cloud.Controllers { [ApiController] [Route("api/farm/{farmId}/greenhouse")] public class GreenhouseController : ControllerBase { private readonly IGreenhouseService _greenhouseService; public GreenhouseController(IGreenhouseService greenhouseService) { _greenhouseService = greenhouseService; } /// /// Возвращает текущую информацию о всех теплицах пользователя /// /// /// [HttpGet] public async Task>> GetAll(int farmId) { try { var greenhouses = _greenhouseService.GetAll(farmId); if (greenhouses == null) return NotFound("Greenhouses is not found"); return Ok(greenhouses); } catch (Exception ex) { return BadRequest(ex.Message); } } /// /// Возвращает текущую информацию о конкретной теплице /// /// /// /// [HttpGet("{greenhouseId}")] public async Task> Get(int farmId, int greenhouseId) { try { var greenhouses = _greenhouseService.GetGreenhouseInfo(greenhouseId, farmId); return Ok(greenhouses); } catch (Exception ex) { return BadRequest(ex.Message); } } /// /// Возвращает сохраненные данные для автоматизации теплицы /// /// /// /// [HttpGet("{greenhouseId}/settings")] public async Task> GetGreenhouse(int farmId, int greenhouseId) { try { var greenhouse = await _greenhouseService.GetGreenhouse(greenhouseId); if (greenhouse == null) return NotFound("Greenhouses is not found"); return Ok(greenhouse); } catch (Exception ex) { return BadRequest(ex.Message); } } /// /// Сохраняет в базе данных API данные для автоматизации теплицы /// /// /// /// [HttpPost] public async Task> SaveToDatabase(int farmId, GreenhouseRequest greenhouse) { try { var greenhouseEntity = new Greenhouse() { RecomendedTemperature = greenhouse.RecomendedTemperature, WateringMode = greenhouse.WateringMode, HeatingMode = greenhouse.HeatingMode }; var result = await _greenhouseService.Create(greenhouseEntity); return Ok(result); } catch (Exception ex) { return BadRequest(ex.Message); } } /// /// Обновляет в базе данных API данные для автоматизации теплицы /// /// ID фермы /// ID теплицы /// Данные для обновления /// Обновленный объект Greenhouse [HttpPut("{greenhouseId}/settings")] public async Task> Update(int farmId, int greenhouseId, GreenhouseRequest greenhouse) { try { var greenhouseEntity = new Greenhouse() { Id = greenhouseId, FarmId = farmId, WateringMode = greenhouse.WateringMode, HeatingMode = greenhouse.HeatingMode, RecomendedTemperature = greenhouse.RecomendedTemperature }; var result = await _greenhouseService.Update(greenhouseEntity); return Ok(result); } catch (Exception ex) { return BadRequest(ex.Message); } } /// /// Удаляет из базы данных API запись настроек автоматизации теплицы /// /// /// /// [HttpDelete("{greenhouseId}")] public async Task Delete(int farmId, int greenhouseId) { try { _ = await _greenhouseService.Delete(greenhouseId); return Ok(); } catch (Exception ex) { return BadRequest(ex.Message); } } } }