public ActionResult <PersonalUserDto> UpdateUser([FromBody] PersonalUserUpdateDto personalUser, Guid userId) { try { var userWithId = _personalUsersService.GetUserByUserId(userId); if (userWithId == null) { return(NotFound()); } PersonalUser user = _mapper.Map <PersonalUser>(personalUser); _personalUsersService.UpdateUser(user, userWithId); return(Ok(_mapper.Map <PersonalUserDto>(userWithId))); } catch (Exception ex) { if (ex.GetType().IsAssignableFrom(typeof(ForeignKeyConstraintViolationException))) { return(StatusCode(StatusCodes.Status409Conflict, ex.Message)); } if (ex.GetType().IsAssignableFrom(typeof(UniqueValueViolationException))) { return(StatusCode(StatusCodes.Status422UnprocessableEntity, ex.Message)); } if (ex.GetBaseException().GetType() == typeof(SqlException)) { Int32 ErrorCode = ((SqlException)ex.InnerException).Number; switch (ErrorCode) { case 2627: // Unique constraint error break; case 547: // Constraint check violation; FK violation return(StatusCode(StatusCodes.Status422UnprocessableEntity)); case 2601: // Duplicated key row error; Unique violation return(StatusCode(StatusCodes.Status409Conflict)); default: return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message)); } } return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message)); } }