fix Middleware
Some checks failed
release-dev / release-dev (push) Failing after 13s

This commit is contained in:
Suphonchai Phoonsawat 2025-07-04 14:57:25 +07:00
parent 7d431d7882
commit 0e74ad730c
2 changed files with 52 additions and 7 deletions

View file

@ -222,6 +222,38 @@ namespace BMA.EHR.Domain.Middlewares
var response = context.Response;
var statusCode = response.StatusCode;
string? message = null;
string? responseBodyJson = null;
if (memoryStream.Length > 0)
{
memoryStream.Seek(0, SeekOrigin.Begin);
var responseBody = new StreamReader(memoryStream).ReadToEnd();
var jsonOptions = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
WriteIndented = true,
Converters = { new DateTimeFixConverter() }
};
responseBodyJson =
JsonSerializer.Serialize(JsonSerializer.Deserialize<object>(responseBody), jsonOptions);
var json = JsonSerializer.Deserialize<JsonElement>(responseBody);
if (json.ValueKind == JsonValueKind.Array)
{
message = "success";
}
else
{
if (json.TryGetProperty("message", out var messageElement))
{
message = messageElement.GetString();
}
}
}
Console.WriteLine($"FormatResponse: StatusCode={statusCode}, HasStarted={response.HasStarted}");
@ -230,7 +262,7 @@ namespace BMA.EHR.Domain.Middlewares
{
Console.WriteLine($"Formatting response for status: {statusCode}");
var responseModel = CreateResponseModel(statusCode);
var responseModel = CreateResponseModel(statusCode,message);
// Clear memory stream และเขียน response ใหม่
memoryStream.SetLength(0);
@ -246,6 +278,10 @@ namespace BMA.EHR.Domain.Middlewares
};
var jsonResponse = JsonSerializer.Serialize(responseModel, jsonOptions);
var bytes = System.Text.Encoding.UTF8.GetBytes(jsonResponse);
// กำหนด Content-Length ให้ตรงกับขนาดจริง
response.ContentLength = bytes.Length;
await memoryStream.WriteAsync(bytes, 0, bytes.Length);
Console.WriteLine($"Response formatted successfully: {jsonResponse}");
@ -255,7 +291,7 @@ namespace BMA.EHR.Domain.Middlewares
{
Console.WriteLine($"Creating response body for {statusCode} status");
var responseModel = CreateResponseModel(statusCode);
var responseModel = CreateResponseModel(statusCode,message);
response.ContentType = "application/json; charset=utf-8";
var jsonOptions = new JsonSerializerOptions
@ -265,6 +301,10 @@ namespace BMA.EHR.Domain.Middlewares
};
var jsonResponse = JsonSerializer.Serialize(responseModel, jsonOptions);
var bytes = System.Text.Encoding.UTF8.GetBytes(jsonResponse);
// กำหนด Content-Length ให้ตรงกับขนาดจริง
response.ContentLength = bytes.Length;
await memoryStream.WriteAsync(bytes, 0, bytes.Length);
Console.WriteLine($"Response body created: {jsonResponse}");
@ -304,8 +344,8 @@ namespace BMA.EHR.Domain.Middlewares
var responseModel = new ResponseObject
{
Status = response.StatusCode,
Message = GlobalMessages.ExceptionOccured,
Result = GetErrorMessage(error)
Message = GetErrorMessage(error),
Result = null
};
var jsonOptions = new JsonSerializerOptions
@ -315,6 +355,11 @@ namespace BMA.EHR.Domain.Middlewares
};
var jsonResponse = JsonSerializer.Serialize(responseModel, jsonOptions);
var bytes = System.Text.Encoding.UTF8.GetBytes(jsonResponse);
// กำหนด Content-Length ให้ตรงกับขนาดจริง
response.ContentLength = bytes.Length;
await memoryStream.WriteAsync(bytes, 0, bytes.Length);
Console.WriteLine($"Exception response formatted: {jsonResponse}");
@ -456,7 +501,7 @@ namespace BMA.EHR.Domain.Middlewares
statusCode == (int)HttpStatusCode.InternalServerError;
}
private static ResponseObject CreateResponseModel(int statusCode)
private static ResponseObject CreateResponseModel(int statusCode,string? error)
{
var message = statusCode switch
{
@ -473,7 +518,7 @@ namespace BMA.EHR.Domain.Middlewares
return new ResponseObject
{
Status = statusCode,
Message = message
Message = error ?? message
};
}

View file

@ -303,7 +303,7 @@ namespace BMA.EHR.Leave.Service.Controllers
if (oldData is not null)
{
return Error("ไม่สามารถบันทึกข้อมูล เนื่องจากมีข้อมูลในระบบแล้ว",StatusCodes.Status400BadRequest);
return Error("ไม่สามารถบันทึกข้อมูล เนื่องจากมีข้อมูลในระบบแล้ว");
}
var leaveBeginning = new LeaveBeginning();