diff --git a/After/src/Api/Customers/CustomersController.cs b/After/src/Api/Customers/CustomersController.cs index 18842ef..9b6e24b 100644 --- a/After/src/Api/Customers/CustomersController.cs +++ b/After/src/Api/Customers/CustomersController.cs @@ -78,12 +78,19 @@ public IActionResult Create([FromBody] CreateCustomerDto item) Result customerNameOrError = CustomerName.Create(item.Name); Result emailOrError = Email.Create(item.Email); - Result result = Result.Combine(customerNameOrError, emailOrError); - if (result.IsFailure) - return Error(result.Error); + if (customerNameOrError.IsFailure) + ModelState.AddModelError(nameof(item.Name), customerNameOrError.Error); + if (emailOrError.IsFailure) + ModelState.AddModelError(nameof(item.Email), emailOrError.Error); + + if (!ModelState.IsValid) + return Error(ModelState); if (_customerRepository.GetByEmail(emailOrError.Value) != null) - return Error("Email is already in use: " + item.Email); + { + ModelState.AddModelError(nameof(item.Email), "Email is already in use: " + item.Email); + return Error(ModelState); + } var customer = new Customer(customerNameOrError.Value, emailOrError.Value); _customerRepository.Add(customer); diff --git a/After/src/Api/Utils/BaseController.cs b/After/src/Api/Utils/BaseController.cs index 80f285f..4533026 100644 --- a/After/src/Api/Utils/BaseController.cs +++ b/After/src/Api/Utils/BaseController.cs @@ -1,5 +1,6 @@ using Logic.Utils; using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.ModelBinding; namespace Api.Utils { @@ -24,6 +25,11 @@ protected IActionResult Ok(T result) return base.Ok(Envelope.Ok(result)); } + protected IActionResult Error(ModelStateDictionary modelState) + { + return BadRequest(modelState); + } + protected IActionResult Error(string errorMessage) { return BadRequest(Envelope.Error(errorMessage));