예제 #1
0
        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);
        }
    }
예제 #2
0
        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());
        }