private static async Task HandleExceptionAsync(HttpContext context, Exception error) { context.Response.ContentType = "application/json"; context.Response.StatusCode = error switch { NotFoundException e => (int)HttpStatusCode.NotFound, BusinessException e => (int)HttpStatusCode.UnprocessableEntity, TokenNotInformated e => (int)HttpStatusCode.BadRequest, ValidationException e => (int)HttpStatusCode.BadRequest, ForbiddenException e => (int)HttpStatusCode.Forbidden, ListStringException e => (int)HttpStatusCode.UnprocessableEntity, AlreadyExistsException e => (int)HttpStatusCode.Conflict, _ => (int)HttpStatusCode.InternalServerError }; var lstStringExption = new ListStringException(); if (typeof(ListStringException) == error.GetType()) { lstStringExption = (ListStringException)error; } var result = JsonSerializer.Serialize(new { message = (lstStringExption.TaskExceptions.Any()) ? "Houve um erro." : error?.Message, errors = lstStringExption.TaskExceptions.Select(c => c.Message.ToString()) }); await context.Response.WriteAsync(result); } }
public override int SaveChanges() { var entities = (from entry in ChangeTracker.Entries() where entry.State == EntityState.Modified || entry.State == EntityState.Added select entry.Entity); ListStringException exs = new ListStringException(); var validationResults = new List <ValidationResult>(); foreach (var entity in entities) { if (!Validator.TryValidateObject(entity, new ValidationContext(entity), validationResults)) { foreach (ValidationResult result in validationResults) { result.ErrorMessage = result.ErrorMessage.Replace("The", "O campo").Replace(" field is required.", " é obrigatório."); exs.TaskExceptions.Add(new Exception(result.ErrorMessage)); } } } if (exs.TaskExceptions.Count() > 0) { throw exs; } return(base.SaveChanges()); }