// MonitoringController.cs using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; namespace FreelancerListServer.Controllers { [Route("api/[controller]")] [ApiController] public class MonitoringController : ControllerBase { private readonly LiteDbManager _dbManager; private readonly Logger _logger; public MonitoringController(LiteDbManager dbManager, Logger logger) { _dbManager = dbManager; _logger = logger; } [HttpGet] public ActionResult> GetMonitoringData() { try { var monitoringData = _dbManager.GetCollection("monitoring").FindAll().ToList(); _logger.Log($"API: Retrieved {monitoringData.Count} monitoring entries."); return Ok(monitoringData); } catch (Exception ex) { _logger.Log($"API: Error retrieving monitoring data: {ex.Message}"); return StatusCode(500, new { error = "Internal server error" }); } } [HttpGet("{gameId}")] public ActionResult GetMonitoringDataByGameId(string gameId) { try { var monitoringData = _dbManager.GetCollection("monitoring").FindOne(x => x.GameId == gameId); if (monitoringData == null) { _logger.Log($"API: Monitoring data for GameId={gameId} not found."); return NotFound(new { error = $"Monitoring data for GameId={gameId} not found" }); } _logger.Log($"API: Retrieved monitoring data for GameId={gameId}."); return Ok(monitoringData); } catch (Exception ex) { _logger.Log($"API: Error retrieving monitoring data for GameId={gameId}: {ex.Message}"); return StatusCode(500, new { error = "Internal server error" }); } } } }