示例#1
0
        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));
            }
        }