fix Convert FormData แล้วเขียนลง Logs

This commit is contained in:
Suphonchai Phoonsawat 2025-03-27 12:24:58 +07:00
parent e4dccb5c1f
commit 0fb3fd1d06
2 changed files with 63 additions and 2 deletions

View file

@ -0,0 +1,25 @@
using System.Text.Json;
using System.Text.Json.Serialization;
namespace BMA.EHR.Domain.Middlewares
{
public class DateTimeFixConverter : JsonConverter<DateTime>
{
public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.String)
{
if (DateTime.TryParse(reader.GetString(), out var date))
{
return date;
}
}
throw new JsonException("Invalid date format.");
}
public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
{
writer.WriteStringValue(value.ToString("yyyy-MM-dd"));
}
}
}

View file

@ -97,7 +97,43 @@ namespace BMA.EHR.Domain.Middlewares
string requestBody = await ReadRequestBodyAsync(context);
if (requestBody != "")
requestBodyJson = JsonSerializer.Serialize(JsonSerializer.Deserialize<object>(requestBody), new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, WriteIndented = true });
{
if(context.Request.HasFormContentType)
{
var form = await context.Request.ReadFormAsync(); // อ่าน form-data
var formData = new Dictionary<string, object>();
foreach (var field in form)
{
formData[field.Key] = field.Value.ToString();
}
// อ่านไฟล์ที่ถูกส่งมา (ถ้ามี)
if (form.Files.Count > 0)
{
var fileDataList = new List<object>();
foreach (var file in form.Files)
{
fileDataList.Add(new
{
FileName = file.FileName,
ContentType = file.ContentType,
Size = file.Length
});
}
formData["Files"] = fileDataList;
}
requestBodyJson = JsonSerializer.Serialize(formData, new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, WriteIndented = true, Converters = { new DateTimeFixConverter() } });
}
else
{
requestBodyJson = JsonSerializer.Serialize(JsonSerializer.Deserialize<object>(requestBody), new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, WriteIndented = true, Converters = { new DateTimeFixConverter() } });
}
}
var originalBodyStream = context.Response.Body;
@ -134,7 +170,7 @@ namespace BMA.EHR.Domain.Middlewares
memoryStream.Seek(0, SeekOrigin.Begin);
var responseBody = new StreamReader(memoryStream).ReadToEnd();
if (responseBody != "")
responseBodyJson = JsonSerializer.Serialize(JsonSerializer.Deserialize<object>(responseBody), new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, WriteIndented = true });
responseBodyJson = JsonSerializer.Serialize(JsonSerializer.Deserialize<object>(responseBody), new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, WriteIndented = true, Converters = { new DateTimeFixConverter() } });
var json = JsonSerializer.Deserialize<JsonElement>(responseBody);
if (json.TryGetProperty("message", out var messageElement))