using BMA.EHR.Domain.Common; using System.Net; namespace BMA.EHR.MetaData.Service { public class ErrorHandlerMiddleware { #region " Fields " private readonly RequestDelegate _next; #endregion #region " Constructor and Destructor " public ErrorHandlerMiddleware(RequestDelegate next) { _next = next; } #endregion #region " Methods " public async Task Invoke(HttpContext context) { try { await _next(context); var response = context.Response; response.ContentType = "application/json"; var responseModel = new ResponseObject(); responseModel.Status = response.StatusCode; if (responseModel.Status == (int)HttpStatusCode.Unauthorized) { responseModel.Message = "กรุณาเข้าสู่ระบบก่อนใช้งาน!"; await response.WriteAsJsonAsync(responseModel); } if (responseModel.Status == (int)HttpStatusCode.Forbidden) { responseModel.Message = "คุณไม่ได้รับอนุญาติให้เข้าใช้งาน!"; await response.WriteAsJsonAsync(responseModel); } } catch (Exception error) { var response = context.Response; response.ContentType = "application/json"; var responseModel = new ResponseObject(); responseModel.Status = response.StatusCode; var msg = error.Message; var inner = error.InnerException; while (inner != null) { msg += $" {inner.Message}\r\n"; inner = inner.InnerException; } responseModel.Result = msg; switch (response.StatusCode) { case (int)HttpStatusCode.Unauthorized: responseModel.Message = "กรุณาเข้าสู่ระบบก่อนใช้งาน!"; break; case (int)HttpStatusCode.Forbidden: responseModel.Message = "คุณไม่ได้รับอนุญาติให้เข้าใช้งาน!"; break; default: responseModel.Status = (int)HttpStatusCode.InternalServerError; responseModel.Message = "เกิดข้อผิดพลาดขึ้นในระบบ กรุณาติดต่อผู้ดูแลระบบ!"; break; } await response.WriteAsJsonAsync(responseModel); } } #endregion } }