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 { private readonly IExportRepository _ExportRepository; public ExportController(IExportRepository exportRepository) => _ExportRepository = exportRepository; private static HeaderCommon GetHeaderCommon(Stream stream) { HeaderCommon? result; if (!stream.CanRead) result = new(); else { Task task = new StreamReader(stream).ReadToEndAsync(); result = string.IsNullOrEmpty(task.Result) ? null : JsonSerializer.Deserialize(task.Result); 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))); }