oi-metrology/Server/ApiControllers/ExportController.cs
Mike Phares 8040a7c6b5 Better data (BioRad)
EC / IFX
FromBody bug fix
Made ID optional and are get all files now
2023-03-08 12:47:22 -07:00

82 lines
2.7 KiB
C#

using Microsoft.AspNetCore.Mvc;
namespace OI.Metrology.Server.ApiControllers;
using OI.Metrology.Shared.DataModels;
using OI.Metrology.Shared.Models.Stateless;
using System.Text.Json;
[Route("api/[controller]")]
public class ExportController : Controller, IExportController<IActionResult>
{
private readonly IExportRepository _ExportRepository;
public ExportController(IExportRepository exportRepository) =>
_ExportRepository = exportRepository;
private static string? GetJson(Stream stream)
{
string? result;
if (!stream.CanRead)
result = null;
else
{
Task<string> task = new StreamReader(stream).ReadToEndAsync();
result = task.Result;
}
return result;
}
private static HeaderCommon GetHeaderCommon(Stream stream)
{
HeaderCommon? result;
string? json = GetJson(stream);
result = string.IsNullOrEmpty(json) ? null : JsonSerializer.Deserialize<HeaderCommon>(json);
result ??= new();
return result;
}
[HttpGet]
[Route("export")]
public IActionResult GetExport() =>
Content(_ExportRepository.GetExport(GetHeaderCommon(Request.Body)));
[HttpGet]
[Route("headers")]
public IActionResult GetHeaders() =>
Json(_ExportRepository.GetHeaders(GetHeaderCommon(Request.Body)), new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
[HttpGet]
[Route("logistics")]
public IActionResult GetLogistics() =>
Json(_ExportRepository.GetLogistics(GetHeaderCommon(Request.Body)), new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
[HttpGet]
[Route("pdsf")]
[Route("processDataStandardFormat")]
public IActionResult GetProcessDataStandardFormat() =>
Content(_ExportRepository.GetProcessDataStandardFormat(GetHeaderCommon(Request.Body)));
[HttpPost]
[Route("export")]
public IActionResult PostExport() =>
Content(_ExportRepository.GetExport(GetHeaderCommon(Request.Body)));
[HttpPost]
[Route("headers")]
public IActionResult PostHeaders() =>
Json(_ExportRepository.GetHeaders(GetHeaderCommon(Request.Body)), new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
[HttpPost]
[Route("logistics")]
public IActionResult PostLogistics() =>
Json(_ExportRepository.GetLogistics(GetHeaderCommon(Request.Body)), new JsonSerializerOptions { PropertyNamingPolicy = null, WriteIndented = true });
[HttpPost]
[Route("pdsf")]
[Route("processDataStandardFormat")]
public IActionResult PostProcessDataStandardFormat() =>
Content(_ExportRepository.GetProcessDataStandardFormat(GetHeaderCommon(Request.Body)));
}