33 lines
856 B
C#
33 lines
856 B
C#
using Customers.Api.Contracts.Responses;
|
|
using FluentValidation;
|
|
|
|
namespace Customers.Api.Validation;
|
|
|
|
public class ValidationExceptionMiddleware
|
|
{
|
|
private readonly RequestDelegate _request;
|
|
|
|
public ValidationExceptionMiddleware(RequestDelegate request)
|
|
{
|
|
_request = request;
|
|
}
|
|
|
|
public async Task InvokeAsync(HttpContext context)
|
|
{
|
|
try
|
|
{
|
|
await _request(context);
|
|
}
|
|
catch (ValidationException exception)
|
|
{
|
|
context.Response.StatusCode = 400;
|
|
var messages = exception.Errors.Select(x => x.ErrorMessage).ToList();
|
|
var validationFailureResponse = new ValidationFailureResponse
|
|
{
|
|
Errors = messages
|
|
};
|
|
await context.Response.WriteAsJsonAsync(validationFailureResponse);
|
|
}
|
|
}
|
|
}
|