diff --git a/Server/ApiControllers/PinController.cs b/Server/ApiControllers/PinController.cs new file mode 100644 index 0000000..e77390f --- /dev/null +++ b/Server/ApiControllers/PinController.cs @@ -0,0 +1,43 @@ +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); + return Ok(); + } + + [HttpGet] + [Route("{id}/pinned")] + public IActionResult GetPinnedTable(int id) + { + 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, bioRad, cde), new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true }); + } +} \ No newline at end of file diff --git a/Server/Program.cs b/Server/Program.cs index 12cbdb0..13ff438 100644 --- a/Server/Program.cs +++ b/Server/Program.cs @@ -67,11 +67,12 @@ public class Program _ = webApplicationBuilder.Services.AddSingleton(_ => appSettings); _ = webApplicationBuilder.Services.AddSingleton(); - _ = webApplicationBuilder.Services.AddSingleton>(_ => appSettingsRepository); _ = webApplicationBuilder.Services.AddSingleton(_ => clientSettingsRepository); _ = webApplicationBuilder.Services.AddSingleton(); + _ = webApplicationBuilder.Services.AddSingleton(_ => new(appSettings.MockRoot)); _ = webApplicationBuilder.Services.AddSingleton(_ => sqlDbConnectionFactory); _ = webApplicationBuilder.Services.AddSingleton(_ => new(appSettings.MockRoot)); + _ = webApplicationBuilder.Services.AddSingleton>(_ => appSettingsRepository); _ = webApplicationBuilder.Services.AddScoped(); _ = webApplicationBuilder.Services.AddScoped(); diff --git a/Server/Repositories/PinRepository.cs b/Server/Repositories/PinRepository.cs new file mode 100644 index 0000000..6129abf --- /dev/null +++ b/Server/Repositories/PinRepository.cs @@ -0,0 +1,60 @@ +using OI.Metrology.Shared.DataModels; +using OI.Metrology.Shared.Models.Stateless; +using System.Text.Json; + +namespace OI.Metrology.Server.Repository; + +public class PinRepository : IPinRepository +{ + + private readonly string _MockRoot; + private readonly Serilog.ILogger _Log; + + public PinRepository(string mockRoot) + { + _MockRoot = mockRoot; + _Log = Serilog.Log.ForContext(); + } + + Result IPinRepository.GetPinnedTable(IMetrologyRepository metrologyRepository, int id, string? bioRad, string? cde) + { + Result? r; + if (!id.Equals(IPinRepository.ToolId.BioRad) && !id.Equals(IPinRepository.ToolId.CDE)) + r = new() { Results = Array.Empty(), TotalRows = 0 }; + else + { + if (!string.IsNullOrEmpty(_MockRoot)) + { + string json = File.ReadAllText(Path.Combine(string.Concat(AppContext.BaseDirectory, _MockRoot), "GetPinnedTableApi.json")); + r = JsonSerializer.Deserialize>(json); + if (r is null) + throw new NullReferenceException(nameof(r)); + } + else + { + List results = new(); + HeaderCommon? cdeHeader = cde is null ? null : JsonSerializer.Deserialize(cde); + HeaderCommon? bioRadHeader = bioRad is null ? null : JsonSerializer.Deserialize(bioRad); + if (bioRadHeader is not null) + { + System.Data.DataTable dataTable = metrologyRepository.GetData((int)IPinRepository.ToolId.BioRad, bioRadHeader.ID); + if (dataTable.Rows.Count == 11) + ; + } + if (cdeHeader is not null) + { + System.Data.DataTable dataTable = metrologyRepository.GetData((int)IPinRepository.ToolId.CDE, cdeHeader.ID); + if (dataTable.Rows.Count == 11) + ; + } + r = new() + { + Results = results.ToArray(), + TotalRows = results.Count, + }; + } + } + return r; + } + +} \ No newline at end of file diff --git a/Server/Views/Pages/AwaitingDispo.cshtml b/Server/Views/Pages/AwaitingDispo.cshtml index 4b4be73..0c3e6b2 100644 --- a/Server/Views/Pages/AwaitingDispo.cshtml +++ b/Server/Views/Pages/AwaitingDispo.cshtml @@ -18,59 +18,11 @@ diff --git a/Server/Views/Pages/RunHeaders.cshtml b/Server/Views/Pages/RunHeaders.cshtml index ba1a5de..2173c66 100644 --- a/Server/Views/Pages/RunHeaders.cshtml +++ b/Server/Views/Pages/RunHeaders.cshtml @@ -48,87 +48,10 @@ diff --git a/Server/Views/Pages/RunInfo.cshtml b/Server/Views/Pages/RunInfo.cshtml index d993c9b..927f829 100644 --- a/Server/Views/Pages/RunInfo.cshtml +++ b/Server/Views/Pages/RunInfo.cshtml @@ -49,6 +49,9 @@
+
+ +