104 lines
3.7 KiB
C#
104 lines
3.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.Data;
|
|
using System.Text.Json;
|
|
|
|
[Route("api/[controller]")]
|
|
public class ExportController : Controller, IExportController<IActionResult>
|
|
{
|
|
|
|
private readonly IExportRepository _ExportRepository;
|
|
private readonly IMetrologyRepository _MetrologyRepository;
|
|
|
|
public ExportController(IExportRepository exportRepository, IMetrologyRepository metrologyRepository)
|
|
{
|
|
_ExportRepository = exportRepository;
|
|
_MetrologyRepository = metrologyRepository;
|
|
}
|
|
|
|
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)));
|
|
|
|
[HttpGet]
|
|
[Route("{toolTypeId}/export")]
|
|
public IActionResult GetExportData(int toolTypeId, [FromQuery] string? datebegin, [FromQuery] string? dateend)
|
|
{
|
|
Result<DataTable> r = _ExportRepository.GetExportData(_MetrologyRepository, toolTypeId, datebegin, dateend);
|
|
string json = Newtonsoft.Json.JsonConvert.SerializeObject(r);
|
|
return Content(json);
|
|
}
|
|
|
|
[HttpGet]
|
|
[Route("{toolTypeId}/csv")]
|
|
public IActionResult GetCSVExport(int toolTypeId, [FromQuery] string? datebegin, [FromQuery] string? dateend, [FromQuery] string? filename)
|
|
{
|
|
string r = _ExportRepository.GetCSVExport(_MetrologyRepository, toolTypeId, datebegin, dateend);
|
|
return File(r, "application/octet-stream", filename);
|
|
}
|
|
|
|
} |