using Microsoft.AspNetCore.Mvc; namespace OI.Metrology.Server.ApiControllers; using OI.Metrology.Shared.Models.Stateless; using System.Text.Json; [Route("api/[controller]")] public class PinController : Controller, IPinController { private readonly ILogger _Logger; private readonly IPinRepository _PinRepository; private readonly IMetrologyRepository _MetrologyRepository; public PinController(ILogger logger, IMetrologyRepository metrologyRepository, IPinRepository pinRepository) { _Logger = logger; _MetrologyRepository = metrologyRepository; _PinRepository = pinRepository; } [HttpPost("/api/pin/markAsPinned")] public IActionResult MarkAsPinned(Shared.DataModels.HeaderCommon headerCommon) { string toolTypeId = headerCommon.ToolTypeID.ToString(); string json = JsonSerializer.Serialize(headerCommon, new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true }); string? was = HttpContext.Session.GetString(toolTypeId); if (was is not null) _Logger.LogDebug($"{toolTypeId} was: {was}"); HttpContext.Session.SetString(toolTypeId, json); _PinRepository.SetPinnedTable(headerCommon); return Ok(); } [HttpGet] [Route("{id}/pinned/{rds}")] public IActionResult GetPinnedTable(int id, string rds = "") { string? cde = HttpContext.Session.GetString(((int)IPinRepository.ToolId.CDE).ToString()); string? bioRad = HttpContext.Session.GetString(((int)IPinRepository.ToolId.BioRad).ToString()); return Json(_PinRepository.GetPinnedTable(_MetrologyRepository, id, rds, bioRad, cde), new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true }); } }