public PersonalUserCreatingConfirmation CreateUser(PersonalUser user, string password) { if (!CheckUniqueUsername(user.Username, false, null)) { throw new UniqueValueViolationException("Username should be unique"); } if (!CkeckUniqueEmail(user.Email)) { throw new UniqueValueViolationException("Email should be unique"); } if (!CheckCountry(user.CountryId)) { throw new ForeignKeyConstraintViolationException("Foreign key constraint violated"); } ////Dodavanje u userDbContext PersonalUserCreatingConfirmation persUserCreated = _personalUserRepository.CreateUser(user); _personalUserRepository.SaveChanges(); //Dodavanje u IdentityUserDbContext string username = string.Join("", user.Username.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries)); var persuser = new AccountInfo(username, user.Email, persUserCreated.UserId); IdentityResult result = _userManager.CreateAsync(persuser, password).Result; if (result.Succeeded) { _userManager.AddToRoleAsync(persuser, "Regular user").Wait(); } else { _personalUserRepository.DeleteUser(persUserCreated.UserId); } return(persUserCreated); }
public ActionResult <PersonalUserCreatingConfirmationDto> CreateUser([FromBody] PersonalUserCreatingDto personalUser) { try { PersonalUser persUserEntity = _mapper.Map <PersonalUser>(personalUser); PersonalUserCreatingConfirmation persUserCreated = _personalUsersService.CreateUser(persUserEntity, personalUser.Password); string location = _linkGenerator.GetPathByAction("GetUserById", "PersonalUser", new { userId = persUserCreated.UserId }); return(Created(location, _mapper.Map <PersonalUserCreatingConfirmationDto>(persUserCreated))); } 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: break; case 547: return(StatusCode(StatusCodes.Status422UnprocessableEntity, ex.Message)); case 2601: return(StatusCode(StatusCodes.Status409Conflict, ex.Message)); default: return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message)); } } return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message)); } }